--- a/homescreen.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreen.pro Mon May 03 12:24:59 2010 +0300
@@ -17,8 +17,6 @@
TEMPLATE = subdirs
SUBDIRS = homescreenapp
-SUBDIRS += taskswitcherapp
-
-screensaver:SUBDIRS += screensaverapp
+symbian:SUBDIRS += taskswitcherapp
CONFIG += ordered
--- a/homescreenapp/common.pri Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/common.pri Mon May 03 12:24:59 2010 +0300
@@ -103,7 +103,12 @@
message(Remove "contains(MOBILITY, serviceframework)" after the QtSF refactorig is done!)
!contains(MOBILITY, serviceframework):qtplugins.sources += resource/$${TARGET}.manifest
- contains(MOBILITY, serviceframework):BLD_INF_RULES.prj_exports += "resource/$${TARGET}.xml z:$$qtplugins.path/$${TARGET}.xml"
+
+ hs_public_plugin {
+ contains(MOBILITY, serviceframework):BLD_INF_RULES.prj_exports += "resource/$${TARGET}.xml z:/private/20022F35/$${TARGET}.xml"
+ } else {
+ contains(MOBILITY, serviceframework):BLD_INF_RULES.prj_exports += "resource/$${TARGET}.xml z:$$qtplugins.path/$${TARGET}.xml"
+ }
for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin z:$$qtplugins.path/$$basename(qtplugin)"
}
--- a/homescreenapp/examples/contentpublishclient/contentpublishclient.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/examples/contentpublishclient/contentpublishclient.pro Mon May 03 12:24:59 2010 +0300
@@ -36,6 +36,12 @@
TARGET.CAPABILITY = CAP_APPLICATION AllFiles TrustedUI
TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
LIBS += -lefsrv
+
+ testwallpaperimages.path = /data/images/kqtihswallpapers
+ testwallpaperimages.sources += ./resource/*.jpg
+
+ DEPLOYMENT += testwallpaperimages
+
} else {
error("Only Symbian supported!")
}
\ No newline at end of file
--- a/homescreenapp/examples/contentpublishclient/inc/contentpublishclient.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/examples/contentpublishclient/inc/contentpublishclient.h Mon May 03 12:24:59 2010 +0300
@@ -31,9 +31,16 @@
bool load();
public slots:
- void addWidget();
+ void addHelloworldWidget();
+ void addClockWidget();
+ void setWallpaper1();
+ void setWallpaper2();
+protected:
+ bool addWidget(QString widgetUri);
+ bool setWallpaper(QString fileName);
+
private:
QObject* mService;
QServiceManager* mManager;
-};
\ No newline at end of file
+};
Binary file homescreenapp/examples/contentpublishclient/resource/testwallpaper.jpg has changed
Binary file homescreenapp/examples/contentpublishclient/resource/testwallpaper2.jpg has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/contentpublishclient/sis/contentpublishclient.bat Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+if exist contentpublishclient.sisx del contentpublishclient.sisx
+
+makesis contentpublishclient.pkg
+signsis contentpublishclient.sis contentpublishclient.sisx ../../../sis/rd.cer ../../../sis/rd-key.pem
+
+if exist contentpublishclient.sisx (
+echo contentpublishclient.sisx creation SUCCEEDED
+del contentpublishclient.sis
+)
+
+if not exist contentpublishclient.sisx (
+echo contentpublishclient.sisx creation FAILED
+)
\ No newline at end of file
--- a/homescreenapp/examples/contentpublishclient/src/contentpublishclient.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/examples/contentpublishclient/src/contentpublishclient.cpp Mon May 03 12:24:59 2010 +0300
@@ -26,7 +26,7 @@
/*!
\ingroup group_content_publish_client
\class ContentPublishClient
- \brief Example implementation for home screen content publish client.
+ \brief Example implementation for home screen client api usage.
ContentPublishClient is derived from QObject and implements
needed functions for the home screen content publish client.
@@ -63,7 +63,7 @@
}
qDebug() << interfaces.first().interfaceName()
<< interfaces.first().serviceName()
- << interfaces.first().isValid();
+ << interfaces.first().isValid();
mService = mManager->loadInterface(interfaces.first());
@@ -71,27 +71,118 @@
}
/*!
- Adds widget utilizing service interface and invoke call
+ Adds hello world widget
+*/
+void ContentPublishClient::addHelloworldWidget()
+{
+ if ( addWidget("helloworldwidgetplugin")) {
+ qDebug() << "HelloWorld added";
+ } else {
+ qDebug() << "adding HelloWorld failed";
+ }
+}
+
+/*!
+ Adds clock world widget
+*/
+void ContentPublishClient::addClockWidget()
+{
+ if ( addWidget("hsclockwidgetplugin")) {
+ qDebug() << "Clock widget added";
+ } else {
+ qDebug() << "adding Clock widget failed";
+ }
+}
+
+/*!
+ Adds widget \a widgetUri utilizing service interface and invokeMethod call
*/
-void ContentPublishClient::addWidget()
+// Start of snippet 1
+bool ContentPublishClient::addWidget(QString widgetUri)
{
- QByteArray signature = QMetaObject::normalizedSignature("addWidget(QString,QVariantHash)");
+ // find interface IHomeScreenClient from service hshomescreenclientplugin
+ QServiceManager manager;
+ QServiceFilter filter("com.nokia.symbian.IHomeScreenClient");
+ filter.setServiceName("hshomescreenclientplugin");
+ QList<QServiceInterfaceDescriptor> interfaces = manager.findInterfaces(filter);
+
+ if(interfaces.isEmpty()) {
+ QServiceManager::Error error = manager.error();
+ return false;
+ }
+
+ QObject* service = manager.loadInterface(interfaces.first());
+
+ // access service's addWidget function
+ bool retVal = false;
+ bool ret = QMetaObject::invokeMethod(
+ service,
+ "addWidget",
+ Qt::DirectConnection,
+ Q_RETURN_ARG(bool, retVal),
+ Q_ARG(QString,widgetUri),
+ Q_ARG(QVariantHash,QVariantHash()));
+
+ if(!ret){
+ // invokeMethod returned error
+ return false;
+ }
+ if(!retVal){
+ // addWidget returned error
+ return false;
+ }
+ return true;
+}
+// End of snippet 1
+
+/*!
+ Sets home screen wallpaper as testwallpaper.png
+*/
+void ContentPublishClient::setWallpaper1()
+{
+ QString wallpaper = "c:/data/images/kqtihswallpapers/testwallpaper.jpg";
+ setWallpaper(wallpaper);
+}
+
+/*!
+ Sets home screen wallpaper as testwallpaper2.png
+*/
+void ContentPublishClient::setWallpaper2()
+{
+ QString wallpaper = "c:/data/images/kqtihswallpapers/testwallpaper2.jpg";
+ setWallpaper(wallpaper);
+}
+
+/*!
+ Changes home screen wallpaper to \a wallpaper image.
+ Note. load function needs to be called before this, it creates mService object.
+
+*/
+// Start of snippet 2
+bool ContentPublishClient::setWallpaper(QString wallpaper)
+{
+ QByteArray signature = QMetaObject::normalizedSignature("setWallpaper(QString)");
int methodIndex = mService->metaObject()->indexOfMethod(signature);
+ if (methodIndex<0) {
+ return false;
+ }
QMetaMethod method = mService->metaObject()->method(methodIndex);
bool retVal(false);
- QString widget = "hsclockwidgetplugin";
-
bool ret = method.invoke( mService,
Qt::DirectConnection,
Q_RETURN_ARG(bool, retVal),
- Q_ARG(QString,widget),
- Q_ARG(QVariantHash,QVariantHash()));
+ Q_ARG(QString,wallpaper));
if(!ret){
- qDebug()<< "method invoke failed!";
+ // invokeMethod returned error
+ return false;
}
if(!retVal){
- qDebug() << "addWidget() failed!!";
+ // setWallpaper returned error
+ return false;
}
+ return true;
}
+
+// End of snippet 2
--- a/homescreenapp/examples/contentpublishclient/src/main.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/examples/contentpublishclient/src/main.cpp Mon May 03 12:24:59 2010 +0300
@@ -19,46 +19,59 @@
#include <HbMainWindow>
#include <HbView>
#include <HbPushButton>
-
+#include <QGraphicsLinearLayout>
#include <QDir>
#include "contentpublishclient.h"
int main(int argc, char *argv[])
{
- // Initialization
+ // Initialization
HbApplication app(argc, argv);
-
- QString path = QDir::toNativeSeparators(QDir("z:\\hsresources\\plugins\\homescreenclientplugin\\").absolutePath());
- QString fullFileName = path + "\\hshomescreenclientplugin.xml";
-
+
QServiceManager manager;
- if(QFile::exists(fullFileName)) {
- QCoreApplication::addLibraryPath(path);
- manager.addService(fullFileName);
- }
-
// Create main window.
- HbMainWindow* mainWindow = new HbMainWindow();
+ HbMainWindow mainWindow;
// Create content publisher client
ContentPublishClient contentPublishClient(manager);
-
- QString buttonString = "Create widget";
- if(!contentPublishClient.load()) {
+
+ QString buttonString = "Add HelloWorld";
+ bool clientOk = contentPublishClient.load();
+ if (!clientOk) {
buttonString = "Open failed";
}
- HbPushButton* button = new HbPushButton(buttonString);
+ HbWidget *myView = new HbWidget();
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+
+ HbPushButton* button1 = new HbPushButton(buttonString);
+ layout->addItem(button1);
+ contentPublishClient.connect(button1, SIGNAL(pressed()), SLOT(addHelloworldWidget()));
+
+ if (clientOk) {
+ HbPushButton* button2 = new HbPushButton("Add Clock widget");
+ HbPushButton* button3 = new HbPushButton("Set wallpaper1");
+ HbPushButton* button4 = new HbPushButton("Set wallpaper2");
+
+ layout->addItem(button2);
+ layout->addItem(button3);
+ layout->addItem(button4);
+
+ contentPublishClient.connect(button2, SIGNAL(pressed()), SLOT(addClockWidget()));
+ contentPublishClient.connect(button3, SIGNAL(pressed()), SLOT(setWallpaper1()));
+ contentPublishClient.connect(button4, SIGNAL(pressed()), SLOT(setWallpaper2()));
+ }
+
+
+ myView->setLayout(layout);
// Add view
- mainWindow->addView(button);
-
- contentPublishClient.connect(button, SIGNAL(pressed()), SLOT(addWidget()));
+ mainWindow.addView(myView);
// Show main window
- mainWindow->show();
+ mainWindow.show();
return app.exec();
}
--- a/homescreenapp/examples/helloworldwidgetplugin/helloworldwidgetplugin/helloworldwidgetplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/examples/helloworldwidgetplugin/helloworldwidgetplugin/helloworldwidgetplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -52,7 +52,7 @@
SUBDIRPART = release
}
- PLUGIN_SUBDIR = /hsresources/import/widgetregistry/20022F7E
+ PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F7E
DESTDIR = $$PWD/../../../../../bin/$${SUBDIRPART}/$${PLUGIN_SUBDIR}
--- a/homescreenapp/examples/helloworldwidgetplugin/helloworldwidgetplugin/inc/helloworldwidget.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/examples/helloworldwidgetplugin/helloworldwidgetplugin/inc/helloworldwidget.h Mon May 03 12:24:59 2010 +0300
@@ -20,8 +20,6 @@
#include <HbWidget>
-class QPushButton;
-
class HelloWorldWidget : public HbWidget
{
Q_OBJECT
@@ -40,7 +38,6 @@
private:
Q_DISABLE_COPY(HelloWorldWidget)
- QPushButton *mButton;
};
#endif // HELLOWORLDWIDGET_H
--- a/homescreenapp/examples/helloworldwidgetplugin/helloworldwidgetplugin/src/helloworldwidget.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/examples/helloworldwidgetplugin/helloworldwidgetplugin/src/helloworldwidget.cpp Mon May 03 12:24:59 2010 +0300
@@ -15,8 +15,8 @@
*
*/
-#include <QGraphicsProxyWidget>
-#include <QPushButton>
+#include <QGraphicsLinearLayout>
+#include <HbLabel>
#include "helloworldwidget.h"
/*!
@@ -32,12 +32,14 @@
Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
*/
HelloWorldWidget::HelloWorldWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
- : HbWidget(parent, flags),
- mButton(0)
+ : HbWidget(parent, flags)
{
- QGraphicsProxyWidget *proxy = new QGraphicsProxyWidget(this);
- mButton = new QPushButton("Hello World");
- proxy->setWidget(mButton);
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+ setLayout(layout);
+ HbLabel *helloWorld = new HbLabel("Hello World!");
+ helloWorld->setPreferredSize(QSizeF(130.0,20.0));
+ layout->setContentsMargins(0.0, 0.0, 0.0, 0.0);
+ layout->addItem(helloWorld);
}
/*!
--- a/homescreenapp/examples/helloworldwidgetplugin/sis/helloworldwidgetplugin.bat Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/examples/helloworldwidgetplugin/sis/helloworldwidgetplugin.bat Mon May 03 12:24:59 2010 +0300
@@ -1,5 +1,5 @@
@rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
@rem All rights reserved.
@rem This component and the accompanying materials are made available
@rem under the terms of "Eclipse Public License v1.0"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,19 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: Example of home screen widget
+#
+
+TEMPLATE = subdirs
+SUBDIRS = localisedhellowidgetplugin \
+ localisedhellowidgetplugininstaller
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/inc/localisedhellowidget.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,58 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Example of home screen widget
+*
+*/
+
+#ifndef HELLOWORLDWIDGET_H
+#define HELLOWORLDWIDGET_H
+
+#include <HbWidget>
+
+
+class HbPushButton;
+class QGraphicsPixmapItem;
+class HbIconItem;
+
+class LocalisedHelloWidget : public HbWidget
+{
+ Q_OBJECT
+ Q_PROPERTY(QString rootPath READ rootPath WRITE setRootPath)
+public:
+ LocalisedHelloWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
+ ~LocalisedHelloWidget();
+
+public:
+ QRectF boundingRect() const;
+ QPainterPath shape() const;
+
+ QString rootPath()const;
+ void setRootPath(const QString &rootPath);
+public slots:
+ void onInitialize();
+ void onShow();
+ void onHide();
+private slots:
+ void onButtonPressed();
+
+private:
+ Q_DISABLE_COPY(LocalisedHelloWidget)
+
+ HbPushButton *mButton;
+ QString mText;
+ QString mRootPath;
+ HbIconItem *mIcon;
+};
+
+#endif // HELLOWORLDWIDGET_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/inc/localisedhellowidgetplugin.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Example of localised home screen widget
+*
+*/
+
+#ifndef LOCALISEDHELLOWIDGETPLUGIN_H
+#define LOCALISEDHELLOWIDGETPLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+class LocalisedHelloWidgetPlugin : public QObject, public QServicePluginInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+ QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+ QServiceContext *context,
+ QAbstractSecuritySession *session);
+};
+
+#endif // LOCALISEDHELLOWIDGETPLUGIN_H
Binary file homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin.qm has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin.ts Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_title_hello_world">
+ <comment>Hello World title</comment>
+ <source>Hello World</source>
+ <translation variants="no">Hello World</translation>
+ <extra-loc-layout_id></extra-loc-layout_id>
+ <extra-loc-viewid>helloview</extra-loc-viewid>
+ <extra-loc-positionid>title</extra-loc-positionid>
+ <extra-loc-feature>he</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_info_hello">
+ <comment>Hello text</comment>
+ <source>Hello!</source>
+ <translation variants="no">Hello!</translation>
+ <extra-loc-layout_id></extra-loc-layout_id>
+ <extra-loc-viewid>helloview</extra-loc-viewid>
+ <extra-loc-positionid>info</extra-loc-positionid>
+ <extra-loc-feature>he</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
Binary file homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_gb.qm has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_gb.ts Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_title_hello_world">
+ <comment>Hello World title</comment>
+ <source>Hello World</source>
+ <translation variants="no">Hello World</translation>
+ <extra-loc-layout_id></extra-loc-layout_id>
+ <extra-loc-viewid>helloview</extra-loc-viewid>
+ <extra-loc-positionid>title</extra-loc-positionid>
+ <extra-loc-feature>he</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_info_hello">
+ <comment>Hello text</comment>
+ <source>Hello!</source>
+ <translation variants="no">How do you do!</translation>
+ <extra-loc-layout_id></extra-loc-layout_id>
+ <extra-loc-viewid>helloview</extra-loc-viewid>
+ <extra-loc-positionid>info</extra-loc-positionid>
+ <extra-loc-feature>he</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
Binary file homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_us.qm has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_en_us.ts Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_title_hello_world">
+ <comment>Hello World title</comment>
+ <source>Hello World</source>
+ <translation variants="no">Hi World</translation>
+ <extra-loc-layout_id></extra-loc-layout_id>
+ <extra-loc-viewid>helloview</extra-loc-viewid>
+ <extra-loc-positionid>title</extra-loc-positionid>
+ <extra-loc-feature>he</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_info_hello">
+ <comment>Hello text</comment>
+ <source>Hello!</source>
+ <translation variants="no">Hi dude!</translation>
+ <extra-loc-layout_id></extra-loc-layout_id>
+ <extra-loc-viewid>helloview</extra-loc-viewid>
+ <extra-loc-positionid>info</extra-loc-positionid>
+ <extra-loc-feature>he</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
Binary file homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_fi.qm has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/locales/localisedhellowidgetplugin_fi.ts Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_title_hello_world">
+ <comment>Hello World title</comment>
+ <source>Hello World</source>
+ <translation variants="no">Hei maa!</translation>
+ <extra-loc-layout_id></extra-loc-layout_id>
+ <extra-loc-viewid>helloview</extra-loc-viewid>
+ <extra-loc-positionid>title</extra-loc-positionid>
+ <extra-loc-feature>he</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="localisedhellowidgetplugin_txt_helloview_info_hello">
+ <comment>Hello text</comment>
+ <source>Hello!</source>
+ <translation variants="no">No moro!</translation>
+ <extra-loc-layout_id></extra-loc-layout_id>
+ <extra-loc-viewid>helloview</extra-loc-viewid>
+ <extra-loc-positionid>info</extra-loc-positionid>
+ <extra-loc-feature>he</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/localisedhellowidgetplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,71 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: Example of home screen widget
+#
+
+TEMPLATE = lib
+CONFIG += plugin mobility hb
+MOBILITY = serviceframework
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
+INCLUDEPATH += ./inc
+
+symbian: {
+
+ INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+ TARGET.UID3 = 0x20022F80
+ TARGET.EPOCALLOWDLLDATA=1
+ TARGET.CAPABILITY = ALL -TCB
+
+ DESTDIR = /private/20022F35/import/widgetregistry/20022F80
+
+ plugins.path = $${DESTDIR}
+ plugins.sources = $${TARGET}.dll
+
+ widgetResources.path = $${DESTDIR}
+ widgetResources.sources += resource/$${TARGET}.xml
+ widgetResources.sources += resource/$${TARGET}.manifest
+ widgetResources.sources += resource/$${TARGET}.png
+
+ localisedFiles.path = /resource/qt/translations
+ localisedFiles.sources += ./locales/*.qm
+
+ DEPLOYMENT += plugins \
+ widgetResources \
+ localisedFiles
+}
+
+win32: {
+
+ CONFIG(debug, debug|release) {
+ SUBDIRPART = debug
+ } else {
+ SUBDIRPART = release
+ }
+
+ PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F80
+
+ DESTDIR = $$PWD/../../../../../bin/$${SUBDIRPART}/$${PLUGIN_SUBDIR}
+
+ manifest.path = $${DESTDIR}
+ manifest.files = ./resource/*.manifest ./resource/*.xml ./resource/*.png
+
+ widgetLocalisation.path = $$PWD/../../../../../bin/$${SUBDIRPART}/resource/qt/translations
+ widgetLocalisation.files += ./locales/*.qm
+
+ INSTALLS += manifest widgetLocalisation
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.manifest Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<widgetprovider>
+ <widget library="localisedhellowidgetplugin"
+ uri="localisedhellowidgetplugin"
+ title="Hello"
+ iconuri="localisedhellowidgetplugin.png"
+ description="Localised widget example."/>
+</widgetprovider>
Binary file homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.xml Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+ <name>localisedhellowidgetplugin</name>
+ <filepath>localisedhellowidgetplugin</filepath>
+ <description>Example widget</description>
+ <interface>
+ <name>com.nokia.symbian.IHomeScreenWidget</name>
+ <version>1.0</version>
+ <description>Example of localised widget</description>
+ <capabilities></capabilities>
+ <customproperty key="iconuri">localisedhellowidgetplugin.png</customproperty>
+ <customproperty key="title">Hello</customproperty>
+ </interface>
+</service>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/resource/localisedhellowidgetplugin.xml_for_sisx Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+ <name>localisedhellowidgetplugin</name>
+ <filepath>c:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.qtplugin</filepath>
+ <description>Localisation example widget</description>
+ <interface>
+ <name>com.nokia.symbian.IHomeScreenWidget</name>
+ <version>1.0</version>
+ <description>Example of localised widget</description>
+ <capabilities></capabilities>
+ <customproperty key="iconuri">localisedhellowidgetplugin.png</customproperty>
+ <customproperty key="title">Hello</customproperty>
+ </interface>
+</service>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/src/localisedhellowidget.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,121 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Example of home screen widget
+*
+*/
+
+#include <QGraphicsLinearLayout>
+#include <HbLabel>
+#include <HbPushButton>
+#include <QDir>
+#include <QPainter>
+#include <HbIconItem>
+#include "localisedhellowidget.h"
+
+/*!
+ \ingroup group_helloworld_widget
+ \class LocalisedHelloWidget
+ \brief Example implementation for home screen widget.
+
+ LocalisedHelloWidget derived from the HbWidget and implements
+ needed functions for the home screen widget.
+*/
+
+/*!
+ Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
+*/
+LocalisedHelloWidget::LocalisedHelloWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
+ : HbWidget(parent, flags),mIcon(0)
+{
+ QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical);
+ setPreferredSize(200,100);
+ setLayout(layout);
+ mButton = new HbPushButton();
+ layout->addItem(mButton);
+
+ connect(mButton,SIGNAL(pressed()),SLOT(onButtonPressed()));
+
+
+
+}
+
+/*!
+ Destructor
+*/
+LocalisedHelloWidget::~LocalisedHelloWidget()
+{
+
+}
+
+/*!
+ Return bounding rect
+*/
+QRectF LocalisedHelloWidget::boundingRect() const
+{
+ return childrenBoundingRect();
+}
+
+/*!
+ Return shape
+*/
+QPainterPath LocalisedHelloWidget::shape() const
+{
+ QPainterPath path;
+ path.addRect(boundingRect());
+ return path;
+}
+QString LocalisedHelloWidget::rootPath()const
+{
+ return mRootPath;
+}
+
+void LocalisedHelloWidget::setRootPath(const QString &rootPath)
+{
+ mRootPath = rootPath;
+}
+
+void LocalisedHelloWidget::onInitialize()
+{
+ // localisation can be used now
+ mText = hbTrId("localisedhellowidgetplugin_txt_helloview_info_hello");
+ mButton->setText(hbTrId("localisedhellowidgetplugin_txt_helloview_title_hello_world"));
+ // roothPath is set thus we can use it
+ QString iconPath = QDir::toNativeSeparators(mRootPath + "/localisedhellowidgetplugin.png");
+ mIcon = new HbIconItem(iconPath);
+ static_cast<QGraphicsLinearLayout*>(layout())->addItem(mIcon);
+
+
+}
+
+/*!
+ Called when widget is shown in the home screen
+*/
+void LocalisedHelloWidget::onShow()
+{
+}
+
+/*!
+ Called when widget is hidden from the home screen
+*/
+void LocalisedHelloWidget::onHide()
+{
+}
+
+void LocalisedHelloWidget::onButtonPressed()
+{
+ QString tmp = mButton->text();
+ mButton->setText(mText);
+ mText = tmp;
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugin/src/localisedhellowidgettplugin.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,146 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Example of localised home screen widget
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "localisedhellowidgetplugin.h"
+#include "localisedhellowidget.h"
+
+/**
+ @page page_creating_widget_plugin Creating Home Screen Widget Plugin
+
+ Widgets are exposed to the home screen through QT Service Framework.
+ Widget plugins are implemented according to
+ <a href="http://qt.nokia.com/doc/qtmobility-1.0-tp/service-frameworks.html">Qt service framework plugin model</a>.
+
+ See @ref page_nativewidgetmodel for the instructions how to create widget for the home screen.
+
+ The steps to create a widget plugin are:
+ <ol>
+ <li> Declare a plugin class that inherits from QObject and from the \c QServicePluginInterface interface.
+
+ <li> Use the Q_INTERFACES() macro to tell Qt's meta-object system about the \c QServicePluginInterface interface.
+
+ <li> Export the plugin using the Q_EXPORT_PLUGIN2() macro.
+
+ <li> Build the plugin using an suitable .pro file. See @ref page_deploying_widget_plugin
+ </ol>
+
+ An example (full example source code can be found from section @ref page_nativewidgetmodel):
+
+ Each widget plugin has a XML file that allows searching widgets through QT service framework without first loading it.
+ The XML file contains information on widgets inside the plugin:
+
+ \li \c name The name of the plugin binary.
+ \li \c filepath The absolute path and name of plugin without suffix
+ \li \c interface name Uniquely identifies the widget.
+ \li \c title Widget's human-readable name.
+ \li \c iconuri URI of the widget's icon image file.
+
+ Example: XML for a widget plugin.
+
+ @code
+ <?xml version="1.0" encoding="UTF-8"?>
+ <service>
+ <name>helloworldwidgetplugin</name>
+ <filepath>helloworldwidgetplugin</filepath>
+ <description>Example widget</description>
+ <interface>
+ <name>com.nokia.symbian.IHomeScreenWidget</name>
+ <version>1.0</version>
+ <description>Example of home screen widget</description>
+ <capabilities></capabilities>
+ <customproperty key="iconuri">helloworldwidgetplugin.png</customproperty>
+ <customproperty key="title">HelloWorld</customproperty>
+ </interface>
+ </service>
+ @endcode
+*/
+
+/**
+ @page page_deploying_widget_plugin Deploying Home Screen Widget Plugin
+
+ Widget's binaries and xml file(s) must be deployed to correct folders on emulator and in target.
+ Below are the needed .pro file for the \c helloworldwidgetplugin.
+
+ For example:
+
+ @code
+ # helloworldwidgetplugin.pro
+
+ TEMPLATE = lib
+ CONFIG += plugin mobility hb
+ MOBILITY = serviceframework
+
+ HEADERS += ./inc/ .h
+ SOURCES += ./src/ .cpp
+
+ DESTDIR = $${EPOCROOT}epoc32/data/c/private/20022F35/import/widgetregistry/20022F7E
+
+ INCLUDEPATH += ./inc
+
+ symbian: {
+ INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+ TARGET.UID3 = 0x20022F7E
+ TARGET.EPOCALLOWDLLDATA=1
+ TARGET.CAPABILITY = ALL -TCB
+
+ plugins.path = $${DESTDIR}
+ plugins.sources = $${TARGET}.dll
+
+ widgetResources.path = $${DESTDIR}
+ widgetResources.sources += resource/$${TARGET}.xml
+ widgetResources.sources += resource/$${TARGET}.manifest
+ widgetResources.sources += resource/$${TARGET}.png
+
+ DEPLOYMENT += plugins \
+ widgetResources
+ }
+
+ @endcode
+
+ For detailed information on DEPLOYMENT macro, see <a HREF="http://pepper.troll.no/s60prereleases/doc/qmake-variable-reference.html#deployment">here</a>.
+*/
+
+/*!
+ \ingroup group_helloworld_widget
+ \class HelloWorldWidgetPlugin
+ \brief Example implementation for home screen widget plugin.
+*/
+
+/*!
+ Initialize plugin for hello world widget. Contains necessary information about
+ the hello world widget that it can be loaded through QT Service Framework.
+*/
+QObject *LocalisedHelloWidgetPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+ QServiceContext *context,
+ QAbstractSecuritySession *session)
+{
+ Q_UNUSED(context);
+ Q_UNUSED(session);
+
+ if (descriptor.interfaceName() == QLatin1String("com.nokia.symbian.IHomeScreenWidget")) {
+ return new LocalisedHelloWidget();
+ } else {
+ return 0;
+ }
+}
+
+Q_EXPORT_PLUGIN2(localisedhellowidgetplugin, LocalisedHelloWidgetPlugin)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugininstaller/localisedhellowidgetplugininstaller.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Example of home screen widget
+*
+*/
+
+#include <qservicemanager.h>
+#include <QCoreApplication>
+#include <QFile>
+
+QTM_USE_NAMESPACE
+
+const char xml[] = "C:/data/widgets/servicefw/localisedhellowidgetplugin.xml";
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+
+ QServiceManager s;
+
+ if (QFile::exists(xml)) {
+ s.addService(xml);
+ } else {
+ s.removeService("localisedhellowidgetplugin");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/localisedhellowidgetplugininstaller/localisedhellowidgetplugininstaller.pro Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,29 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: Example of home screen widget
+#
+
+TEMPLATE = app
+
+QT = core
+CONFIG += no_icon
+
+CONFIG += mobility
+MOBILITY = serviceframework
+
+SOURCES += localisedhellowidgetplugininstaller.cpp
+
+symbian {
+ TARGET.CAPABILITY = ALL -TCB
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin.bat Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,30 @@
+@rem
+@rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+@echo off
+
+if exist localisedhellowidgetplugin.sisx del localisedhellowidgetplugin.sisx
+
+makesis localisedhellowidgetplugin.pkg
+signsis localisedhellowidgetplugin.sis localisedhellowidgetplugin.sisx ../../../sis/rd.cer ../../../sis/rd-key.pem
+
+if exist localisedhellowidgetplugin.sisx (
+echo localisedhellowidgetplugin.sisx creation SUCCEEDED
+del localisedhellowidgetplugin.sis
+)
+
+if not exist localisedhellowidgetplugin.sisx (
+echo localisedhellowidgetplugin.sisx creation FAILED
+)
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/examples/localisedhellowidgetplugin/sis/localisedhellowidgetplugin.pkg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,47 @@
+;
+; Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+; All rights reserved.
+; This component and the accompanying materials are made available
+; under the terms of "Eclipse Public License v1.0"
+; which accompanies this distribution, and is available
+; at the URL "http://www.eclipse.org/legal/epl-v10.html".
+;
+; Initial Contributors:
+; Nokia Corporation - initial contribution.
+;
+; Contributors:
+;
+; Description:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"localisedhellowidgetplugin"},(0x20022F80),1,0,0
+
+; Localised Vendor name
+%{"Vendor"}
+
+; Unique Vendor name
+:"Vendor"
+
+; Manual PKG pre-rules from PRO files
+; Default HW/platform dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+
+"/epoc32/release/armv5/urel/localisedhellowidgetplugin.dll" - "!:/sys/bin/localisedhellowidgetplugin.dll"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.qtplugin" - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.qtplugin"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.manifest" - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.manifest"
+"../localisedhellowidgetplugin/resource/localisedhellowidgetplugin.xml_for_sisx" - "C:/data/widgets/servicefw/localisedhellowidgetplugin.xml"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.png" - "!:/private/20022F35/import/widgetregistry/20022F80/localisedhellowidgetplugin.png"
+
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin.qm" - "!:/resource/qt/translations/localisedhellowidgetplugin.qm"
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_fi.qm" - "!:/resource/qt/translations/localisedhellowidgetplugin_fi.qm"
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_en_us.qm" - "!:/resource/qt/translations/localisedhellowidgetplugin_en_us.qm"
+"/epoc32/data/z/resource/qt/translations/localisedhellowidgetplugin_en_gb.qm" - "!:/resource/qt/translations/localisedhellowidgetplugin_en_gb.qm"
+
+"/epoc32/release/armv5/urel/localisedhellowidgetplugininstaller.exe" - "!:/sys/bin/localisedhellowidgetplugininstaller.exe", FR, RB, RW
--- a/homescreenapp/homescreenapp.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/homescreenapp.pro Mon May 03 12:24:59 2010 +0300
@@ -23,7 +23,7 @@
stateplugins \
widgetplugins \
hsapplication \
- hsmenucontentpublish
+ hsmenuclientplugin
symbian:SUBDIRS += hshomescreenclientplugin
--- a/homescreenapp/hsapplication/conf/base/confml/data.confml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<confml:configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:confml="http://www.s60.com/xml/confml/2" xsi:schemaLocation="http://www.s60.com/xml/confml/2 http://www.s60.com/xml/confml/1#//confml2" name="data">
- <confml:data>
- <confml:HomeScreenDbSettings>
- <confml:landscapeWallpaper/>
- <confml:portraitWallpaper/>
- <confml:maximumPageCount>8</confml:maximumPageCount>
- <confml:defaultPageId map="HomeScreenDbSettings/Pages[@key='1']"/>
- <confml:Widgets extensionPolicy="replace"><confml:id>1</confml:id><confml:uri>hsclockwidgetplugin</confml:uri><confml:pageId>1</confml:pageId></confml:Widgets>
- <confml:Widgets><confml:id>2</confml:id><confml:uri>hsdialerwidgetplugin</confml:uri><confml:pageId>1</confml:pageId></confml:Widgets>
- <confml:Pages extensionPolicy="replace"><confml:id>1</confml:id><confml:indexPosition>0</confml:indexPosition></confml:Pages>
- <confml:Pages><confml:id>2</confml:id><confml:indexPosition>1</confml:indexPosition></confml:Pages>
- <confml:Pages><confml:id>3</confml:id><confml:indexPosition>2</confml:indexPosition></confml:Pages>
- <confml:WidgetPresentations extensionPolicy="append"><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:width>150</confml:width><confml:height>150</confml:height><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></confml:widgetId></confml:WidgetPresentations>
- <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:width>150</confml:width><confml:height>150</confml:height><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></confml:widgetId></confml:WidgetPresentations>
- <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>136</confml:x><confml:y>276</confml:y><confml:width>81</confml:width><confml:height>81</confml:height><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='2']"></confml:widgetId></confml:WidgetPresentations>
- <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>136</confml:x><confml:y>176</confml:y><confml:width>81</confml:width><confml:height>81</confml:height><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='2']"></confml:widgetId></confml:WidgetPresentations>
- <confml:WidgetPreferences extensionPolicy="replace"><confml:key>clockType</confml:key><confml:value>Analog</confml:value><confml:widgetId>1</confml:widgetId></confml:WidgetPreferences>
- </confml:HomeScreenDbSettings>
- </confml:data>
-</confml:configuration>
\ No newline at end of file
--- a/homescreenapp/hsapplication/conf/base/confml/homescreen_view.confml Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/conf/base/confml/homescreen_view.confml Mon May 03 12:24:59 2010 +0300
@@ -8,7 +8,11 @@
<confml:setting ref="HomeScreenDbSettings/portraitWallpaper"/>
<confml:setting ref="HomeScreenDbSettings/landscapeWallpaper"/>
<confml:setting ref="HomeScreenDbSettings/maximumPageCount"/>
- <confml:setting ref="HomeScreenDbSettings/defaultPageId"/>
+ <confml:setting ref="HomeScreenDbSettings/defaultPageId"/>
+ <confml:setting ref="HomeScreenDbSettings/maximumWidgetHeight"/>
+ <confml:setting ref="HomeScreenDbSettings/maximumWidgetWidth"/>
+ <confml:setting ref="HomeScreenDbSettings/minimumWidgetHeight"/>
+ <confml:setting ref="HomeScreenDbSettings/minimumWidgetWidth"/>
</confml:group>
<confml:group name="Pages">
<confml:desc>Sample Description</confml:desc>
--- a/homescreenapp/hsapplication/conf/base/confml/homescreendb.confml Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/conf/base/confml/homescreendb.confml Mon May 03 12:24:59 2010 +0300
@@ -4,7 +4,12 @@
<confml:setting ref="portraitWallpaper" name="Portrait wallpaper" type="string"/>
<confml:setting ref="landscapeWallpaper" name="Landscape wallpaper" type="string"/>
<confml:setting ref="maximumPageCount" name="Maximum number of pages" type="int"/>
- <confml:setting ref="defaultPageId" name="Default page ID" type="selection"> <confml:option map="HomeScreenDbSettings/Pages"/>
+ <confml:setting ref="maximumWidgetHeight" name="Maximum height of widget" type="int"/>
+ <confml:setting ref="maximumWidgetWidth" name="Maximum width of widget" type="int"/>
+ <confml:setting ref="minimumWidgetHeight" name="Minimum height of widget" type="int"/>
+ <confml:setting ref="minimumWidgetWidth" name="Minimum width of widget" type="int"/>
+ <confml:setting ref="defaultPageId" name="Default page ID" type="selection">
+ <confml:option map="HomeScreenDbSettings/Pages"/>
</confml:setting>
<confml:setting ref="Pages" mapKey="id" mapValue="id" name="Pages" type="sequence">
<confml:setting ref="id" name="ID" type="int"/>
@@ -21,8 +26,6 @@
<confml:setting ref="key" name="Key" type="string"/>
<confml:setting ref="x" name="X position" type="real"/>
<confml:setting ref="y" name="Y position" type="real"/>
- <confml:setting ref="width" name="Width" type="real"/>
- <confml:setting ref="height" name="Height" type="real"/>
<confml:setting ref="zValue" name="Z value" type="real"/>
<confml:setting ref="widgetId" name="Widget ID" type="selection">
<confml:option map="HomeScreenDbSettings/Widgets"/>
@@ -36,4 +39,29 @@
</confml:setting>
</confml:setting>
</confml:feature>
+ <confml:data>
+ <confml:HomeScreenDbSettings>
+ <confml:landscapeWallpaper/>
+ <confml:portraitWallpaper/>
+ <confml:maximumPageCount>8</confml:maximumPageCount>
+ <confml:maximumWidgetHeight>40</confml:maximumWidgetHeight>
+ <confml:maximumWidgetWidth>51</confml:maximumWidgetWidth>
+ <confml:minimumWidgetHeight>3</confml:minimumWidgetHeight>
+ <confml:minimumWidgetWidth>3</confml:minimumWidgetWidth>
+ <confml:defaultPageId map="HomeScreenDbSettings/Pages[@key='1']"/>
+ <confml:Widgets extensionPolicy="replace"><confml:id>1</confml:id><confml:uri>hsclockwidgetplugin</confml:uri><confml:pageId>1</confml:pageId></confml:Widgets>
+ <confml:Widgets><confml:id>2</confml:id><confml:uri>hsdialerwidgetplugin</confml:uri><confml:pageId>1</confml:pageId></confml:Widgets>
+ <confml:Widgets><confml:id>3</confml:id><confml:uri>ftuhswidget</confml:uri><confml:pageId>1</confml:pageId></confml:Widgets>
+ <confml:WidgetPresentations extensionPolicy="append"><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></confml:widgetId></confml:WidgetPresentations>
+ <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>15</confml:x><confml:y>80</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='1']"></confml:widgetId></confml:WidgetPresentations>
+ <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>136</confml:x><confml:y>276</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='2']"></confml:widgetId></confml:WidgetPresentations>
+ <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>136</confml:x><confml:y>176</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='2']"></confml:widgetId></confml:WidgetPresentations>
+ <confml:WidgetPresentations><confml:key>portrait</confml:key><confml:x>15</confml:x><confml:y>400</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='3']"></confml:widgetId></confml:WidgetPresentations>
+ <confml:WidgetPresentations><confml:key>landscape</confml:key><confml:x>300</confml:x><confml:y>150</confml:y><confml:zValue>0.0</confml:zValue><confml:widgetId map="HomeScreenDbSettings/Widgets[@key='3']"></confml:widgetId></confml:WidgetPresentations>
+ <confml:WidgetPreferences extensionPolicy="replace"><confml:key>clockType</confml:key><confml:value>Analog</confml:value><confml:widgetId>1</confml:widgetId></confml:WidgetPreferences>
+ <confml:Pages extensionPolicy="replace"><confml:id>1</confml:id><confml:indexPosition>0</confml:indexPosition></confml:Pages>
+ <confml:Pages><confml:id>2</confml:id><confml:indexPosition>1</confml:indexPosition></confml:Pages>
+ <confml:Pages><confml:id>3</confml:id><confml:indexPosition>2</confml:indexPosition></confml:Pages>
+ </confml:HomeScreenDbSettings>
+ </confml:data>
</confml:configuration>
\ No newline at end of file
--- a/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/create.sql Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/create.sql Mon May 03 12:24:59 2010 +0300
@@ -4,7 +4,11 @@
portraitWallpaper TEXT,
landscapeWallpaper TEXT,
defaultPageId INTEGER,
- maximumPageCount INTEGER);
+ maximumPageCount INTEGER,
+ maximumWidgetHeight INTEGER,
+ maximumWidgetWidth INTEGER,
+ minimumWidgetHeight INTEGER,
+ minimumWidgetWidth INTEGER);
DROP TABLE IF EXISTS Pages;
CREATE TABLE Pages (
@@ -22,8 +26,6 @@
key TEXT,
x REAL,
y REAL,
- width REAL,
- height REAL,
zValue REAL,
widgetId INTEGER,
UNIQUE(widgetId, key) ON CONFLICT REPLACE,
--- a/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/fill.sql Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/conf/base/implml/homescreendb_templates/fill.sql Mon May 03 12:24:59 2010 +0300
@@ -2,7 +2,11 @@
{%- set landscapeWallpaper = feat_tree.HomeScreenDbSettings.landscapeWallpaper._value or '' -%}
{%- set defaultPageId = feat_tree.HomeScreenDbSettings.defaultPageId._value -%}
{%- set maximumPageCount = feat_tree.HomeScreenDbSettings.maximumPageCount._value -%}
-INSERT INTO Scene (portraitWallpaper, landscapeWallpaper, defaultPageId, maximumPageCount) VALUES ('{{portraitWallpaper}}', '{{landscapeWallpaper}}', {{defaultPageId}}, {{maximumPageCount}});
+{%- set maximumWidgetHeight = feat_tree.HomeScreenDbSettings.maximumWidgetHeight._value -%}
+{%- set maximumWidgetWidth = feat_tree.HomeScreenDbSettings.maximumWidgetWidth._value -%}
+{%- set minimumWidgetHeight = feat_tree.HomeScreenDbSettings.minimumWidgetHeight._value -%}
+{%- set minimumWidgetWidth = feat_tree.HomeScreenDbSettings.minimumWidgetWidth._value -%}
+INSERT INTO Scene (portraitWallpaper, landscapeWallpaper, defaultPageId, maximumPageCount, maximumWidgetHeight, maximumWidgetWidth, minimumWidgetHeight, minimumWidgetWidth) VALUES ('{{portraitWallpaper}}', '{{landscapeWallpaper}}', {{defaultPageId}}, {{maximumPageCount}}, {{maximumWidgetHeight}}, {{maximumWidgetWidth}}, {{minimumWidgetHeight}}, {{minimumWidgetWidth}});
{% for index in range(feat_tree.HomeScreenDbSettings.Pages._value|length) -%}
{%- set id = feat_tree.HomeScreenDbSettings.Pages.id._value[index] -%}
@@ -22,12 +26,10 @@
{%- set key = feat_tree.HomeScreenDbSettings.WidgetPresentations.key._value[index] or '' -%}
{%- set x = feat_tree.HomeScreenDbSettings.WidgetPresentations.x._value[index] -%}
{%- set y = feat_tree.HomeScreenDbSettings.WidgetPresentations.y._value[index] -%}
- {%- set width = feat_tree.HomeScreenDbSettings.WidgetPresentations.width._value[index] -%}
- {%- set height = feat_tree.HomeScreenDbSettings.WidgetPresentations.height._value[index] -%}
{%- set zValue = feat_tree.HomeScreenDbSettings.WidgetPresentations.zValue._value[index] -%}
{%- set widgetId = feat_tree.HomeScreenDbSettings.WidgetPresentations.widgetId._value[index] -%}
- INSERT INTO WidgetPresentations (key, x, y, width, height, zValue, widgetId) VALUES ('{{key}}', {{x}}, {{y}}, {{width}}, {{height}}, {{zValue}}, {{widgetId}});
+ INSERT INTO WidgetPresentations (key, x, y, zValue, widgetId) VALUES ('{{key}}', {{x}}, {{y}}, {{zValue}}, {{widgetId}});
{% endfor %}
{% for index in range(feat_tree.HomeScreenDbSettings.WidgetPreferences._value|length) -%}
--- a/homescreenapp/hsapplication/conf/base/root.confml Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/conf/base/root.confml Mon May 03 12:24:59 2010 +0300
@@ -2,5 +2,4 @@
<confml:configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:confml="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" xsi:schemaLocation="http://www.s60.com/xml/confml/2 http://www.s60.com/xml/confml/1#//confml2 http://www.w3.org/2001/XInclude http://www.s60.com/xml/confml/1#//include">
<xi:include href="confml/homescreendb.confml"/>
<xi:include href="confml/homescreen_view.confml"/>
- <xi:include href="confml/data.confml"/>
</confml:configuration>
\ No newline at end of file
Binary file homescreenapp/hsapplication/homescreen.qm has changed
--- a/homescreenapp/hsapplication/homescreen.ts Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/homescreen.ts Mon May 03 12:24:59 2010 +0300
@@ -2,123 +2,183 @@
<!DOCTYPE TS>
<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
<context>
-<message id="txt_homescreen_list_add_content">
- <comment>Home screen canvas menu item for opening Application library</comment>
- <source>Add content</source>
- <translation>Add content</translation>
- <extra-loc-layout_id>qtl_menu_set</extra-loc-layout_id>
+<message numerus="no" id="txt_homescreen_opt_add_page">
+ <comment>User adds a new page to home screen</comment>
+ <source>Add page</source>
+ <translation variants="no">Add page</translation>
+ <extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
- <extra-loc-positionid>list</extra-loc-positionid>
+ <extra-loc-positionid>opt</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_opt_add_page">
- <comment>User adds a new page to home screen</comment>
- <source>Add page</source>
- <translation>Add page</translation>
+<message numerus="no" id="txt_homescreen_opt_change_wallpaper">
+ <comment>Options menu item for opening picture gallery</comment>
+ <source>Change wallpaper</source>
+ <translation variants="no">Change wallpaper</translation>
<extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
<extra-loc-positionid>opt</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_opt_remove_page">
- <comment>User removes page from home screen</comment>
- <source>Remove page</source>
- <translation>Remove page</translation>
+<message numerus="no" id="txt_homescreen_title_offline">
+ <comment>Offline text in home screen view title</comment>
+ <source>Offline</source>
+ <translation variants="no">Offline</translation>
+ <extra-loc-layout_id>qtl_chrome_title</extra-loc-layout_id>
+ <extra-loc-viewid>homescreen</extra-loc-viewid>
+ <extra-loc-positionid>title</extra-loc-positionid>
+ <extra-loc-feature>ho</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_homescreen_opt_clean_up_page">
+ <comment>Options menu item for arranging home screen content automatically</comment>
+ <source>Clean up page</source>
+ <translation variants="no">Clean up page</translation>
<extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
<extra-loc-positionid>opt</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_list_change_wallpaper">
- <comment>Home screen canvas menu item for opening picture gallery</comment>
- <source>Change wallpaper</source>
- <translation>Change wallpaper</translation>
+<message numerus="no" id="txt_homescreen_title_remove_page">
+ <comment>Heading text in confirmation dialog</comment>
+ <source>Remove page</source>
+ <translation variants="no">Remove page</translation>
+ <extra-loc-layout_id>qtl_dialog_pri_heading</extra-loc-layout_id>
+ <extra-loc-viewid>homescreen</extra-loc-viewid>
+ <extra-loc-positionid>title</extra-loc-positionid>
+ <extra-loc-feature>ho</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_homescreen_opt_home_screen_to_offline">
+ <comment>Sends request to all widgets to disable data connections</comment>
+ <source>Home screen to offline</source>
+ <translation variants="no">Home screen to offline</translation>
+ <extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>
+ <extra-loc-viewid>homescreen</extra-loc-viewid>
+ <extra-loc-positionid>opt</extra-loc-positionid>
+ <extra-loc-feature>ho</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_homescreen_list_add_content">
+ <comment>Home screen canvas menu item for opening Application library</comment>
+ <source>Add content</source>
+ <translation variants="no">Add content</translation>
<extra-loc-layout_id>qtl_menu_set</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
<extra-loc-positionid>list</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_opt_change_wallpaper">
- <comment>Options menu item for opening picture gallery</comment>
- <source>Change wallpaper</source>
- <translation>Change wallpaper</translation>
+<message numerus="no" id="txt_homescreen_opt_remove_page">
+ <comment>User removes page from home screen</comment>
+ <source>Remove page</source>
+ <translation variants="no">Remove page</translation>
<extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
<extra-loc-positionid>opt</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_list_add_page">
- <comment>Home screen canvas menu item for adding new Homescreen page next currently active one</comment>
- <source>Add page</source>
- <translation>Add page</translation>
+<message numerus="no" id="txt_homescreen_title_in_car_control">
+ <comment>Text in home screen view title when SIM access profile is active. While this mode is active, SIM card is controlled by car kit.</comment>
+ <source>In car control</source>
+ <translation variants="no">In car control</translation>
+ <extra-loc-layout_id>qtl_chrome_title</extra-loc-layout_id>
+ <extra-loc-viewid>homescreen</extra-loc-viewid>
+ <extra-loc-positionid>title</extra-loc-positionid>
+ <extra-loc-feature>ho</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_homescreen_list_change_wallpaper">
+ <comment>Home screen canvas menu item for opening picture gallery</comment>
+ <source>Change wallpaper</source>
+ <translation variants="no">Change wallpaper</translation>
<extra-loc-layout_id>qtl_menu_set</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
<extra-loc-positionid>list</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_title_offline">
- <comment>Offline text in home screen view title</comment>
- <source>Offline</source>
- <translation>Offline</translation>
- <extra-loc-layout_id>qtl_chrome_title</extra-loc-layout_id>
+<message numerus="no" id="txt_homescreen_info_page_and_content_will_be_remov">
+ <comment>Text in confirmation dialog</comment>
+ <source>Page and content will be removed</source>
+ <translation variants="no">Page and content will be removed</translation>
+ <extra-loc-layout_id>qtl_dialog_pri5</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
- <extra-loc-positionid>title</extra-loc-positionid>
+ <extra-loc-positionid>info</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_opt_clean_up_page">
- <comment>Options menu item for arranging home screen content automatically</comment>
- <source>Clean up page</source>
- <translation>Clean up page</translation>
+<message numerus="no" id="txt_homescreen_list_add_page">
+ <comment>Home screen canvas menu item for adding new Homescreen page next currently active one</comment>
+ <source>Add page</source>
+ <translation variants="no">Add page</translation>
+ <extra-loc-layout_id>qtl_menu_set</extra-loc-layout_id>
+ <extra-loc-viewid>homescreen</extra-loc-viewid>
+ <extra-loc-positionid>list</extra-loc-positionid>
+ <extra-loc-feature>ho</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_homescreen_button_ok">
+ <comment>Button in confirmation dialog</comment>
+ <source>OK</source>
+ <translation variants="no">OK</translation>
+ <extra-loc-layout_id>qtl_dialog_softkey_1</extra-loc-layout_id>
+ <extra-loc-viewid>homescreen</extra-loc-viewid>
+ <extra-loc-positionid>button</extra-loc-positionid>
+ <extra-loc-feature>ho</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_homescreen_opt_home_screen_to_online">
+ <comment>Sends request to all widgets to enable data connections</comment>
+ <source>Home screen to online</source>
+ <translation variants="no">Home screen to online</translation>
<extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
<extra-loc-positionid>opt</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_opt_home_screen_to_offline">
- <comment>Sends request to all widgets to disable data connections</comment>
- <source>Home screen to offline</source>
- <translation>Home screen to offline</translation>
- <extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>
+<message numerus="no" id="txt_homescreen_button_cancel">
+ <comment>Button in confirmation dialog</comment>
+ <source>Cancel</source>
+ <translation variants="no">Cancel</translation>
+ <extra-loc-layout_id>qtl_dialog_softkey_2</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
- <extra-loc-positionid>opt</extra-loc-positionid>
+ <extra-loc-positionid>button</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_opt_home_screen_to_online">
- <comment>Sends request to all widgets to enable data connections</comment>
- <source>Home screen to online</source>
- <translation>Home screen to online</translation>
+<message numerus="no" id="txt_homescreen_opt_task_switcher">
+ <comment>Options menu item for opening Task switcher</comment>
+ <source>Task switcher</source>
+ <translation variants="no">Task switcher</translation>
<extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
<extra-loc-positionid>opt</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_opt_refresh">
+<message numerus="no" id="txt_homescreen_opt_refresh">
<comment>Sends request to all running widgets to query their respective servers to refresh their displays.</comment>
<source>Refresh</source>
- <translation>Refresh</translation>
+ <translation variants="no">Refresh</translation>
<extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
<extra-loc-positionid>opt</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
-<message id="txt_homescreen_opt_task_switcher">
- <comment>Options menu item for opening Task switcher</comment>
- <source>Task switcher</source>
- <translation>Task switcher</translation>
- <extra-loc-layout_id>qtl_menu_pri</extra-loc-layout_id>
+<message numerus="no" id="txt_homescreen_title_no_service">
+ <comment>Text in home screen view title, when device is out of network coverage or no SIM card present</comment>
+ <source>No service</source>
+ <translation variants="no">No service</translation>
+ <extra-loc-layout_id>qtl_chrome_title</extra-loc-layout_id>
<extra-loc-viewid>homescreen</extra-loc-viewid>
- <extra-loc-positionid>opt</extra-loc-positionid>
+ <extra-loc-positionid>title</extra-loc-positionid>
<extra-loc-feature>ho</extra-loc-feature>
<extra-loc-blank>False</extra-loc-blank>
</message>
--- a/homescreenapp/hsapplication/hsapplication.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/hsapplication.pro Mon May 03 12:24:59 2010 +0300
@@ -41,14 +41,19 @@
RESOURCES += hsapplication_fallbacktheme.qrc
+LIBS += -lhsutils \
+ -lhsdomainmodel
+
+
symbian: {
TARGET.UID3 = 0x20022F35
TARGET.CAPABILITY = CAP_APPLICATION AllFiles TrustedUI
TARGET.EPOCHEAPSIZE = 0x20000 0x1600000 // 128kB - 23MB
ICON = resource_s60/qgn_menu_appsgrid.svg
- appkey:DEFINES += S60APP_KEY
- LIBS += -lefsrv
+ LIBS += -lapgrfx \
+ -lcone \
+ -lefsrv
include(installs_symbian.pri)
CONFIG += service
--- a/homescreenapp/hsapplication/hsapplication_fallbacktheme.qrc Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/hsapplication_fallbacktheme.qrc Mon May 03 12:24:59 2010 +0300
@@ -7,8 +7,7 @@
<file>themes/icons/hbdefault/scalable/qtg_large_applications_download.svg</file>
<file>themes/icons/hbdefault/scalable/qtg_large_applications_user.svg</file>
<file>themes/icons/hbdefault/scalable/qtg_large_super_new.svg</file>
-
-
+
<file>themes/icons/hbdefault/scalable/qtg_graf_hspage_normal.svg</file>
<file>themes/icons/hbdefault/scalable/qtg_graf_hspage_highlight.svg</file>
<file>themes/icons/hbdefault/scalable/hs_shortcut_bg.svg</file>
@@ -21,5 +20,36 @@
<file>themes/icons/hbdefault/scalable/qtg_graf_clock_day_hour.svg</file>
<file>themes/icons/hbdefault/scalable/qtg_graf_clock_day_min.svg</file>
<file>themes/icons/hbdefault/scalable/qtg_graf_hs_dialer.svg</file>
+
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_b.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_bl.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_br.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_c.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_l.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_r.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_t.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_tl.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_tr.svg</file>
+
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_b.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_bl.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_br.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_c.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_l.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_r.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_t.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_tl.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_tr.svg</file>
+
+ <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_0.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_1.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_2.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_3.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_4.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_5.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_6.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_7.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_8.svg</file>
+ <file>themes/icons/hbdefault/scalable/qtg_anim_longtap_9.svg</file>
</qresource>
</RCC>
--- a/homescreenapp/hsapplication/inc/hshomescreenclientserviceprovider.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/inc/hshomescreenclientserviceprovider.h Mon May 03 12:24:59 2010 +0300
@@ -18,22 +18,21 @@
#ifndef HSHOMESCREENCLIENTSERVICEPROVIDER_H
#define HSHOMESCREENCLIENTSERVICEPROVIDER_H
+#include <QVariant>
+
#include <xqserviceprovider.h>
-#include <QVariant>
class HsHomeScreenClientServiceProvider : public XQServiceProvider
{
Q_OBJECT
+
public:
- HsHomeScreenClientServiceProvider( QObject *parent = 0 );
+ HsHomeScreenClientServiceProvider(QObject *parent = 0);
~HsHomeScreenClientServiceProvider();
-
public slots:
bool addWidget(const QString &uri,const QVariantHash &preferences);
-
-private:
-
+ bool setWallpaper(const QString &fileName);
};
-#endif
+#endif // HSHOMESCREENCLIENTSERVICEPROVIDER_H
--- a/homescreenapp/hsapplication/installs_symbian.pri Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/installs_symbian.pri Mon May 03 12:24:59 2010 +0300
@@ -24,9 +24,3 @@
exports2.sources += resource_s60/d_landscape.png
exports2.sources += resource_s60/d_portrait.png
for(export2, exports2.sources):BLD_INF_RULES.prj_exports += "./$$export2 $$deploy.path$$exports2.path/$$basename(export2)"
-
-exports3.path = /data/images/kqtihswallpapers
-exports3.sources += resource_s60/bg_1.png
-exports3.sources += resource_s60/bg_2.png
-exports3.sources += resource_s60/bg_3.png
-for(export3, exports3.sources):BLD_INF_RULES.prj_exports += "./$$export3 $$deploy.path$$exports3.path/$$basename(export3)"
--- a/homescreenapp/hsapplication/installs_win.pri Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/installs_win.pri Mon May 03 12:24:59 2010 +0300
@@ -21,29 +21,13 @@
./resource_win/bg_3.png
homescreendb.CONFIG += no_build
-homescreendb.path = $$DESTDIR
+homescreendb.path = $$DESTDIR/private/20022f35
homescreendb.files = ./resource_win/homescreen.db
wallpapers.CONFIG += no_build
-wallpapers.path = $$DESTDIR/wallpapers
+wallpapers.path = $$DESTDIR/private/20022f35/wallpapers
wallpapers.files = ./resource_win/d_landscape.png \
./resource_win/d_portrait.png
-themeableimagesfortheme11.path = "$$(USERPROFILE)/Application Data/hb/themes/icons/redtheme/scalable"
-themeableimagesfortheme11.files = ./themes/theme1/hs_pageindicatoritem_active.svg \
- ./themes/theme1/hs_pageindicatoritem_nonactive.svg \
- ./themes/theme1/hs_shortcut_bg.svg
-
-themeableimagesfortheme12.path = "$$(USERPROFILE)/Application Data/hb/themes/icons/redtheme/pixmap"
-themeableimagesfortheme12.files = ./themes/theme1/hs_trashbin_active.png \
- ./themes/theme1/hs_trashbin_nonactive.png
-
-themeableimagesfortheme2.path = "$$(USERPROFILE)/Application Data/hb/themes/icons/bluetheme/scalable"
-themeableimagesfortheme2.files = ./themes/theme2/hs_pageindicatoritem_active.svg \
- ./themes/theme2/hs_pageindicatoritem_nonactive.svg \
- ./themes/theme2/hs_shortcut_bg.svg \
- ./themes/theme2/hs_trashbin_active.svg \
- ./themes/theme2/hs_trashbin_nonactive.svg
-
-INSTALLS += kqtihswallpapers homescreendb wallpapers themeableimagesfortheme11 themeableimagesfortheme12 themeableimagesfortheme2
+INSTALLS += kqtihswallpapers homescreendb wallpapers
PRE_TARGETDEPS += install_kqtihswallpapers install_homescreendb install_wallpapers
Binary file homescreenapp/hsapplication/loc/homescreen.xls has changed
Binary file homescreenapp/hsapplication/resource_s60/bg_1.png has changed
Binary file homescreenapp/hsapplication/resource_s60/bg_2.png has changed
Binary file homescreenapp/hsapplication/resource_s60/bg_3.png has changed
Binary file homescreenapp/hsapplication/resource_s60/d_landscape.png has changed
Binary file homescreenapp/hsapplication/resource_s60/d_portrait.png has changed
Binary file homescreenapp/hsapplication/resource_s60/homescreen.db has changed
Binary file homescreenapp/hsapplication/resource_win/bg_1.png has changed
Binary file homescreenapp/hsapplication/resource_win/bg_2.png has changed
Binary file homescreenapp/hsapplication/resource_win/bg_3.png has changed
Binary file homescreenapp/hsapplication/resource_win/d_landscape.png has changed
Binary file homescreenapp/hsapplication/resource_win/d_portrait.png has changed
Binary file homescreenapp/hsapplication/resource_win/homescreen.db has changed
--- a/homescreenapp/hsapplication/src/hshomescreen.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/src/hshomescreen.cpp Mon May 03 12:24:59 2010 +0300
@@ -158,13 +158,9 @@
{
HSTEST_FUNC_ENTRY("HS::HsHomeScreen::registerServicePlugins()");
QStringList pluginPaths;
-
+
+ pluginPaths << "private/20022F35";
pluginPaths << "hsresources/plugins";
-#ifdef Q_OS_SYMBIAN
- pluginPaths << "private/20022F35/import/widgetregistry";
-#else
- pluginPaths << "hsresources/import/widgetregistry";
-#endif
QFileInfoList drives = QDir::drives();
foreach(const QString pluginPath, pluginPaths) {
--- a/homescreenapp/hsapplication/src/hshomescreenclientserviceprovider.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/src/hshomescreenclientserviceprovider.cpp Mon May 03 12:24:59 2010 +0300
@@ -11,25 +11,41 @@
*
* Contributors:
*
-* Description: Main class for HsHomeScreenClientServiceProvider library.
+* Description:
*
*/
+#include <QDir>
+#include <QFileInfo>
+
#include "hshomescreenclientserviceprovider.h"
+#include "hscontentservice.h"
#include "hsscene.h"
-#include "hspage.h"
#include "hsdomainmodeldatastructures.h"
-#include "hswidgethost.h"
+#include "hswallpaper.h"
+#include "hsdatabase.h"
+#include "hswallpaperhelper.h"
+
+#define HSBOUNDARYEFFECT 20 // amount of extra pixels in wallpaper width reserved for boundary effect
-const char INTERFACE_NAME[] = "com.nokia.services.hsapplication.IHomeScreenClient";
+namespace
+{
+ const char gInterfaceName[] = "com.nokia.services.hsapplication.IHomeScreenClient";
+}
-HsHomeScreenClientServiceProvider::HsHomeScreenClientServiceProvider(QObject* parent)
-: XQServiceProvider(INTERFACE_NAME,parent)
+/*!
+ Constructor.
+*/
+HsHomeScreenClientServiceProvider::HsHomeScreenClientServiceProvider(QObject *parent)
+ : XQServiceProvider(gInterfaceName, parent)
{
publishAll();
}
+/*!
+ Destructor.
+*/
HsHomeScreenClientServiceProvider::~HsHomeScreenClientServiceProvider()
{
}
@@ -38,33 +54,78 @@
#pragma CTC SKIP
#endif //COVERAGE_MEASUREMENT
-// this should be moved to HsContentService class
-
-bool HsHomeScreenClientServiceProvider::addWidget(const QString &uri,const QVariantHash &preferences)
+/*!
+ Adds new widget, with the give \a uri and \a preferences,
+ to the active home screen page.
+*/
+bool HsHomeScreenClientServiceProvider::addWidget(const QString &uri, const QVariantHash &preferences)
{
+ return HsContentService::instance()->addWidget(uri, preferences);
+}
- HsWidgetData widgetData;
- widgetData.uri = uri;
-
- QScopedPointer<HsWidgetHost> widget(HsWidgetHost::createInstance(widgetData,preferences));
-
- if (!widget.data()) {
+/*!
+ Changes \a fileName image to the active home screen page's wallpaper.
+*/
+bool HsHomeScreenClientServiceProvider::setWallpaper(const QString &fileName)
+{
+ HsScene *scene = HsScene::instance();
+
+ HsDatabase *db = HsDatabase::instance();
+ Q_ASSERT(db);
+
+ HsSceneData sceneData;
+ if (!db->scene(sceneData)) {
return false;
}
- HsPage* activePage = HsScene::instance()->activePage();
- if (!widget->load() || !activePage->addNewWidget(widget.data())) {
- widget->deleteFromDatabase();
- return false;
+
+ QFileInfo fileInfo(fileName);
+ QString fileExtension("");
+ if (!fileInfo.suffix().isEmpty()) {
+ fileExtension = fileInfo.suffix();
+ }
+
+ QFile::remove(sceneData.portraitWallpaper);
+ QFile::remove(sceneData.landscapeWallpaper);
+
+ QString wallpaperDir = HsWallpaper::wallpaperDirectory();
+ QDir dir(wallpaperDir);
+ if (!dir.exists()) {
+ dir.mkpath(wallpaperDir);
}
- HsWidgetHost* taken = widget.take();
- taken->initializeWidget();
- taken->showWidget();
- activePage->layoutNewWidgets();
+
+ QString portraitPath = HsWallpaper::wallpaperPath(
+ Qt::Vertical, QString(), fileExtension);
+ QString landscapePath = HsWallpaper::wallpaperPath(
+ Qt::Horizontal, QString(), fileExtension);
+
+ QRect portraitRect = QRect(0, 0, (2 * 360) + HSBOUNDARYEFFECT, 640);
+ QRect landscapeRect = QRect(0, 0, (2 * 640) + HSBOUNDARYEFFECT, 360);
+ QRect sourceRect; // left empty to signal we want to use full size image as source
+
+ QImage portraitImage = HsWallpaperHelper::processImage(fileName,
+ portraitRect, sourceRect);
+ QImage landscapeImage = HsWallpaperHelper::processImage(fileName,
+ landscapeRect, sourceRect);
+
+ if (!portraitImage.isNull() && !landscapeImage.isNull()) {
+ portraitImage.save(portraitPath);
+ sceneData.portraitWallpaper = portraitPath;
+
+ landscapeImage.save(landscapePath);
+ sceneData.landscapeWallpaper = landscapePath;
+
+ if (db->updateScene(sceneData)) {
+ scene->wallpaper()->setImagesById(QString(), fileInfo.suffix());
+ }
+ }
+ else {
+ // display some error note here
+ }
return true;
}
+
#ifdef COVERAGE_MEASUREMENT
#pragma CTC ENDSKIP
#endif //COVERAGE_MEASUREMENT
-
--- a/homescreenapp/hsapplication/src/main.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/src/main.cpp Mon May 03 12:24:59 2010 +0300
@@ -20,7 +20,6 @@
#include <hbapplication.h>
#include <hbmainwindow.h>
#include "hshomescreen.h"
-#include "hsapptranslator.h"
#include "hstest_global.h"
namespace
@@ -38,25 +37,13 @@
#include <apgwgnam.h>
-void loadTranslationFilesOnSymbian(QTranslator &hsTranslator, QTranslator &alTranslator);
+void loadTranslationFilesOnSymbian(QTranslator &commonTranslator,
+ QTranslator &hsTranslator,
+ QTranslator &alTranslator);
void copyWallpapersFromRom();
void copyHsDatabaseFileFromRom();
void createPrivateFolder();
-// it is temporary class used for getting notifcation about APA messages
-// it is used for processing message send by AVKON to activate Menu
-class HsMessageObserver: public MCoeMessageObserver {
-
-TMessageResponse HandleMessageL(TUint32 /*aClientHandleOfTargetWindowGroup*/,
- TUid /*aMessageUid*/,
- const TDesC8& /*aMessageParameters*/)
- {
- // move application to foreground
- QApplication::topLevelAt(0,0)->raise();
- return EMessageHandled;
- }
-};
-
void setHomescreenAsSystemAppL(CEikonEnv* eikonEnv)
{
CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC(eikonEnv->WsSession());
@@ -111,15 +98,13 @@
HSDEBUG(debugMsg);
#endif //Q_OS_SYMBIAN
- HsAppTranslator *appTranslator = HsAppTranslator::instance();
- appTranslator->setLanguage();
-
// add translator for homescreen and application library
QTranslator hsTranslator;
QTranslator alTranslator;
+ QTranslator commonTranslator;
#ifdef Q_OS_SYMBIAN
// TRAP is must here, otherwise it crashes
- TRAP_IGNORE( loadTranslationFilesOnSymbian(hsTranslator, alTranslator) );
+ TRAP_IGNORE( loadTranslationFilesOnSymbian(commonTranslator, hsTranslator, alTranslator) );
#else
QString locale = QLocale::system().name();
QString hsTrFile = QString("homescreen_") + locale;
@@ -127,6 +112,7 @@
QString alTrFile = QString("hsapplibrary_") + locale;
alTranslator.load(alTrFile, QString(TR_FILE_PATH) );
#endif //Q_OS_SYMBIAN
+ qApp->installTranslator(&commonTranslator);
qApp->installTranslator(&hsTranslator);
qApp->installTranslator(&alTranslator);
@@ -143,16 +129,9 @@
QObject::connect(&hs, SIGNAL(exit()), &app, SLOT(quit()),Qt::QueuedConnection);
hs.start();
- app.installEventFilter(appTranslator);
-
#ifdef Q_OS_SYMBIAN
CEikonEnv * env = CEikonEnv::Static();
-#ifdef S60APP_KEY
- env->RootWin().CaptureKeyUpAndDowns( EStdKeyApplication0, 0, 0 );
-#endif //S60APP_KEY
TRAP_IGNORE(setHomescreenAsSystemAppL(env));
- HsMessageObserver observer;
- TRAP_IGNORE( env->AddMessageObserverL(observer));
#endif //Q_OS_SYMBIAN
HSTEST("HS::main() call app.exec");
@@ -251,10 +230,18 @@
/*!
* Load translation files.
*/
-void loadTranslationFilesOnSymbian(QTranslator &hsTranslator, QTranslator &alTranslator)
+void loadTranslationFilesOnSymbian(QTranslator &commonTranslator,
+ QTranslator &hsTranslator,
+ QTranslator &alTranslator)
{
+ QString locale = QLocale::system().name();
+ bool commonLoaded(false);
+ QString commonTrFile = QString("common_") + locale;
+ commonLoaded = commonTranslator.load(commonTrFile, QString("z:/") + TR_FILE_PATH);
+ if (!commonLoaded) {
+ commonTranslator.load(commonTrFile, QString("c:/") + TR_FILE_PATH);
+ }
bool hsLoaded(false);
- QString locale = QLocale::system().name();
QString hsTrFile = QString("homescreen_") + locale;
hsLoaded = hsTranslator.load(hsTrFile, QString("z:/") + TR_FILE_PATH);
if (!hsLoaded) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_0.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,1316 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd" [
+ <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+ <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+ <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+ <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
+ <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
+ <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
+ <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
+ <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
+]>
+<svg version="1.1" baseProfile="tiny" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="14400px" height="14400px"
+ viewBox="0 0 14400 14400" xml:space="preserve">
+<switch>
+ <foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
+ <i:pgfRef xlink:href="#adobe_illustrator_pgf">
+ </i:pgfRef>
+ </foreignObject>
+ <g i:extraneous="self">
+ </g>
+</switch>
+<i:pgf id="adobe_illustrator_pgf">
+ <![CDATA[
+ eJzsvWuPHElyIPidAP9D3QcBMx+6FP4I94jBYoF86uaupWnMY3cO2kWDmubMcLdJNtjd0ul+/dnb
+zSMis7JYNVKPVOXNZtEy0sMf5ub2tr/5P776zRe7bz7+09sv0v1w9/rV3/zN4dPbNz98/PSLOwLf
+/fLbb3/8/odPCPrZr39+F+AxfGr3y+lrefK/vf30/buPH35Bn/GnZ/z+z3779tPHD28/3P3fb959
+/+Y+3P2Pn51+/9svfvvu7Q8f//ZXP3774//4+c/vfvZzfP6373749i1843cffsDfvvki/NyGAl0f
+3/wAn6a/TeFv4xCGu/yLkO6++nt8ZP/xxw/fvPvwp/3H//cXd1+kQn/CMOEf/Pz/fPfrt98/9NDx
+4x9+fP/2ww9fffr4h7fff3/4+O3HT9//Aj7Z/XL8+vzu27cwn/dvfribaXa7X4b49f7Hd99+8w8/
+vv+ntzDTPBSCp6/pq7/7/s2fYLz0O8Hr1798D6DfvP3hBxjF97+4o0X69d/t/QsBSu1n//jrt396
+R0sOU/+fP9eeP3387v2bT//7e36uRvhPPvrt2/fffQtLRNODmel/+jFMQGZeYYfi3Rcxz/d5Gsa7
+nMf7IczjXYoBIPKFthxv//nd23/5xd0/wDbKauw+/fCbd/8fzC7kPAz8f/no1z9++/bT7z68+wGG
+yO+eeT3+/uM3b7+Fb7Quzt+++dP3OuHQ/i9P/PbNpz+9/QE27uO3P/5AqDXZW2DNv3zzr4By2uH8
+9a++e/vhtx//Gw31i5rvQynjXQjhfryDbU5pupsD7PVE78nwryJvDPRWHRd2g51o9xU36SvYt199
+evendx9+8UVOw30ahnT3xQi/xXmaZHf/7tO7b9rmwtZM/D+a0/3k/sz6R4YOC/HDD28/6FwAsQ5/
+79BkuP/73+AoTh++OXx8j3vyPSE9IMgHwJ1vP/5JPm3/oM+gix+/k2kR4GvYwq8+vfuAHb9+9Q/8
+2fT1V9/+CB/+3aePP373yw9//Pj61c/40H/15oc/3+2/ffvhm+/hiDKM/3nHXwHol+/+WYH3b959
+9/MHuvzNv77/p4/fvvv+vXXoIfb7LV399tObP8A87n71T//r7R9+gG8LoP32mx/f/fD2lq6+wuX/
+9OFXH3jGn378/s93v/348VsbpDwgH9nkAYf5Oz+Zl9jDWy+AD3+6nR/efPvtuz99evPdn9/9Yav/
+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
+ ]]>
+ <![CDATA[
+ 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
+Ocg/rBn12vHmjNjcEUUzSnqB2kVHNg35Mr6w1472WnJ1UtQ4w7V+1GvKWYewpSFt2nLTkBLx9jrS
+Vt9gqSW9qidtWlK4YJaa0tk0pUsd+pau1DSlqk83j41NzxlX1WIbxz4Lyw5AGDesLws8W+VW8BaY
+FaYBhqkNpungm9Nrw7XmzNwsMUtbzNoas7THbOGbauPX0biMceoWK7YZxroFzrF1pmnlG9Yp3u09
+3lHpI9LOm6XGaec3cW+NfR3+vX6VUoeDDQsbHrK+nvFwLwn/Z4eNio+EkVRtpGFmw861HxzlVh4G
+TI6LWWPniFlw4ZcKvI3kluXf7gOny4VfOGgy3sV4j8L3IuDyGTrjONDIIaSBYzcx7XLx0aSDJvQN
+nNCX8vjO6T4CarnhPKUXyZwMmDeO0oOFjlad3aBZjuGwj0WyHJd4nwDHfMrkJ/SiGYU1q7F+W57l
+DMASyVox726kXzDzLnSU5ntEvruU76cU+pzCz9OjjO/zNj6X+zEELCF7X2qOT8ekZYcyOo4Dhudo
+J3DJOWYZ+yoY9UtZiyWlsaSuhqnWe5gxLFANsx/aM/T2SAf333348Ob922/u/tSFFW9AX9zbL/+8
+uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLdf/7nNSnnd/vji3v7i3v7i3v7i3v7i3v7i
+3v7i3v7i3v7i3v7i3v7i3v7i3v7i3v7i3v7i3v7i3v7i3n5jH81I9+LefjP7/OLe/uLe/uLe/uLe
+/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/uLe/lN1bw9p28Ed4IvSWaKeUYLSGwD1Ypvc
+xVY2jMNJnK0pjb04XTeXUKkN2ZmIUYKr5lbJMl4Ud8yBuUx1yRanEXYo0WqarWQx66VUw2Ma45Mv
+e/BAtV24ONnx4pJxCq5MkNx71qy52/YMWbsk2wXpjdPqmlCoaiteiaGZpugaZIZLrz8pa2BGIjUQ
+qYmokMQUaU5Hcjrh2WR2A6GZsJmI5kFzCGJg8+Y1nUdkAxvNYy8GtkqGI5mJc7PAmWj1PjSyBdSX
+ot5aLvaZdKpiSkLNjLCOe9LY0DVu+qVirsUNE9Q532GDOQDvxFV/7uqrmumV3KGWWsuHTMtXdX2P
+cwLTeZF2yHTrptdtWqKmJ2qaItIVmaao0xVZCIDqi9gpVDVGe9MYHU1jNJjGSHRGvWsonJWmKzIt
+0UI/xK6hIF+bo+4tOv7mavmgdYWcY5al0bwz79KyctmuIjp9qg1ZukJ4vm7ywqLiQkhYR+TtSZcL
+h/k5+1nbvIGfOhCz2ObuZ3+pjFhv3/AWDjix3UpcsnHIeqxZusB3Nd6TcPlEupbwOsWbiis4wn1O
+XCde/3jBx8Yfxb4myfP0JgVN7rNyXJnKZ8uVqXyZfjfPyHXwdxf1Tz6zh6dft/nCdZsvVKpsSn8l
+RGuPlbW/yYY/p/loek/M3uvy4KIjzqJeHaQE9LBw5gdsB1KchAwzOfbxQBb54+J9fNSOizJQydai
+cvgVPu5mlP+PUh66UJW0InE3VRgOlmFm13YS6TWbdb+1vfx/L/9ftoNrRznm0MT76WSMkFOp4WYs
+fJVbpVFft5AifEKL7mmxPX01uGQGVJ7J2ni9JKytuqiS1D2bURa+60BOSHOy937r5rPeCGlvRJnE
+V/1IauVIfupFirIfzEs9iJd6MdOJGk6iRUJYtNsi1s1Hup1R42CRbhrnpiXZ+aJ7TJQbXWN0ifEF
+xpdXkGtL4hk2KlCGxVnTqrGtbmyrMGqF1OnMuJqUcFr6SqOtmuzpYkTD5AwS3hhB8Q==
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ vNoNkF3wRjAa3+K/5y635FZ2yTavNqs+p6TOCOZzYTbX59LPxObB5kuYzWoWckvp7WS6y5l/dlIO
+VsuRihOgK0oaLctRWZSH7Zww0fxrjpjNFXO6EBXashqtHDI1IpRyFz3gkrl0MfpJ2ST+Uj0urBif
+bee7aO1zdr7Ltr5NC0mz/zmLIFAJ4KG3rCbbtpNtK8rCnkKZji9bDNd2w952uLS1TBIDOHdtZ61Z
+EzX2cWFNXORlI6siWWIu5WdbZ2WrnYVxJgcjtTJyg71u9kZzO2LHI3XGylL8eJS0AuoluHNWm6O4
+aEHTSlZWNDVS4dTsnJOqFJhkZ1l1ikU/6EGskVGcX8tP0ja4bFs4fmu7UjwRerxsAed2G5YbihiO
+91h9GYe3MNfj7YFk2cMae7XK2AJLewz1mQI5JcWeSlQofmrWs5MkhmY+sQ18lKKmHGBFlnArXUHY
+SImkmW2JYk1kS3gxt+295BtnWzi7YSdxv+YiFjM5s7I1XMp0v35Fy5PFrX4Si/hRghCCZadXx3i9
+DdUunigj+SQZyeHWwzzBLvuhBh1oyMEyPz3fbX2mg0rlTOVGOw0kT3OQQQsw0PACDS7gyH8OKzid
+r/z8JC2Uq8vCbHWX21PG+Nh+Lj656LF/fustPsRtC6azXjtL9v/eLi+0WWzor9qa8tfaI9t5cXdH
+uAo5h8GR0oZJDY8XO+lLjy89/jv0uIie+iux1j5Pjwsl+Wfbfy9ag5399/rPzTa7qxa6R1nmVM8u
+mYuu2eZ669zaQpc71jlZpt3WfIHlLsu72eya1c5b7kSnT9W5mwXPW/GWFmizQps1r1mi1aqXyfE8
+OZu0s+85G5+3Th9tmfdmH3AWP7H5VbEWsL2ALQZZBIxoFsBmtz5LGvijWBHMfv2TtBlv2pAftBk/
+2pJMec8vY+2W78MDNmXJPXbZspwWGLuBrT2mAv70eNrbmK94R3RWZmdnJozc8pC47iPhbVQLezNl
+pN/2kuitzlf8JHovCarx4WvWL6rWb9qfvQV6VfPjASv0LTU/+oof0SrQY5oRTTKyTPTIyUU4tYik
+wLH0jjtK24FJO2IIf4WW6+32GSoc6PGKXfvBtmHThh4ftnC3ak/Xbdyk4X/96qqlu7d1i7Xb2qa1
+2ywdS5v3Nau32b2taonavc+OU+n5g94Tp7+pNy3gra6U+MA4CuVu0LUdfLegQT31SVIPKF7xy9pL
+YNYlahM7SkN05vWrB/Lgq39LsAz4x4V/iwa1jRj8v8pjbvW+M9qJc1/6e1YrMpU/nTCMKvYJzD/n
+61Ld54l29pLvh5znZ7Tca48SKIbzGbnOvVYGMhO7lWfVlL/3I1ncL9rtn6O3p1rtt+usJ8wWXPtq
+Q5YteyM6vnalL7aLRnblIskYo+kP1zWYfZxzV3+5i3HWCGeKbEYjAoUvLaoum/rDR/n7DOZnKSO7
+nFOfaf0o/gMczx27hJ2Xcq4v49t94s6NmVJJhIku3Z0vjmoz6It77lbJKoPNIsss/BxcGk68kqXS
+vcboL/fJJ+JcVpDWMkGurCenIYUZcG4Djk23nfurVUGthHeLc96O7b0Y67wZ6XwiwfizCwVuR/ZK
+6ZRVbO9iBjeniN+chZsHXcFdgvhHlMvbnAtlr2rOYTYbm0FLJd/n/7w0i34v+t1IZOTfzpS5zAKq
+rMB2cRuX23QRk+/2pncVWGSyW+Q5t1w8octneOhz7rmntrLySQ48X1GtT9K1SCFlXPkyzdT2U8tU
+VF0yquV0FxJGX1NwK41hky9iCuvkhUDAWqLNRYpAHeFGOsSHEyKOm71Kv7Jl1bbN0rrbO33lHp9W
+nhIcurf2b3bv7GcD79Skh5xYySW79EnTPycX2SoTWTMPUqGKC24vOtWN99yS9Wzjbfwucpflt60y
+n9k7b33fRp41eV/n1EP5c21+fSa7C/mDLv14wxmb3HyR4mWZ4plqk7Qqjlqbkfz7uuwyLfl0NS/H
+daGxYHzJsiTgfqMaTF+iuxXo1kTalmOGiooh/9Xl3LnxTm8BiLoybX36NZJ16vwfC1GvWXIRceLx
+gyto3hdk09xE0fxEe//QloHsuKhFE2NfjaYvpCjr1tbOSpx3XN2juJxLGWr6PDVZVkSxpq7WYy9e
+oQdeDfILVdwJtBLNO9RyshERUxzS9VC+MEh9q7xYDcYjTmGuBSW1ZN1IIeSohZqdq9KxT1Lefk7W
+VC2xXUO7+Tg2D0fxbpS62Vs1ZTxToz6No6Re6VOeK1vQUrAoa7CdhuU6a7BMD87RWiuGrask/tCK
+XKor3vw+zecTeuwq7Tg2z/w9b1oXY/tgRfbG+i1XJnaenUv27wIDCCuyN52JMU43rsglLLmIJ4sV
+aWl5bl8Tn2yd6yUdFozkkiV2zL3gi2eKV6uC0rvhjK3K6trZGTP3QOEbIRMt5bH6fazSMK8SIzf/
+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
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ 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
+/4Mvf/jVI2FgDcStt23dX3z3Z7/3s6o4/fLFn33vs+8u7ocFAeth7QO7ko9+/Gs/fKFKF4j3fvi1
+jz+a3PUAsDew613i8K+/93Pfe/bFigvily+/+Oz3PvfeXx8W71oFi3oZWkGbuyce/euvfP+/Ki65
+l1/6r+9/5a8fnejefCteoteggb1bHLz42OPffKZMaBCx8cw3H3/s4qB4N5UzSI7dInScee37Pvud
+H1YUMz/8zmff99ozHcItTJItu+7G21uj4498+HPfJoKM1aGC7Nuf+/Aj49HW22+kggxUyeq7w/un
+3vAhIipforKSi8oPvWFqf/ju1bZawcJVBGH8909+5/s/fu6FX7xYKoxFh2gl4vvm9SIW959+8lv/
+/vSPkbx3iXtx/c0rShXEzUihnDz/und85JOf+/LXv/2v/+pWKDevLFNBRGWdOf/at/zJR/4G6azZ
+VRZXiube4xMXXvPIm95aSylStXv7+q3y7v0jZ8aS48kaapfaAWtuu1vYGgbNXlOx0yorVq297RXI
+drivtumAqyxbft31K27E1okH44RU4faPF/OHV6puYDkCFXGYYkmQ4iH3XYcgbHyBww==
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ NWLb8rXeitbN0/BwfRfSaWf6acGMwguffloGNSPtjJcLjVPQD02VVBzapFIY6DjPa6qYgoaHiUmu
+wWGpm1eqiFxgUFNzbcJ4XcwUWcxo0/rkjC49r27EFvHoeqBNdEVPmj5BenJMY9rB1jYMLQLVNE4P
+mdqGiTmstX6VqsQFvUNtt1OOhsHtyVWbWsCYbZh8WCzW1mEbOWa6iWt7uw/a+3Kfg6bmbiYbNtf4
+bD6Oljrrdp1fbak5q89vQIvqJIORpusSZXa0+PhtM+JpmPZN3p7rk4P9bc/i48JhzpwWTnZ1s1mH
+Jy5NZXSQwW5+gDoHTl7bRNE6tQOUX8mS2tDfQNYY6xr2QN43xlOVX7GtQE1LpAWtb4wBP+BqiVbr
+3G5YDBgA1hLRkvZRZNZXHfq8n02Y7sLZpjp+SYkair6uekHMFQ4+NeDar5igQHF/ABXRxtJsiJyE
+slEabF1E2DfczbJvyQo0rBPuvdf1IVtS87KChsIKuP0C9B66OEZd9KobDrxKgTD2fGjVfMw7+NOA
+R4MP+1ha5XWk8rqqKTxCHW1HtIwopjvYAt8x3lUqHXqxxot/s1PNIsGMAuNlcrOrxkve7OiNmCM9
+Dql3+hnqjXqzE41zY18UWLwHnM4UltPhTOvI1TaH5cjVOlN+z9T6PcV0Nnbkgs5hG0paAqY9Kmcw
+0uGC1xGimFHaxpxt1JJ6C0cIWAyLKOqSEACjmzL++dJIWYqTSNTTaH693zN4TtzZyUkEB4bDO6hh
+ChTfDhygJN+CxpioyiUxV6nZpxutmg0WA93/KHFoDk0bjvS5Vs02M3yinoZadMhuEa8jInZyd+TS
+LAvcWjMlGs81WvKW+yZz7WF3zni5nyvSUJE3W7ix5+daQUjrknCER1vxYAWpxeA2rODk7jCh1dO2
+HJt3A/++5IGS9yhNzQUDpJF8RnIJV3PF3mDCD553ufCgENgv8BvPiqDuPnxBl0CLgua85fpeP96S
+xJ/meJX7KBPURvPSkly0ouFB89LC2kzsQrJBBTYPILPzEQeaObYMVE4KDStSG5vmmiOdsAsV7boV
+hVpki1OpRebQZioyLwgVvwChNtVBozmxqj5ldAkqh9+tVkZLKCJ2L8cTJRTmKp/fsPYjh/iBtUWD
+5k8KKZoFDBr1co0mpphmFmqxpuVuq7FHx91WY+0xIAd3IztTSmBsThe7crc7hbvJJq4Z/V5bmzF3
+U/wCBmdQsLbtuZuyPWv3sz1wNzBzJO5mnguAisxzN72XQ6hod+4Ga9nDKS6qiHGc5C+65VOgEKbZ
+qDxhuFS6n7HsbPwEkqy4xP03mrhOYBTpvOrwt12PcmV58+la0FkSp8ZWAjv+ak3a1aLz3hzTBbXd
+20xxXHjiQWO6WwZUqHf1PbK41Qb7NmoLmDlNwBSV2RhXxKf4U2sRfDagot2jKlAtFLNbe5BvXJH6
+DJ/TLU06ikC17cPJLQhH0EMfUjnU8hH8HNhF+8eWavfgZrW7Ufj4wOv8wr0cVPn4YEr7N/Dcwtp2
+1/5fFiThaFqswZkz7wEjiDVY0S7aP1aLLBx3EGuoIoL2T6pFMXEpFfHKR7ZwFJjNy2Jn+agSju/a
+I2eBDPh5L6FOkBURo7wk6akKzVJCO6j6wfuSMS34aPp5jvAeH3dxcmvPCEBtu+5zrGGETW4Q3c0Y
+NC5NWJpNRIZmMoEJDXLteMYxbAkM6T2uDm4TsadpE3VZCFFDhvtMK6lKwYBOTJWCIT7bk0NSRYuP
+A2oEID00juYXAG2L8o0mxybrrfYY2gtqo579KK4h3jh+UFvMcXze3IszBQzakTm9gxLoCGfzPcjn
+uRVqo2z7DjPSV1gW6LAYrQyuZnEuC90mk4S0sIkVAZdPXEyJhoc4Dwi3t/qyBabX7zb//VvFFijE
+3iCCr0LC8lmEi2Z2h/PhYk2P5bNoQEtbw/nYWD6BQ+8BzkelirB8Fip00SScj43ls+DQxV3gfGws
+n1od3AHOx8byWVTQxR3gfGwsn4UBXTQF52Nj+SwIurgHOB+7nEVEfe8M59PtYBWWTzE8doTzsbF8
+gp5mDOdTBUAzkG4tV5WkiTMi7+lgJE0QDUebyA7isnGsuJcPtFXVWtJbB96WtYoxwYnA7SB+Lqs1
+AHPTh58UlrVRIFsP1bFXtWg16FVZ7rt5QGnDn+G9kb9Fc1LIqo0d5cXXQ8E7aATi4+6hxtFF2Df8
+Ax8y3yYiKgI2i+3oYrWJBN5DvTGF3+NiOxVNfAkWNWQOxrU2FV8ixqcRQ0zMu5tpvmbhYrOd3Vud
+gJ3dOdlaM4LdqQMuzboShQUNJn5XT7MAu6Md+2jMKCPYHd2IZZ9W4KyzwgwxUdmvRlZKRYOjsKgA
+zHy1qQO8IvoTn150YQjE5ONf3aopy1jYnjTjuBejh2qaAr1aEArvghMDaewDAONFOhhX9DS9r83I
+1zhOzTUeFfDuHTFAd5tDrxpVHaOC0XAFSotHM1THuDGFG8PIexOYwp4h/sau8nHRMXJ0EA5bzSZE
+3rty33Zas05JmFH6HBpH3nOHJQxqaq8ncQ4tvJjC1NIIk8NaEZqQeFjb3jCrS+XchAqMMVOb8cI3
+MWhqt+yug2YIXOXvpsLdths0tb84WnzsBNRBVHVNOL+FACjjU3N1rmK9HSbv+RuKr5MN3dPUQalg
+fKAR0oQ6PqJvEfjng7nP6xz2oGIUGtiDX3Vue5BWgS4Scos6jO5xAXNtka//4EPtbTVL72EOeSMp
+OuTtAcF2xt4Iyx+mLxvC4yh2nm71s9B6mthBxoiw9BnQJfb9LNLc8GmYmZUOQuAurzlGHT9YoS3o
+n4Y5XxDBlhIVKAOsno4B0WFZa6KA30ZPa/DufWXj0/W0n4Y5XxAd8acLTtp6qL4NXBLivnFzrAOT
+3htVm1T2DWxW1IynhNEm9a7mEGuMoYrztskgJN4Ynsdqk+6WkaDGbyzAovbhvTlD3ptdw+CAluzg
+8N5IJ4UGACFHJujcxXuD+wXOdvfegArcrJARE3i4bbw3Fh10cXfvDcTDabw3GuWWHysYN+W9IZ8R
+nHEAhPjQQRAtCDYex4LmCxGESUrCakX6XFGkGbHqPIp07OTOZ+dYERY2QnJ+vp/YCDQ3mWvXfjxA
+oHMZt1EEMQ8ebsuoeZW8gUg2ui/KBIxNFwxhIUIXjSB+pgN0CcGwCOLHGRPIhPhhYFaNymEy7OSc
+eb8Wto1xrZMZDtjS368Kf+OUfFJvqEFP+0HmITL7CNtjI/MYp7j7ROYRw65bv/tG5u2C8TCBzGMG
+w+4PmYfc3TtuRQ5knnKwYhyEuAMyTx1qJb3k2jcyz6K9S1UA5+0bmYcdSBoLs+2ReepDL46Qzu2Q
+eTprjXYuBDF1ewD+Q5G3t9BLUJU69JKqdfKEXt7PuEIvDbnAahzbVTUooZgLvoBL44r8hkuAsyIe
+FAu1FlFPQxXtAVCmi41gRd4bczeI86M70PTx1RYsmw8lxNq18OpCrF0Lg8nQbEa6a+jxfpf9qOCf
+cPfDrvsR1Ma8BofI06j7sTPn3Y8sVR2OuTmbkrjc9nTVMarI3DYim7ioor3gMsshTrFmWBH9vmPa
+VWC0wG79fceG17mpvdmaU9wPj1/v8oIoOPaNVIZmt+yz+YwcbBt2gvWadmvyNn5oWNs7B6yVFyTb
+Pejx+BYMYIf7Acm+LPYEkoUV7QUkC3Fru4NkYS17AcnCivguutbYzcTYQbRR6FfBmo5f8gSkJaDe
+j48770cNKI/C0/YNyhNwBMxYoX2A8shzs3dQ3g6+TvWgsU18M7bnDqA83J8m4PL+CiiP5H74C6A8
+ij+N04LrsDRGnClY8PuhWeirb2pYLM/t9xo9rRQ0sJt448hgVQk+JySH4xnWRr+fz6xmo7tC2ezJ
+hAWDync4z4BYNw8Dxk6SgRgZY9S1FuL3Qr3ARysrZJcqQVwoOxmm0vOTCIrzgFKA5q++a5P77nvZ
+PthUqmnH6Vu1nW9VTkNrFxQE1fbJUQelWy8/VZanhXqyfVYqBvulUjF0DtMu3M4l+XQ4UTda9E+p
+EWEk9Bsyo0Sg1DMdAJe6zrTwRaaG3R33ry5wpzVGNfHtPczaZhYa2C/eeWTB7gYhKtVwtV1kgv0O
+r0YXXRrVDwbVWiCNUdUiwjK+Fe6208Lu4o/fTTlpowaKduBmwe4iQQ1VizpP4fEvDeyXtNsXyc0L
+DXb3zEK//RqA/WbtNpWqszn8HtCoDg3yFF4/0qlWLp9r1BF2TGPH7zSqULnVTS3YumLH0SdxuWc4
+yx2TyonuB1XR+EuTq8q4pyWUE4VpM0lQUS9lMypf3Uy0Mpblc+aI71Urt76p2BvVKVPLOdsPuIgj
+GFbrYKHn9FpwtAk/W2M0yygO1ih4RDRx95lej5RyxUK4AYbDF8VKr2fObfdc5o7ENABnCjdcmogd
+NMqsx44d5F9VBpn1qD3Und+UORKt8PaQI7sC98Ab5VjR3ga3Q1I9E/umNqTnY6KG1vJm5TNwEG8D
+7NvSZ2MW2EeyEiS33R6Bfbz32ewI7CN5EXX7ZndgHwnVZ9kWiEkH9pHc+JQA/12AfaqBETevclK4
+N2AfqSqLwWUmWwD7thXSJoF9pHMeRXruDdhHQvWp/AL7AfaRUH28UUMmgH0kL71k4u4R2EeaYcFB
+vFdgH0nlUUWp7gfYR0L1WShX6+8A7NO36dvOUKC2BfaR1FY0aPsF9pHmkBRqtSOwT1uVcQbmrYB9
+VK1zv8A+E4O2C7BPU5XuhH1PwL7tBs00sI+N9NobsI+C+t43sI9UASSzZ2Af6bBFG3m/B2AfiVFo
+TNx9APuMDlb2BOzjkDf7APaRhgNT1fcF7DMElO0H2EdC9ZFDRup7sREDio2IDdpPw9ydU/ScZvoc
+nhoziht9tTDY9qrxj89oKscOWfx0bVqjY6J9Z/FjqBx8Q7X2uUwNlTJO6oBLCBI11DY414EKGmGh
+wLFpzdK0iZcpyKdRjGapz7a2ahMaNNAsU3mqWW0ix2bQmQ1jqBh5qin8E4k1tcl0EjlbaUymmCM9
+N8gIz3blyWKNmf9v5+R/FuyOLk59fZvkf1Rmo8r/t23n5GvfLDRAGR+mjyvmwiAeWsn/t9t81Tpz
+C0+aHaZTiyv5n7ETEo7Nzsn/JM2Gnf9v5+R/FgGFZ5D/j+/4aX6+jzu6Yid3EfZEmsB4nO8t/Gl+
+rqjjpHAe7s7lPLyrlH5MBNP2GUY4Gq1SCOiDJjbbec+F6eOJoIZkjPCO9MgQbrAjJMMIbjQRpAYH
+iOos1CxovnxjgLTdpYU0watgqb22kG61oh0Y1Vq/W+LL1KFWYGkZxKBzh1qBqozj07hDrUBtnEHk
+7EhqxAj3A8Tc/SQF5lpk3HouLQHOirhy4JJqwQPHbvexFVEtOpi9hQhgNkbao9q40L7UzBdatO/t
+VI/2vZ3u8XpDWNte8j4LKw20l4ex4cKMOppt0miS5wY3NllR21796TAEBepDttkGOw==
+ ]]>
+ <![CDATA[
+ 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
+ ]]>
+ <![CDATA[
+ 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
+v8CX5BfA0r2qWv78P8LvWtk=
+ ]]>
+</i:pgf>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_1.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0" x2="19.814" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="11.0552" x2="35.3105" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="url(#SVGID_2_)"/>
+<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="#5AB85B"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="0" x2="19.814" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="url(#SVGID_3_)"/>
+<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="#5AB85B"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="11.0552" x2="35.3105" y1="62.1421" y2="62.1421">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="url(#SVGID_4_)"/>
+<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="#424242"/>
+<linearGradient gradientTransform="matrix(1 0 0 1 -1269.75 -3487.3887)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="1306.4873" x2="1311.042" y1="3494.2671" y2="3494.2671">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<polygon fill="url(#SVGID_5_)" points="41.3,6.9 36.7,13.8 36.7,0 41.3,6.9 "/>
+<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="#424242"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_2.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0" x2="19.814" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="11.0552" x2="35.3105" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="0" x2="19.814" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="url(#SVGID_4_)"/>
+<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="#5AB85B"/>
+<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="#424242"/>
+<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="#424242"/>
+<linearGradient gradientTransform="matrix(0.7071 0.7071 -0.7071 0.7071 1584.3986 -3389.3784)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="1327.9453" x2="1332.5" y1="3487.8726" y2="3487.8726">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<polygon fill="url(#SVGID_5_)" points="60.3,19.1 52.2,20.8 62,11.1 60.3,19.1 "/>
+<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="#5AB85B"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_3.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0" x2="19.814" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="11.0552" x2="35.3105" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_3_)"/>
+<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="#424242"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_4_)"/>
+<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="#424242"/>
+<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="#5AB85B"/>
+<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="#5AB85B"/>
+<linearGradient gradientTransform="matrix(0 1 -1 0 3546.5811 -1312.6934)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="1349.4316" x2="1353.9863" y1="3481.4136" y2="3481.4136">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<polygon fill="url(#SVGID_5_)" points="65.2,41.3 58.3,36.7 72,36.7 65.2,41.3 "/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_4.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="#424242"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="11.0552" x2="35.3105" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_2_)"/>
+<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="#424242"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_3_)"/>
+<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="#5AB85B"/>
+<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="#5AB85B"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_4_)"/>
+<linearGradient gradientTransform="matrix(-0.7071 0.7071 -0.7071 -0.7071 3493.6553 1560.1959)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="1367.8477" x2="1372.4023" y1="3493.5483" y2="3493.5483">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<polygon fill="url(#SVGID_5_)" points="52.9,60.3 51.3,52.2 61,62 52.9,60.3 "/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_5.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="#424242"/>
+<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="#424242"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_1_)"/>
+<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="#5AB85B"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_2_)"/>
+<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="#5AB85B"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="36.7383" x2="60.9922" y1="62.1421" y2="62.1421">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_4_)"/>
+<linearGradient gradientTransform="matrix(-1 0 0 -1 1424.6426 3552.2568)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="1389.332" x2="1393.8867" y1="3487.0864" y2="3487.0864">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<polygon fill="url(#SVGID_5_)" points="30.8,65.2 35.3,58.3 35.3,72 30.8,65.2 "/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_6.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="#424242"/>
+<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="#424242"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_1_)"/>
+<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="#5AB85B"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="11.0552" x2="35.3105" y1="62.1421" y2="62.1421">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="36.7383" x2="60.9922" y1="62.1421" y2="62.1421">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="url(#SVGID_4_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_5_)"/>
+<linearGradient gradientTransform="matrix(-0.7071 -0.7071 0.7071 -0.7071 -1461.6281 3526.3462)" gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="1409.8438" x2="1414.3984" y1="3497.7866" y2="3497.7866">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<polygon fill="url(#SVGID_6_)" points="11.5,52.9 19.6,51.3 9.9,61 11.5,52.9 "/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_7.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="#424242"/>
+<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="#424242"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="0" x2="19.814" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="11.0552" x2="35.3105" y1="62.1421" y2="62.1421">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="url(#SVGID_4_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="36.7383" x2="60.9922" y1="62.1421" y2="62.1421">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="url(#SVGID_5_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_6_)"/>
+<linearGradient gradientTransform="matrix(0 -1 1 0 -3505.6865 1466.1221)" gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="1430.8135" x2="1435.3682" y1="3512.5659" y2="3512.5659">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<polygon fill="url(#SVGID_7_)" points="6.9,30.8 13.8,35.3 0,35.3 6.9,30.8 "/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_8.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0" x2="19.814" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="url(#SVGID_1_)"/>
+<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="#424242"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="0" x2="19.814" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_4_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="11.0552" x2="35.3105" y1="62.1421" y2="62.1421">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="url(#SVGID_5_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="36.7383" x2="60.9922" y1="62.1421" y2="62.1421">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="url(#SVGID_6_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_7_)"/>
+<linearGradient gradientTransform="matrix(0.7071 -0.7071 0.7071 0.7071 -3490.3384 -1437.3785)" gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="1452.3613" x2="1456.915" y1="3506.2817" y2="3506.2817">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<polygon fill="url(#SVGID_8_)" points="19.1,11.7 20.8,19.8 11.1,10.1 19.1,11.7 "/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_anim_longtap_9.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="75px" version="1.1" viewBox="-1.5 -1.6 75 75" width="75px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="0" x2="19.814" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M13.8,35.3c0.2-5.6,2.4-10.7,6-14.5L10,11.1C4,17.4,0.2,25.9,0,35.3H13.8z" fill="url(#SVGID_1_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="11.0552" x2="35.3105" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M20.8,19.8c3.8-3.6,8.9-5.8,14.5-6V0c-9.4,0.2-17.9,4-24.3,10L20.8,19.8z" fill="url(#SVGID_2_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="36.7383" x2="60.9922" y1="9.9063" y2="9.9063">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M36.7,0v13.8c5.6,0.2,10.7,2.4,14.5,6L61,10C54.7,4,46.1,0.2,36.7,0z" fill="url(#SVGID_3_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="0" x2="19.814" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M19.8,51.2c-3.6-3.8-5.8-8.9-6-14.5H0C0.2,46.1,4,54.7,10,61L19.8,51.2z" fill="url(#SVGID_4_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="52.2354" x2="72.0469" y1="23.1826" y2="23.1826">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M52.2,20.8c3.6,3.8,5.8,8.9,6,14.5H72c-0.2-9.4-4-17.9-10-24.3L52.2,20.8z" fill="url(#SVGID_5_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="11.0552" x2="35.3105" y1="62.1421" y2="62.1421">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M35.3,58.2c-5.6-0.2-10.7-2.4-14.5-6L11.1,62c6.3,6.1,14.8,9.9,24.3,10V58.2z" fill="url(#SVGID_6_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="36.7383" x2="60.9922" y1="62.1421" y2="62.1421">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M51.2,52.2c-3.8,3.6-8.9,5.8-14.5,6V72c9.4-0.2,17.9-4,24.3-10L51.2,52.2z" fill="url(#SVGID_7_)"/>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="52.2354" x2="72.0469" y1="48.8647" y2="48.8647">
+<stop offset="0" style="stop-color:#3B87C0"/>
+<stop offset="1" style="stop-color:#0069B2"/>
+</linearGradient>
+<path d="M58.3,36.7L58.3,36.7c-0.2,5.6-2.5,10.7-6.1,14.5L62,61c6.1-6.3,9.9-14.8,10-24.3H58.3z" fill="url(#SVGID_8_)"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_b.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 62 10" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="url(#SVGID_1_)" height="9" width="62"/>
+<rect fill-opacity="0.4" height="1" stroke-opacity="0.4" width="62" y="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="62" y="8"/>
+<rect fill="none" height="10" width="62"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.0005" x2="31.0005" y1="8.9072" y2="-70.8759">
+<stop offset="0" style="stop-color:#009DD9"/>
+<stop offset="1" style="stop-color:#004F80"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_bl.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M1,2c0,3.859,3.14,7,7,7h2V0H1V2z" fill="url(#SVGID_1_)"/>
+<path d="M1,0v2c0,3.859,3.14,7,7,7h2V8H8C4.691,8,2,5.309,2,2V0H1z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M0,0v2c0,4.411,3.589,8,8,8h2V9H8C4.14,9,1,5.859,1,2V0H0z" fill-opacity="0.4" stroke-opacity="0.4"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="8.9072" y2="-70.8759">
+<stop offset="0" style="stop-color:#009DD9"/>
+<stop offset="1" style="stop-color:#004F80"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_br.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M0,9h2c3.859,0,7-3.141,7-7V0H0V9z" fill="url(#SVGID_1_)"/>
+<path d="M8,2c0,3.309-2.691,6-6,6H0v1h2c3.859,0,7-3.141,7-7V0H8V2z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M9,2c0,3.859-3.141,7-7,7H0v1h2c4.411,0,8-3.589,8-8V0H9V2z" fill-opacity="0.4" stroke-opacity="0.4"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="8.9072" y2="-70.8759">
+<stop offset="0" style="stop-color:#009DD9"/>
+<stop offset="1" style="stop-color:#004F80"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_c.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 62 62" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="url(#SVGID_1_)" height="62" width="62"/>
+<rect fill="none" height="62" width="62"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.0005" x2="31.0005" y1="70.9072" y2="-8.8759">
+<stop offset="0" style="stop-color:#009DD9"/>
+<stop offset="1" style="stop-color:#004F80"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_l.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 10 62" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="url(#SVGID_1_)" height="62" width="9" x="1"/>
+<rect fill-opacity="0.4" height="62" stroke-opacity="0.4" width="1"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="62" stroke-opacity="0.2" width="1" x="1"/>
+<rect fill="none" height="62" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="70.9072" y2="-8.8759">
+<stop offset="0" style="stop-color:#009DD9"/>
+<stop offset="1" style="stop-color:#004F80"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_r.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="62px" version="1.1" viewBox="0 0 10 62" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="url(#SVGID_1_)" height="62" width="9"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="62" stroke-opacity="0.2" width="1" x="8"/>
+<rect fill-opacity="0.4" height="62" stroke-opacity="0.4" width="1" x="9"/>
+<rect fill="none" height="62" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="70.9072" y2="-8.8759">
+<stop offset="0" style="stop-color:#009DD9"/>
+<stop offset="1" style="stop-color:#004F80"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_t.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 62 10" width="62px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="url(#SVGID_1_)" height="9" width="62" y="1"/>
+<rect fill-opacity="0.4" height="1" stroke-opacity="0.4" width="62"/>
+<rect fill="#FFFFFF" fill-opacity="0.2" height="1" stroke-opacity="0.2" width="62" y="1"/>
+<rect fill="none" height="10" width="62"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.0005" x2="31.0005" y1="80.9072" y2="1.1241">
+<stop offset="0" style="stop-color:#009DD9"/>
+<stop offset="1" style="stop-color:#004F80"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_tl.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M10,1H8C4.14,1,1,4.141,1,8v2h9V1z" fill="url(#SVGID_1_)"/>
+<path d="M2,8c0-3.309,2.691-6,6-6h2V1H8C4.14,1,1,4.141,1,8v2h1V8z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M1,8c0-3.859,3.14-7,7-7h2V0H8C3.589,0,0,3.589,0,8v2h1V8z" fill-opacity="0.4" stroke-opacity="0.4"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="5.5" x2="5.5" y1="80.9072" y2="1.1241">
+<stop offset="0" style="stop-color:#009DD9"/>
+<stop offset="1" style="stop-color:#004F80"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsitems_pressed_tr.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="10px" version="1.1" viewBox="0 0 10 10" width="10px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<path d="M9,8c0-3.859-3.141-7-7-7H0v9h9V8z" fill="url(#SVGID_1_)"/>
+<path d="M9,8c0-3.859-3.141-7-7-7H0v1h2c3.309,0,6,2.691,6,6v2h1V8z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
+<path d="M10,8c0-4.411-3.589-8-8-8H0v1h2c3.859,0,7,3.141,7,7v2h1V8z" fill-opacity="0.4" stroke-opacity="0.4"/>
+<rect fill="none" height="10" width="10"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="4.5" x2="4.5" y1="80.9072" y2="1.1241">
+<stop offset="0" style="stop-color:#009DD9"/>
+<stop offset="1" style="stop-color:#004F80"/>
+</linearGradient>
+</defs>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_b.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="62px" height="10px" viewBox="0 0 62 10" enable-background="new 0 0 62 10" xml:space="preserve">
+<defs>
+</defs>
+<rect fill="none" width="62" height="10"/>
+<rect opacity="0.1" fill="#14141E" width="62" height="10"/>
+<rect opacity="0.2" fill="#14141E" width="62" height="9"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="30.9995" y1="-70.8745" x2="30.9995" y2="7.9514">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="0" style="stop-color:#FDFDFE"/>
+ <stop offset="0.9" style="stop-color:#E6E6F0"/>
+ <stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+<rect opacity="0.9" fill="url(#SVGID_1_)" width="62" height="8"/>
+<rect y="7" opacity="0.4" fill="#FFFFFF" width="62" height="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_bl.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="10px" height="10px" viewBox="0 0 10 10" enable-background="new 0 0 10 10" xml:space="preserve">
+<defs>
+</defs>
+<rect fill="none" width="10" height="10"/>
+<path opacity="0.1" fill="#14141E" d="M0,3c0,3.859,3.14,7,7,7h3V0H0V3z"/>
+<path opacity="0.2" fill="#14141E" d="M1,3c0,3.3,2.7,6,6,6h3V0H1V3z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="5.5" y1="-70.8745" x2="5.5" y2="7.9514">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="0" style="stop-color:#FDFDFE"/>
+ <stop offset="0.9" style="stop-color:#E6E6F0"/>
+ <stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+<path opacity="0.9" fill="url(#SVGID_1_)" d="M1,2c0,3.3,2.7,6,6,6h3V0H1V2z"/>
+<path opacity="0.4" fill="#FFFFFF" d="M1,0v2c0,3.3,2.7,6,6,6h3V7H7C4.243,7,2,4.757,2,2V0H1z"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_br.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="10px" height="10px" viewBox="0 0 10 10" enable-background="new 0 0 10 10" xml:space="preserve">
+<defs>
+</defs>
+<rect fill="none" width="10" height="10"/>
+<path opacity="0.1" fill="#14141E" d="M0,10h3c3.859,0,7-3.141,7-7V0H0V10z"/>
+<path opacity="0.2" fill="#14141E" d="M0,9h3c3.3,0,6-2.7,6-6V0H0V9z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="4.5" y1="-70.8745" x2="4.5" y2="7.9514">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="0" style="stop-color:#FDFDFE"/>
+ <stop offset="0.9" style="stop-color:#E6E6F0"/>
+ <stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+<path opacity="0.9" fill="url(#SVGID_1_)" d="M0,8h3c3.3,0,6-2.7,6-6V0H0V8z"/>
+<path opacity="0.4" fill="#FFFFFF" d="M8,2c0,2.757-2.243,5-5,5H0v1h3c3.3,0,6-2.7,6-6V0H8V2z"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_c.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="62px" height="62px" viewBox="0 0 62 62" enable-background="new 0 0 62 62" xml:space="preserve">
+<defs>
+</defs>
+<rect fill="none" width="62" height="62"/>
+<rect opacity="0.1" fill="#14141E" width="62" height="62"/>
+<rect opacity="0.2" fill="#14141E" width="62" height="62"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="30.9995" y1="-8.875" x2="30.9995" y2="69.9518">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="0" style="stop-color:#FDFDFE"/>
+ <stop offset="0.9" style="stop-color:#E6E6F0"/>
+ <stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+<rect opacity="0.9" fill="url(#SVGID_1_)" width="62" height="62"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_l.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="10px" height="62px" viewBox="0 0 10 62" enable-background="new 0 0 10 62" xml:space="preserve">
+<defs>
+</defs>
+<rect fill="none" width="10" height="62"/>
+<rect opacity="0.1" fill="#14141E" width="10" height="62"/>
+<rect x="1" opacity="0.2" fill="#14141E" width="9" height="62"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="5.5" y1="-8.875" x2="5.5" y2="69.9518">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="0" style="stop-color:#FDFDFE"/>
+ <stop offset="0.9" style="stop-color:#E6E6F0"/>
+ <stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+<rect x="1" opacity="0.9" fill="url(#SVGID_1_)" width="9" height="62"/>
+<rect x="1" opacity="0.4" fill="#FFFFFF" width="1" height="62"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_r.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="10px" height="62px" viewBox="0 0 10 62" enable-background="new 0 0 10 62" xml:space="preserve">
+<defs>
+</defs>
+<rect fill="none" width="10" height="62"/>
+<rect opacity="0.1" fill="#14141E" width="10" height="62"/>
+<rect opacity="0.2" fill="#14141E" width="9" height="62"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="4.5" y1="-8.875" x2="4.5" y2="69.9518">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="0" style="stop-color:#FDFDFE"/>
+ <stop offset="0.9" style="stop-color:#E6E6F0"/>
+ <stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+<rect opacity="0.9" fill="url(#SVGID_1_)" width="9" height="62"/>
+<rect x="8" opacity="0.4" fill="#FFFFFF" width="1" height="62"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_t.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="62px" height="10px" viewBox="0 0 62 10" enable-background="new 0 0 62 10" xml:space="preserve">
+<defs>
+</defs>
+<rect fill="none" width="62" height="10"/>
+<rect opacity="0.1" fill="#14141E" width="62" height="10"/>
+<rect y="2" opacity="0.2" fill="#14141E" width="62" height="8"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="30.9995" y1="1.125" x2="30.9995" y2="79.951">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="0" style="stop-color:#FDFDFE"/>
+ <stop offset="0.9" style="stop-color:#E6E6F0"/>
+ <stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+<rect y="1" opacity="0.9" fill="url(#SVGID_1_)" width="62" height="9"/>
+<rect y="1" opacity="0.4" fill="#FFFFFF" width="62" height="1"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_tl.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="10px" height="10px" viewBox="0 0 10 10" enable-background="new 0 0 10 10" xml:space="preserve">
+<defs>
+</defs>
+<rect fill="none" width="10" height="10"/>
+<path opacity="0.1" fill="#14141E" d="M10,0H7C3.14,0,0,3.14,0,7v3h10V0z"/>
+<path opacity="0.2" fill="#14141E" d="M10,2H7C3.7,2,1,4.7,1,8v2h9V2z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="5.5" y1="1.125" x2="5.5" y2="79.951">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="0" style="stop-color:#FDFDFE"/>
+ <stop offset="0.9" style="stop-color:#E6E6F0"/>
+ <stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+<path opacity="0.9" fill="url(#SVGID_1_)" d="M10,1H7C3.7,1,1,3.7,1,7v3h9V1z"/>
+<path opacity="0.4" fill="#FFFFFF" d="M2,7c0-2.757,2.243-5,5-5h3V1H7C3.7,1,1,3.7,1,7v3h1V7z"/>
+</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_fr_hsshortcut_normal_tr.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+]>
+<svg version="1.1"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+ x="0px" y="0px" width="10px" height="10px" viewBox="0 0 10 10" enable-background="new 0 0 10 10" xml:space="preserve">
+<defs>
+</defs>
+<rect fill="none" width="10" height="10"/>
+<path opacity="0.1" fill="#14141E" d="M10,7c0-3.86-3.141-7-7-7H0v10h10V7z"/>
+<path opacity="0.2" fill="#14141E" d="M9,8c0-3.3-2.7-6-6-6H0v8h9V8z"/>
+<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="4.5" y1="1.125" x2="4.5" y2="79.951">
+ <stop offset="0" style="stop-color:#FFFFFF"/>
+ <stop offset="0" style="stop-color:#FDFDFE"/>
+ <stop offset="0.9" style="stop-color:#E6E6F0"/>
+ <stop offset="1" style="stop-color:#DCDCE6"/>
+</linearGradient>
+<path opacity="0.9" fill="url(#SVGID_1_)" d="M9,7c0-3.3-2.7-6-6-6H0v9h9V7z"/>
+<path opacity="0.4" fill="#FFFFFF" d="M9,7c0-3.3-2.7-6-6-6H0v1h3c2.757,0,5,2.243,5,5v3h1V7z"/>
+</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_graf_clock_day_bg.svg Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_graf_clock_day_bg.svg Mon May 03 12:24:59 2010 +0300
@@ -1,23 +1,623 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="177.5px" version="1.1" viewBox="0 0 177.5 177.5" width="177.5px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<svg baseProfile="tiny" height="218px" version="1.1" viewBox="0 0 218 218" width="218px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="218" width="218"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -197 -69)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="306" x2="306" y1="-69" y2="-287">
+<stop offset="0" style="stop-color:#808080"/>
+<stop offset="1" style="stop-color:#000000"/>
+</linearGradient>
+<path d="M109,218C48.897,218,0,169.104,0,109 C0,48.896,48.897,0,109,0c60.104,0,109,48.896,109,109C218,169.104,169.104,218,109,218L109,218z" fill="url(#SVGID_1_)" fill-opacity="0.4" stroke-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -197 -69)" gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="306" x2="306" y1="-78.873" y2="-286.0985">
+<stop offset="0" style="stop-color:#666666"/>
+<stop offset="1" style="stop-color:#000000"/>
+</linearGradient>
+<path d="M109,217C49.448,217,1,168.551,1,109S49.448,1,109,1 s108,48.449,108,108S168.552,217,109,217L109,217z" fill="url(#SVGID_2_)" fill-opacity="0.4" stroke-opacity="0.4"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -197 -69)" gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="306" x2="306" y1="-69.7686" y2="-285.5244">
+<stop offset="0" style="stop-color:#DBDBDB"/>
+<stop offset="0.5333" style="stop-color:#DBDBDB"/>
+<stop offset="0.5333" style="stop-color:#C1C1C1"/>
+<stop offset="1" style="stop-color:#A8A8A8"/>
+</linearGradient>
+<circle cx="109" cy="109" fill="url(#SVGID_3_)" r="107"/>
+<path d="M109,2C49.905,2,2,49.905,2,109c0,59.096,47.905,107,107,107 c59.096,0,107-47.904,107-107C216,49.905,168.096,2,109,2z M109,215C50.552,215,3,167.449,3,109S50.552,3,109,3s106,47.551,106,106 S167.448,215,109,215z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
+<path d="M109,207c-54.037,0-98-43.963-98-98s43.963-98,98-98s98,43.963,98,98S163.037,207,109,207L109,207z" fill="#E6E6E6"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -197 -69)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="306" x2="306" y1="-81.4502" y2="-272.0043">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="0.5636" style="stop-color:#CCCCCC"/>
+<stop offset="1" style="stop-color:#E6E6E6"/>
+</linearGradient>
+<circle cx="109" cy="109" fill="url(#SVGID_4_)" r="96"/>
+<path d="M109,13c-53.02,0-96,42.98-96,96c0,53.02,42.98,96,96,96c53.02,0,96-42.98,96-96 C205,55.98,162.02,13,109,13z M109,204.01c-52.389,0-95.011-42.621-95.011-95.01c0-52.389,42.622-95.01,95.011-95.01 c52.389,0,95.012,42.621,95.012,95.01C204.012,161.389,161.389,204.01,109,204.01z" fill-opacity="0.5" stroke-opacity="0.5"/>
+<linearGradient gradientTransform="matrix(1 0 0 -1 -197 -69)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="344.4795" x2="344.4795" y1="-115.0068" y2="-170.5441">
+<stop offset="0" style="stop-color:#FFFFFF"/>
+<stop offset="1" style="stop-color:#B3B3B3"/>
+</linearGradient>
+<path d="M125.486,102.714c-6.047,0-9.375-3.503-9.375-9.863 v-21.79c0-6.603,5.479-8.945,10.174-8.945h0.443c0.39,0,0.424-0.001,0.739-0.013l0.257-0.009c2.535-0.089,5.243-1.922,5.239-6.803 c-0.003-4.134,1.12-7.164,3.338-9.008c1.896-1.574,4.155-1.905,5.72-1.905c1.108,0,1.886,0.169,1.918,0.176 c21.873,3.771,33.553,22.157,34.844,34.006c0.367,3.37-0.855,7.082-3.192,9.688c-1.563,1.744-4.358,3.822-8.794,3.822 c-6.643,0-9.273,2.29-10.676,4.013l-0.396,0.495c-1.824,2.295-4.877,6.136-11.425,6.136H125.486z" fill="url(#SVGID_5_)" fill-opacity="0.5" stroke-opacity="0.5"/>
+<path d="M178.783,78.56c-1.291-11.849-12.971-30.235-34.844-34.006 c-0.032-0.007-0.81-0.176-1.918-0.176c-1.563,0-3.824,0.331-5.72,1.905c-2.218,1.844-3.341,4.874-3.338,9.008 c0.004,4.881-2.704,6.714-5.239,6.803l-0.257,0.009c-0.315,0.012-0.351,0.013-0.739,0.013h-0.443 c-4.693,0-10.174,2.343-10.174,8.945v21.79c0,6.36,3.328,9.863,9.375,9.863H144.3c6.548,0,9.601-3.841,11.425-6.136l0.396-0.495 c1.4-1.723,4.033-4.013,10.676-4.013c4.436,0,7.23-2.078,8.794-3.822C177.928,85.642,179.15,81.93,178.783,78.56z M166.797,91.07 c-7.016,0-9.889,2.461-11.451,4.381c-1.82,2.242-4.516,6.263-11.045,6.263c-6.527,0-11.668,0-18.814,0 c-7.147,0-8.375-5.071-8.375-8.863c0-3.793,0-21.79,0-21.79c0-5.885,4.763-7.945,9.175-7.945c0.996,0,0.752,0.003,1.476-0.022 c3.309-0.115,6.209-2.57,6.204-7.804c-0.008-11.916,9.761-9.759,9.761-9.759c21.521,3.711,32.832,21.829,34.063,33.138 C178.365,83.943,174.637,91.07,166.797,91.07z" fill="#B3B3B3" fill-opacity="0.4" stroke-opacity="0.4"/>
+<g>
+<g>
+<rect fill="#1B75BB" height="0.426" width="2.779" x="163.654" y="72.951"/>
+<rect fill="#1B75BB" height="0.426" width="4.707" x="161.725" y="75.387"/>
+<rect fill="#1B75BB" height="0.426" width="2.723" x="163.711" y="77.445"/>
+<rect fill="#1B75BB" height="0.428" width="2.723" x="163.711" y="79.5"/>
+<rect fill="#1B75BB" height="0.426" width="2.723" x="163.711" y="81.557"/>
+<rect fill="#1B75BB" height="0.427" width="2.723" x="163.711" y="83.611"/>
+<rect fill="#1B75BB" height="0.426" width="5" x="161.434" y="64.729"/>
+<rect fill="#1B75BB" height="0.426" width="2.723" x="163.711" y="62.521"/>
+<rect fill="#1B75BB" height="0.425" width="2.723" x="163.711" y="66.787"/>
+<rect fill="#1B75BB" height="0.427" width="2.723" x="163.711" y="68.842"/>
+<rect fill="#1B75BB" height="0.426" width="2.723" x="163.711" y="70.898"/>
+</g>
+</g>
+<ellipse cx="109" cy="59.999" fill="#FFFFFF" fill-opacity="0.25" rx="65" ry="44.001" stroke-opacity="0.25"/>
+<g>
+<g>
+<g>
+<g>
+<g>
+<path d="M131.604,121.963c-0.129,0-0.256-0.066-0.326-0.188l-1.416-2.453c-0.104-0.18-0.043-0.408,0.138-0.512 c0.175-0.104,0.405-0.043,0.513,0.137l1.418,2.453c0.104,0.18,0.041,0.408-0.139,0.513 C131.73,121.947,131.667,121.963,131.604,121.963L131.604,121.963z" fill="#808080"/>
+</g>
+<g>
+<path d="M151.748,156.855c-0.129,0-0.255-0.066-0.325-0.188l-1.417-2.454c-0.104-0.179-0.042-0.407,0.139-0.512 c0.174-0.104,0.405-0.043,0.513,0.137l1.417,2.454c0.104,0.18,0.042,0.409-0.139,0.514 C151.877,156.84,151.813,156.855,151.748,156.855L151.748,156.855z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M140.967,119.454c-0.207,0-0.375-0.168-0.375-0.375v-2.833c0-0.207,0.168-0.375,0.375-0.375 s0.375,0.168,0.375,0.375v2.833C141.342,119.286,141.174,119.454,140.967,119.454L140.967,119.454z" fill="#808080"/>
+</g>
+<g>
+<path d="M140.967,159.745c-0.207,0-0.375-0.168-0.375-0.375v-2.833c0-0.207,0.168-0.375,0.375-0.375 s0.375,0.168,0.375,0.375v2.833C141.342,159.577,141.174,159.745,140.967,159.745L140.967,159.745z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M150.331,121.963c-0.063,0-0.129-0.016-0.188-0.051c-0.18-0.104-0.24-0.332-0.138-0.512l1.417-2.453 c0.104-0.18,0.336-0.24,0.514-0.137c0.18,0.104,0.24,0.332,0.138,0.512l-1.417,2.453 C150.586,121.896,150.46,121.963,150.331,121.963L150.331,121.963z" fill="#808080"/>
+</g>
+<g>
+<path d="M130.186,156.855c-0.063,0-0.129-0.017-0.188-0.049c-0.18-0.104-0.241-0.334-0.139-0.514l1.418-2.453 c0.104-0.181,0.337-0.238,0.513-0.138c0.181,0.104,0.241,0.334,0.138,0.513l-1.416,2.453 C130.439,156.789,130.314,156.855,130.186,156.855L130.186,156.855z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M157.188,128.818c-0.129,0-0.256-0.068-0.326-0.188c-0.104-0.18-0.041-0.409,0.139-0.513l2.454-1.415 c0.183-0.104,0.409-0.043,0.513,0.137c0.104,0.181,0.042,0.408-0.138,0.513l-2.454,1.416 C157.314,128.802,157.25,128.818,157.188,128.818L157.188,128.818z" fill="#808080"/>
+</g>
+<g>
+<path d="M122.293,148.964c-0.129,0-0.256-0.067-0.325-0.188c-0.104-0.18-0.042-0.408,0.138-0.512l2.455-1.416 c0.182-0.104,0.408-0.041,0.513,0.139s0.042,0.408-0.138,0.512l-2.455,1.416C122.421,148.947,122.355,148.964,122.293,148.964 L122.293,148.964z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M162.529,138.184L162.529,138.184h-2.834c-0.206,0-0.375-0.168-0.375-0.375s0.169-0.375,0.375-0.375 l0,0h2.834c0.207,0,0.375,0.168,0.375,0.375S162.736,138.184,162.529,138.184L162.529,138.184z" fill="#808080"/>
+</g>
+<g>
+<path d="M122.236,138.184L122.236,138.184h-2.832c-0.207,0-0.375-0.168-0.375-0.375s0.168-0.375,0.375-0.375 l0,0h2.832c0.207,0,0.375,0.168,0.375,0.375S122.443,138.184,122.236,138.184L122.236,138.184z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M159.641,148.965c-0.063,0-0.129-0.016-0.188-0.051L157,147.498c-0.18-0.104-0.241-0.334-0.139-0.514 c0.105-0.18,0.338-0.238,0.514-0.137l2.453,1.418c0.18,0.104,0.24,0.332,0.138,0.512 C159.896,148.896,159.77,148.965,159.641,148.965L159.641,148.965z" fill="#808080"/>
+</g>
+<g>
+<path d="M124.746,128.818c-0.064,0-0.129-0.017-0.188-0.051l-2.453-1.416c-0.181-0.104-0.242-0.334-0.139-0.514 c0.104-0.181,0.336-0.24,0.514-0.138l2.453,1.418c0.18,0.104,0.24,0.332,0.137,0.512 C125.001,128.751,124.875,128.818,124.746,128.818L124.746,128.818z" fill="#808080"/>
+</g>
+</g>
+</g>
+<g>
+<g>
+<g>
+<path d="M140.967,119.454c-0.207,0-0.375-0.168-0.375-0.375v-2.833c0-0.207,0.168-0.375,0.375-0.375 s0.375,0.168,0.375,0.375v2.833C141.342,119.286,141.174,119.454,140.967,119.454L140.967,119.454z" fill="#808080"/>
+</g>
+<g>
+<path d="M140.967,159.745c-0.207,0-0.375-0.168-0.375-0.375v-2.833c0-0.207,0.168-0.375,0.375-0.375 s0.375,0.168,0.375,0.375v2.833C141.342,159.577,141.174,159.745,140.967,159.745L140.967,159.745z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M150.331,121.963c-0.063,0-0.129-0.016-0.188-0.051c-0.18-0.104-0.24-0.332-0.138-0.512l1.417-2.453 c0.104-0.18,0.336-0.24,0.514-0.137c0.18,0.104,0.24,0.332,0.138,0.512l-1.417,2.453 C150.586,121.896,150.46,121.963,150.331,121.963L150.331,121.963z" fill="#808080"/>
+</g>
+<g>
+<path d="M130.186,156.855c-0.063,0-0.129-0.017-0.188-0.049c-0.18-0.104-0.241-0.334-0.139-0.514l1.418-2.453 c0.104-0.181,0.337-0.238,0.513-0.138c0.181,0.104,0.241,0.334,0.138,0.513l-1.416,2.453 C130.439,156.789,130.314,156.855,130.186,156.855L130.186,156.855z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M157.188,128.818c-0.129,0-0.256-0.068-0.326-0.188c-0.104-0.18-0.041-0.409,0.139-0.513l2.454-1.415 c0.183-0.104,0.409-0.043,0.513,0.137c0.104,0.181,0.042,0.408-0.138,0.513l-2.454,1.416 C157.314,128.802,157.25,128.818,157.188,128.818L157.188,128.818z" fill="#808080"/>
+</g>
+<g>
+<path d="M122.293,148.964c-0.129,0-0.256-0.067-0.325-0.188c-0.104-0.18-0.042-0.408,0.138-0.512l2.455-1.416 c0.182-0.104,0.408-0.041,0.513,0.139s0.042,0.408-0.138,0.512l-2.455,1.416C122.421,148.947,122.355,148.964,122.293,148.964 L122.293,148.964z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M162.529,138.184L162.529,138.184h-2.834c-0.206,0-0.375-0.168-0.375-0.375s0.169-0.375,0.375-0.375 l0,0h2.834c0.207,0,0.375,0.168,0.375,0.375S162.736,138.184,162.529,138.184L162.529,138.184z" fill="#808080"/>
+</g>
+<g>
+<path d="M122.236,138.184L122.236,138.184h-2.832c-0.207,0-0.375-0.168-0.375-0.375s0.168-0.375,0.375-0.375 l0,0h2.832c0.207,0,0.375,0.168,0.375,0.375S122.443,138.184,122.236,138.184L122.236,138.184z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M159.641,148.965c-0.063,0-0.129-0.016-0.188-0.051L157,147.498c-0.18-0.104-0.241-0.334-0.139-0.514 c0.105-0.18,0.338-0.238,0.514-0.137l2.453,1.418c0.18,0.104,0.24,0.332,0.138,0.512 C159.896,148.896,159.77,148.965,159.641,148.965L159.641,148.965z" fill="#808080"/>
+</g>
+<g>
+<path d="M124.746,128.818c-0.064,0-0.129-0.017-0.188-0.051l-2.453-1.416c-0.181-0.104-0.242-0.334-0.139-0.514 c0.104-0.181,0.336-0.24,0.514-0.138l2.453,1.418c0.18,0.104,0.24,0.332,0.137,0.512 C125.001,128.751,124.875,128.818,124.746,128.818L124.746,128.818z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M151.748,156.857c-0.129,0-0.255-0.067-0.325-0.188l-1.416-2.453c-0.104-0.18-0.042-0.409,0.138-0.513 c0.183-0.104,0.408-0.042,0.514,0.138l1.416,2.453c0.104,0.181,0.042,0.408-0.139,0.513 C151.876,156.842,151.813,156.857,151.748,156.857L151.748,156.857z" fill="#808080"/>
+</g>
+<g>
+<path d="M131.602,121.963c-0.129,0-0.254-0.068-0.324-0.188l-1.416-2.455c-0.104-0.178-0.043-0.408,0.138-0.512 c0.183-0.104,0.408-0.041,0.513,0.137l1.416,2.455c0.104,0.179,0.043,0.408-0.138,0.512 C131.729,121.945,131.665,121.963,131.602,121.963L131.602,121.963z" fill="#808080"/>
+</g>
+</g>
+</g>
+<g>
+<g>
+<g>
+<path d="M150.331,121.963c-0.063,0-0.129-0.016-0.188-0.051c-0.18-0.104-0.24-0.332-0.138-0.512l1.417-2.453 c0.104-0.18,0.336-0.24,0.514-0.137c0.18,0.104,0.24,0.332,0.138,0.512l-1.417,2.453 C150.586,121.896,150.46,121.963,150.331,121.963L150.331,121.963z" fill="#808080"/>
+</g>
+<g>
+<path d="M130.186,156.855c-0.063,0-0.129-0.017-0.188-0.049c-0.18-0.104-0.241-0.334-0.139-0.514l1.418-2.453 c0.104-0.181,0.337-0.238,0.513-0.138c0.181,0.104,0.241,0.334,0.138,0.513l-1.416,2.453 C130.439,156.789,130.314,156.855,130.186,156.855L130.186,156.855z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M157.188,128.818c-0.129,0-0.256-0.068-0.326-0.188c-0.104-0.18-0.041-0.409,0.139-0.513l2.454-1.415 c0.183-0.104,0.409-0.043,0.513,0.137c0.104,0.181,0.042,0.408-0.138,0.513l-2.454,1.416 C157.314,128.802,157.25,128.818,157.188,128.818L157.188,128.818z" fill="#808080"/>
+</g>
+<g>
+<path d="M122.293,148.964c-0.129,0-0.256-0.067-0.325-0.188c-0.104-0.18-0.042-0.408,0.138-0.512l2.455-1.416 c0.182-0.104,0.408-0.041,0.513,0.139s0.042,0.408-0.138,0.512l-2.455,1.416C122.421,148.947,122.355,148.964,122.293,148.964 L122.293,148.964z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M162.529,138.184L162.529,138.184h-2.834c-0.206,0-0.375-0.168-0.375-0.375s0.169-0.375,0.375-0.375 l0,0h2.834c0.207,0,0.375,0.168,0.375,0.375S162.736,138.184,162.529,138.184L162.529,138.184z" fill="#808080"/>
+</g>
+<g>
+<path d="M122.236,138.184L122.236,138.184h-2.832c-0.207,0-0.375-0.168-0.375-0.375s0.168-0.375,0.375-0.375 l0,0h2.832c0.207,0,0.375,0.168,0.375,0.375S122.443,138.184,122.236,138.184L122.236,138.184z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M159.641,148.965c-0.063,0-0.129-0.016-0.188-0.051L157,147.498c-0.18-0.104-0.241-0.334-0.139-0.514 c0.105-0.18,0.338-0.238,0.514-0.137l2.453,1.418c0.18,0.104,0.24,0.332,0.138,0.512 C159.896,148.896,159.77,148.965,159.641,148.965L159.641,148.965z" fill="#808080"/>
+</g>
+<g>
+<path d="M124.746,128.818c-0.064,0-0.129-0.017-0.188-0.051l-2.453-1.416c-0.181-0.104-0.242-0.334-0.139-0.514 c0.104-0.181,0.336-0.24,0.514-0.138l2.453,1.418c0.18,0.104,0.24,0.332,0.137,0.512 C125.001,128.751,124.875,128.818,124.746,128.818L124.746,128.818z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M151.748,156.857c-0.129,0-0.255-0.067-0.325-0.188l-1.416-2.453c-0.104-0.18-0.042-0.409,0.138-0.513 c0.183-0.104,0.408-0.042,0.514,0.138l1.416,2.453c0.104,0.181,0.042,0.408-0.139,0.513 C151.876,156.842,151.813,156.857,151.748,156.857L151.748,156.857z" fill="#808080"/>
+</g>
+<g>
+<path d="M131.602,121.963c-0.129,0-0.254-0.068-0.324-0.188l-1.416-2.455c-0.104-0.178-0.043-0.408,0.138-0.512 c0.183-0.104,0.408-0.041,0.513,0.137l1.416,2.455c0.104,0.179,0.043,0.408-0.138,0.512 C131.729,121.945,131.665,121.963,131.602,121.963L131.602,121.963z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M140.967,159.746c-0.207,0-0.375-0.168-0.375-0.375v-2.833c0-0.207,0.168-0.375,0.375-0.375 s0.375,0.168,0.375,0.375v2.833C141.342,159.578,141.174,159.746,140.967,159.746L140.967,159.746z" fill="#808080"/>
+</g>
+<g>
+<path d="M140.967,119.453c-0.207,0-0.375-0.168-0.375-0.375v-2.833c0-0.207,0.168-0.375,0.375-0.375 s0.375,0.168,0.375,0.375v2.833C141.342,119.285,141.174,119.453,140.967,119.453L140.967,119.453z" fill="#808080"/>
+</g>
+</g>
+</g>
+</g>
+</g>
+<g>
+<g>
+<path d="M99.961,36.396h-0.064l-3.673,1.983l-0.553-2.178l4.615-2.47h2.438v21.126h-2.763V36.396z" fill="#808080"/>
+<path d="M107.987,54.857v-1.755l2.242-2.178c5.396-5.135,7.865-7.865,7.865-11.05c0-2.145-1.008-4.128-4.16-4.128 c-1.916,0-3.51,0.975-4.484,1.788l-0.91-2.015c1.432-1.203,3.543-2.145,5.947-2.145c4.552,0,6.47,3.12,6.47,6.143 c0,3.9-2.828,7.053-7.281,11.343l-1.655,1.56v0.065h9.457v2.373L107.987,54.857L107.987,54.857z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M112.551,163.688c-0.584-0.033-1.332,0.031-2.145,0.162c-4.518,0.715-6.858,3.965-7.345,7.476h0.064 c1.008-1.365,2.796-2.47,5.136-2.47c3.737,0,6.37,2.729,6.37,6.824c0,3.9-2.633,7.475-7.052,7.475 c-4.485,0-7.442-3.51-7.442-9.002c0-4.159,1.462-7.442,3.574-9.522c1.756-1.723,4.096-2.795,6.76-3.119 c0.846-0.131,1.562-0.163,2.08-0.163V163.688z M111.738,175.875c0-3.023-1.723-4.844-4.355-4.844 c-1.723,0-3.348,1.041-4.127,2.601c-0.163,0.325-0.293,0.716-0.293,1.235c0.032,3.479,1.657,6.078,4.681,6.078 C110.082,180.945,111.738,178.896,111.738,175.875z" fill="#808080"/>
+</g>
+</g>
<g>
<g>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="37.645" x2="137.7448" y1="13.752" y2="160.6519">
-<stop offset="0" style="stop-color:#B2B2B2"/>
-<stop offset="1" style="stop-color:#4D4D4D"/>
-</linearGradient>
-<path d="M88.752,1C137.218,1,176.5,40.287,176.5,88.75c0,48.467-39.281,87.75-87.748,87.75 C40.285,176.5,1,137.217,1,88.75C1,40.287,40.285,1,88.752,1z" fill="url(#SVGID_1_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="41.5273" x2="122.1276" y1="24.771" y2="133.9712">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#E6E6E6"/>
-</linearGradient>
-<path d="M88.752,4.352c46.615,0,84.396,37.789,84.396,84.398c0,46.613-37.781,84.398-84.396,84.398 c-46.614,0-84.4-37.785-84.4-84.398C4.352,42.141,42.138,4.352,88.752,4.352z" fill="url(#SVGID_2_)"/>
-<ellipse cx="88.75" cy="167.445" fill="#333333" rx="3.037" ry="3.105"/>
-<ellipse cx="88.75" cy="10.164" fill="#333333" rx="3.036" ry="3.102"/>
-<ellipse cx="10.253" cy="88.869" fill="#333333" rx="3.036" ry="3.104"/>
-<path d="M169.939,88.867c0,1.717-1.363,3.105-3.036,3.105c-1.676,0-3.037-1.389-3.037-3.105 c0-1.715,1.361-3.105,3.037-3.105C168.576,85.762,169.939,87.152,169.939,88.867z" fill="#333333"/>
+<path d="M35.731,116.213c0.617,0.064,1.333,0,2.308-0.098c1.657-0.227,3.218-0.877,4.42-2.047 c1.397-1.269,2.405-3.12,2.795-5.59h-0.097c-1.171,1.43-2.86,2.243-5.006,2.243c-3.77,0-6.207-2.86-6.207-6.468 c0-3.998,2.893-7.508,7.215-7.508c4.322,0,6.987,3.478,6.987,8.938c0,4.616-1.56,7.866-3.64,9.879 c-1.625,1.594-3.868,2.567-6.143,2.828c-1.04,0.162-1.95,0.194-2.633,0.162L35.731,116.213L35.731,116.213z M36.771,104.09 c0,2.633,1.593,4.485,4.063,4.485c1.918,0,3.413-0.942,4.16-2.21c0.163-0.292,0.26-0.585,0.26-1.073 c0-3.607-1.332-6.37-4.354-6.37C38.494,98.923,36.771,101.068,36.771,104.09z" fill="#808080"/>
+</g>
</g>
-<rect fill="none" height="177.5" width="177.5"/>
+<line fill="none" x1="117.941" x2="117.631" y1="20.827" y2="23.813"/>
+<line fill="none" x1="117.941" x2="117.631" y1="20.827" y2="23.813"/>
+<path d="M117.631,23.983c-0.008,0-0.012,0-0.02-0.002c-0.094-0.009-0.16-0.093-0.152-0.188l0.313-2.985 c0.011-0.095,0.101-0.157,0.191-0.152c0.09,0.01,0.16,0.094,0.15,0.188l-0.313,2.985C117.791,23.918,117.717,23.983,117.631,23.983 L117.631,23.983z" fill="#808080"/>
+<line fill="none" x1="99.688" x2="99.369" y1="194.559" y2="197.538"/>
+<line fill="none" x1="99.688" x2="99.369" y1="194.559" y2="197.538"/>
+<path d="M99.369,197.71c0,0-0.012,0-0.016-0.001c-0.096-0.011-0.162-0.095-0.154-0.188l0.318-2.983 c0.008-0.095,0.096-0.16,0.188-0.152c0.096,0.011,0.162,0.095,0.154,0.188l-0.318,2.982C99.531,197.645,99.457,197.71,99.369,197.71 L99.369,197.71z" fill="#808080"/>
+<line fill="none" x1="127.129" x2="126.506" y1="22.281" y2="25.219"/>
+<line fill="none" x1="127.129" x2="126.506" y1="22.281" y2="25.219"/>
+<path d="M126.506,25.39c-0.012,0-0.025-0.001-0.037-0.005c-0.092-0.02-0.15-0.111-0.131-0.203l0.623-2.937 c0.018-0.094,0.104-0.151,0.201-0.133c0.094,0.021,0.154,0.112,0.133,0.204l-0.621,2.937 C126.656,25.333,126.584,25.39,126.506,25.39L126.506,25.39z" fill="#808080"/>
+<line fill="none" x1="90.813" x2="90.186" y1="193.148" y2="196.084"/>
+<line fill="none" x1="90.813" x2="90.186" y1="193.148" y2="196.084"/>
+<path d="M90.186,196.254c-0.01,0-0.021,0-0.035-0.002c-0.092-0.021-0.15-0.111-0.131-0.203l0.627-2.936 c0.018-0.09,0.105-0.148,0.201-0.131c0.092,0.021,0.152,0.109,0.133,0.203l-0.627,2.934C90.336,196.2,90.266,196.254,90.186,196.254 L90.186,196.254z" fill="#808080"/>
+<line fill="none" x1="136.109" x2="135.182" y1="24.687" y2="27.541"/>
+<line fill="none" x1="136.109" x2="135.182" y1="24.687" y2="27.541"/>
+<path d="M135.182,27.715c-0.016,0-0.033-0.003-0.053-0.009c-0.088-0.029-0.137-0.126-0.107-0.215l0.927-2.856 c0.03-0.091,0.125-0.14,0.217-0.11c0.09,0.029,0.14,0.126,0.108,0.217l-0.928,2.855C135.322,27.669,135.256,27.715,135.182,27.715 L135.182,27.715z" fill="#808080"/>
+<line fill="none" x1="82.133" x2="81.205" y1="190.824" y2="193.677"/>
+<line fill="none" x1="82.133" x2="81.205" y1="190.824" y2="193.677"/>
+<path d="M81.205,193.85c-0.018,0-0.035-0.002-0.055-0.011c-0.09-0.028-0.139-0.125-0.109-0.216l0.93-2.854 c0.031-0.09,0.127-0.139,0.215-0.109c0.092,0.029,0.141,0.127,0.111,0.218l-0.93,2.853C81.342,193.802,81.275,193.85,81.205,193.85 L81.205,193.85z" fill="#808080"/>
+<line fill="none" x1="144.793" x2="143.572" y1="28.02" y2="30.763"/>
+<line fill="none" x1="144.793" x2="143.572" y1="28.02" y2="30.763"/>
+<path d="M143.572,30.935c-0.023,0-0.047-0.004-0.068-0.015c-0.088-0.039-0.127-0.14-0.088-0.227l1.221-2.744 c0.039-0.086,0.139-0.125,0.225-0.086c0.089,0.038,0.125,0.14,0.091,0.226l-1.224,2.743 C143.699,30.896,143.639,30.935,143.572,30.935L143.572,30.935z" fill="#808080"/>
+<line fill="none" x1="73.744" x2="72.523" y1="187.604" y2="190.346"/>
+<line fill="none" x1="73.744" x2="72.523" y1="187.604" y2="190.346"/>
+<path d="M72.523,190.516c-0.025,0-0.049-0.004-0.07-0.015c-0.088-0.04-0.125-0.142-0.088-0.228l1.223-2.739 c0.039-0.086,0.141-0.124,0.227-0.086c0.088,0.038,0.125,0.139,0.088,0.227l-1.225,2.739 C72.65,190.479,72.59,190.516,72.523,190.516L72.523,190.516z" fill="#808080"/>
+<line fill="none" x1="160.879" x2="159.113" y1="37.307" y2="39.735"/>
+<line fill="none" x1="160.879" x2="159.113" y1="37.307" y2="39.735"/>
+<path d="M159.113,39.907c-0.033,0-0.07-0.011-0.1-0.033c-0.078-0.056-0.095-0.164-0.037-0.239l1.764-2.43 c0.055-0.077,0.164-0.094,0.24-0.037c0.076,0.056,0.092,0.161,0.035,0.24l-1.763,2.428 C159.219,39.883,159.166,39.907,159.113,39.907L159.113,39.907z" fill="#808080"/>
+<line fill="none" x1="58.203" x2="56.438" y1="178.632" y2="181.059"/>
+<line fill="none" x1="58.203" x2="56.438" y1="178.632" y2="181.059"/>
+<path d="M56.438,181.229c-0.033,0-0.07-0.008-0.1-0.031c-0.078-0.057-0.094-0.164-0.039-0.238l1.768-2.426 c0.053-0.079,0.16-0.096,0.238-0.038c0.078,0.054,0.092,0.161,0.037,0.239l-1.764,2.425 C56.543,181.205,56.492,181.229,56.438,181.229L56.438,181.229z" fill="#808080"/>
+<line fill="none" x1="168.104" x2="166.096" y1="43.157" y2="45.39"/>
+<line fill="none" x1="168.104" x2="166.096" y1="43.157" y2="45.39"/>
+<path d="M166.096,45.563c-0.041,0-0.08-0.016-0.113-0.046c-0.069-0.063-0.075-0.17-0.014-0.24l2.01-2.232 c0.063-0.073,0.17-0.077,0.242-0.014c0.066,0.063,0.074,0.173,0.012,0.243l-2.008,2.231 C166.191,45.543,166.143,45.563,166.096,45.563L166.096,45.563z" fill="#808080"/>
+<line fill="none" x1="51.221" x2="49.213" y1="172.979" y2="175.205"/>
+<line fill="none" x1="51.221" x2="49.213" y1="172.979" y2="175.205"/>
+<path d="M49.213,175.377c-0.043,0-0.084-0.016-0.117-0.045c-0.07-0.063-0.076-0.17-0.012-0.242l2.01-2.227 c0.064-0.071,0.174-0.077,0.24-0.012c0.072,0.062,0.078,0.168,0.016,0.24l-2.01,2.229C49.305,175.357,49.258,175.377,49.213,175.377 L49.213,175.377z" fill="#808080"/>
+<line fill="none" x1="174.68" x2="172.451" y1="49.734" y2="51.743"/>
+<line fill="none" x1="174.68" x2="172.451" y1="49.734" y2="51.743"/>
+<path d="M172.451,51.915c-0.047,0-0.094-0.02-0.129-0.058c-0.064-0.069-0.057-0.178,0.012-0.242l2.232-2.01 c0.07-0.063,0.178-0.058,0.242,0.013c0.063,0.071,0.059,0.18-0.017,0.243l-2.228,2.009C172.531,51.9,172.49,51.915,172.451,51.915 L172.451,51.915z" fill="#808080"/>
+<line fill="none" x1="44.867" x2="42.637" y1="166.625" y2="168.629"/>
+<line fill="none" x1="44.867" x2="42.637" y1="166.625" y2="168.629"/>
+<path d="M42.637,168.801c-0.047,0-0.096-0.019-0.127-0.058c-0.066-0.068-0.059-0.177,0.012-0.24l2.23-2.007 c0.072-0.063,0.18-0.057,0.244,0.014c0.063,0.07,0.055,0.18-0.014,0.242l-2.234,2.006C42.719,168.787,42.676,168.801,42.637,168.801 L42.637,168.801z" fill="#808080"/>
+<line fill="none" x1="180.533" x2="178.104" y1="56.961" y2="58.727"/>
+<line fill="none" x1="180.533" x2="178.104" y1="56.961" y2="58.727"/>
+<path d="M178.104,58.899c-0.053,0-0.104-0.026-0.139-0.073c-0.055-0.075-0.039-0.183,0.039-0.24l2.428-1.764 c0.078-0.056,0.187-0.037,0.24,0.038c0.055,0.076,0.039,0.185-0.037,0.238l-2.43,1.767 C178.176,58.888,178.139,58.899,178.104,58.899L178.104,58.899z" fill="#808080"/>
+<line fill="none" x1="39.213" x2="36.783" y1="159.643" y2="161.402"/>
+<line fill="none" x1="39.213" x2="36.783" y1="159.643" y2="161.402"/>
+<path d="M36.783,161.574c-0.053,0-0.105-0.023-0.139-0.07c-0.055-0.078-0.035-0.186,0.039-0.238l2.43-1.763 c0.076-0.056,0.184-0.038,0.236,0.038c0.059,0.075,0.041,0.184-0.037,0.24l-2.428,1.76 C36.854,161.563,36.818,161.574,36.783,161.574L36.783,161.574z" fill="#808080"/>
+<line fill="none" x1="189.82" x2="187.076" y1="73.046" y2="74.268"/>
+<line fill="none" x1="189.82" x2="187.076" y1="73.046" y2="74.268"/>
+<path d="M187.076,74.439c-0.064,0-0.127-0.036-0.152-0.102c-0.041-0.086,0-0.188,0.086-0.227l2.74-1.223 c0.088-0.039,0.188,0,0.227,0.088c0.039,0.086,0,0.187-0.086,0.225l-2.742,1.225C187.125,74.435,187.104,74.439,187.076,74.439 L187.076,74.439z" fill="#808080"/>
+<line fill="none" x1="30.24" x2="27.496" y1="144.102" y2="145.318"/>
+<line fill="none" x1="30.24" x2="27.496" y1="144.102" y2="145.318"/>
+<path d="M27.496,145.49c-0.066,0-0.127-0.038-0.156-0.104c-0.039-0.086,0-0.188,0.086-0.227l2.744-1.217 c0.088-0.039,0.188,0,0.225,0.087c0.039,0.087,0,0.188-0.086,0.226l-2.74,1.219C27.545,145.484,27.52,145.49,27.496,145.49 L27.496,145.49z" fill="#808080"/>
+<line fill="none" x1="193.154" x2="190.299" y1="81.728" y2="82.655"/>
+<line fill="none" x1="193.154" x2="190.299" y1="81.728" y2="82.655"/>
+<path d="M190.299,82.828c-0.074,0-0.141-0.046-0.164-0.118c-0.027-0.09,0.021-0.188,0.111-0.217l2.855-0.928 c0.086-0.03,0.184,0.02,0.213,0.109c0.031,0.09-0.019,0.187-0.107,0.215l-2.854,0.929C190.334,82.825,190.314,82.828,190.299,82.828 L190.299,82.828z" fill="#808080"/>
+<line fill="none" x1="27.02" x2="24.164" y1="135.713" y2="136.636"/>
+<line fill="none" x1="27.02" x2="24.164" y1="135.713" y2="136.636"/>
+<path d="M24.164,136.809c-0.072,0-0.139-0.045-0.164-0.119c-0.027-0.09,0.023-0.188,0.111-0.217l2.855-0.924 c0.088-0.027,0.188,0.021,0.215,0.111c0.029,0.089-0.02,0.186-0.109,0.215l-2.854,0.924 C24.199,136.807,24.182,136.809,24.164,136.809L24.164,136.809z" fill="#808080"/>
+<line fill="none" x1="195.561" x2="192.625" y1="90.709" y2="91.336"/>
+<line fill="none" x1="195.561" x2="192.625" y1="90.709" y2="91.336"/>
+<path d="M192.625,91.507c-0.08,0-0.152-0.054-0.168-0.135c-0.02-0.094,0.037-0.185,0.129-0.204l2.941-0.625 c0.096-0.019,0.182,0.041,0.199,0.132c0.021,0.092-0.037,0.183-0.131,0.203l-2.937,0.624 C192.648,91.506,192.637,91.507,192.625,91.507L192.625,91.507z" fill="#808080"/>
+<line fill="none" x1="24.691" x2="21.76" y1="127.032" y2="127.652"/>
+<line fill="none" x1="24.691" x2="21.76" y1="127.032" y2="127.652"/>
+<path d="M21.76,127.825c-0.082,0-0.15-0.056-0.168-0.136c-0.02-0.094,0.039-0.185,0.131-0.203l2.934-0.621 c0.098-0.018,0.186,0.039,0.203,0.134c0.021,0.091-0.037,0.183-0.129,0.201l-2.938,0.623 C21.781,127.824,21.77,127.825,21.76,127.825L21.76,127.825z" fill="#808080"/>
+<line fill="none" x1="197.016" x2="194.029" y1="99.894" y2="100.211"/>
+<line fill="none" x1="197.016" x2="194.029" y1="99.894" y2="100.211"/>
+<path d="M194.029,100.381c-0.086,0-0.162-0.065-0.17-0.153c-0.01-0.093,0.059-0.178,0.152-0.188l2.983-0.315 c0.094-0.009,0.182,0.059,0.19,0.152c0.006,0.094-0.059,0.179-0.151,0.188l-2.986,0.315 C194.041,100.381,194.035,100.381,194.029,100.381L194.029,100.381z" fill="#808080"/>
+<line fill="none" x1="23.287" x2="20.305" y1="118.159" y2="118.469"/>
+<line fill="none" x1="23.287" x2="20.305" y1="118.159" y2="118.469"/>
+<path d="M20.305,118.643c-0.086,0-0.164-0.066-0.172-0.154c-0.008-0.094,0.059-0.178,0.154-0.188l2.982-0.311 c0.1-0.009,0.182,0.059,0.189,0.153c0.008,0.094-0.061,0.18-0.154,0.187l-2.984,0.313C20.316,118.641,20.311,118.643,20.305,118.643 L20.305,118.643z" fill="#808080"/>
+<line fill="none" x1="197.016" x2="194.031" y1="118.468" y2="118.156"/>
+<line fill="none" x1="197.016" x2="194.031" y1="118.468" y2="118.156"/>
+<path d="M197.016,118.641c-0.008,0-0.012,0-0.02-0.002l-2.982-0.313c-0.096-0.01-0.162-0.096-0.154-0.188 c0.009-0.094,0.101-0.158,0.189-0.154l2.986,0.313c0.094,0.011,0.158,0.095,0.152,0.188 C197.178,118.575,197.102,118.641,197.016,118.641L197.016,118.641z" fill="#808080"/>
+<line fill="none" x1="23.285" x2="20.305" y1="100.214" y2="99.897"/>
+<line fill="none" x1="23.285" x2="20.305" y1="100.214" y2="99.897"/>
+<path d="M23.285,100.385c-0.006,0-0.012-0.001-0.016-0.001l-2.984-0.315c-0.094-0.011-0.16-0.097-0.152-0.189 c0.008-0.094,0.098-0.163,0.189-0.153l2.982,0.317c0.094,0.011,0.162,0.095,0.154,0.188 C23.451,100.319,23.373,100.385,23.285,100.385L23.285,100.385z" fill="#808080"/>
+<line fill="none" x1="195.563" x2="192.625" y1="127.652" y2="127.029"/>
+<line fill="none" x1="195.563" x2="192.625" y1="127.652" y2="127.029"/>
+<path d="M195.563,127.825c-0.014,0-0.024-0.001-0.035-0.002l-2.94-0.624c-0.09-0.02-0.147-0.112-0.129-0.204 c0.019-0.093,0.108-0.151,0.203-0.134l2.937,0.625c0.094,0.017,0.151,0.109,0.131,0.203 C195.711,127.77,195.641,127.825,195.563,127.825L195.563,127.825z" fill="#808080"/>
+<line fill="none" x1="24.691" x2="21.76" y1="91.339" y2="90.712"/>
+<line fill="none" x1="24.691" x2="21.76" y1="91.339" y2="90.712"/>
+<path d="M24.691,91.51c-0.01,0-0.023-0.002-0.035-0.003l-2.934-0.627c-0.092-0.021-0.15-0.111-0.131-0.204 c0.018-0.091,0.104-0.15,0.201-0.132l2.938,0.627c0.092,0.02,0.148,0.11,0.129,0.203C24.844,91.455,24.77,91.51,24.691,91.51 L24.691,91.51z" fill="#808080"/>
+<line fill="none" x1="193.154" x2="190.299" y1="136.636" y2="135.709"/>
+<line fill="none" x1="193.154" x2="190.299" y1="136.636" y2="135.709"/>
+<path d="M193.154,136.809c-0.016,0-0.033-0.002-0.053-0.01l-2.855-0.927c-0.09-0.029-0.137-0.127-0.109-0.215 c0.029-0.091,0.125-0.138,0.217-0.111l2.855,0.927c0.09,0.029,0.139,0.127,0.109,0.217 C193.295,136.764,193.227,136.809,193.154,136.809L193.154,136.809z" fill="#808080"/>
+<line fill="none" x1="27.016" x2="24.164" y1="82.66" y2="81.729"/>
+<line fill="none" x1="27.016" x2="24.164" y1="82.66" y2="81.729"/>
+<path d="M27.016,82.831c-0.014,0-0.033-0.003-0.051-0.009l-2.852-0.931c-0.09-0.028-0.141-0.125-0.111-0.215 c0.031-0.091,0.127-0.139,0.217-0.111l2.854,0.93c0.09,0.029,0.137,0.128,0.109,0.218C27.158,82.786,27.092,82.831,27.016,82.831 L27.016,82.831z" fill="#808080"/>
+<line fill="none" x1="189.82" x2="187.078" y1="145.318" y2="144.1"/>
+<line fill="none" x1="189.82" x2="187.078" y1="145.318" y2="144.1"/>
+<path d="M189.82,145.49c-0.021,0-0.045-0.006-0.068-0.016l-2.742-1.221c-0.086-0.038-0.125-0.14-0.086-0.227 c0.037-0.088,0.137-0.125,0.225-0.088l2.742,1.222c0.088,0.038,0.127,0.14,0.088,0.228 C189.949,145.452,189.887,145.49,189.82,145.49L189.82,145.49z" fill="#808080"/>
+<line fill="none" x1="30.24" x2="27.496" y1="74.27" y2="73.047"/>
+<line fill="none" x1="30.24" x2="27.496" y1="74.27" y2="73.047"/>
+<path d="M30.24,74.442c-0.027,0-0.051-0.004-0.07-0.015l-2.742-1.224c-0.084-0.038-0.127-0.14-0.088-0.226 c0.041-0.087,0.141-0.125,0.229-0.088l2.738,1.223c0.088,0.039,0.125,0.142,0.088,0.227C30.367,74.404,30.303,74.442,30.24,74.442 L30.24,74.442z" fill="#808080"/>
+<line fill="none" x1="180.535" x2="178.105" y1="161.402" y2="159.639"/>
+<line fill="none" x1="180.535" x2="178.105" y1="161.402" y2="159.639"/>
+<path d="M180.535,161.574c-0.035,0-0.07-0.01-0.102-0.03l-2.431-1.765c-0.076-0.059-0.092-0.164-0.035-0.24 c0.054-0.076,0.16-0.096,0.236-0.038l2.43,1.765c0.08,0.057,0.097,0.161,0.039,0.239 C180.641,161.552,180.588,161.574,180.535,161.574L180.535,161.574z" fill="#808080"/>
+<line fill="none" x1="39.209" x2="36.785" y1="58.729" y2="56.962"/>
+<line fill="none" x1="39.209" x2="36.785" y1="58.729" y2="56.962"/>
+<path d="M39.209,58.901c-0.033,0-0.07-0.013-0.1-0.034l-2.426-1.766c-0.074-0.056-0.094-0.164-0.039-0.24 c0.057-0.075,0.164-0.093,0.24-0.036l2.428,1.766c0.076,0.056,0.094,0.163,0.037,0.239C39.316,58.877,39.264,58.901,39.209,58.901 L39.209,58.901z" fill="#808080"/>
+<line fill="none" x1="174.684" x2="172.451" y1="168.631" y2="166.623"/>
+<line fill="none" x1="174.684" x2="172.451" y1="168.631" y2="166.623"/>
+<path d="M174.684,168.801c-0.041,0-0.084-0.013-0.113-0.042l-2.231-2.01c-0.069-0.063-0.077-0.17-0.014-0.241 c0.063-0.07,0.172-0.076,0.241-0.013l2.23,2.008c0.072,0.063,0.078,0.172,0.014,0.242 C174.777,168.783,174.73,168.801,174.684,168.801L174.684,168.801z" fill="#808080"/>
+<line fill="none" x1="44.865" x2="42.637" y1="51.747" y2="49.735"/>
+<line fill="none" x1="44.865" x2="42.637" y1="51.747" y2="49.735"/>
+<path d="M44.865,51.918c-0.041,0-0.082-0.016-0.115-0.045l-2.229-2.01c-0.07-0.064-0.078-0.173-0.012-0.242 c0.061-0.07,0.172-0.076,0.24-0.012l2.23,2.008c0.068,0.066,0.074,0.174,0.014,0.244C44.957,51.897,44.91,51.918,44.865,51.918 L44.865,51.918z" fill="#808080"/>
+<line fill="none" x1="168.105" x2="166.098" y1="175.207" y2="172.975"/>
+<line fill="none" x1="168.105" x2="166.098" y1="175.207" y2="172.975"/>
+<path d="M168.105,175.379c-0.045,0-0.092-0.021-0.125-0.057l-2.01-2.232c-0.063-0.07-0.058-0.179,0.014-0.24 c0.067-0.065,0.178-0.06,0.24,0.012l2.01,2.23c0.063,0.07,0.057,0.18-0.012,0.242C168.189,175.363,168.146,175.379,168.105,175.379 L168.105,175.379z" fill="#808080"/>
+<line fill="none" x1="51.217" x2="49.213" y1="45.393" y2="43.159"/>
+<line fill="none" x1="51.217" x2="49.213" y1="45.393" y2="43.159"/>
+<path d="M51.217,45.563c-0.045,0-0.094-0.018-0.125-0.057l-2.008-2.232c-0.063-0.071-0.057-0.18,0.012-0.242 c0.072-0.064,0.18-0.06,0.244,0.014l2.008,2.232c0.061,0.07,0.055,0.179-0.016,0.241C51.299,45.551,51.26,45.563,51.217,45.563 L51.217,45.563z" fill="#808080"/>
+<line fill="none" x1="160.881" x2="159.115" y1="181.061" y2="178.631"/>
+<line fill="none" x1="160.881" x2="159.115" y1="181.061" y2="178.631"/>
+<path d="M160.881,181.23c-0.055,0-0.105-0.024-0.139-0.071l-1.766-2.429c-0.058-0.078-0.039-0.186,0.039-0.238 c0.075-0.059,0.184-0.04,0.237,0.037l1.767,2.429c0.055,0.075,0.039,0.185-0.037,0.239 C160.951,181.221,160.914,181.23,160.881,181.23L160.881,181.23z" fill="#808080"/>
+<line fill="none" x1="58.201" x2="56.438" y1="39.737" y2="37.308"/>
+<line fill="none" x1="58.201" x2="56.438" y1="39.737" y2="37.308"/>
+<path d="M58.201,39.909c-0.053,0-0.104-0.024-0.137-0.069l-1.766-2.431c-0.053-0.078-0.039-0.184,0.039-0.24 c0.076-0.055,0.184-0.039,0.242,0.039l1.758,2.432c0.057,0.073,0.041,0.182-0.035,0.237C58.27,39.899,58.234,39.909,58.201,39.909 L58.201,39.909z" fill="#808080"/>
+<line fill="none" x1="144.793" x2="143.574" y1="190.346" y2="187.604"/>
+<line fill="none" x1="144.793" x2="143.574" y1="190.346" y2="187.604"/>
+<path d="M144.793,190.518c-0.063,0-0.125-0.039-0.154-0.103l-1.221-2.742c-0.037-0.086,0-0.188,0.086-0.226 c0.088-0.038,0.189,0,0.227,0.086l1.224,2.742c0.037,0.086-0.002,0.188-0.09,0.228C144.842,190.512,144.818,190.518,144.793,190.518 L144.793,190.518z" fill="#808080"/>
+<line fill="none" x1="73.742" x2="72.525" y1="30.766" y2="28.022"/>
+<line fill="none" x1="73.742" x2="72.525" y1="30.766" y2="28.022"/>
+<path d="M73.742,30.938c-0.066,0-0.129-0.038-0.156-0.104l-1.217-2.743c-0.039-0.087,0-0.187,0.086-0.225 c0.084-0.041,0.188,0,0.227,0.086l1.219,2.745c0.037,0.085-0.002,0.186-0.09,0.225C73.789,30.933,73.766,30.938,73.742,30.938 L73.742,30.938z" fill="#808080"/>
+<line fill="none" x1="136.113" x2="135.186" y1="193.68" y2="190.822"/>
+<line fill="none" x1="136.113" x2="135.186" y1="193.68" y2="190.822"/>
+<path d="M136.113,193.852c-0.072,0-0.139-0.047-0.164-0.119l-0.928-2.856c-0.027-0.09,0.021-0.187,0.11-0.216 c0.091-0.028,0.188,0.02,0.218,0.109l0.928,2.855c0.027,0.091-0.021,0.188-0.111,0.216 C136.148,193.848,136.129,193.852,136.113,193.852L136.113,193.852z" fill="#808080"/>
+<line fill="none" x1="82.131" x2="81.205" y1="27.545" y2="24.689"/>
+<line fill="none" x1="82.131" x2="81.205" y1="27.545" y2="24.689"/>
+<path d="M82.131,27.717c-0.072,0-0.139-0.048-0.164-0.119l-0.926-2.855c-0.027-0.091,0.021-0.188,0.113-0.217 c0.088-0.028,0.186,0.021,0.217,0.111l0.926,2.855c0.025,0.089-0.023,0.187-0.113,0.216C82.166,27.715,82.146,27.717,82.131,27.717 L82.131,27.717z" fill="#808080"/>
+<line fill="none" x1="127.131" x2="126.506" y1="196.086" y2="193.148"/>
+<line fill="none" x1="127.131" x2="126.506" y1="196.086" y2="193.148"/>
+<path d="M127.131,196.257c-0.078,0-0.15-0.056-0.166-0.137l-0.625-2.935c-0.021-0.095,0.039-0.187,0.131-0.203 c0.098-0.021,0.187,0.039,0.203,0.129l0.625,2.938c0.02,0.093-0.039,0.185-0.133,0.204 C127.156,196.255,127.143,196.257,127.131,196.257L127.131,196.257z" fill="#808080"/>
+<line fill="none" x1="90.811" x2="90.188" y1="25.22" y2="22.284"/>
+<line fill="none" x1="90.811" x2="90.188" y1="25.22" y2="22.284"/>
+<path d="M90.811,25.392c-0.08,0-0.152-0.057-0.166-0.137l-0.621-2.938c-0.021-0.09,0.037-0.183,0.127-0.201 c0.1-0.02,0.186,0.039,0.205,0.131l0.621,2.936c0.02,0.093-0.039,0.185-0.131,0.205C90.834,25.39,90.822,25.392,90.811,25.392 L90.811,25.392z" fill="#808080"/>
+<line fill="none" x1="117.945" x2="117.633" y1="197.539" y2="194.555"/>
+<line fill="none" x1="117.945" x2="117.633" y1="197.539" y2="194.555"/>
+<path d="M117.945,197.712c-0.086,0-0.162-0.065-0.17-0.151l-0.314-2.987c-0.01-0.095,0.059-0.179,0.154-0.188 c0.094-0.007,0.176,0.059,0.189,0.151l0.313,2.987c0.008,0.095-0.059,0.179-0.154,0.188c-0.004,0.001-0.012,0.001-0.012,0.001 L117.945,197.712L117.945,197.712z" fill="#808080"/>
+<line fill="none" x1="99.684" x2="99.373" y1="23.814" y2="20.828"/>
+<line fill="none" x1="99.684" x2="99.373" y1="23.814" y2="20.828"/>
+<path d="M99.684,23.985c-0.088,0-0.162-0.065-0.17-0.154l-0.313-2.984c-0.008-0.094,0.059-0.18,0.154-0.188 c0.096-0.007,0.178,0.059,0.188,0.152l0.311,2.985c0.01,0.094-0.057,0.178-0.15,0.188c-0.008,0-0.014,0.002-0.014,0.002 L99.684,23.985L99.684,23.985z" fill="#808080"/>
+<line fill="none" x1="99.371" x2="99.686" y1="197.539" y2="194.555"/>
+<line fill="none" x1="99.371" x2="99.686" y1="197.539" y2="194.555"/>
+<path d="M99.371,197.712c0,0-0.012,0-0.016-0.001c-0.096-0.01-0.162-0.094-0.154-0.188l0.314-2.988 c0.01-0.094,0.098-0.158,0.189-0.151c0.094,0.011,0.16,0.095,0.154,0.188l-0.316,2.986 C99.533,197.646,99.459,197.712,99.371,197.712L99.371,197.712z" fill="#808080"/>
+<line fill="none" x1="117.631" x2="117.945" y1="23.814" y2="20.828"/>
+<line fill="none" x1="117.631" x2="117.945" y1="23.814" y2="20.828"/>
+<path d="M117.631,23.985c-0.008,0-0.012-0.002-0.02-0.002c-0.094-0.01-0.16-0.094-0.152-0.188l0.316-2.985 c0.008-0.093,0.096-0.158,0.188-0.151c0.094,0.009,0.162,0.095,0.154,0.189l-0.316,2.983 C117.791,23.92,117.717,23.985,117.631,23.985L117.631,23.985z" fill="#808080"/>
+<line fill="none" x1="90.188" x2="90.813" y1="196.087" y2="193.148"/>
+<line fill="none" x1="90.188" x2="90.813" y1="196.087" y2="193.148"/>
+<path d="M90.188,196.258c-0.012,0-0.023-0.002-0.037-0.004c-0.092-0.021-0.15-0.111-0.129-0.204l0.623-2.937 c0.02-0.092,0.107-0.15,0.203-0.131c0.092,0.02,0.152,0.108,0.131,0.203l-0.623,2.938C90.338,196.201,90.266,196.258,90.188,196.258 L90.188,196.258z" fill="#808080"/>
+<line fill="none" x1="126.506" x2="127.131" y1="25.219" y2="22.284"/>
+<line fill="none" x1="126.506" x2="127.131" y1="25.219" y2="22.284"/>
+<path d="M126.506,25.391c-0.012,0-0.025-0.001-0.037-0.003c-0.092-0.021-0.15-0.112-0.131-0.205l0.625-2.936 c0.02-0.092,0.105-0.151,0.201-0.131c0.096,0.019,0.154,0.111,0.133,0.201l-0.623,2.938 C126.656,25.333,126.584,25.391,126.506,25.391L126.506,25.391z" fill="#808080"/>
+<line fill="none" x1="81.205" x2="82.131" y1="193.68" y2="190.822"/>
+<line fill="none" x1="81.205" x2="82.131" y1="193.68" y2="190.822"/>
+<path d="M81.205,193.852c-0.018,0-0.035-0.004-0.053-0.011c-0.09-0.026-0.141-0.124-0.111-0.214l0.93-2.855 c0.029-0.092,0.127-0.141,0.215-0.11c0.092,0.028,0.139,0.125,0.111,0.216l-0.928,2.855 C81.344,193.805,81.277,193.852,81.205,193.852L81.205,193.852z" fill="#808080"/>
+<line fill="none" x1="135.182" x2="136.113" y1="27.543" y2="24.689"/>
+<line fill="none" x1="135.182" x2="136.113" y1="27.543" y2="24.689"/>
+<path d="M135.182,27.716c-0.016,0-0.033-0.002-0.053-0.009c-0.088-0.029-0.137-0.126-0.107-0.215l0.929-2.854 c0.028-0.091,0.127-0.141,0.217-0.111c0.09,0.03,0.14,0.128,0.108,0.216l-0.93,2.855C135.322,27.669,135.256,27.716,135.182,27.716 L135.182,27.716z" fill="#808080"/>
+<line fill="none" x1="72.523" x2="73.744" y1="190.348" y2="187.604"/>
+<line fill="none" x1="72.523" x2="73.744" y1="190.348" y2="187.604"/>
+<path d="M72.523,190.518c-0.025,0-0.047-0.006-0.068-0.014c-0.088-0.04-0.127-0.143-0.09-0.229l1.221-2.742 c0.041-0.085,0.143-0.124,0.229-0.086c0.086,0.037,0.125,0.14,0.088,0.226l-1.223,2.742C72.65,190.479,72.59,190.518,72.523,190.518 L72.523,190.518z" fill="#808080"/>
+<line fill="none" x1="143.572" x2="144.793" y1="30.763" y2="28.022"/>
+<line fill="none" x1="143.572" x2="144.793" y1="30.763" y2="28.022"/>
+<path d="M143.572,30.937c-0.023,0-0.047-0.005-0.068-0.016c-0.088-0.04-0.127-0.14-0.088-0.228l1.223-2.741 c0.037-0.086,0.139-0.124,0.226-0.086c0.088,0.039,0.125,0.141,0.088,0.228l-1.224,2.74 C143.699,30.896,143.639,30.937,143.572,30.937L143.572,30.937z" fill="#808080"/>
+<line fill="none" x1="56.438" x2="58.203" y1="181.061" y2="178.631"/>
+<line fill="none" x1="56.438" x2="58.203" y1="181.061" y2="178.631"/>
+<path d="M56.438,181.23c-0.033,0-0.07-0.01-0.102-0.032c-0.076-0.058-0.092-0.163-0.037-0.24l1.766-2.427 c0.055-0.078,0.162-0.096,0.24-0.038c0.078,0.055,0.092,0.159,0.037,0.239l-1.764,2.43C56.543,181.206,56.492,181.23,56.438,181.23 L56.438,181.23z" fill="#808080"/>
+<line fill="none" x1="159.113" x2="160.879" y1="39.737" y2="37.311"/>
+<line fill="none" x1="159.113" x2="160.879" y1="39.737" y2="37.311"/>
+<path d="M159.113,39.907c-0.035,0-0.07-0.01-0.102-0.033c-0.076-0.054-0.095-0.162-0.037-0.237l1.766-2.428 c0.055-0.078,0.162-0.094,0.24-0.039c0.076,0.056,0.094,0.162,0.035,0.24l-1.765,2.428 C159.219,39.884,159.166,39.907,159.113,39.907L159.113,39.907z" fill="#808080"/>
+<line fill="none" x1="49.213" x2="51.221" y1="175.207" y2="172.977"/>
+<line fill="none" x1="49.213" x2="51.221" y1="175.207" y2="172.977"/>
+<path d="M49.213,175.379c-0.043,0-0.084-0.015-0.117-0.045c-0.07-0.063-0.076-0.172-0.012-0.241l2.008-2.231 c0.064-0.069,0.174-0.076,0.242-0.012c0.07,0.063,0.076,0.172,0.016,0.241l-2.014,2.232 C49.305,175.357,49.258,175.379,49.213,175.379L49.213,175.379z" fill="#808080"/>
+<line fill="none" x1="166.096" x2="168.105" y1="45.391" y2="43.162"/>
+<line fill="none" x1="166.096" x2="168.105" y1="45.391" y2="43.162"/>
+<path d="M166.096,45.563c-0.041,0-0.082-0.013-0.113-0.045c-0.069-0.063-0.075-0.171-0.014-0.241l2.01-2.229 c0.064-0.071,0.17-0.078,0.242-0.012c0.068,0.062,0.076,0.17,0.014,0.241l-2.012,2.229 C166.189,45.544,166.143,45.563,166.096,45.563L166.096,45.563z" fill="#808080"/>
+<line fill="none" x1="42.637" x2="44.867" y1="168.632" y2="166.623"/>
+<line fill="none" x1="42.637" x2="44.867" y1="168.632" y2="166.623"/>
+<path d="M42.637,168.803c-0.049,0-0.096-0.02-0.129-0.058c-0.064-0.068-0.059-0.179,0.014-0.241l2.23-2.008 c0.07-0.063,0.18-0.059,0.242,0.013c0.063,0.07,0.057,0.179-0.014,0.242l-2.232,2.009C42.717,168.789,42.676,168.803,42.637,168.803 L42.637,168.803z" fill="#808080"/>
+<line fill="none" x1="172.451" x2="174.68" y1="51.745" y2="49.737"/>
+<line fill="none" x1="172.451" x2="174.68" y1="51.745" y2="49.737"/>
+<path d="M172.451,51.916c-0.047,0-0.096-0.02-0.129-0.057c-0.064-0.07-0.057-0.18,0.012-0.243l2.232-2.006 c0.07-0.063,0.18-0.06,0.242,0.012c0.063,0.07,0.059,0.179-0.015,0.243l-2.229,2.007C172.531,51.9,172.49,51.916,172.451,51.916 L172.451,51.916z" fill="#808080"/>
+<line fill="none" x1="36.783" x2="39.213" y1="161.404" y2="159.641"/>
+<line fill="none" x1="36.783" x2="39.213" y1="161.404" y2="159.641"/>
+<path d="M36.783,161.575c-0.053,0-0.105-0.023-0.139-0.069c-0.057-0.076-0.037-0.186,0.039-0.24l2.43-1.764 c0.076-0.057,0.182-0.038,0.236,0.037c0.057,0.076,0.041,0.184-0.037,0.24l-2.428,1.765 C36.854,161.566,36.818,161.575,36.783,161.575L36.783,161.575z" fill="#808080"/>
+<line fill="none" x1="178.104" x2="180.533" y1="58.728" y2="56.963"/>
+<line fill="none" x1="178.104" x2="180.533" y1="58.728" y2="56.963"/>
+<path d="M178.104,58.899c-0.053,0-0.104-0.026-0.139-0.071c-0.055-0.076-0.041-0.184,0.039-0.238l2.43-1.765 c0.074-0.057,0.185-0.039,0.238,0.037c0.055,0.077,0.039,0.186-0.037,0.24l-2.432,1.764 C178.176,58.889,178.139,58.899,178.104,58.899L178.104,58.899z" fill="#808080"/>
+<line fill="none" x1="27.496" x2="30.24" y1="145.32" y2="144.1"/>
+<line fill="none" x1="27.496" x2="30.24" y1="145.32" y2="144.1"/>
+<path d="M27.496,145.492c-0.066,0-0.127-0.039-0.158-0.104c-0.037-0.086,0.002-0.188,0.088-0.228l2.744-1.22 c0.088-0.039,0.188,0,0.225,0.086c0.039,0.088,0,0.188-0.086,0.228l-2.742,1.222C27.543,145.486,27.52,145.492,27.496,145.492 L27.496,145.492z" fill="#808080"/>
+<line fill="none" x1="187.076" x2="189.82" y1="74.268" y2="73.049"/>
+<line fill="none" x1="187.076" x2="189.82" y1="74.268" y2="73.049"/>
+<path d="M187.076,74.439c-0.064,0-0.129-0.036-0.156-0.102c-0.037-0.086,0.004-0.188,0.088-0.227l2.742-1.22 c0.088-0.036,0.189,0,0.227,0.088c0.039,0.086,0,0.188-0.086,0.225l-2.744,1.222C187.123,74.437,187.1,74.439,187.076,74.439 L187.076,74.439z" fill="#808080"/>
+<line fill="none" x1="24.162" x2="27.02" y1="136.639" y2="135.711"/>
+<line fill="none" x1="24.162" x2="27.02" y1="136.639" y2="135.711"/>
+<path d="M24.162,136.811c-0.072,0-0.137-0.045-0.162-0.121c-0.029-0.088,0.021-0.186,0.111-0.213l2.855-0.929 c0.088-0.028,0.188,0.021,0.215,0.111c0.029,0.089-0.018,0.185-0.109,0.214l-2.857,0.927 C24.199,136.807,24.182,136.811,24.162,136.811L24.162,136.811z" fill="#808080"/>
+<line fill="none" x1="190.297" x2="193.152" y1="82.655" y2="81.729"/>
+<line fill="none" x1="190.297" x2="193.152" y1="82.655" y2="81.729"/>
+<path d="M190.297,82.828c-0.072,0-0.139-0.046-0.164-0.118c-0.029-0.09,0.021-0.188,0.111-0.217l2.855-0.927 c0.088-0.028,0.186,0.021,0.215,0.111c0.031,0.091-0.021,0.188-0.107,0.216l-2.855,0.925 C190.332,82.825,190.314,82.828,190.297,82.828L190.297,82.828z" fill="#808080"/>
+<line fill="none" x1="21.756" x2="24.691" y1="127.656" y2="127.032"/>
+<line fill="none" x1="21.756" x2="24.691" y1="127.656" y2="127.032"/>
+<path d="M21.756,127.826c-0.078,0-0.15-0.055-0.166-0.135c-0.02-0.092,0.039-0.185,0.133-0.203l2.934-0.625 c0.098-0.021,0.186,0.041,0.203,0.134c0.021,0.091-0.037,0.183-0.129,0.202l-2.938,0.624 C21.781,127.825,21.768,127.826,21.756,127.826L21.756,127.826z" fill="#808080"/>
+<line fill="none" x1="192.623" x2="195.559" y1="91.336" y2="90.713"/>
+<line fill="none" x1="192.623" x2="195.559" y1="91.336" y2="90.713"/>
+<path d="M192.623,91.507c-0.08,0-0.152-0.054-0.168-0.136c-0.02-0.093,0.039-0.184,0.129-0.203l2.939-0.622 c0.096-0.02,0.184,0.04,0.203,0.132c0.021,0.093-0.039,0.184-0.131,0.202l-2.938,0.622 C192.646,91.506,192.637,91.507,192.623,91.507L192.623,91.507z" fill="#808080"/>
+<line fill="none" x1="20.305" x2="23.287" y1="118.473" y2="118.157"/>
+<line fill="none" x1="20.305" x2="23.287" y1="118.473" y2="118.157"/>
+<path d="M20.305,118.643c-0.088,0-0.166-0.064-0.172-0.153c-0.01-0.095,0.059-0.177,0.152-0.188l2.984-0.314 c0.094-0.006,0.182,0.059,0.189,0.152c0.008,0.096-0.061,0.18-0.154,0.188l-2.984,0.313 C20.316,118.643,20.311,118.643,20.305,118.643L20.305,118.643z" fill="#808080"/>
+<line fill="none" x1="194.027" x2="197.012" y1="100.211" y2="99.897"/>
+<line fill="none" x1="194.027" x2="197.012" y1="100.211" y2="99.897"/>
+<path d="M194.027,100.381c-0.086,0-0.16-0.065-0.17-0.153c-0.01-0.093,0.059-0.178,0.154-0.188l2.983-0.313 c0.094-0.008,0.18,0.06,0.188,0.153c0.008,0.093-0.061,0.178-0.154,0.188l-2.983,0.313 C194.047,100.381,194.035,100.381,194.027,100.381L194.027,100.381z" fill="#808080"/>
+<line fill="none" x1="20.305" x2="23.287" y1="99.897" y2="100.211"/>
+<line fill="none" x1="20.305" x2="23.287" y1="99.897" y2="100.211"/>
+<path d="M23.287,100.383c-0.008,0-0.012,0-0.018,0l-2.984-0.314c-0.094-0.011-0.162-0.096-0.152-0.188 c0.008-0.095,0.098-0.161,0.188-0.153l2.984,0.313c0.094,0.011,0.162,0.096,0.154,0.188 C23.451,100.316,23.373,100.383,23.287,100.383L23.287,100.383z" fill="#808080"/>
+<line fill="none" x1="194.029" x2="197.012" y1="118.156" y2="118.473"/>
+<line fill="none" x1="194.029" x2="197.012" y1="118.156" y2="118.473"/>
+<path d="M197.012,118.643c0,0-0.01,0-0.016,0l-2.984-0.315c-0.096-0.011-0.162-0.095-0.154-0.188 c0.011-0.094,0.097-0.156,0.189-0.152l2.984,0.315c0.094,0.011,0.162,0.093,0.154,0.188 C197.176,118.577,197.1,118.643,197.012,118.643L197.012,118.643z" fill="#808080"/>
+<line fill="none" x1="21.756" x2="24.691" y1="90.713" y2="91.337"/>
+<line fill="none" x1="21.756" x2="24.691" y1="90.713" y2="91.337"/>
+<path d="M24.691,91.508c-0.01,0-0.021-0.001-0.035-0.004l-2.934-0.624c-0.094-0.019-0.152-0.109-0.133-0.202 c0.02-0.092,0.105-0.151,0.203-0.132l2.938,0.624c0.092,0.019,0.15,0.109,0.129,0.203C24.846,91.455,24.773,91.508,24.691,91.508 L24.691,91.508z" fill="#808080"/>
+<line fill="none" x1="192.623" x2="195.559" y1="127.029" y2="127.656"/>
+<line fill="none" x1="192.623" x2="195.559" y1="127.029" y2="127.656"/>
+<path d="M195.559,127.826c-0.01,0-0.022-0.001-0.035-0.003l-2.938-0.624c-0.092-0.02-0.148-0.112-0.131-0.204 c0.02-0.093,0.107-0.151,0.203-0.134l2.938,0.627c0.092,0.02,0.152,0.111,0.131,0.205 C195.711,127.771,195.639,127.826,195.559,127.826L195.559,127.826z" fill="#808080"/>
+<line fill="none" x1="24.162" x2="27.02" y1="81.729" y2="82.657"/>
+<line fill="none" x1="24.162" x2="27.02" y1="81.729" y2="82.657"/>
+<path d="M27.02,82.828c-0.018,0-0.035-0.002-0.053-0.008l-2.855-0.929c-0.09-0.026-0.141-0.124-0.111-0.214 c0.031-0.091,0.127-0.14,0.215-0.111l2.857,0.929c0.092,0.028,0.139,0.126,0.109,0.216C27.158,82.784,27.094,82.828,27.02,82.828 L27.02,82.828z" fill="#808080"/>
+<line fill="none" x1="190.299" x2="193.152" y1="135.709" y2="136.639"/>
+<line fill="none" x1="190.299" x2="193.152" y1="135.709" y2="136.639"/>
+<path d="M193.152,136.811c-0.019,0-0.037-0.004-0.053-0.011l-2.855-0.928c-0.09-0.031-0.139-0.127-0.109-0.215 c0.029-0.091,0.127-0.138,0.217-0.111l2.854,0.929c0.09,0.029,0.142,0.125,0.108,0.215 C193.289,136.766,193.225,136.811,193.152,136.811L193.152,136.811z" fill="#808080"/>
+<line fill="none" x1="27.496" x2="30.24" y1="73.049" y2="74.269"/>
+<line fill="none" x1="27.496" x2="30.24" y1="73.049" y2="74.269"/>
+<path d="M30.24,74.44c-0.025,0-0.049-0.004-0.07-0.014l-2.744-1.223c-0.086-0.038-0.125-0.139-0.088-0.225 c0.041-0.088,0.143-0.124,0.229-0.088l2.742,1.221c0.086,0.039,0.125,0.141,0.086,0.227C30.367,74.403,30.305,74.44,30.24,74.44 L30.24,74.44z" fill="#808080"/>
+<line fill="none" x1="187.076" x2="189.82" y1="144.1" y2="145.32"/>
+<line fill="none" x1="187.076" x2="189.82" y1="144.1" y2="145.32"/>
+<path d="M189.82,145.491c-0.023,0-0.049-0.005-0.072-0.015l-2.738-1.223c-0.086-0.038-0.127-0.141-0.086-0.227 c0.037-0.088,0.137-0.125,0.223-0.088l2.744,1.222c0.086,0.039,0.123,0.142,0.086,0.228 C189.947,145.453,189.885,145.491,189.82,145.491L189.82,145.491z" fill="#808080"/>
+<line fill="none" x1="36.783" x2="39.211" y1="56.963" y2="58.728"/>
+<line fill="none" x1="36.783" x2="39.211" y1="56.963" y2="58.728"/>
+<path d="M39.211,58.899c-0.035,0-0.07-0.011-0.1-0.033l-2.428-1.764c-0.076-0.056-0.096-0.163-0.039-0.24 c0.057-0.076,0.164-0.094,0.24-0.037l2.428,1.765c0.078,0.056,0.094,0.162,0.037,0.238C39.316,58.877,39.264,58.899,39.211,58.899 L39.211,58.899z" fill="#808080"/>
+<line fill="none" x1="178.105" x2="180.531" y1="159.639" y2="161.402"/>
+<line fill="none" x1="178.105" x2="180.531" y1="159.639" y2="161.402"/>
+<path d="M180.531,161.575c-0.033,0-0.068-0.011-0.1-0.031l-2.429-1.767c-0.078-0.057-0.094-0.162-0.037-0.238 c0.056-0.077,0.158-0.096,0.238-0.04l2.43,1.767c0.076,0.057,0.093,0.162,0.037,0.24 C180.639,161.552,180.584,161.575,180.531,161.575L180.531,161.575z" fill="#808080"/>
+<line fill="none" x1="42.637" x2="44.865" y1="49.736" y2="51.747"/>
+<line fill="none" x1="42.637" x2="44.865" y1="49.736" y2="51.747"/>
+<path d="M44.865,51.916c-0.039,0-0.08-0.014-0.113-0.043l-2.23-2.009c-0.072-0.064-0.078-0.173-0.014-0.243 c0.061-0.07,0.172-0.076,0.24-0.011l2.232,2.006c0.068,0.066,0.076,0.173,0.014,0.243C44.959,51.896,44.912,51.916,44.865,51.916 L44.865,51.916z" fill="#808080"/>
+<line fill="none" x1="172.451" x2="174.68" y1="166.623" y2="168.632"/>
+<line fill="none" x1="172.451" x2="174.68" y1="166.623" y2="168.632"/>
+<path d="M174.68,168.803c-0.039,0-0.082-0.014-0.113-0.044l-2.229-2.01c-0.07-0.063-0.078-0.171-0.014-0.241 c0.063-0.072,0.172-0.078,0.242-0.013l2.227,2.009c0.074,0.063,0.078,0.173,0.016,0.241 C174.773,168.783,174.729,168.803,174.68,168.803L174.68,168.803z" fill="#808080"/>
+<line fill="none" x1="49.213" x2="51.219" y1="43.162" y2="45.391"/>
+<line fill="none" x1="49.213" x2="51.219" y1="43.162" y2="45.391"/>
+<path d="M51.219,45.563c-0.045,0-0.094-0.017-0.127-0.056l-2.008-2.23c-0.064-0.071-0.059-0.18,0.012-0.241 c0.07-0.067,0.178-0.06,0.24,0.012l2.012,2.229c0.061,0.071,0.057,0.18-0.016,0.241C51.301,45.55,51.26,45.563,51.219,45.563 L51.219,45.563z" fill="#808080"/>
+<line fill="none" x1="166.098" x2="168.104" y1="172.975" y2="175.207"/>
+<line fill="none" x1="166.098" x2="168.104" y1="172.975" y2="175.207"/>
+<path d="M168.104,175.379c-0.045,0-0.094-0.021-0.125-0.059l-2.008-2.231c-0.063-0.069-0.059-0.179,0.012-0.239 c0.07-0.065,0.181-0.06,0.242,0.012l2.008,2.23c0.063,0.07,0.056,0.18-0.012,0.242C168.184,175.363,168.146,175.379,168.104,175.379 L168.104,175.379z" fill="#808080"/>
+<line fill="none" x1="56.438" x2="58.201" y1="37.31" y2="39.737"/>
+<line fill="none" x1="56.438" x2="58.201" y1="37.31" y2="39.737"/>
+<path d="M58.201,39.908c-0.053,0-0.104-0.024-0.137-0.07l-1.766-2.428c-0.055-0.078-0.039-0.185,0.039-0.24 c0.074-0.056,0.182-0.039,0.24,0.038l1.764,2.429c0.055,0.075,0.039,0.185-0.039,0.238C58.271,39.897,58.236,39.908,58.201,39.908 L58.201,39.908z" fill="#808080"/>
+<line fill="none" x1="159.115" x2="160.879" y1="178.63" y2="181.061"/>
+<line fill="none" x1="159.115" x2="160.879" y1="178.63" y2="181.061"/>
+<path d="M160.879,181.23c-0.053,0-0.105-0.025-0.139-0.071l-1.764-2.429c-0.058-0.078-0.041-0.186,0.039-0.238 c0.075-0.059,0.184-0.04,0.237,0.035l1.763,2.431c0.057,0.075,0.041,0.185-0.035,0.237 C160.949,181.221,160.914,181.23,160.879,181.23L160.879,181.23z" fill="#808080"/>
+<line fill="none" x1="72.523" x2="73.744" y1="28.022" y2="30.765"/>
+<line fill="none" x1="72.523" x2="73.744" y1="28.022" y2="30.765"/>
+<path d="M73.744,30.937c-0.066,0-0.129-0.04-0.158-0.103l-1.221-2.743c-0.037-0.084,0-0.187,0.088-0.225 c0.086-0.041,0.186,0,0.225,0.086l1.223,2.743c0.037,0.086,0,0.188-0.088,0.226C73.791,30.932,73.768,30.937,73.744,30.937 L73.744,30.937z" fill="#808080"/>
+<line fill="none" x1="143.572" x2="144.793" y1="187.604" y2="190.346"/>
+<line fill="none" x1="143.572" x2="144.793" y1="187.604" y2="190.346"/>
+<path d="M144.793,190.518c-0.064,0-0.127-0.039-0.156-0.103l-1.221-2.742c-0.039-0.087,0.002-0.188,0.088-0.228 c0.088-0.037,0.188,0,0.227,0.088l1.222,2.742c0.036,0.086,0,0.187-0.089,0.228C144.84,190.512,144.816,190.518,144.793,190.518 L144.793,190.518z" fill="#808080"/>
+<line fill="none" x1="81.205" x2="82.131" y1="24.689" y2="27.544"/>
+<line fill="none" x1="81.205" x2="82.131" y1="24.689" y2="27.544"/>
+<path d="M82.131,27.717c-0.072,0-0.137-0.048-0.162-0.119l-0.928-2.855c-0.029-0.091,0.02-0.188,0.109-0.217 c0.09-0.028,0.188,0.021,0.217,0.111l0.93,2.855c0.027,0.089-0.021,0.187-0.113,0.215C82.166,27.714,82.15,27.717,82.131,27.717 L82.131,27.717z" fill="#808080"/>
+<line fill="none" x1="135.186" x2="136.113" y1="190.82" y2="193.677"/>
+<line fill="none" x1="135.186" x2="136.113" y1="190.82" y2="193.677"/>
+<path d="M136.113,193.85c-0.074,0-0.141-0.045-0.164-0.119l-0.928-2.854c-0.029-0.09,0.021-0.187,0.11-0.216 c0.089-0.028,0.188,0.02,0.216,0.109l0.928,2.855c0.029,0.091-0.021,0.188-0.109,0.215 C136.146,193.848,136.129,193.85,136.113,193.85L136.113,193.85z" fill="#808080"/>
+<line fill="none" x1="90.186" x2="90.813" y1="22.283" y2="25.219"/>
+<line fill="none" x1="90.186" x2="90.813" y1="22.283" y2="25.219"/>
+<path d="M90.813,25.391c-0.08,0-0.152-0.058-0.168-0.136l-0.625-2.938c-0.02-0.09,0.039-0.183,0.131-0.201 c0.098-0.02,0.186,0.039,0.203,0.131l0.625,2.936c0.02,0.093-0.039,0.185-0.131,0.205C90.834,25.39,90.822,25.391,90.813,25.391 L90.813,25.391z" fill="#808080"/>
+<line fill="none" x1="126.506" x2="127.131" y1="193.146" y2="196.086"/>
+<line fill="none" x1="126.506" x2="127.131" y1="193.146" y2="196.086"/>
+<path d="M127.131,196.256c-0.08,0-0.152-0.056-0.168-0.137l-0.623-2.936c-0.021-0.094,0.037-0.185,0.131-0.203 c0.096-0.019,0.184,0.039,0.203,0.131l0.623,2.938c0.021,0.092-0.039,0.184-0.133,0.203 C127.154,196.254,127.141,196.256,127.131,196.256L127.131,196.256z" fill="#808080"/>
+<line fill="none" x1="99.369" x2="99.686" y1="20.828" y2="23.813"/>
+<line fill="none" x1="99.369" x2="99.686" y1="20.828" y2="23.813"/>
+<path d="M99.686,23.983c-0.088,0-0.162-0.063-0.17-0.152L99.2,20.847c-0.006-0.094,0.061-0.18,0.154-0.189 c0.094-0.006,0.18,0.06,0.188,0.152l0.314,2.985c0.01,0.095-0.059,0.179-0.15,0.188C99.705,23.983,99.691,23.983,99.686,23.983 L99.686,23.983z" fill="#808080"/>
+<line fill="none" x1="117.631" x2="117.945" y1="194.555" y2="197.538"/>
+<line fill="none" x1="117.631" x2="117.945" y1="194.555" y2="197.538"/>
+<path d="M117.945,197.71c-0.088,0-0.162-0.063-0.17-0.151l-0.314-2.985c-0.01-0.095,0.059-0.179,0.152-0.188 c0.096-0.011,0.178,0.059,0.188,0.151l0.314,2.987c0.008,0.093-0.062,0.177-0.154,0.188c-0.004,0-0.014,0-0.014,0L117.945,197.71 L117.945,197.71z" fill="#808080"/>
+<g>
+<g>
+<path d="M152.297,32.437l-0.913,1.564c0.079,0.038,0.218,0.115,0.414,0.23c0.627,0.366,1.012,0.813,1.153,1.34 c0.143,0.528,0.029,1.108-0.34,1.741c-0.42,0.719-0.915,1.146-1.486,1.283c-0.57,0.136-1.234-0.017-1.99-0.458 c-0.431-0.251-0.855-0.583-1.273-0.997l0.434-0.742l0.008,0.005c0.439,0.44,0.8,0.744,1.081,0.908 c0.422,0.246,0.797,0.319,1.126,0.218c0.328-0.1,0.629-0.387,0.904-0.859c0.243-0.416,0.314-0.793,0.215-1.133 c-0.1-0.339-0.372-0.638-0.816-0.896c-0.307-0.18-0.623-0.345-0.947-0.497l1.783-3.058l3.248,1.895l-0.424,0.726L152.297,32.437z" fill="#808080"/>
</g>
+</g>
+<g>
+<g>
+<path d="M180.662,67.353l-0.679,0.387l-2.133-3.747l0.679-0.386l0.759,1.332l4.735-2.695l-1.063-1.158l0.679-0.387 l1.655,1.535l0.351,0.615l-5.699,3.244L180.662,67.353z" fill="#808080"/>
+<path d="M188.047,67.032c0.372,0.653,0.422,1.279,0.146,1.877c-0.273,0.598-0.998,1.23-2.172,1.898 c-1.287,0.733-2.257,1.062-2.909,0.984c-0.651-0.076-1.165-0.443-1.54-1.104c-0.329-0.576-0.424-1.1-0.285-1.567 c0.137-0.468,0.414-0.88,0.83-1.234s0.955-0.72,1.617-1.097c1.152-0.656,2.063-0.947,2.732-0.876 C187.138,65.986,187.664,66.358,188.047,67.032z M182.271,70.279c0.164,0.288,0.447,0.407,0.847,0.358 c0.4-0.051,1.146-0.385,2.235-1.005c1.046-0.595,1.676-1.046,1.891-1.352c0.213-0.305,0.241-0.599,0.082-0.878 c-0.146-0.255-0.354-0.385-0.626-0.389s-0.58,0.072-0.926,0.229c-0.346,0.158-0.802,0.398-1.37,0.722 c-1.121,0.638-1.798,1.111-2.03,1.419C182.142,69.692,182.107,69.991,182.271,70.279z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M180.184,150.64l-0.734-0.429l2.195-3.762l0.46,0.27c0.438,0.256,0.784,0.559,1.035,0.908 c0.251,0.351,0.434,0.707,0.544,1.069c0.111,0.362,0.211,0.798,0.299,1.305c0.105,0.608,0.221,1.021,0.346,1.237 c0.126,0.217,0.282,0.379,0.468,0.487c0.326,0.19,0.622,0.247,0.887,0.17c0.267-0.076,0.499-0.288,0.701-0.634 c0.214-0.365,0.378-0.863,0.493-1.494l0.005-0.008l0.751,0.438c-0.147,0.646-0.371,1.227-0.674,1.744 c-0.372,0.639-0.795,1.042-1.268,1.211c-0.474,0.168-0.983,0.094-1.529-0.225c-0.306-0.179-0.564-0.43-0.773-0.752 c-0.21-0.322-0.385-0.895-0.525-1.72c-0.082-0.462-0.158-0.831-0.23-1.106c-0.073-0.276-0.179-0.535-0.318-0.776 c-0.141-0.242-0.332-0.441-0.575-0.599L180.184,150.64z" fill="#808080"/>
+<path d="M184.033,156.956c-0.379,0.649-0.896,1.006-1.551,1.069c-0.654,0.063-1.565-0.247-2.731-0.928 c-1.28-0.746-2.05-1.422-2.312-2.023c-0.26-0.604-0.199-1.231,0.184-1.887c0.334-0.573,0.739-0.918,1.213-1.033 c0.475-0.115,0.969-0.082,1.484,0.101c0.517,0.182,1.103,0.465,1.761,0.849c1.145,0.668,1.854,1.31,2.127,1.926 C184.482,155.645,184.424,156.287,184.033,156.956z M178.328,153.588c-0.168,0.286-0.129,0.59,0.114,0.912 c0.243,0.321,0.907,0.797,1.99,1.43c1.04,0.606,1.745,0.926,2.117,0.959c0.371,0.031,0.638-0.092,0.801-0.37 c0.147-0.253,0.155-0.499,0.022-0.735c-0.133-0.238-0.354-0.467-0.662-0.688c-0.31-0.22-0.746-0.494-1.312-0.824 c-1.113-0.649-1.862-0.998-2.245-1.044C178.771,153.181,178.495,153.301,178.328,153.588z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M150.271,181.026l-0.42-0.738l3.785-2.154l0.264,0.462c0.251,0.441,0.397,0.877,0.439,1.307 c0.042,0.429,0.021,0.829-0.066,1.197c-0.085,0.37-0.217,0.795-0.395,1.279c-0.215,0.578-0.32,0.993-0.32,1.244 c0,0.25,0.053,0.469,0.159,0.656c0.187,0.328,0.415,0.525,0.683,0.591c0.269,0.067,0.576,0.001,0.924-0.196 c0.369-0.21,0.76-0.559,1.176-1.046l0.008-0.005l0.43,0.756c-0.449,0.484-0.936,0.875-1.456,1.172 c-0.642,0.365-1.21,0.502-1.704,0.411c-0.494-0.092-0.897-0.412-1.21-0.961c-0.175-0.308-0.272-0.654-0.293-1.038 s0.116-0.968,0.407-1.752c0.162-0.439,0.281-0.798,0.355-1.072c0.076-0.276,0.114-0.553,0.115-0.832 c-0.001-0.279-0.066-0.548-0.198-0.807L150.271,181.026z" fill="#808080"/>
+<path d="M150.576,187.286l-0.896-1.574c-0.072,0.049-0.209,0.13-0.406,0.242c-0.631,0.359-1.211,0.468-1.738,0.327 c-0.529-0.142-0.975-0.53-1.336-1.167c-0.412-0.725-0.533-1.367-0.365-1.931c0.169-0.562,0.634-1.06,1.395-1.492 c0.434-0.247,0.934-0.447,1.5-0.602l0.426,0.747l-0.008,0.005c-0.603,0.159-1.046,0.319-1.328,0.48 c-0.425,0.241-0.676,0.529-0.753,0.863c-0.077,0.335,0.019,0.739,0.289,1.215c0.238,0.418,0.529,0.67,0.873,0.754 c0.343,0.083,0.738-0.003,1.186-0.257c0.308-0.176,0.61-0.366,0.905-0.571l1.75,3.076l-3.268,1.859l-0.414-0.729L150.576,187.286z " fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M68.851,185.211c-0.826-0.482-1.392-0.699-1.695-0.65c-0.304,0.049-0.558,0.248-0.761,0.597 c-0.179,0.306-0.231,0.585-0.157,0.835s0.274,0.472,0.601,0.662c0.287,0.167,0.732,0.331,1.335,0.491l0.009,0.005l-0.433,0.742 c-0.606-0.176-1.122-0.39-1.549-0.639c-0.644-0.376-1.052-0.787-1.225-1.234c-0.172-0.448-0.107-0.931,0.194-1.447 c0.208-0.356,0.484-0.607,0.829-0.752c0.343-0.144,0.728-0.163,1.153-0.059c-0.353-0.3-0.558-0.641-0.616-1.023 s0.028-0.77,0.256-1.159c0.375-0.644,0.845-1.018,1.409-1.121c0.563-0.103,1.22,0.065,1.97,0.503 c0.45,0.264,0.873,0.598,1.268,1.006l-0.428,0.734l-0.008-0.006c-0.471-0.459-0.865-0.781-1.183-0.967 c-0.383-0.224-0.726-0.295-1.031-0.215c-0.305,0.081-0.57,0.313-0.794,0.699c-0.241,0.412-0.299,0.776-0.174,1.091 s0.606,0.716,1.441,1.203L68.851,185.211z" fill="#808080"/>
+<path d="M62.112,183.806l0.913-1.564c-0.08-0.038-0.217-0.115-0.414-0.23c-0.627-0.366-1.012-0.813-1.154-1.341 c-0.143-0.527-0.029-1.107,0.34-1.74c0.42-0.72,0.915-1.147,1.487-1.284c0.571-0.135,1.235,0.018,1.991,0.459 c0.43,0.251,0.854,0.583,1.273,0.996l-0.433,0.743l-0.008-0.005c-0.44-0.441-0.8-0.744-1.082-0.908 c-0.421-0.246-0.796-0.319-1.125-0.218c-0.328,0.1-0.629,0.387-0.905,0.858c-0.243,0.416-0.314,0.794-0.215,1.134 c0.1,0.339,0.373,0.638,0.816,0.896c0.307,0.179,0.623,0.345,0.948,0.497l-1.784,3.058l-3.248-1.895l0.423-0.727L62.112,183.806z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M35.021,150.684l0.73-0.415l0.372,0.653l1.392-0.792l0.652,1.146l-1.393,0.793l1.449,2.546l-0.696,0.396 l-4.387-0.138l-1.374-0.044l-0.613-1.078l4.239-2.412L35.021,150.684z M36.99,154.143l-0.944-1.659l-2.788,1.587L36.99,154.143z" fill="#808080"/>
+<path d="M29.165,150.332c-0.372-0.653-0.421-1.279-0.147-1.877s0.998-1.23,2.172-1.898 c1.288-0.733,2.257-1.062,2.91-0.984c0.652,0.076,1.166,0.443,1.541,1.104c0.328,0.576,0.424,1.1,0.285,1.567 c-0.138,0.468-0.415,0.88-0.831,1.234s-0.955,0.72-1.617,1.097c-1.152,0.656-2.063,0.947-2.732,0.876 C30.074,151.378,29.548,151.006,29.165,150.332z M34.939,147.085c-0.164-0.288-0.446-0.407-0.846-0.358 c-0.401,0.051-1.146,0.385-2.235,1.005c-1.046,0.595-1.677,1.046-1.892,1.352c-0.213,0.305-0.241,0.599-0.081,0.878 c0.145,0.255,0.354,0.385,0.625,0.389s0.581-0.072,0.926-0.229c0.345-0.158,0.802-0.398,1.371-0.722 c1.12-0.638,1.797-1.111,2.029-1.419C35.069,147.672,35.104,147.373,34.939,147.085z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M23.939,107.463l0.84,0.002l-0.002,0.752l1.602,0.004l-0.003,1.318l-1.602-0.004l-0.007,2.93l-0.801-0.002 l-3.739-2.299l-1.171-0.72l0.003-1.24l4.878,0.012L23.939,107.463z M23.931,111.443l0.004-1.91l-3.208-0.008L23.931,111.443z" fill="#808080"/>
+<path d="M19.947,104.934l1.812,0.004c-0.007-0.088-0.01-0.246-0.009-0.474c0.001-0.726,0.195-1.283,0.58-1.671 s0.943-0.582,1.676-0.58c0.833,0.002,1.452,0.216,1.857,0.642c0.403,0.426,0.604,1.077,0.603,1.952 c-0.001,0.498-0.076,1.032-0.224,1.601l-0.859-0.002v-0.01c0.16-0.602,0.242-1.065,0.242-1.391 c0.002-0.488-0.124-0.849-0.376-1.083c-0.251-0.233-0.65-0.351-1.197-0.352c-0.481-0.001-0.844,0.126-1.088,0.383 c-0.243,0.257-0.365,0.642-0.366,1.156c-0.001,0.355,0.015,0.711,0.046,1.069l-3.54-0.008l0.01-3.76l0.84,0.002L19.947,104.934z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M192.402,108.758l-0.781-0.002l0.011-4.312l0.781,0.002l-0.004,1.533l5.449,0.013l-0.348-1.534 l0.781,0.002l0.673,2.155l-0.001,0.708l-6.558-0.016L192.402,108.758z" fill="#808080"/>
+<path d="M198.055,111.463l-1.812-0.005c0.007,0.088,0.01,0.245,0.009,0.474c-0.001,0.727-0.195,1.283-0.58,1.671 s-0.943,0.581-1.676,0.579c-0.833-0.002-1.452-0.215-1.857-0.641c-0.403-0.426-0.604-1.077-0.603-1.953 c0.001-0.498,0.076-1.031,0.224-1.601l0.859,0.002v0.01c-0.16,0.603-0.242,1.065-0.242,1.392 c-0.002,0.488,0.124,0.849,0.376,1.082c0.251,0.233,0.65,0.351,1.197,0.352c0.481,0.002,0.844-0.126,1.088-0.383 c0.243-0.257,0.365-0.643,0.366-1.156c0.001-0.355-0.015-0.711-0.046-1.069l3.54,0.009l-0.01,3.76l-0.84-0.002L198.055,111.463z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M30.184,66.438l1.564,0.913c0.038-0.08,0.115-0.217,0.23-0.414c0.366-0.627,0.813-1.012,1.34-1.154 c0.528-0.143,1.108-0.029,1.741,0.34c0.719,0.42,1.146,0.916,1.283,1.487c0.136,0.571-0.017,1.235-0.458,1.991 c-0.251,0.43-0.583,0.854-0.997,1.273l-0.742-0.433l0.005-0.008c0.44-0.44,0.744-0.8,0.908-1.081 c0.246-0.422,0.319-0.797,0.218-1.126c-0.1-0.328-0.387-0.629-0.859-0.905c-0.416-0.243-0.793-0.314-1.133-0.215 c-0.339,0.1-0.638,0.373-0.896,0.816c-0.18,0.307-0.345,0.623-0.497,0.948l-3.058-1.784l1.895-3.248l0.726,0.423L30.184,66.438z" fill="#808080"/>
+<path d="M32.548,60.564c0.379-0.649,0.896-1.006,1.551-1.069c0.654-0.063,1.565,0.247,2.731,0.927 c1.28,0.747,2.05,1.421,2.312,2.024c0.26,0.603,0.199,1.231-0.184,1.886c-0.334,0.573-0.739,0.918-1.213,1.033 c-0.475,0.115-0.969,0.082-1.484-0.101c-0.517-0.182-1.103-0.465-1.761-0.849c-1.145-0.668-1.854-1.309-2.127-1.925 C32.099,61.875,32.157,61.233,32.548,60.564z M38.253,63.933c0.168-0.287,0.129-0.591-0.114-0.912 c-0.243-0.322-0.907-0.798-1.99-1.43c-1.04-0.607-1.745-0.927-2.117-0.959c-0.371-0.031-0.638,0.091-0.801,0.37 c-0.147,0.253-0.155,0.499-0.022,0.736c0.133,0.238,0.354,0.466,0.662,0.687c0.31,0.22,0.746,0.495,1.312,0.824 c1.113,0.65,1.862,0.998,2.245,1.044C37.811,64.34,38.086,64.22,38.253,63.933z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M62.019,33.284l0.896,1.574c0.073-0.049,0.208-0.129,0.407-0.242c0.631-0.359,1.21-0.468,1.738-0.327 c0.527,0.141,0.973,0.53,1.335,1.167c0.412,0.724,0.534,1.367,0.366,1.93c-0.17,0.562-0.635,1.06-1.396,1.493 c-0.433,0.247-0.933,0.447-1.501,0.601l-0.425-0.747l0.009-0.005c0.602-0.159,1.045-0.319,1.328-0.48 c0.424-0.242,0.675-0.529,0.752-0.864c0.078-0.335-0.019-0.739-0.289-1.214c-0.238-0.418-0.529-0.67-0.873-0.754 c-0.344-0.083-0.738,0.003-1.186,0.257c-0.309,0.175-0.609,0.366-0.905,0.571l-1.751-3.077l3.268-1.859l0.416,0.729L62.019,33.284 z" fill="#808080"/>
+<path d="M66.868,30.524l0.896,1.574c0.072-0.05,0.209-0.13,0.406-0.243c0.631-0.359,1.211-0.467,1.738-0.326 c0.529,0.141,0.975,0.53,1.336,1.167c0.412,0.724,0.533,1.367,0.365,1.93c-0.169,0.561-0.634,1.06-1.395,1.493 c-0.434,0.246-0.934,0.447-1.5,0.601l-0.426-0.747l0.008-0.004c0.603-0.159,1.046-0.319,1.328-0.48 c0.425-0.242,0.676-0.529,0.753-0.864c0.077-0.334-0.019-0.739-0.289-1.214c-0.238-0.419-0.529-0.67-0.873-0.754 c-0.343-0.083-0.738,0.002-1.186,0.257c-0.308,0.175-0.61,0.366-0.905,0.571l-1.75-3.077l3.268-1.859l0.414,0.73L66.868,30.524z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M112.979,196.258c-0.957-0.003-1.555,0.094-1.793,0.288c-0.238,0.195-0.357,0.494-0.358,0.897 c-0.001,0.354,0.094,0.622,0.283,0.802c0.19,0.179,0.475,0.27,0.852,0.271c0.332,0.001,0.8-0.081,1.402-0.246l0.01,0.001 l-0.002,0.859c-0.612,0.151-1.166,0.227-1.661,0.225c-0.745-0.001-1.305-0.152-1.679-0.453c-0.373-0.301-0.56-0.75-0.558-1.349 c0.001-0.413,0.115-0.769,0.339-1.066c0.226-0.297,0.549-0.507,0.969-0.63c-0.455-0.082-0.805-0.274-1.047-0.575 c-0.241-0.303-0.361-0.68-0.36-1.132c0.002-0.745,0.22-1.305,0.655-1.677c0.436-0.371,1.088-0.556,1.957-0.554 c0.521,0.001,1.055,0.079,1.602,0.233l-0.002,0.85h-0.01c-0.639-0.161-1.141-0.242-1.508-0.243c-0.443-0.001-0.776,0.109-1,0.332 s-0.336,0.557-0.337,1.003c-0.001,0.479,0.132,0.822,0.397,1.031c0.268,0.209,0.884,0.314,1.851,0.317L112.979,196.258z" fill="#808080"/>
+<path d="M105.76,199.341c-0.752-0.002-1.319-0.27-1.702-0.805c-0.383-0.535-0.572-1.479-0.569-2.829 c0.004-1.481,0.201-2.485,0.591-3.014c0.391-0.527,0.965-0.791,1.723-0.789c0.664,0.001,1.165,0.179,1.502,0.531 c0.338,0.352,0.558,0.797,0.659,1.334s0.151,1.188,0.149,1.949c-0.003,1.325-0.202,2.26-0.598,2.806 C107.12,199.07,106.535,199.343,105.76,199.341z M105.81,192.715c-0.332-0.001-0.576,0.185-0.731,0.557 c-0.156,0.373-0.235,1.187-0.238,2.439c-0.003,1.204,0.075,1.975,0.234,2.313c0.159,0.336,0.399,0.506,0.721,0.507 c0.293,0.001,0.509-0.116,0.648-0.351c0.139-0.233,0.226-0.539,0.261-0.917s0.053-0.894,0.055-1.548 c0.003-1.289-0.071-2.111-0.224-2.466C106.384,192.894,106.142,192.716,105.81,192.715z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M106.757,18.645c0.752,0.002,1.319,0.271,1.702,0.806c0.383,0.535,0.572,1.478,0.569,2.828 c-0.004,1.481-0.201,2.486-0.591,3.015c-0.391,0.527-0.965,0.79-1.723,0.788c-0.664-0.001-1.165-0.178-1.502-0.53 c-0.338-0.353-0.558-0.798-0.659-1.335s-0.151-1.187-0.149-1.948c0.003-1.325,0.202-2.261,0.598-2.807 C105.397,18.915,105.982,18.644,106.757,18.645z M106.707,25.271c0.332,0.001,0.576-0.185,0.731-0.557s0.235-1.186,0.238-2.438 c0.003-1.204-0.075-1.975-0.234-2.313c-0.159-0.336-0.399-0.506-0.721-0.507c-0.293,0-0.509,0.116-0.648,0.351 c-0.139,0.233-0.226,0.539-0.261,0.917s-0.053,0.894-0.055,1.548c-0.003,1.289,0.071,2.111,0.224,2.467 C106.133,25.092,106.375,25.271,106.707,25.271z" fill="#808080"/>
+<path d="M112.338,18.658c0.752,0.002,1.319,0.27,1.703,0.805c0.383,0.535,0.572,1.479,0.568,2.829 c-0.004,1.481-0.2,2.485-0.59,3.014c-0.391,0.527-0.965,0.791-1.724,0.789c-0.664-0.001-1.165-0.179-1.503-0.531 c-0.338-0.352-0.557-0.797-0.658-1.334s-0.15-1.188-0.148-1.949c0.002-1.325,0.201-2.26,0.598-2.806 C110.979,18.929,111.563,18.656,112.338,18.658z M112.288,25.284c0.332,0.001,0.575-0.185,0.731-0.557 c0.156-0.373,0.234-1.187,0.238-2.439c0.002-1.204-0.076-1.975-0.234-2.313c-0.158-0.336-0.398-0.506-0.721-0.507 c-0.293-0.001-0.51,0.116-0.648,0.351c-0.139,0.233-0.227,0.539-0.262,0.917s-0.053,0.894-0.055,1.548 c-0.003,1.289,0.072,2.111,0.225,2.466C111.714,25.105,111.956,25.283,112.288,25.284z" fill="#808080"/>
+</g>
+</g>
+<g>
+<g>
+<path d="M168.133,115.24c0.813,0.486,2.664,1.299,4.68,1.299c3.642,0,4.812-2.307,4.777-4.096 c-0.033-2.958-2.697-4.225-5.461-4.225h-1.592v-2.145h1.592c2.08,0,4.713-1.072,4.713-3.575c0-1.69-1.072-3.185-3.705-3.185 c-1.689,0-3.314,0.748-4.225,1.397l-0.779-2.08c1.137-0.813,3.281-1.625,5.557-1.625c4.16,0,6.045,2.47,6.045,5.038 c0,2.21-1.332,4.063-3.899,5.005v0.065c2.603,0.488,4.683,2.438,4.713,5.396c0,3.381-2.664,6.338-7.703,6.338 c-2.37,0-4.45-0.748-5.491-1.431L168.133,115.24z" fill="#808080"/>
+</g>
+</g>
+<polygon fill="#666666" points="69.436,42.469 68.24,40.408 69.971,39.404 71.166,41.465 "/>
+<polygon fill="#666666" points="148.031,178.596 146.835,176.535 148.564,175.531 149.762,177.59 "/>
+<polygon fill="#666666" points="108.002,31.6 107.996,29.219 109.996,29.213 110.002,31.595 "/>
+<polygon fill="#666666" points="108.004,188.786 107.998,186.404 109.998,186.4 110.004,188.781 "/>
+<polygon fill="#666666" points="148.568,42.467 146.836,41.469 148.023,39.404 149.758,40.403 "/>
+<polygon fill="#666666" points="69.977,178.596 68.244,177.598 69.433,175.533 71.166,176.531 "/>
+<polygon fill="#666666" points="176.533,71.164 175.532,69.434 177.594,68.241 178.596,69.973 "/>
+<polygon fill="#666666" points="40.404,149.759 39.406,148.025 41.469,146.836 42.469,148.568 "/>
+<polygon fill="#666666" points="188.784,110 186.402,110 186.402,108 188.784,108 "/>
+<polygon fill="#666666" points="31.598,110.001 29.216,110.001 29.216,108.001 31.598,108.001 "/>
+<polygon fill="#666666" points="177.596,149.758 175.533,148.566 176.531,146.835 178.596,148.025 "/>
+<polygon fill="#666666" points="41.467,71.166 39.404,69.974 40.405,68.242 42.468,69.435 "/>
+<polygon fill="#666666" points="108.002,31.6 107.996,29.219 109.996,29.213 110.002,31.595 "/>
+<polygon fill="#666666" points="108.004,188.786 107.998,186.404 109.998,186.4 110.004,188.781 "/>
+<polygon fill="#666666" points="148.568,42.467 146.836,41.469 148.023,39.404 149.758,40.403 "/>
+<polygon fill="#666666" points="69.977,178.596 68.244,177.598 69.433,175.533 71.166,176.531 "/>
+<polygon fill="#666666" points="176.533,71.164 175.532,69.434 177.594,68.241 178.596,69.973 "/>
+<polygon fill="#666666" points="40.404,149.759 39.406,148.025 41.469,146.836 42.469,148.568 "/>
+<polygon fill="#666666" points="188.784,110 186.402,110 186.402,108 188.784,108 "/>
+<polygon fill="#666666" points="31.598,110.001 29.216,110.001 29.216,108.001 31.598,108.001 "/>
+<polygon fill="#666666" points="177.596,149.758 175.533,148.566 176.531,146.835 178.596,148.025 "/>
+<polygon fill="#666666" points="41.467,71.166 39.404,69.974 40.405,68.242 42.468,69.435 "/>
+<polygon fill="#666666" points="148.027,178.596 146.835,176.533 148.566,175.531 149.759,177.594 "/>
+<polygon fill="#666666" points="69.433,42.469 68.241,40.404 69.974,39.404 71.165,41.469 "/>
+<polygon fill="#666666" points="148.568,42.467 146.836,41.469 148.023,39.404 149.758,40.403 "/>
+<polygon fill="#666666" points="69.977,178.596 68.244,177.598 69.433,175.533 71.166,176.531 "/>
+<polygon fill="#666666" points="176.533,71.164 175.532,69.434 177.594,68.241 178.596,69.973 "/>
+<polygon fill="#666666" points="40.404,149.759 39.406,148.025 41.469,146.836 42.469,148.568 "/>
+<polygon fill="#666666" points="188.784,110 186.402,110 186.402,108 188.784,108 "/>
+<polygon fill="#666666" points="31.598,110.001 29.216,110.001 29.216,108.001 31.598,108.001 "/>
+<polygon fill="#666666" points="177.596,149.758 175.533,148.566 176.531,146.835 178.596,148.025 "/>
+<polygon fill="#666666" points="41.467,71.166 39.404,69.974 40.405,68.242 42.468,69.435 "/>
+<polygon fill="#666666" points="148.027,178.596 146.835,176.533 148.566,175.531 149.759,177.594 "/>
+<polygon fill="#666666" points="69.433,42.469 68.241,40.404 69.974,39.404 71.165,41.469 "/>
+<polygon fill="#666666" points="110,188.784 108,188.784 108,186.402 110,186.402 "/>
+<polygon fill="#666666" points="110,31.599 108,31.599 108,29.216 110,29.216 "/>
</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_graf_clock_day_hour.svg Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_graf_clock_day_hour.svg Mon May 03 12:24:59 2010 +0300
@@ -1,8 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="177.5px" version="1.1" viewBox="0 0 177.5 177.5" width="177.5px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<g>
-<polygon fill="#333333" points="79.008,93.75 79.008,83.75 147.008,83.75 147.008,93.75 79.008,93.75 "/>
-<rect fill="none" height="177.5" width="177.5"/>
-</g>
+<svg baseProfile="tiny" height="218px" version="1.1" viewBox="0 0 218 218" width="218px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="218" width="218"/>
+<polygon fill-opacity="0.4" points="104,124.774 104,61.933 109.249,57.226 114,61.97 114,124.774 " stroke-opacity="0.4"/>
+<polygon fill="#1A1A1A" points="113,123.774 105,123.774 105,62.317 109.198,58.774 113,62.317 "/>
+<path d="M108.999,118c-4.962,0-8.999-4.038-8.999-9.001s4.037-8.999,8.999-8.999c4.963,0,9.001,4.036,9.001,8.999 S113.962,118,108.999,118L108.999,118z" fill-opacity="0.4" stroke-opacity="0.4"/>
+<circle cx="109" cy="108.999" fill="url(#SVGID_1_)" r="8.1"/>
+<path d="M108.999,116.199c-3.969,0-7.199-3.229-7.199-7.2c0-3.97,3.23-7.198,7.199-7.198 c3.97,0,7.201,3.229,7.201,7.198C116.2,112.97,112.969,116.199,108.999,116.199L108.999,116.199z" fill="#E6E6E6"/>
+<defs>
+<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="108.9995" x2="108.9995" y1="100.9004" y2="117.1001">
+<stop offset="0" style="stop-color:#999999"/>
+<stop offset="0.3091" style="stop-color:#4D4D4D"/>
+<stop offset="1" style="stop-color:#000000"/>
+</linearGradient>
+</defs>
</svg>
--- a/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_graf_clock_day_min.svg Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_graf_clock_day_min.svg Mon May 03 12:24:59 2010 +0300
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="177.5px" version="1.1" viewBox="0 0 177.5 177.5" width="177.5px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<g>
-<rect fill="#333333" height="85" width="4.98" x="86.26" y="16.057"/>
-<rect fill="none" height="177.5" width="177.5"/>
-</g>
+<svg baseProfile="tiny" height="218px" version="1.1" viewBox="0 0 218 218" width="218px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="218" width="218"/>
+<polygon fill-opacity="0.4" points="105,128.274 105,44.433 109.249,39.726 113,44.47 113,128.274 " stroke-opacity="0.4"/>
+<polygon points="112,127.274 106,127.274 106,44.817 109.198,41.274 112,44.817 "/>
</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsapplication/themes/icons/hbdefault/scalable/qtg_graf_clock_day_sec.svg Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
+<svg baseProfile="tiny" height="218px" version="1.1" viewBox="0 0 218 218" width="218px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
+<rect fill="none" height="218" width="218"/>
+<path d="M108,145c-0.553,0-0.999-0.443-0.999-0.991L107,31.991c0-0.548,0.447-0.992,1-0.991h2 c0.552,0,0.999,0.444,0.999,0.991L111,144.009c0,0.548-0.447,0.991-1,0.991H108z" fill-opacity="0.4" stroke-opacity="0.4"/>
+<rect fill="#FFFFFF" height="112.018" width="2" x="108" y="31.991"/>
+</svg>
--- a/homescreenapp/hsdomainmodel/hsdomainmodel.pri Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/hsdomainmodel.pri Mon May 03 12:24:59 2010 +0300
@@ -23,14 +23,19 @@
./inc/hsshortcutservice.h \
./inc/hsshortcutservice_p.h \
./inc/hswallpaper.h \
- ./inc/hswidgethost.h
-
+ ./inc/hswidgethost.h \
+ ./inc/hswidgetcomponentregistry.h \
+ ./inc/hswidgetcomponent.h
+
SOURCES += ./src/hscontentservice.cpp \
./src/hsdatabase.cpp \
./src/hspage.cpp \
./src/hsscene.cpp \
./src/hsshortcutservice.cpp \
./src/hswallpaper.cpp \
- ./src/hswidgethost.cpp
+ ./src/hswidgethost.cpp \
+ ./src/hswidgetcomponentregistry.cpp \
+ ./src/hswidgetcomponent.cpp
+
--- a/homescreenapp/hsdomainmodel/inc/hscontentservice.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hscontentservice.h Mon May 03 12:24:59 2010 +0300
@@ -37,9 +37,14 @@
bool createWidget(const QVariantHash ¶ms);
HsWidgetHost *createWidgetForPreview(const QVariantHash ¶ms);
+ bool addWidget(const QString &uri, const QVariantHash &preferences);
+
+ static HsContentService *instance();
+
private:
+ static QScopedPointer<HsContentService> mInstance;
+
Q_DISABLE_COPY(HsContentService)
-
};
Q_DECLARE_METATYPE(HsContentService*)
--- a/homescreenapp/hsdomainmodel/inc/hsdomainmodeldatastructures.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hsdomainmodeldatastructures.h Mon May 03 12:24:59 2010 +0300
@@ -25,7 +25,9 @@
{
public:
HsSceneData()
- : id(-1), defaultPageId(-1), maximumPageCount(-1)
+ : id(-1), defaultPageId(-1), maximumPageCount(-1),
+ maximumWidgetHeight(-1), maximumWidgetWidth(-1),
+ minimumWidgetHeight(-1), minimumWidgetWidth(-1)
{}
int id;
@@ -33,6 +35,10 @@
QString landscapeWallpaper;
int defaultPageId;
int maximumPageCount;
+ int maximumWidgetHeight;
+ int maximumWidgetWidth;
+ int minimumWidgetHeight;
+ int minimumWidgetWidth;
};
class HSDOMAINMODEL_EXPORT HsPageData
@@ -63,40 +69,19 @@
{
public:
HsWidgetPresentationData()
- : x(0), y(0), width(0), height(0), zValue(0),
+ : x(0), y(0), zValue(0),
widgetId(-1)
{}
- QRectF geometry() const
- {
- return QRectF(x, y, width, height);
- }
-
- void setGeometry(const QRectF &geometry)
- {
- x = geometry.x();
- y = geometry.y();
- width = geometry.width();
- height = geometry.height();
- }
-
void setPos(const QPointF &pos)
{
x = pos.x();
y = pos.y();
}
- void setSize(const QSizeF &size)
- {
- width = size.width();
- height = size.height();
- }
-
QString key;
qreal x;
qreal y;
- qreal width;
- qreal height;
qreal zValue;
int widgetId;
};
--- a/homescreenapp/hsdomainmodel/inc/hspage.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hspage.h Mon May 03 12:24:59 2010 +0300
@@ -47,16 +47,13 @@
QList<HsWidgetHost *> newWidgets();
bool addNewWidget(HsWidgetHost *widgetHost);
void layoutNewWidgets();
- void resetNewWidgets();
bool deleteFromDatabase();
QList<HsWidgetHost *> widgets() const;
bool isRemovable() const;
void setRemovable(bool removable);
-
- bool updateZValues();
-
+
static HsPage *createInstance(const HsPageData &pageData);
public slots:
@@ -64,6 +61,8 @@
void hideWidgets();
void setOnline(bool online = true);
+ void updateZValues();
+
private:
void connectWidget(HsWidgetHost *widget);
void disconnectWidget(HsWidgetHost *widget);
@@ -76,7 +75,6 @@
bool mRemovable;
QList<HsWidgetHost*> mWidgets;
QList<HsWidgetHost*> mNewWidgets;
- QMap<QString, QPointF> mStartPoint;
HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
};
--- a/homescreenapp/hsdomainmodel/inc/hsscene.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hsscene.h Mon May 03 12:24:59 2010 +0300
@@ -20,6 +20,8 @@
#include <QObject>
#include <QScopedPointer>
+#include <QSizeF>
+
#include "hsdomainmodel_global.h"
#include "hstest_global.h"
@@ -30,7 +32,7 @@
class HsWallpaper;
class HsPage;
class HsWidgetHost;
-
+class HsSceneData;
class HSDOMAINMODEL_EXPORT HsScene : public QObject
{
@@ -55,7 +57,10 @@
HsPage *activePage() const;
int activePageIndex() const;
int maximumPageCount() const;
-
+ QSizeF maximumWidgetSizeInPixels() const;
+ QSizeF minimumWidgetSizeInPixels() const;
+ QSizeF maximumWidgetSizeInUnits() const;
+ QSizeF minimumWidgetSizeInUnits() const;
void setActiveWidget(HsWidgetHost *widget);
HsWidgetHost *activeWidget() const;
@@ -66,20 +71,26 @@
static HbMainWindow *mainWindow();
static Qt::Orientation orientation();
+protected:
+ bool eventFilter(QObject *watched, QEvent *event);
+
private:
HsScene(QObject *parent = 0);
+ void calculateWidgetSizeLimitations(HsSceneData &sceneData);
Q_DISABLE_COPY(HsScene)
private:
- int mDatabaseId;
- bool mIsOnline;
+ int mDatabaseId;
HsWallpaper *mWallpaper;
QList<HsPage *> mPages;
- int mMaximumPageCount;
HsPage *mActivePage;
HsWidgetHost *mActiveWidget;
-
-
+ bool mIsOnline;
+ int mMaximumPageCount;
+ QSizeF mMaximumWidgetSizeInPixels;
+ QSizeF mMinimumWidgetSizeInPixels;
+ QSizeF mMaximumWidgetSizeInUnits;
+ QSizeF mMinimumWidgetSizeInUnits;
static QScopedPointer<HsScene> mInstance;
HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
--- a/homescreenapp/hsdomainmodel/inc/hswallpaper.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hswallpaper.h Mon May 03 12:24:59 2010 +0300
@@ -25,7 +25,6 @@
HOMESCREEN_TEST_CLASS(TestRuntimeServices)
-class HsWallpaperPrivate;
class HSDOMAINMODEL_EXPORT HsWallpaper : public HbWidget
{
Q_OBJECT
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/inc/hswidgetcomponent.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,69 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef HSWIDGETCOMPONENT_H
+#define HSWIDGETCOMPONENT_H
+
+#include <QObject>
+#include <QTranslator>
+
+#include "hsdomainmodel_global.h"
+
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(TestRuntimeServices)
+
+#include "cadefs.h"
+
+class CaEntry;
+
+class HSDOMAINMODEL_EXPORT HsWidgetComponent : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QString rootPath READ rootPath)
+ Q_PROPERTY(QString uri READ uri)
+
+public:
+ ~HsWidgetComponent();
+
+ QString rootPath() const;
+ QString uri() const;
+
+signals:
+ void aboutToUninstall();
+
+private:
+ Q_DISABLE_COPY(HsWidgetComponent)
+ HsWidgetComponent(const QString &uri, QObject *parent = 0);
+ void listenChangeEvents();
+ void resolveRootPath();
+ void installTranslator();
+ void uninstallTranslator();
+
+private slots:
+ void onEntryChanged(const CaEntry &entry, ChangeType changeType);
+
+private:
+ QTranslator mTranslator;
+ QString mUri;
+ QString mRootPath;
+
+ friend class HsWidgetComponentRegistry;
+
+ HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
+};
+
+#endif // HSWIDGETCOMPONENT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/inc/hswidgetcomponentregistry.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef HSWIDGETCOMPONENTREGISTRY_H
+#define HSWIDGETCOMPONENTREGISTRY_H
+
+#include <QObject>
+
+#include "hsdomainmodeldatastructures.h"
+#include "hsdomainmodel_global.h"
+
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(TestRuntimeServices)
+
+class HsWidgetComponent;
+class QSignalMapper;
+
+class HSDOMAINMODEL_EXPORT HsWidgetComponentRegistry : public QObject
+{
+ Q_OBJECT
+
+public:
+ static HsWidgetComponentRegistry *instance();
+ ~HsWidgetComponentRegistry();
+
+ HsWidgetComponent *component(const QString &uri);
+
+private:
+ Q_DISABLE_COPY(HsWidgetComponentRegistry)
+ HsWidgetComponentRegistry(QObject *parent = 0);
+
+private slots:
+ void onAboutToUninstall(const QString &uri);
+
+private:
+ QHash<QString, HsWidgetComponent *> mRegistry;
+ static QScopedPointer<HsWidgetComponentRegistry> mInstance;
+ QScopedPointer<QSignalMapper> mSignalMapper;
+ HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
+};
+
+#endif // HSWIDGETCOMPONENTREGISTRY_H
--- a/homescreenapp/hsdomainmodel/inc/hswidgethost.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/inc/hswidgethost.h Mon May 03 12:24:59 2010 +0300
@@ -28,10 +28,10 @@
#include "hsdomainmodel_global.h"
#include "hstest_global.h"
-#include "cadefs.h"
+class HbIconItem;
class HsPage;
-class CaEntry;
+
HOMESCREEN_TEST_CLASS(TestRuntimeServices)
@@ -93,18 +93,27 @@
void startDragAnimation();
void startDropAnimation();
+ void startTapAndHoldAnimation();
+ void stopTapAndHoldAnimation();
+
+protected:
+ void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event) }
+ void mouseMoveEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event) }
+ void mousePressEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event) }
+ void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event) }
+ bool eventFilter(QObject *obj, QEvent *event);
+
private:
bool setProperty(const char *name, QMetaProperty &property);
bool setMethod(const char *signature, QMetaMethod &method);
bool hasSignal(const char *signature);
bool setPreferencesToWidget();
+ void setNewSize(const QSizeF &newSize);
private slots:
void onSetPreferences(const QStringList &names);
void onFinished();
void onError();
-
- void onEntryChanged(const CaEntry &entry, ChangeType changeType);
private:
Q_DISABLE_COPY(HsWidgetHost)
@@ -115,10 +124,12 @@
QMetaMethod mOnHideMethod;
QMetaMethod mOnUninitializeMethod;
QMetaProperty mIsOnlineProperty;
+ QMetaProperty mRootPathProperty;
State mState;
-
+ QString mUri;
int mDatabaseId;
- QString mUri;
+
+ HbIconItem *mTapAndHoldIcon;
HOMESCREEN_TEST_FRIEND_CLASS(TestRuntimeServices)
};
--- a/homescreenapp/hsdomainmodel/src/hscontentservice.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hscontentservice.cpp Mon May 03 12:24:59 2010 +0300
@@ -64,3 +64,45 @@
return widget;
}
+
+/*!
+
+*/
+bool HsContentService::addWidget(const QString &uri, const QVariantHash &preferences)
+{
+ HsWidgetData widgetData;
+ widgetData.uri = uri;
+
+ QScopedPointer<HsWidgetHost> widget(HsWidgetHost::createInstance(widgetData, preferences));
+ if (!widget.data()) {
+ return false;
+ }
+
+ HsPage *activePage = HsScene::instance()->activePage();
+ if (!widget->load() || !activePage->addNewWidget(widget.data())) {
+ widget->deleteFromDatabase();
+ return false;
+ }
+
+ HsWidgetHost *taken = widget.take();
+ taken->initializeWidget();
+ taken->showWidget();
+ activePage->layoutNewWidgets();
+ return true;
+}
+
+/*!
+
+*/
+HsContentService *HsContentService::instance()
+{
+ if (!mInstance) {
+ mInstance.reset(new HsContentService);
+ }
+ return mInstance.data();
+}
+
+/*!
+ Points to the content service instance.
+*/
+QScopedPointer<HsContentService> HsContentService::mInstance(0);
--- a/homescreenapp/hsdomainmodel/src/hsdatabase.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hsdatabase.cpp Mon May 03 12:24:59 2010 +0300
@@ -30,7 +30,8 @@
QVariantList toVariantList(const QList<T> &list)
{
QVariantList vlist;
- foreach (T item, list) {
+ for (int i=0; i<list.count(); ++i) {
+ T item = list.at(i);
vlist << item;
}
return vlist;
@@ -178,15 +179,21 @@
QSqlQuery query(QSqlDatabase::database(mConnectionName));
QString statement =
- "SELECT id, portraitWallpaper, landscapeWallpaper, defaultPageId, maximumPageCount "
+ "SELECT id, portraitWallpaper, landscapeWallpaper, defaultPageId, "
+ "maximumPageCount, maximumWidgetHeight, maximumWidgetWidth, "
+ "minimumWidgetHeight, minimumWidgetWidth "
"FROM Scene";
if (query.prepare(statement) && query.exec() && query.next()) {
- data.id = query.value(0).toInt();
- data.portraitWallpaper = query.value(1).toString();
- data.landscapeWallpaper = query.value(2).toString();
- data.defaultPageId = query.value(3).toInt();
- data.maximumPageCount = query.value(4).toInt();
+ data.id = query.value(0).toInt();
+ data.portraitWallpaper = query.value(1).toString();
+ data.landscapeWallpaper = query.value(2).toString();
+ data.defaultPageId = query.value(3).toInt();
+ data.maximumPageCount = query.value(4).toInt();
+ data.maximumWidgetHeight = query.value(5).toInt();
+ data.maximumWidgetWidth = query.value(6).toInt();
+ data.minimumWidgetHeight = query.value(7).toInt();
+ data.minimumWidgetWidth = query.value(8).toInt();
return true;
}
@@ -456,7 +463,9 @@
if (!checkConnection()) {
return false;
}
-
+ if (data.uri.isEmpty()) {
+ return false;
+ }
QSqlQuery query(QSqlDatabase::database(mConnectionName));
QString statement =
@@ -561,7 +570,7 @@
QSqlQuery query(QSqlDatabase::database(mConnectionName));
QString statement =
- "SELECT x, y, width, height, zValue "
+ "SELECT x, y, zValue "
"FROM WidgetPresentations "
"WHERE key = ? AND widgetId = ?";
@@ -571,9 +580,7 @@
if (query.exec() && query.next()) {
data.x = query.value(0).toReal();
data.y = query.value(1).toReal();
- data.width = query.value(2).toReal();
- data.height = query.value(3).toReal();
- data.zValue = query.value(4).toReal();
+ data.zValue = query.value(2).toReal();
return true;
}
}
@@ -594,15 +601,13 @@
QString statement =
"REPLACE INTO WidgetPresentations "
- "(key, x, y, width, height, zValue, widgetId) "
- "VALUES (?, ?, ?, ?, ?, ?, ?)";
+ "(key, x, y, zValue, widgetId) "
+ "VALUES (?, ?, ?, ?, ?)";
if (query.prepare(statement)) {
query.addBindValue(data.key);
query.addBindValue(data.x);
query.addBindValue(data.y);
- query.addBindValue(data.width);
- query.addBindValue(data.height);
query.addBindValue(data.zValue);
query.addBindValue(data.widgetId);
return query.exec();
@@ -707,8 +712,8 @@
QList<QString> deleteKeys = data.keys(QVariant());
QVariantHash insertOrReplaceData(data);
- foreach (QString key, deleteKeys) {
- insertOrReplaceData.remove(key);
+ for (int i=0; i<deleteKeys.count(); ++i) {
+ insertOrReplaceData.remove(deleteKeys.at(i));
}
if (!deleteKeys.isEmpty()) {
--- a/homescreenapp/hsdomainmodel/src/hspage.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hspage.cpp Mon May 03 12:24:59 2010 +0300
@@ -50,9 +50,6 @@
setFlag(QGraphicsItem::ItemHasNoContents);
setSizePolicy(QSizePolicy(QSizePolicy::Ignored,
QSizePolicy::Ignored));
-
- mStartPoint["portrait"] = QPointF();
- mStartPoint["landscape"] = QPointF();
}
/*!
@@ -171,13 +168,12 @@
if (!widgetHost->widgetPresentationData(key, presentation)) {
presentation.key = key;
presentation.setPos(QPointF());
- presentation.setSize(widgetHost->preferredSize());
presentation.zValue = 0;
widgetHost->setWidgetPresentationData(presentation);
}
widgetHost->hide();
- widgetHost->setGeometry(presentation.geometry());
+ widgetHost->setPos(presentation.x, presentation.y);
widgetHost->setZValue(presentation.zValue);
connectWidget(widgetHost);
@@ -208,7 +204,7 @@
HsWidgetPositioningOnWidgetAdd::instance();
QList<QRectF> calculatedRects =
- algorithm->convert(HsScene::mainWindow()->layoutRect(), rects, mStartPoint[key]);
+ algorithm->convert(HsScene::mainWindow()->layoutRect(), rects, QPointF());
updateZValues();
@@ -221,18 +217,10 @@
widget->setParentItem(this);
widget->show();
}
- mStartPoint[key] = widget->geometry().bottomRight();
mWidgets << mNewWidgets;
mNewWidgets.clear();
}
-/*!
- Resets the new widgets list
-*/
-void HsPage::resetNewWidgets()
-{
- mNewWidgets.clear();
-}
bool HsPage::deleteFromDatabase()
{
@@ -273,40 +261,6 @@
mRemovable = removable;
}
-bool HsPage::updateZValues()
-{
- int z = 0;
-
- if (!mWidgets.isEmpty()) {
- QMultiMap<qreal, HsWidgetHost *> map;
- foreach (HsWidgetHost *widget, mWidgets) {
- map.insert(widget->zValue(), widget);
- }
-
- QList<HsWidgetHost *> sortedWidgets = map.values();
-
- HsWidgetHost *activeWidget = HsScene::instance()->activeWidget();
- if (sortedWidgets.contains(activeWidget)) {
- sortedWidgets.removeOne(activeWidget);
- sortedWidgets.append(activeWidget);
- }
-
- foreach (HsWidgetHost *widget, sortedWidgets) {
- widget->setZValue(z++);
- widget->setWidgetPresentation();
- }
- }
-
- if (!mNewWidgets.isEmpty()) {
- foreach (HsWidgetHost *widget, mNewWidgets) {
- widget->setZValue(z++);
- widget->setWidgetPresentation();
- }
- }
-
- return true;
-}
-
HsPage *HsPage::createInstance(const HsPageData &pageData)
{
HsDatabase *db = HsDatabase::instance();
@@ -359,6 +313,38 @@
}
}
+void HsPage::updateZValues()
+{
+ int z = 0;
+
+ if (!mWidgets.isEmpty()) {
+ QMultiMap<qreal, HsWidgetHost *> map;
+ foreach (HsWidgetHost *widget, mWidgets) {
+ map.insert(widget->zValue(), widget);
+ }
+
+ QList<HsWidgetHost *> sortedWidgets = map.values();
+
+ HsWidgetHost *activeWidget = HsScene::instance()->activeWidget();
+ if (sortedWidgets.contains(activeWidget)) {
+ sortedWidgets.removeOne(activeWidget);
+ sortedWidgets.append(activeWidget);
+ }
+
+ foreach (HsWidgetHost *widget, sortedWidgets) {
+ widget->setZValue(z++);
+ widget->setWidgetPresentation();
+ }
+ }
+
+ if (!mNewWidgets.isEmpty()) {
+ foreach (HsWidgetHost *widget, mNewWidgets) {
+ widget->setZValue(z++);
+ widget->setWidgetPresentation();
+ }
+ }
+}
+
void HsPage::connectWidget(HsWidgetHost *widget)
{
connect(widget, SIGNAL(widgetFinished(HsWidgetHost*)),
--- a/homescreenapp/hsdomainmodel/src/hsscene.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hsscene.cpp Mon May 03 12:24:59 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -15,15 +15,18 @@
*
*/
+#include <QApplication>
+
#include <HbInstance>
+#include <HbMainWindow>
+#include <HbDeviceProfile>
+
#include "hsdomainmodeldatastructures.h"
#include "hsscene.h"
#include "hspage.h"
#include "hswidgethost.h"
#include "hsdatabase.h"
#include "hswallpaper.h"
-#include "hsdatabase.h"
-
/*!
Destructor.
@@ -54,6 +57,10 @@
return false;
}
+ mMaximumPageCount = sceneData.maximumPageCount;
+
+ calculateWidgetSizeLimitations(sceneData);
+
if (sceneData.portraitWallpaper.isEmpty()) {
mWallpaper->setImagesById();
} else {
@@ -81,12 +88,31 @@
mActivePage->setRemovable(false);
}
}
-
- mMaximumPageCount = sceneData.maximumPageCount;
+
+ QApplication::instance()->installEventFilter(this);
+
return true;
}
/*!
+ Calculate maximum and minimum widget sizes
+*/
+void HsScene::calculateWidgetSizeLimitations(HsSceneData &sceneData)
+{
+ // 1un = 6.7px = 2mm
+ mMaximumWidgetSizeInUnits = QSizeF(sceneData.maximumWidgetWidth,
+ sceneData.maximumWidgetHeight);
+ mMinimumWidgetSizeInUnits = QSizeF(sceneData.minimumWidgetWidth,
+ sceneData.minimumWidgetHeight);
+ HbDeviceProfile profile;
+ qreal unitToPixelFactor = profile.unitValue();
+ mMaximumWidgetSizeInPixels = QSizeF(sceneData.maximumWidgetWidth * unitToPixelFactor,
+ sceneData.maximumWidgetHeight * unitToPixelFactor);
+ mMinimumWidgetSizeInPixels = QSizeF(sceneData.minimumWidgetWidth * unitToPixelFactor,
+ sceneData.minimumWidgetHeight * unitToPixelFactor);
+}
+
+/*!
Return wallpaper.
*/
HsWallpaper *HsScene::wallpaper() const
@@ -245,6 +271,38 @@
}
/*!
+ Return maximum widget size in pixels.
+*/
+QSizeF HsScene::maximumWidgetSizeInPixels() const
+{
+ return mMaximumWidgetSizeInPixels;
+}
+
+/*!
+ Return minimum widget size in pixels.
+*/
+QSizeF HsScene::minimumWidgetSizeInPixels() const
+{
+ return mMinimumWidgetSizeInPixels;
+}
+
+/*!
+ Return maximum widget size in units.
+*/
+QSizeF HsScene::maximumWidgetSizeInUnits() const
+{
+ return mMaximumWidgetSizeInUnits;
+}
+
+/*!
+ Return minimum widget size in units.
+*/
+QSizeF HsScene::minimumWidgetSizeInUnits() const
+{
+ return mMinimumWidgetSizeInUnits;
+}
+
+/*!
Set active widget \a widget.
*/
void HsScene::setActiveWidget(HsWidgetHost *widget)
@@ -284,13 +342,21 @@
*/
HsScene *HsScene::instance()
{
- if (mInstance.isNull()) {
+ if (!mInstance) {
mInstance.reset(new HsScene);
}
return mInstance.data();
}
/*!
+ Return main window.
+*/
+HbMainWindow *HsScene::mainWindow()
+{
+ return hbInstance->allMainWindows().first();
+}
+
+/*!
Return current orientation.
*/
Qt::Orientation HsScene::orientation()
@@ -299,11 +365,21 @@
}
/*!
- Return main window.
+ Listens for application background/foreground changes.
*/
-HbMainWindow *HsScene::mainWindow()
+bool HsScene::eventFilter(QObject *watched, QEvent *event)
{
- return hbInstance->allMainWindows().first();
+ switch (event->type()) {
+ case QEvent::ApplicationActivate:
+ mActivePage->showWidgets();
+ break;
+ case QEvent::ApplicationDeactivate:
+ mActivePage->hideWidgets();
+ break;
+ default:
+ break;
+ }
+ return QObject::eventFilter(watched, event);
}
/*!
@@ -311,13 +387,16 @@
*/
HsScene::HsScene(QObject *parent)
: QObject(parent),
- mDatabaseId(-1),
+ mDatabaseId(-1),
+ mWallpaper(0),
+ mActivePage(0),
+ mActiveWidget(0),
mIsOnline(true),
- mWallpaper(0),
mMaximumPageCount(1),
- mActivePage(0),
- mActiveWidget(0)
-
+ mMaximumWidgetSizeInPixels(341, 268),
+ mMinimumWidgetSizeInPixels(20, 20),
+ mMaximumWidgetSizeInUnits(51, 40),
+ mMinimumWidgetSizeInUnits(3, 3)
{
mWallpaper = new HsWallpaper;
}
--- a/homescreenapp/hsdomainmodel/src/hswallpaper.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hswallpaper.cpp Mon May 03 12:24:59 2010 +0300
@@ -95,7 +95,7 @@
QDir::toNativeSeparators("c:/private/20022f35/wallpapers/");
#else
static QString directory =
- QDir::toNativeSeparators(QDir::currentPath() + "/wallpapers/");
+ QDir::toNativeSeparators(QDir::currentPath() + "/private/20022f35/wallpapers/");
#endif
return directory;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hswidgetcomponent.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QCoreApplication>
+#include <QDir>
+
+#include "hswidgetcomponentregistry.h"
+#include "hswidgetcomponent.h"
+#include "hsapp_defs.h"
+#include "caservice.h"
+#include "caquery.h"
+#include "canotifier.h"
+
+/*!
+
+*/
+HsWidgetComponent::~HsWidgetComponent()
+{
+}
+
+/*!
+
+*/
+QString HsWidgetComponent::rootPath() const
+{
+ return mRootPath;
+}
+
+/*!
+
+*/
+QString HsWidgetComponent::uri() const
+{
+ return mUri;
+}
+
+/*!
+
+*/
+HsWidgetComponent::HsWidgetComponent(const QString &uri, QObject *parent)
+ : QObject(parent),
+ mUri(uri)
+{
+ listenChangeEvents();
+ resolveRootPath();
+ installTranslator();
+}
+
+/*!
+
+*/
+void HsWidgetComponent::listenChangeEvents()
+{
+ CaQuery query;
+ query.setEntryTypeNames(QStringList(widgetTypeName()));
+ CaNotifierFilter filter(query);
+ CaNotifier *notifier = CaService::instance()->createNotifier(filter);
+ notifier->setParent(this);
+ connect(notifier,
+ SIGNAL(entryChanged(CaEntry,ChangeType)),
+ SLOT(onEntryChanged(CaEntry,ChangeType)));
+}
+
+/*!
+
+*/
+void HsWidgetComponent::resolveRootPath()
+{
+ CaQuery query;
+ query.setEntryTypeNames(QStringList(widgetTypeName()));
+ query.setAttribute(widgetUriAttributeName(), mUri);
+ QList< QSharedPointer<CaEntry> > widgetEntries = CaService::instance()->getEntries(query);
+
+ if (widgetEntries.isEmpty()) {
+ return;
+ }
+ QSharedPointer<CaEntry> entry = widgetEntries.first();
+ mRootPath = entry->attribute(widgetPathAttributeName());
+}
+
+/*!
+
+*/
+void HsWidgetComponent::installTranslator()
+{
+ QStringList possiblePaths;
+#ifdef Q_OS_WIN32
+ possiblePaths << "resource/qt/translations";
+#else
+
+ QDir currentDir(mRootPath);
+ if (!currentDir.exists() || mRootPath.isEmpty()) {
+ return;
+ }
+ while (currentDir.cdUp()) {}
+ QString drive = currentDir.path();
+ drive.append("resource/qt/translations");
+ possiblePaths << drive;
+ // if it is not in installed,then check z drive
+ possiblePaths << "z:/resource/qt/translations";
+#endif
+
+ for(int i=0; i<possiblePaths.count(); ++i) {
+ QString candidate = QDir::toNativeSeparators(possiblePaths.at(i));
+ if (QDir(candidate).exists()) {
+ QString fileName(mUri);
+ fileName.append("_");
+ fileName.append(QLocale::system().name());
+ if (mTranslator.load(fileName, candidate)) {
+ QCoreApplication::installTranslator(&mTranslator);
+ break;
+ }
+ }
+ }
+}
+
+/*!
+
+*/
+void HsWidgetComponent::uninstallTranslator()
+{
+ QCoreApplication::removeTranslator(&mTranslator);
+}
+
+/*!
+ This slot reacts to \a entry change that is described with
+ \a changeType. On remove change type, aboutToUninstall() signal is
+ emitted.
+*/
+void HsWidgetComponent::onEntryChanged(const CaEntry &entry, ChangeType changeType)
+{
+ if (changeType == RemoveChangeType) {
+ QString uri = entry.attribute(widgetUriAttributeName());
+ if (uri == mUri) {
+ uninstallTranslator();
+ emit aboutToUninstall();
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsdomainmodel/src/hswidgetcomponentregistry.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "hswidgetcomponentregistry.h"
+#include "hswidgetcomponent.h"
+#include <QSignalMapper>
+QScopedPointer<HsWidgetComponentRegistry> HsWidgetComponentRegistry::mInstance(0);
+
+/*!
+
+*/
+HsWidgetComponentRegistry* HsWidgetComponentRegistry::instance()
+{
+ if (!mInstance) {
+ mInstance.reset(new HsWidgetComponentRegistry);
+ }
+ return mInstance.data();
+}
+
+/*!
+
+*/
+HsWidgetComponentRegistry::~HsWidgetComponentRegistry()
+{
+ qDeleteAll(mRegistry);
+}
+
+/*!
+
+*/
+HsWidgetComponent *HsWidgetComponentRegistry::component(const QString &uri)
+{
+ if (mRegistry.contains(uri)) {
+ return mRegistry.value(uri);
+ }
+
+ QScopedPointer<HsWidgetComponent> c(new HsWidgetComponent(uri));
+ mRegistry.insert(uri, c.data());
+ connect(c.data(), SIGNAL(aboutToUninstall()), mSignalMapper.data(),
+ SLOT(map()));
+ mSignalMapper->setMapping(c.data(),uri);
+ return c.take();
+}
+
+/*!
+
+*/
+HsWidgetComponentRegistry::HsWidgetComponentRegistry(QObject *parent)
+ : QObject(parent),mSignalMapper(new QSignalMapper())
+{
+ connect(mSignalMapper.data(),SIGNAL(mapped(QString)),SLOT(onAboutToUninstall(QString)));
+}
+
+/*!
+
+*/
+void HsWidgetComponentRegistry::onAboutToUninstall(const QString &uri)
+{
+ if (mRegistry.contains(uri)) {
+ mRegistry.take(uri)->deleteLater();
+ }
+}
--- a/homescreenapp/hsdomainmodel/src/hswidgethost.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsdomainmodel/src/hswidgethost.cpp Mon May 03 12:24:59 2010 +0300
@@ -20,6 +20,8 @@
#include <QParallelAnimationGroup>
#include <QPropertyAnimation>
#include <QGraphicsDropShadowEffect>
+#include <QGraphicsSceneResizeEvent>
+
#include <qservicemanager.h>
#include <qservicefilter.h>
#include <qserviceinterfacedescriptor.h>
@@ -32,12 +34,8 @@
#include "hspage.h"
#include "hsapp_defs.h"
#include "hsscene.h"
-#include "cadefs.h"
-#include "canotifier.h"
-#include "canotifierfilter.h"
-#include "caservice.h"
-#include "caquery.h"
-#include "caentry.h"
+#include "hswidgetcomponentregistry.h"
+#include "hswidgetcomponent.h"
QTM_USE_NAMESPACE
@@ -71,16 +69,10 @@
mWidget(0),
mPage(0),
mState(Constructed),
- mDatabaseId(databaseId)
+ mDatabaseId(databaseId),
+ mTapAndHoldIcon(0)
{
- CaQuery query;
- query.setEntryTypeNames(QStringList(widgetTypeName()));
- CaNotifierFilter filter(query);
- CaNotifier *notifier = CaService::instance()->createNotifier(filter);
- notifier->setParent(this);
- connect(notifier,
- SIGNAL(entryChanged(CaEntry,ChangeType)),
- SLOT(onEntryChanged(CaEntry,ChangeType)), Qt::QueuedConnection);
+ setFlags(QGraphicsItem::ItemClipsChildrenToShape);
/* TODO: Uncomment after the Qt bug has been fixed.
QGraphicsDropShadowEffect *effect =
@@ -98,6 +90,7 @@
HsWidgetHost::~HsWidgetHost()
{
}
+
/*!
Load hosted widget from plugin and validate it.
Returns true if widget construction is successfull.
@@ -117,8 +110,7 @@
return false;
}
- mUri = data.uri;
-
+ mUri = data.uri;
// Create the hosted widget.
QServiceManager manager;
QServiceFilter filter("com.nokia.symbian.IHomeScreenWidget");
@@ -140,6 +132,8 @@
}
setProperty("isOnline", mIsOnlineProperty);
+ setProperty("rootPath", mRootPathProperty);
+
setMethod("onInitialize()", mOnInitializeMethod);
setMethod("onUninitialize()", mOnUninitializeMethod);
@@ -155,13 +149,18 @@
connect(mWidget, SIGNAL(error()),
SLOT(onError()));
}
+
+ mWidget->installEventFilter(this);
- loadWidgetPresentation();
+ loadWidgetPresentation();
- QGraphicsLinearLayout *layout = new QGraphicsLinearLayout;
- layout->setContentsMargins(0, 0, 0, 0);
- layout->addItem(mWidget);
- setLayout(layout);
+ HsScene *scene = HsScene::instance();
+ setMaximumSize(scene->maximumWidgetSizeInPixels());
+ setMinimumSize(scene->minimumWidgetSizeInPixels());
+
+ mWidget->setParentItem(this);
+
+ setNewSize(mWidget->size());
return true;
}
@@ -243,7 +242,6 @@
HsWidgetPresentationData data;
data.key = key;
data.setPos(pos());
- data.setSize(size());
data.zValue = zValue();
data.widgetId = databaseId();
@@ -251,8 +249,7 @@
}
/*!
- Set widget presentation data. Return true if successfull
-
+ Set widget presentation data. Return true if successfull.
*/
bool HsWidgetHost::setWidgetPresentationData(HsWidgetPresentationData &presentationData)
{
@@ -316,7 +313,7 @@
return false;
}
- setGeometry(data.geometry());
+ setPos(data.x, data.y);
setZValue(data.zValue);
return true;
@@ -358,7 +355,12 @@
if (mState != Constructed) {
return;
}
-
+ // bind component to instance
+ HsWidgetComponent *component = HsWidgetComponentRegistry::instance()->component(mUri);
+ Q_ASSERT(component);
+ connect(component, SIGNAL(aboutToUninstall()), SLOT(onFinished()),Qt::QueuedConnection);
+ mRootPathProperty.write(mWidget, component->rootPath());
+
setPreferencesToWidget();
setOnline(HsScene::instance()->isOnline());
mOnInitializeMethod.invoke(mWidget);
@@ -405,7 +407,8 @@
void HsWidgetHost::uninitializeWidget()
{
if (mState != Visible &&
- mState != Hidden) {
+ mState != Hidden &&
+ mState != Finished) {
return;
}
@@ -480,6 +483,40 @@
}
/*!
+ Starts the tap-and-hold animation.
+*/
+void HsWidgetHost::startTapAndHoldAnimation()
+{
+ mTapAndHoldIcon = new HbIconItem("tapandhold_animation");
+ mTapAndHoldIcon->setZValue(1e6);
+ mTapAndHoldIcon->setParentItem(this);
+}
+
+/*!
+ Stops the tap-and-hold animation.
+*/
+void HsWidgetHost::stopTapAndHoldAnimation()
+{
+ delete mTapAndHoldIcon;
+ mTapAndHoldIcon = 0;
+}
+
+/*!
+ Filters resize events from widgets and resizes inside max/min size boundaries if needed.
+*/
+bool HsWidgetHost::eventFilter(QObject *obj, QEvent *event)
+{
+ if (event->type() == QEvent::GraphicsSceneResize ) {
+ QGraphicsSceneResizeEvent *resizeEvent = static_cast<QGraphicsSceneResizeEvent*>(event);
+ setNewSize(resizeEvent->newSize());
+ return true;
+ } else {
+ // standard event processing
+ return HbWidget::eventFilter(obj, event);
+ }
+}
+
+/*!
Checks if a property with the given \a name
in the contained widget. If the property exists the \a
metaProperty is made to reference to it. Returns true if
@@ -544,6 +581,15 @@
}
/*!
+ Resizes and sets preferred size for widget layouts
+*/
+void HsWidgetHost::setNewSize(const QSizeF &newSize)
+{
+ resize(newSize);
+ setPreferredSize(newSize);
+}
+
+/*!
This slot is connected to the contained widget's
setPreferences() signal, if it was defined for
the widget. The widget emits the signal for persisting
@@ -595,18 +641,4 @@
emit widgetError(this);
}
-/*!
- This slot reacts to \a entry change that is described with
- \a changeType. On remove change type, onFinished() signal is
- emitted.
-*/
-void HsWidgetHost::onEntryChanged(const CaEntry &entry,
- ChangeType changeType)
-{
- if (changeType == RemoveChangeType) {
- QString uri = entry.attribute(widgetUriAttributeName());
- if (uri == mUri) {
- onFinished();
- }
- }
-}
+
--- a/homescreenapp/hshomescreenclientplugin/hshomescreenclientplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hshomescreenclientplugin/hshomescreenclientplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -16,11 +16,11 @@
TEMPLATE = lib
-CONFIG += plugin hb mobility console
+CONFIG += plugin hb mobility console hs_public_plugin
MOBILITY = serviceframework
-PLUGIN_SUBDIR = /hsresources/plugins/homescreenclientplugin
-
+PLUGIN_SUBDIR = /resource/qt/plugins
+
include (../common.pri)
DEPENDPATH += ./inc \
@@ -31,6 +31,7 @@
symbian: {
TARGET.UID3 = 0x20022F72
LIBS += -lxqservice
+ LIBS += -lxqserviceutil
}
win32: {
--- a/homescreenapp/hshomescreenclientplugin/inc/hshomescreenclient.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hshomescreenclientplugin/inc/hshomescreenclient.h Mon May 03 12:24:59 2010 +0300
@@ -37,10 +37,12 @@
public slots:
bool addWidget(const QString &uri, const QVariantHash &preferences);
+ bool setWallpaper(const QString &fileName);
private slots:
void onRequestCompleted(const QVariant &result);
void onRequestError(int error);
void doAddWidget(const QString &uri, const QVariantHash &preferences);
+ void doSetWallpaper(const QString &fileName);
signals:
void requestFinished();
private:
--- a/homescreenapp/hshomescreenclientplugin/resource/hshomescreenclientplugin.s60xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>hshomescreenclientplugin</name>
- <filepath>z:/hsresources/plugins/homescreenclientplugin/hshomescreenclientplugin.qtplugin</filepath>
- <description>Homescreen client plugin</description>
- <interface>
- <name>com.nokia.symbian.IHomeScreenClient</name>
- <version>1.0</version>
- <description>Homescreen exposed service interface </description>
- <capabilities></capabilities>
- </interface>
-</service>
--- a/homescreenapp/hshomescreenclientplugin/src/hshomescreenclient.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hshomescreenclientplugin/src/hshomescreenclient.cpp Mon May 03 12:24:59 2010 +0300
@@ -16,9 +16,24 @@
*/
#include "hshomescreenclient.h"
#include <xqservicerequest.h>
+#include <xqrequestinfo.h>
#include <QEventLoop>
const char INTERFACE_NAME[] = "com.nokia.services.hsapplication.IHomeScreenClient";
+
+
+/*!
+ \class HsHomescreenClient
+ \ingroup group_hshomescreenclient
+ \brief Implements home screen client api, see @page_homescreenclientapi for
+ usage details.
+
+*/
+
+
+/*!
+ Constructor
+*/
HsHomescreenClient::HsHomescreenClient(QObject *parent)
:QObject(parent),
mAsyncRequest(0),
@@ -26,11 +41,20 @@
{
}
+/*!
+ Destructor
+*/
HsHomescreenClient::~HsHomescreenClient()
{
delete mAsyncRequest;
}
+/*!
+ Adds new widget, with the given \a uri and \a preferences,
+ to the active home screen page.
+ Note that \a preferences is dependent on the
+ widget implementation and it can be empty if widget does not have any preferences see @ref sssection_setpreferences.
+ */
bool HsHomescreenClient::addWidget(
const QString &uri,
const QVariantHash &preferences)
@@ -43,19 +67,46 @@
return mRequestResult;
}
+
+/*!
+ Sets wallpaper \a fileName. Filename should include full path to the image file.
+ */
+bool HsHomescreenClient::setWallpaper(const QString &fileName)
+{
+ QEventLoop eventLoop;
+ connect(this, SIGNAL(requestFinished()), &eventLoop, SLOT(quit()));
+ QMetaObject::invokeMethod(
+ this,
+ "doSetWallpaper",
+ Qt::QueuedConnection,
+ Q_ARG(QString,fileName));
+ eventLoop.exec();
+
+ return mRequestResult;
+}
+/*!
+ Called when request is completed.
+ */
void HsHomescreenClient::onRequestCompleted(const QVariant &result)
{
mRequestResult = result.toBool();
emit requestFinished();
}
+/*!
+ Called when request has some errors.
+ */
void HsHomescreenClient::onRequestError(int error)
{
Q_UNUSED(error)
emit requestFinished();
}
+/*!
+ * Uses Qt Highway to send 'addWidget' request to home screen application.
+ * \a uri and \a preferences as in widget model.
+ */
void HsHomescreenClient::doAddWidget(
const QString &uri,
const QVariantHash &preferences)
@@ -63,18 +114,49 @@
delete mAsyncRequest;
mAsyncRequest = 0;
mAsyncRequest = new XQServiceRequest(INTERFACE_NAME,
- "addWidget(QString,QVariantHash)",false);
+ "addWidget(QString,QVariantHash)", false);
+
+ XQRequestInfo requestInfo = mAsyncRequest->info();
+ requestInfo.setBackground(true);
+ mAsyncRequest->setInfo(requestInfo);
+
*mAsyncRequest << uri;
*mAsyncRequest << preferences;
connect(mAsyncRequest, SIGNAL(requestCompleted(QVariant)),
- SLOT(onRequestCompleted(QVariant)));
+ SLOT(onRequestCompleted(QVariant)));
connect(mAsyncRequest, SIGNAL(requestError(int)),
- SLOT(onRequestError(int)));
+ SLOT(onRequestError(int)));
mRequestResult = false;
- bool res=mAsyncRequest->send();
- if(!res){
+ if (!mAsyncRequest->send()) {
+ emit requestFinished();
+ }
+}
+
+/*!
+ * Uses Qt Highway to send 'setWallpaper' request to home screen application.
+ * \a fileName full path to the image file.
+ */
+void HsHomescreenClient::doSetWallpaper(const QString &fileName)
+{
+ delete mAsyncRequest;
+ mAsyncRequest = 0;
+ mAsyncRequest = new XQServiceRequest(INTERFACE_NAME,
+ "setWallpaper(QString)", false);
+ XQRequestInfo requestInfo = mAsyncRequest->info();
+ requestInfo.setBackground(true);
+ mAsyncRequest->setInfo(requestInfo);
+
+ *mAsyncRequest << fileName;
+
+ connect(mAsyncRequest, SIGNAL(requestCompleted(QVariant)),
+ SLOT(onRequestCompleted(QVariant)));
+ connect(mAsyncRequest, SIGNAL(requestError(int)),
+ SLOT(onRequestError(int)));
+
+ mRequestResult = false;
+ if (!mAsyncRequest->send()) {
emit requestFinished();
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/decision_cov_emulator.pl Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,54 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: Script for running branch coverage test
+#
+
+#USAGE:
+# Usage: decision_cov.pl [-make=command]
+# -make=instrument || run || ctcpost
+
+# import module
+use Getopt::Long;
+
+# read options
+my $make = "all";
+my $success = GetOptions ("make=s" => \$make);
+
+if($make) {
+ if (($make eq "instrument") || ($make eq "all")) {
+ system("del mon.sym");
+ system("del mon.dat");
+ system("del profile.txt");
+ system("rmdir /s /q CTCFUNCTION");
+ system("rmdir /s /q CTCDECISION");
+ system("call qmake -config coverage");
+ system("call sbs -c winscw_udeb.test");
+ system("call sbs -c winscw_udeb.test clean");
+ system("call sbs -c winscw_udeb clean");
+ system("call sbs -c winscw_udeb");
+ system("call ctcwrap -i fd -2comp -no-conf-check -C EXCLUDE=* -C NO_EXCLUDE=./../../src/* sbs -c winscw_udeb.test");
+ }
+ if (($make eq "run") || ($make eq "all")) {
+ system("call \\epoc32\\release\\winscw\\udeb\\t_hshomescreenclientplugin.exe -o c:\\t_hshomescreenclientplugin.log");
+ }
+ if (($make eq "ctcpost") || ($make eq "all")) {
+ system("call ctcpost -ff -p profile.txt");
+ system("call ctc2html -nsb -i profile.txt -o CTCFUNCTION");
+ system("call del profile.txt");
+ system("call ctcpost -fd -p profile.txt");
+ system("call ctc2html -nsb -i profile.txt -o CTCDECISION");
+ system("call del profile.txt");
+ }
+}
+print "END.\n";
--- a/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/inc/t_hshomescreenclientplugin.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/inc/t_hshomescreenclientplugin.h Mon May 03 12:24:59 2010 +0300
@@ -39,6 +39,8 @@
void testConstruction();
void testAddWidget();
void testAddInvalidWidget();
+ void testSetWallpaper();
+ void testOnRequestError();
signals:
void onRequestCompletedTest(const QVariant &result);
--- a/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/src/t_hshomescreenclientplugin.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/src/t_hshomescreenclientplugin.cpp Mon May 03 12:24:59 2010 +0300
@@ -85,4 +85,43 @@
delete client;
}
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsHomescreenClientPluginTest::testSetWallpaper()
+{
+ HsHomescreenClient *client = new HsHomescreenClient;
+
+ QSignalSpy requestFinishedSpy(client, SIGNAL(requestFinished()));
+
+ bool result = client->setWallpaper("wallpaper");
+
+ // but emit correct signals
+ connect(this, SIGNAL(onRequestCompletedTest(QVariant)), client, SLOT(onRequestCompleted(QVariant)));
+ emit onRequestCompletedTest(true);
+
+ QVERIFY(requestFinishedSpy.count());
+ QVERIFY(client->mRequestResult);
+
+ delete client;
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsHomescreenClientPluginTest::testOnRequestError()
+{
+ HsHomescreenClient *client = new HsHomescreenClient;
+
+ QSignalSpy requestFinishedSpy(client, SIGNAL(requestFinished()));
+
+ client->onRequestError(-1);
+
+ QVERIFY(requestFinishedSpy.count());
+ QVERIFY(!client->mRequestResult);
+
+ delete client;
+}
+
+
QTEST_MAIN(HsHomescreenClientPluginTest)
--- a/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/t_hshomescreenclientplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hshomescreenclientplugin/tsrc/t_hshomescreenclientplugin/t_hshomescreenclientplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -50,6 +50,7 @@
TARGET.CAPABILITY = CAP_APPLICATION AllFiles
TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // 128kB - 16MB
LIBS += -lxqservice
+ LIBS += -lxqserviceutil
} else {
error("Only Symbian supported!")
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/hsmenuclientplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,44 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+
+TEMPLATE = lib
+
+CONFIG += plugin mobility hs_public_plugin
+MOBILITY = serviceframework
+
+PLUGIN_SUBDIR = /resource/qt/plugins
+
+LIBS += -lcaclient
+
+INCLUDEPATH += inc
+
+HEADERS += inc/hsmenuclient.h \
+ inc/hsmenuclientplugin.h \
+
+SOURCES += src/hsmenuclient.cpp \
+ src/hsmenuclientplugin.cpp \
+
+symbian: {
+ TARGET.UID3 = 0x20028715
+#export interface header to platform
+BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
+BLD_INF_RULES.prj_exports += "inc/hsmenuclient.h \
+ APP_LAYER_PLATFORM_EXPORT_PATH(hsmenuclient.h)"
+}
+
+include(../common.pri)
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/inc/hsmenuclient.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: hsmenuclient.h
+ *
+ */
+
+#ifndef HSMENUCLIENT_H
+#define HSMENUCLIENT_H
+
+#include <QObject>
+#include <QVariant>
+#include <qservicemanager.h>
+
+QTM_USE_NAMESPACE
+
+//mandatory keys
+const QString hsItemName("item:name");
+const QString hsitemLaunchUri("item:launchuri");
+const QString hsitemPublisherId("item:publisherId");
+
+//not mandatory
+const QString hsItemWidgetUri("widget:uri");
+const QString hsItemDescription("item:description");
+
+//for icon - not mandatory
+const QString hsIconFileName("icon:filename");//to display specific icon from file
+const QString hsIconName("icon:name");// HbIcon
+const QString hsIconApplicationId("icon:applicationid"); // icon from associated application
+
+
+class HsMenuClientPrivate;
+
+class HsMenuClient : public QObject
+{
+ Q_OBJECT
+
+public:
+ HsMenuClient(QObject *parent = 0);
+ ~HsMenuClient();
+public slots:
+ bool add(const QVariantMap &entryPreference = QVariantMap());
+ bool remove(const QVariantMap &queryPreference = QVariantMap()) const;
+
+ QList<QVariantMap > getList(const QVariantMap &queryPreference = QVariantMap());
+
+private:
+ Q_DISABLE_COPY(HsMenuClient)
+ /**
+ * Pointer to a private implementation.
+ */
+ HsMenuClientPrivate * const m_d;
+};
+
+
+
+#endif // HSMENUCLIENT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/inc/hsmenuclient_p.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: hsmenuclient_p.h
+ *
+ */
+
+#ifndef HSMENUCLIENT_PRIVATE_H
+#define HSMENUCLIENT_PRIVATE_H
+
+// hidden
+const QString hsItemId("id");
+
+class HsMenuClient;
+
+class HsMenuClientPrivate
+{
+
+public:
+
+ explicit HsMenuClientPrivate(HsMenuClient *publishPublic);
+ ~HsMenuClientPrivate();
+ bool add(const QVariantMap &entryPreference = QVariantMap());
+ bool remove(const QVariantMap &queryPreference = QVariantMap()) const;
+ QList<QVariantMap > getList(const QVariantMap &queryPreference = QVariantMap());
+
+private:
+ /**
+ * Points to the HsMenuClient instance that uses this private implementation.
+ */
+ HsMenuClient *const m_q;
+};
+
+#endif //HSMENUCLIENT_PRIVATE_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/inc/hsmenuclientplugin.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Plugin factory.
+*
+*/
+
+#ifndef HSMENUCLIENTPLUGIN_H
+#define HSMENUCLIENTPLUGIN_H
+
+#include <QObject>
+#include <qserviceplugininterface.h>
+
+QTM_USE_NAMESPACE
+
+class HsMenuClientPlugin : public QObject, public QServicePluginInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(QtMobility::QServicePluginInterface)
+
+public:
+ QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
+ QServiceContext *context,
+ QAbstractSecuritySession *session);
+};
+
+#endif //HSMENUCLIENTPLUGIN_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/resource/hsmenuclientplugin.xml Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<service>
+ <name>hsmenuclientplugin</name>
+ <filepath>hsmenuclient</filepath>
+ <description>HsMenu Client plugin</description>
+ <interface>
+ <name>com.nokia.symbian.IMenuClient</name>
+ <version>1.0</version>
+ <description>HsMenu Client exposed service interface </description>
+ <capabilities></capabilities>
+ </interface>
+</service>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/src/hsmenuclient.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,220 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: hsmenuclient.cpp
+ *
+ */
+
+#include <QString>
+#include <QDebug>
+
+#include "hsapp_defs.h"
+#include "caquery.h"
+#include "caentry.h"
+#include "caicondescription.h"
+#include "caservice.h"
+
+#include "hsmenuclient.h"
+#include "hsmenuclient_p.h"
+
+
+/*!
+ \class HsMenuClient
+ \ingroup group_hsmenuclient
+ \brief Implements home screen menu api, see \ref page_hsmenuclient for
+ usage details.
+
+*/
+
+HsMenuClient::HsMenuClient(QObject *parent)
+ :QObject(parent), m_d(new HsMenuClientPrivate(this))
+{
+
+}
+
+HsMenuClient::~HsMenuClient()
+{
+ delete m_d;
+}
+
+/*!
+ Add an Templated Application Entry or Update if entryPreferences contains paramter id see
+ \ref page_hsmenuclient for exmaple usages
+ \param entryPreference entry prefereneces
+ \retval true if operation was successful
+ */
+bool HsMenuClient::add(const QVariantMap &entryPreference)
+{
+ return m_d->add(entryPreference);
+}
+/*!
+ Remove an Templated Application Entry see
+ \ref page_gsmenuclient for exmaple usages
+ \param entry entry prefereneces
+ \retval true if operation was successful
+ */
+bool HsMenuClient::remove(const QVariantMap &entry) const
+{
+ return m_d->remove(entry);
+}
+/*!
+ Get list of Templated Application Entrys see
+ \ref page_hsmenuclient for exmaple usages
+ \param queryPreference prefereneces for query db
+ \retval QList
+ */
+QList<QVariantMap > HsMenuClient::getList(const QVariantMap &queryPreference)
+{
+ return m_d->getList(queryPreference);
+}
+
+/*!
+ Constructor
+ \param publishPublic pointer to public contentPublish
+ */
+HsMenuClientPrivate::HsMenuClientPrivate(HsMenuClient *publishPublic) :
+ m_q(publishPublic)
+{
+
+}
+
+/*!
+ destructor
+ */
+HsMenuClientPrivate::~HsMenuClientPrivate()
+{
+
+}
+
+bool HsMenuClientPrivate::add(const QVariantMap &entryPreference)
+{
+ bool result = false;
+ QMap<QString, QVariant> pref = entryPreference;
+
+ CaIconDescription iconDesc;
+ if(pref.contains(hsItemId))
+ {
+ QSharedPointer<CaEntry> update_entry = CaService::instance()->getEntry(pref.take(hsItemId).toInt());
+
+ update_entry->setText(pref.take(hsItemName).toString());
+
+ update_entry->setDescription(pref.take(hsItemDescription).toString());
+
+ iconDesc.setFilename(pref.take(hsIconFileName).toString());
+ iconDesc.setSkinId(pref.take(hsIconName).toString());
+ iconDesc.setApplicationId(pref.take(hsIconApplicationId).toString());
+ update_entry->setIconDescription(iconDesc);
+ QMapIterator<QString, QVariant> k(pref);
+ while (k.hasNext()) {
+ k.next();
+ update_entry->setAttribute(k.key(),k.value().toString());
+ }
+
+ result = CaService::instance()->updateEntry(*update_entry);
+ }
+ else if (pref.contains(hsItemName) && pref.contains(hsitemLaunchUri) && pref.contains(hsitemPublisherId))
+ {
+ CaEntry add_entry(ItemEntryRole);
+ add_entry.setEntryTypeName(templatedApplicationTypeName());
+ // mandatory values
+ add_entry.setText(pref.take(hsItemName).toString());
+
+ iconDesc.setFilename(pref.take(hsIconFileName).toString());
+ iconDesc.setSkinId(pref.take(hsIconName).toString());
+ iconDesc.setApplicationId(pref.take(hsIconApplicationId).toString());
+ add_entry.setIconDescription(iconDesc);
+
+ add_entry.setDescription(pref.take(hsItemDescription).toString());
+ QMapIterator<QString, QVariant> k(pref);
+ while (k.hasNext()) {
+ k.next();
+ add_entry.setAttribute(k.key(),k.value().toString());
+ }
+
+ add_entry.setFlags(add_entry.flags() & ~RemovableEntryFlag);
+
+ QSharedPointer<CaEntry> entry = CaService::instance()->createEntry(add_entry);
+ if (!entry.isNull()) {
+ result = true;
+ }
+ }
+ else
+ {
+ return false;
+ }
+ return result;
+
+
+}
+bool HsMenuClientPrivate::remove(const QVariantMap &entry) const
+{
+ bool result = false;
+ if (entry.contains(hsItemId))
+ {
+ result = CaService::instance()->removeEntry(entry.value(hsItemId).toInt());
+ }
+ return result;
+}
+
+QList<QVariantMap > HsMenuClientPrivate::getList(const QVariantMap &queryPreference)
+{
+ QList<QVariantMap> list;
+ QMap<QString, QVariant> map = queryPreference;
+
+ map.remove(hsItemName);
+ map.remove(hsItemDescription);
+
+ CaQuery query;
+ // define query
+ query.setFlagsOn(VisibleEntryFlag);
+ query.setEntryRoles(ItemEntryRole);
+ query.setEntryTypeNames(QStringList(templatedApplicationTypeName()));
+
+
+ // add atributes to caquery
+ QMapIterator<QString, QVariant> k(map);
+ while (k.hasNext()) {
+ k.next();
+ query.setAttribute(k.key(),k.value().toString());
+ }
+ QList< QSharedPointer<CaEntry> > entries = CaService::instance()->getEntries(query);
+ map.clear();
+ if (entries.count()) {
+ QMap<QString, QString> attrMap;
+ QMapIterator<QString, QString> k(attrMap);
+ //walk trought entrys and extract keys into map
+ for (int i = 0; i < entries.count(); ++i) {
+ map[hsItemId] = entries.at(i)->id();
+ map[hsItemName] = entries.at(i)->text();
+ map[hsItemDescription] = entries.at(i)->description();
+ CaIconDescription iconDesc = entries.at(i)->iconDescription();
+ map[hsIconFileName] = iconDesc.filename();
+ map[hsIconName] = iconDesc.skinId();
+ map[hsIconApplicationId] = iconDesc.applicationId();
+
+ // extract entry atributes
+ attrMap = entries.at(i)->attributes();
+ QMapIterator<QString, QString> k(attrMap);
+ // insert entrys attr into map
+ while (k.hasNext()) {
+ k.next();
+ map.insert(k.key(),k.value());
+ }
+ list.append(map); //append entry map to list
+ // clean used maps
+ map.clear();
+ attrMap.clear();
+ }
+ }
+ return list;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsmenuclientplugin/src/hsmenuclientplugin.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Plugin factory.
+*
+*/
+
+#include <qserviceinterfacedescriptor.h>
+#include <qabstractsecuritysession.h>
+#include <qservicecontext.h>
+
+#include "hsmenuclientplugin.h"
+#include "hsmenuclient.h"
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+
+QObject *HsMenuClientPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
+ QServiceContext *context,
+ QAbstractSecuritySession *session)
+{
+ Q_UNUSED(context);
+ Q_UNUSED(session);
+
+ if (descriptor.interfaceName() == QLatin1String("com.nokia.symbian.IMenuClient")) {
+ return new HsMenuClient(this);
+ } else {
+ return 0;
+ }
+}
+
+Q_EXPORT_PLUGIN2(hsmenuclientplugin, HsMenuClientPlugin)
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/hsmenucontentpublish/hsmenucontentpublish.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-#
-# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = lib
-
-CONFIG += plugin mobility
-MOBILITY = serviceframework
-
-PLUGIN_SUBDIR = /hsresources/plugins/hsmenucontentpublishplugin
-
-LIBS += -lcaclient
-
-INCLUDEPATH += inc
-
-HEADERS += inc/hsmenucontentpublish.h \
- inc/hsmenucontentpublishplugin.h \
-
-SOURCES += src/hsmenucontentpublish.cpp \
- src/hsmenucontentpublishplugin.cpp \
-
-symbian: {
- TARGET.UID3 = 0x20028715
-#export interface header to platform
-BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
-BLD_INF_RULES.prj_exports += "inc/hsmenucontentpublish.h \
- APP_LAYER_PLATFORM_EXPORT_PATH(hsmenucontentpublish.h)"
-}
-
-include(../common.pri)
-
-
--- a/homescreenapp/hsmenucontentpublish/inc/hsmenucontentpublish.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description: hsmenucontentpublish.h
- *
- */
-
-#ifndef HSMENUCONTENTPUBLISH_H
-#define HSMENUCONTENTPUBLISH_H
-
-#include <QObject>
-#include <QVariant>
-#include <qservicemanager.h>
-
-QTM_USE_NAMESPACE
-
-//mandatory keys
-const QString hsItemName("item:name");
-const QString hsitemLaunchUri("item:launchuri");
-const QString hsitemPublisherId("item:publisherId");
-
-//not mandatory
-const QString hsItemWidgetUri("widget:uri");
-const QString hsItemDescription("item:description");
-
-//for icon - not mandatory
-const QString hsIconFileName("icon:filename");//to display specific icon from file
-const QString hsIconName("icon:name");// it is used in similar way in HbIcon
-const QString hsIconApplicationId("icon:applicationid"); //publisherid makes rest
-
-
-class HsMenuContentPublishPrivate;
-
-class HsMenuContentPublish : public QObject
-{
- Q_OBJECT
-
-public:
- HsMenuContentPublish(QObject *parent = 0);
- ~HsMenuContentPublish();
-public slots:
- bool add(const QVariantMap &entryPreference = QVariantMap());
- bool remove(const QVariantMap &queryPreference = QVariantMap()) const;
-
- QList<QVariantMap > getList(const QVariantMap &queryPreference = QVariantMap());
-
-private:
- Q_DISABLE_COPY(HsMenuContentPublish)
- /**
- * Pointer to a private implementation.
- */
- HsMenuContentPublishPrivate * const m_d;
-};
-
-
-
-#endif // HSMENUCONTENTPUBLISH_H
--- a/homescreenapp/hsmenucontentpublish/inc/hsmenucontentpublish_p.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description: hsmenucontentpublish_p.h
- *
- */
-
-#ifndef HSMENUCONTENTPUBLISH_PRIVATE_H
-#define HSMENUCONTENTPUBLISH_PRIVATE_H
-
-// hidden
-const QString hsItemId("id");
-
-class HsMenuContentPublish;
-
-class HsMenuContentPublishPrivate
-{
-
-public:
-
- explicit HsMenuContentPublishPrivate(HsMenuContentPublish *publishPublic);
- ~HsMenuContentPublishPrivate();
- bool add(const QVariantMap &entryPreference = QVariantMap());
- bool remove(const QVariantMap &queryPreference = QVariantMap()) const;
- QList<QVariantMap > getList(const QVariantMap &queryPreference = QVariantMap());
-
-private:
- /**
- * Points to the HsMenuContentPublish instance that uses this private implementation.
- */
- HsMenuContentPublish *const m_q;
-};
-
-#endif //HSMENUCONTENTPUBLISH_PRIVATE_H
--- a/homescreenapp/hsmenucontentpublish/inc/hsmenucontentpublishplugin.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Plugin factory.
-*
-*/
-
-#ifndef HSMENUCONTENTPUBLISHPLUGIN_H
-#define HSMENUCONTENTPUBLISHPLUGIN_H
-
-#include <QObject>
-#include <qserviceplugininterface.h>
-
-QTM_USE_NAMESPACE
-
-class HsMenuContentPublishPlugin : public QObject, public QServicePluginInterface
-{
- Q_OBJECT
- Q_INTERFACES(QtMobility::QServicePluginInterface)
-
-public:
- QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
- QServiceContext *context,
- QAbstractSecuritySession *session);
-};
-
-#endif //HSMENUCONTENTPUBLISHPLUGIN_H
--- a/homescreenapp/hsmenucontentpublish/resource/hsmenucontentpublish.s60xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>hsmenucontentpublishplugin</name>
- <filepath>z:/hsresources/plugins/hsmenucontentpublishplugin/hsmenucontentpublish.qtplugin</filepath>
- <description>HsMenu Client plugin</description>
- <interface>
- <name>com.nokia.symbian.IMenuClient</name>
- <version>1.0</version>
- <description>HsMenu Client exposed service interface </description>
- <capabilities></capabilities>
- </interface>
-</service>
--- a/homescreenapp/hsmenucontentpublish/resource/hsmenucontentpublish.xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>hsmenucontentpublishplugin</name>
- <filepath>hsmenucontentpublish</filepath>
- <description>HsMenu Client plugin</description>
- <interface>
- <name>com.nokia.symbian.IMenuClient</name>
- <version>1.0</version>
- <description>HsMenu Client exposed service interface </description>
- <capabilities></capabilities>
- </interface>
-</service>
\ No newline at end of file
--- a/homescreenapp/hsmenucontentpublish/src/hsmenucontentpublish.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description: hsmenucontentpublish.cpp
- *
- */
-
-#include <QString>
-#include <QDebug>
-
-#include "hsapp_defs.h"
-#include "caquery.h"
-#include "caentry.h"
-#include "caicondescription.h"
-#include "caservice.h"
-
-#include "hsmenucontentpublish.h"
-#include "hsmenucontentpublish_p.h"
-
-HsMenuContentPublish::HsMenuContentPublish(QObject *parent)
- :QObject(parent), m_d(new HsMenuContentPublishPrivate(this))
-{
-
-}
-
-HsMenuContentPublish::~HsMenuContentPublish()
-{
- delete m_d;
-}
-
-bool HsMenuContentPublish::add(const QVariantMap &entryPreference)
-{
- return m_d->add(entryPreference);
-}
-bool HsMenuContentPublish::remove(const QVariantMap &entry) const
-{
- return m_d->remove(entry);
-}
-
-QList<QVariantMap > HsMenuContentPublish::getList(const QVariantMap &queryPreference)
-{
- return m_d->getList(queryPreference);
-}
-
-/*!
- Constructor
- \param publishPublic pointer to public contentPublish
- */
-HsMenuContentPublishPrivate::HsMenuContentPublishPrivate(HsMenuContentPublish *publishPublic) :
- m_q(publishPublic)
-{
-
-}
-
-/*!
- destructor
- */
-HsMenuContentPublishPrivate::~HsMenuContentPublishPrivate()
-{
-
-}
-
-bool HsMenuContentPublishPrivate::add(const QVariantMap &entryPreference)
-{
- bool result = false;
- QMap<QString, QVariant> pref = entryPreference;
-
- CaIconDescription iconDesc;
- if(pref.contains(hsItemId))
- {
- CaEntry *update_entry = CaService::instance()->getEntry(pref.take(hsItemId).toInt());
-
- update_entry->setText(pref.take(hsItemName).toString());
-
- update_entry->setDescription(pref.take(hsItemDescription).toString());
-
- iconDesc.setFilename(pref.take(hsIconFileName).toString());
- iconDesc.setSkinId(pref.take(hsIconName).toString());
- iconDesc.setApplicationId(pref.take(hsIconApplicationId).toString());
- update_entry->setIconDescription(iconDesc);
- QMapIterator<QString, QVariant> k(pref);
- while (k.hasNext()) {
- k.next();
- update_entry->setAttribute(k.key(),k.value().toString());
- }
-
- result = CaService::instance()->updateEntry(*update_entry);
- }
- else if (pref.contains(hsItemName) && pref.contains(hsitemLaunchUri) && pref.contains(hsitemPublisherId))
- {
- CaEntry add_entry(ItemEntryRole);
- add_entry.setEntryTypeName(templatedApplicationTypeName());
- // mandatory values
- add_entry.setText(pref.take(hsItemName).toString());
-
- iconDesc.setFilename(pref.take(hsIconFileName).toString());
- iconDesc.setSkinId(pref.take(hsIconName).toString());
- iconDesc.setApplicationId(pref.take(hsIconApplicationId).toString());
- add_entry.setIconDescription(iconDesc);
-
- add_entry.setDescription(pref.take(hsItemDescription).toString());
- QMapIterator<QString, QVariant> k(pref);
- while (k.hasNext()) {
- k.next();
- add_entry.setAttribute(k.key(),k.value().toString());
- }
-
- add_entry.setFlags(add_entry.flags() & ~RemovableEntryFlag);
-
- CaEntry *entry = CaService::instance()->createEntry(add_entry);
- if (entry) {
- result = true;
- delete entry;
- }
- }
- else
- {
- return false;
- }
- return result;
-
-
-}
-bool HsMenuContentPublishPrivate::remove(const QVariantMap &entry) const
-{
- bool result = false;
- if (entry.contains(hsItemId))
- {
- result = CaService::instance()->removeEntry(entry.value(hsItemId).toInt());
- }
- return result;
-}
-
-QList<QVariantMap > HsMenuContentPublishPrivate::getList(const QVariantMap &queryPreference)
-{
- QList<QVariantMap> list;
- QMap<QString, QVariant> map = queryPreference;
-
- map.remove(hsItemName);
- map.remove(hsItemDescription);
-
- CaQuery query;
- // define query
- query.setFlagsOn(VisibleEntryFlag);
- query.setEntryRoles(ItemEntryRole);
- query.setEntryTypeNames(QStringList(templatedApplicationTypeName()));
-
-
- // add atributes to caquery
- QMapIterator<QString, QVariant> k(map);
- while (k.hasNext()) {
- k.next();
- query.setAttribute(k.key(),k.value().toString());
- }
- QList<CaEntry *> entries = CaService::instance()->getEntries(query);
- map.clear();
- if (entries.count()) {
- QMap<QString, QString> attrMap;
- QMapIterator<QString, QString> k(attrMap);
- //walk trought entrys and extract keys into map
- for (int i = 0; i < entries.count(); ++i) {
- map[hsItemId] = entries.at(i)->id();
- map[hsItemName] = entries.at(i)->text();
- map[hsItemDescription] = entries.at(i)->description();
- CaIconDescription iconDesc = entries.at(i)->iconDescription();
- map[hsIconFileName] = iconDesc.filename();
- map[hsIconName] = iconDesc.skinId();
- map[hsIconApplicationId] = iconDesc.applicationId();
-
- // extract entry atributes
- attrMap = entries.at(i)->attributes();
- QMapIterator<QString, QString> k(attrMap);
- // insert entrys attr into map
- while (k.hasNext()) {
- k.next();
- map.insert(k.key(),k.value());
- }
- list.append(map); //append entry map to list
- // clean used maps
- map.clear();
- attrMap.clear();
- }
- }
- qDeleteAll(entries);
- return list;
-}
--- a/homescreenapp/hsmenucontentpublish/src/hsmenucontentpublishplugin.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Plugin factory.
-*
-*/
-
-#include <qserviceinterfacedescriptor.h>
-#include <qabstractsecuritysession.h>
-#include <qservicecontext.h>
-
-#include "hsmenucontentpublishplugin.h"
-#include "hsmenucontentpublish.h"
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-
-QObject *HsMenuContentPublishPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
- QServiceContext *context,
- QAbstractSecuritySession *session)
-{
- Q_UNUSED(context);
- Q_UNUSED(session);
-
- if (descriptor.interfaceName() == QLatin1String("com.nokia.symbian.IMenuClient")) {
- return new HsMenuContentPublish(this);
- } else {
- return 0;
- }
-}
-
-Q_EXPORT_PLUGIN2(hsmenucontentpublishplugin, HsMenuContentPublishPlugin)
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/hsutils/hsutils.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsutils/hsutils.pro Mon May 03 12:24:59 2010 +0300
@@ -18,7 +18,8 @@
include (../common.pri)
-CONFIG += hb
+CONFIG += hb mobility
+MOBILITY = systeminfo
QT += sql
DEFINES += HSUTILS_LIB
@@ -32,6 +33,7 @@
symbian: {
TARGET.UID3 = 0x20022F3C
+ LIBS+=-lxqservice -lxqserviceutil
}
include(hsutils.pri)
--- a/homescreenapp/hsutils/inc/hsapptranslator.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Homescreen application translator class.
-*
-*/
-
-#ifndef HSAPPTRANSLATOR_H
-#define HSAPPTRANSLATOR_H
-
-#include <QObject>
-#include <QList>
-#include "hsutils_global.h"
-#include "hstest_global.h"
-
-HOMESCREEN_TEST_CLASS(t_hsUtils)
-
-class QEvent;
-class QTranslator;
-
-class HSUTILS_EXPORT HsAppTranslator : public QObject
-{
- Q_OBJECT
-
-public:
- ~HsAppTranslator();
- static HsAppTranslator *instance();
-
-protected:
- bool eventFilter(QObject *watched, QEvent *event);
-
-public:
- void setLanguage();
-
-private:
- void loadTranslators(const QString &locale);
- void removeTranslators();
-
-signals:
-
- void languageChanged();
-
-private:
- HsAppTranslator(QObject* aParent = 0);
- Q_DISABLE_COPY(HsAppTranslator)
- static HsAppTranslator *mInstance;
- QList<QTranslator *> mTranslatorList;
-
- HOMESCREEN_TEST_FRIEND_CLASS(t_hsUtils)
-};
-
-#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/inc/hsdeviceinfolistener.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef HSDEVICEINFOLISTENER_H
+#define HSDEVICEINFOLISTENER_H
+
+#include <QObject>
+//#include <QSystemDeviceInfo>
+//#include <QSystemNetworkInfo>
+#ifdef HSUTILS_TEST
+#include "mocksysteminfo.h"
+#else
+#include <qsysteminfo.h>
+QTM_USE_NAMESPACE
+#endif
+
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(t_hsUtils)
+
+class HsDeviceInfoListener : public QObject
+{
+ Q_OBJECT
+
+ Q_ENUMS(HsDeviceInfoStatus)
+
+public:
+ enum HsDeviceInfoStatus {
+ NoService = 0, // no sim or out of coverage
+ OfflineProfile,
+ ServiceAvailable
+ };
+
+public:
+ HsDeviceInfoListener(QObject *parent = 0);
+ ~HsDeviceInfoListener();
+
+public:
+ QString operatorName() const;
+ HsDeviceInfoStatus status() const;
+
+signals:
+ void networkNameChanged(const QString &name);
+ void statusChanged(HsDeviceInfoListener::HsDeviceInfoStatus status);
+
+private slots:
+ void onNetworkStatusChanged(QSystemNetworkInfo::NetworkMode networkMode, QSystemNetworkInfo::NetworkStatus networkStatus);
+ void onNetworkNameChanged(QSystemNetworkInfo::NetworkMode networkMode,const QString &networkName);
+ void onCurrentProfileChanged(QSystemDeviceInfo::Profile profile);
+
+private:
+ QSystemNetworkInfo::NetworkStatus networkStatus();
+ void updateCurrentNetworkMode();
+ bool isConnected(QSystemNetworkInfo::NetworkMode mode);
+ void updateStatus();
+ QSystemDeviceInfo::SimStatus simStatus() const;
+private:
+
+ QSystemNetworkInfo *mNetworkInfo;
+ QSystemDeviceInfo *mDeviceInfo;
+ QSystemNetworkInfo::NetworkMode mCurrentNetworkMode;
+ HsDeviceInfoStatus mStatus;
+ HOMESCREEN_TEST_FRIEND_CLASS(t_hsUtils)
+};
+
+#endif //
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/inc/hsimagefetcherclient.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef HSIMAGEFETCHERCLIENT_H
+#define HSIMAGEFETCHERCLIENT_H
+
+#include <QObject>
+
+#ifdef Q_OS_SYMBIAN
+#include <xqaiwrequest.h>
+#include <xqappmgr.h>
+#endif // Q_OS_SYMBIAN
+
+#include "hsutils_global.h"
+
+class HSUTILS_EXPORT HsImageFetcherClient : public QObject
+{
+ Q_OBJECT
+
+public:
+ HsImageFetcherClient(QObject *parent = 0);
+ ~HsImageFetcherClient();
+
+public slots:
+ void fetch();
+
+private slots:
+ // Aiw request responses
+ void handleOk(const QVariant &result);
+ void handleError(int errorCode, const QString &errorMessage);
+
+signals:
+ void fetchCompleted(const QString &imageFile);
+ void fetchFailed(int errorCode, const QString &errorMessage);
+
+private:
+ Q_DISABLE_COPY(HsImageFetcherClient)
+
+#ifdef Q_OS_SYMBIAN
+ XQApplicationManager mAppMgr;
+ XQAiwRequest *mReq;
+#endif // Q_OS_SYMBIAN
+};
+
+#endif // HSIMAGEFETCHERCLIENT_H
--- a/homescreenapp/hsutils/inc/hsmenuevent.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsutils/inc/hsmenuevent.h Mon May 03 12:24:59 2010 +0300
@@ -41,10 +41,12 @@
AddAppsToCollection,
RemoveAppFromCollection,
OpenApplicationLibrary,
+ OpenInstalledView,
OpenHomeScreen,
ArrangeCollection,
CreateCollection,
PreviewHSWidget,
+ ShowAppSettings,
Unknown
};
--- a/homescreenapp/hsutils/inc/hsmenueventfactory.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsutils/inc/hsmenueventfactory.h Mon May 03 12:24:59 2010 +0300
@@ -38,13 +38,7 @@
public:
- static QEvent *createAddToHomeScreenEvent(
- int entryId,
- const QString &entryTypeName = QString(),
- const QString &uri = QString(),
- const QString &library = QString(),
- QMap<QString, QString>* attributes = NULL
- );
+ static QEvent *createAddToHomeScreenEvent(int entryId);
static QEvent *createOpenCollectionEvent(int itemId,
const QString &collectionType);
@@ -58,6 +52,8 @@
static QEvent *createOpenAppLibraryEvent(
HsMenuMode menuMode = NormalHsMenuMode);
+ static QEvent *createOpenInstalledViewEvent();
+
static QEvent *createOpenHomeScreenEvent();
static QEvent *createCollectionDeletedEvent();
@@ -82,6 +78,8 @@
const QString &uri = QString(),
const QString &library = QString()
);
+
+ static QEvent *createAppSettingsViewEvent(int entryId);
static QEvent *createUnknownEvent();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/inc/hstitleresolver.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef HSTITLERESOLVER_H
+#define HSTITLERESOLVER_H
+
+#include <QObject>
+#include "hsdeviceinfolistener.h"
+#include "hsutils_global.h"
+#include "hstest_global.h"
+HOMESCREEN_TEST_CLASS(t_hsUtils)
+
+class HSUTILS_EXPORT HsTitleResolver : public QObject
+{
+ Q_OBJECT
+
+public:
+ HsTitleResolver(QObject *parent = 0);
+ ~HsTitleResolver();
+public:
+ QString title();
+signals:
+ void titleChanged(const QString &name);
+private slots:
+ void onNetworkNameChanged(const QString &name);
+ void onStatusChanged(HsDeviceInfoListener::HsDeviceInfoStatus status);
+private:
+ QString mOperatorName;
+ QString mOfflineText;
+ QString mNoServiceText;
+ HsDeviceInfoListener *mDeviceInfoListener;
+ HsDeviceInfoListener::HsDeviceInfoStatus mCurrentStatus;
+ HOMESCREEN_TEST_FRIEND_CLASS(t_hsUtils)
+};
+
+#endif // HSTITLERESOLVER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/inc/hswallpaperhelper.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Homescreen wallpaper helper class.
+*
+*/
+
+#ifndef HSWALLPAPERHELPER_H
+#define HSWALLPAPERHELPER_H
+
+#include "hsutils_global.h"
+#include "hstest_global.h"
+
+HOMESCREEN_TEST_CLASS(t_hsUtils)
+
+class HSUTILS_EXPORT HsWallpaperHelper
+{
+public:
+ static QImage processImage(const QString &sourcePath,
+ const QRect &targetRect,
+ const QRect &sourceRect,
+ bool centerTarget = true);
+
+private:
+ HOMESCREEN_TEST_FRIEND_CLASS(t_hsUtils)
+};
+
+#endif // HSWALLPAPERHELPER_H
--- a/homescreenapp/hsutils/inc/hswidgetpositioningonorientationchange.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsutils/inc/hswidgetpositioningonorientationchange.h Mon May 03 12:24:59 2010 +0300
@@ -38,16 +38,6 @@
static HsWidgetPositioningOnOrientationChange *mInstance;
};
-
-class HSUTILS_EXPORT HsSimpleWidgetPositioningOnOrientationChange : public HsWidgetPositioningOnOrientationChange
-{
-public:
- QList<QRectF> convert(const QRectF &fromRect,
- const QList<QRectF> &fromGeometries,
- const QRectF &toRect);
-};
-
-
class HSUTILS_EXPORT HsAdvancedWidgetPositioningOnOrientationChange : public HsWidgetPositioningOnOrientationChange
{
public:
@@ -56,20 +46,4 @@
const QRectF &toRect);
};
-class HSUTILS_EXPORT HsRelativePositionWidgetPositioningOnOrientationChange : public HsWidgetPositioningOnOrientationChange
-{
-public:
- QList<QRectF> convert(const QRectF &fromRect,
- const QList<QRectF> &fromGeometries,
- const QRectF &toRect);
-};
-
-class HSUTILS_EXPORT HsKeepCornerPositionWidgetPositioningOnOrientationChange : public HsWidgetPositioningOnOrientationChange
-{
-public:
- QList<QRectF> convert(const QRectF &fromRect,
- const QList<QRectF> &fromGeometries,
- const QRectF &toRect);
-};
-
#endif // HSWIDGETPOSITIONINGONORIENTATIONCHANGE_H
--- a/homescreenapp/hsutils/src/hsapptranslator.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Homescreen application translator class.
-*
-*/
-
-#include <QEvent>
-#include <QFile>
-#include <QDir>
-#include <QApplication>
-#include <QTranslator>
-#include <QtGlobal>
-#include <QSettings>
-#include <hbinstance.h>
-#include <hbview.h>
-#include "hsapptranslator.h"
-
-#ifdef Q_OS_SYMBIAN
-#include <f32file.h>
-#endif //Q_OS_SYMBIAN
-
-/*!
- \class HsAppTranslator
- \ingroup group_hsapplication
- \brief Homescreen application main class.
- Loads a runtime from a runtime provider plugin. Manages
- the runtime execution.
-*/
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-
-/*!
- Stores the translator instance.
-*/
-HsAppTranslator *HsAppTranslator::mInstance = 0;
-
-/*!
- Constructor.
- \a parent Parent object.
-*/
-HsAppTranslator::HsAppTranslator(QObject *parent)
- : QObject(parent)
-{
-}
-
-/*!
- Returns the hstranlator instance.
-*/
-HsAppTranslator *HsAppTranslator::instance()
-{
- if (!mInstance) {
- mInstance = new HsAppTranslator();
- }
- return mInstance;
-}
-
-/*!
- Destructor.
-*/
-HsAppTranslator::~HsAppTranslator()
-{
- removeTranslators();
-}
-
-/*!
- \copydoc QObject::eventFilter(QObject *watched, QEvent *event)
-*/
-bool HsAppTranslator::eventFilter(QObject *watched, QEvent *event)
-{
- Q_UNUSED(watched);
- if (event->type() == QEvent::LocaleChange) {
- setLanguage();
- emit languageChanged();
- return true;
- }
-
- return false;
-}
-
-void HsAppTranslator::setLanguage()
-{
- removeTranslators();
-
-#ifdef Q_OS_SYMBIAN
- QString locale = QLocale::system().name();
-#else
- QString locale;
- QFile file("hslocale.txt");
- QTextStream stream(&file);
- if (file.open(QIODevice::ReadWrite | QIODevice::Text)) {
- QString word;
- stream >> word;
- if (!word.isEmpty()) {
- locale = word;
- } else {
- locale = "en_US";
- file.seek(0);
- stream << locale;
- file.close();
- }
- } else {
- locale = QLocale::system().name();
- }
-#endif //Q_OS_SYMBIAN
-
- loadTranslators(locale);
-}
-
-void HsAppTranslator::loadTranslators(const QString &locale)
-{
- QString path = QDir::currentPath() + QString("/hsresources/loc");
- QDir currentDir = QDir(path);
-
- QString localeLowerCase = locale.toLower();
- QString localeUpperCase = locale.toUpper();
- QString language = locale.left(2);
- QString languageUpperCase = language.toUpper();
- QStringList nameFilters;
- nameFilters << "*_" + locale + ".qm"
- << "*_" + localeLowerCase + ".qm"
- << "*_" + localeUpperCase + ".qm"
- << "*_" + language + ".qm"
- << "*_" + languageUpperCase + ".qm";
-
- QStringList locFiles = currentDir.entryList(nameFilters, QDir::Files | QDir::NoSymLinks);
-
- for (int i = 0; i < locFiles.size(); ++i) {
- QString locFile = locFiles[i];
- bool loaded = false;
- QTranslator *translator = new QTranslator();
-#ifdef Q_OS_SYMBIAN
- TRAP_IGNORE(loaded = translator->load(locFile, path));
-#else
- loaded = translator->load(locFile, path);
-#endif //Q_OS_SYMBIAN
- if (!loaded) {
- QString debugMsg = "ERROR: QTranslator::load() failed for " + locFile;
- HSDEBUG(debugMsg);
- }
- qApp->installTranslator(translator);
- mTranslatorList << translator;
- }
-}
-
-void HsAppTranslator::removeTranslators()
-{
- while (!mTranslatorList.isEmpty()) {
- QTranslator *translator = mTranslatorList.takeFirst();
- qApp->removeTranslator(translator);
- delete translator;
- translator = 0;
- }
-}
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/src/hsdeviceinfolistener.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,220 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "hsdeviceinfolistener.h"
+#include <QDebug>
+
+#ifdef Q_OS_SYMBIAN
+#include <e32property.h>
+#include <startupdomainpskeys.h>
+#endif
+/*!
+
+*/
+HsDeviceInfoListener::HsDeviceInfoListener(QObject *parent)
+ : QObject(parent),
+ mCurrentNetworkMode(QSystemNetworkInfo::UnknownMode),
+ mStatus(NoService)
+{
+ mNetworkInfo = new QSystemNetworkInfo(this);
+ mDeviceInfo = new QSystemDeviceInfo(this);
+
+ connect(mNetworkInfo, SIGNAL(networkStatusChanged(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus)), SLOT(onNetworkStatusChanged(QSystemNetworkInfo::NetworkMode, QSystemNetworkInfo::NetworkStatus)));
+ connect(mNetworkInfo, SIGNAL(networkNameChanged(QSystemNetworkInfo::NetworkMode,const QString &)), SLOT(onNetworkNameChanged(QSystemNetworkInfo::NetworkMode,const QString &)));
+ connect(mDeviceInfo, SIGNAL(currentProfileChanged(QSystemDeviceInfo::Profile)), SLOT(onCurrentProfileChanged(QSystemDeviceInfo::Profile)));
+
+ updateCurrentNetworkMode();
+ updateStatus();
+}
+
+/*!
+
+*/
+HsDeviceInfoListener::~HsDeviceInfoListener()
+{
+}
+
+/*!
+
+*/
+QString HsDeviceInfoListener::operatorName() const
+{
+ return QSystemNetworkInfo::networkName(mCurrentNetworkMode);
+}
+
+/*!
+
+*/
+HsDeviceInfoListener::HsDeviceInfoStatus HsDeviceInfoListener::status() const
+{
+ return mStatus;
+}
+
+/*!
+
+*/
+void HsDeviceInfoListener::onNetworkStatusChanged(QSystemNetworkInfo::NetworkMode networkMode, QSystemNetworkInfo::NetworkStatus networkStatus)
+{
+ Q_UNUSED(networkMode);
+ Q_UNUSED(networkStatus);
+ updateCurrentNetworkMode();
+ updateStatus();
+}
+
+/*!
+
+*/
+void HsDeviceInfoListener::onNetworkNameChanged(QSystemNetworkInfo::NetworkMode networkMode,const QString &networkName)
+{
+ Q_UNUSED(networkMode);
+ updateCurrentNetworkMode();
+ if(mCurrentNetworkMode != QSystemNetworkInfo::UnknownMode) {
+ qDebug() << "HsDeviceInfoListener::onNetworkNameChanged() - " << networkName;
+ emit networkNameChanged(networkName);
+ }
+ updateStatus();
+}
+
+/*!
+
+*/
+void HsDeviceInfoListener::onCurrentProfileChanged(QSystemDeviceInfo::Profile profile)
+{
+ Q_UNUSED(profile);
+ updateStatus();
+}
+
+/*!
+
+*/
+QSystemNetworkInfo::NetworkStatus HsDeviceInfoListener::networkStatus()
+{
+ return mNetworkInfo->networkStatus(mCurrentNetworkMode);
+}
+
+/*!
+
+*/
+void HsDeviceInfoListener::updateCurrentNetworkMode()
+{
+ //We are keen only GSM and WCDMA network connections.
+ //Other networks (WLAN etc.) are treated as UnknowMode.
+ qDebug() << "HsDeviceInfoListener::updateCurrentNetworkMode() - Entry: mCurrentNetworkMode == "
+ << mCurrentNetworkMode;
+ if(isConnected(QSystemNetworkInfo::GsmMode)) {
+ mCurrentNetworkMode = QSystemNetworkInfo::GsmMode;
+ } else if (isConnected(QSystemNetworkInfo::WcdmaMode)) {
+ mCurrentNetworkMode = QSystemNetworkInfo::WcdmaMode;
+ } else {
+ mCurrentNetworkMode = QSystemNetworkInfo::UnknownMode;
+ }
+ qDebug() << "HsDeviceInfoListener::updateCurrentNetworkMode() - Exit: mCurrentNetworkMode == "
+ << mCurrentNetworkMode;
+}
+
+/*!
+
+*/
+bool HsDeviceInfoListener::isConnected(QSystemNetworkInfo::NetworkMode mode)
+{
+ bool connected = false;
+
+ qDebug() << "HsDeviceInfoListener::isConnected():";
+ qDebug() << " - Mode:" << (mode == QSystemNetworkInfo::WcdmaMode ? "WcdmaMode" : "GsmMode");
+ QSystemNetworkInfo::NetworkStatus status = mNetworkInfo->networkStatus(mode);
+ switch (status) {
+ case QSystemNetworkInfo::Connected:
+ qDebug() << " - Status: Connected";
+ //Fall through
+ case QSystemNetworkInfo::HomeNetwork:
+ qDebug() << " - Status: HomeNetwork";
+ //Fall through
+ case QSystemNetworkInfo::Roaming:
+ qDebug() << " - Status: Roaming";
+ connected = true;
+ break;
+ default:
+ qDebug() << " - Status: " << status;
+ break;
+ };
+
+ qDebug() << " - Is connected:" << connected;
+
+ return connected;
+}
+
+/*!
+
+*/
+void HsDeviceInfoListener::updateStatus()
+{
+ qDebug() << "HsDeviceInfoListener::updateStatus() - Entry: mStatus == "
+ << mStatus;
+
+ HsDeviceInfoStatus currentStatus;
+ if ( mDeviceInfo->currentProfile() == QSystemDeviceInfo::OfflineProfile &&
+ simStatus() != QSystemDeviceInfo::SimNotAvailable) {
+ currentStatus = OfflineProfile;
+ } else if (mCurrentNetworkMode == QSystemNetworkInfo::UnknownMode) {
+ currentStatus = NoService;
+ } else {
+ currentStatus = ServiceAvailable;
+ }
+
+ if(mStatus != currentStatus) {
+ mStatus = currentStatus;
+ emit statusChanged(mStatus);
+ }
+ qDebug() << "HsDeviceInfoListener::updateStatus() - Exit: mStatus == "
+ << mStatus;
+}
+
+/*!
+
+*/
+QSystemDeviceInfo::SimStatus HsDeviceInfoListener::simStatus() const
+{
+ QSystemDeviceInfo::SimStatus qtSimStatus = QSystemDeviceInfo::SimNotAvailable;
+
+#ifdef Q_OS_SYMBIAN
+ TInt simCardStatus(ESimNotPresent);
+ RProperty symbianSimStatus;
+ qt_symbian_throwIfError( symbianSimStatus.Attach( KPSUidStartup, KPSSimStatus ) );
+ qt_symbian_throwIfError( symbianSimStatus.Get( simCardStatus ) );
+ symbianSimStatus.Close();
+
+ switch (simCardStatus) {
+ case ESimUsable:
+ // The Sim card is fully usable.
+ qtSimStatus = QSystemDeviceInfo::SingleSimAvailable;
+ qDebug() << "HsDeviceInfoListener::simStatus() - SingleSimAvailable";
+ break;
+ default:
+ //ESimReadable == The SIM card is not fully usable, but the emergency number can be read.
+ //ESimNotReady == The Sim card is present but not ready or usable.
+ //ESimNotPresent == The Sim card is not present.
+ //ESimNotSupported == SIM/RUIM is not supported. Some CDMA phones do not support a SIM/RUIM at all.
+ qtSimStatus = QSystemDeviceInfo::SimNotAvailable;
+ qDebug() << "HsDeviceInfoListener::simStatus() - SimNotAvailable";
+ break;
+ };
+#else
+ qtSimStatus = mDeviceInfo->simStatus();
+#endif
+
+ return qtSimStatus;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/src/hsimagefetcherclient.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,157 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Photos image fetcher client.
+*
+*/
+
+
+#include "hsimagefetcherclient.h"
+
+#include <QDir>
+#include <QDebug>
+#include <QVariant>
+#ifdef Q_OS_SYMBIAN
+#include <xqaiwinterfacedescriptor.h>
+#endif // Q_OS_SYMBIAN
+
+namespace
+{
+ const char gFetcherService[] = "com.nokia.services.media";
+ const char gFetcherInterface[] = "image";
+ const char gFetcherOperation[] = "fetch(QVariantMap,QVariant)";
+}
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+#ifdef Q_OS_SYMBIAN
+HsImageFetcherClient::HsImageFetcherClient(QObject *parent)
+ : QObject(parent),
+ mReq(0)
+{
+}
+#else
+HsImageFetcherClient::HsImageFetcherClient(QObject *parent)
+ : QObject(parent)
+{
+}
+#endif // Q_OS_SYMBIAN
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+HsImageFetcherClient::~HsImageFetcherClient()
+{
+#ifdef Q_OS_SYMBIAN
+ delete mReq;
+#endif // Q_OS_SYMBIAN
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsImageFetcherClient::fetch()
+{
+#ifdef Q_OS_SYMBIAN
+ qDebug() << "HsImageFetcherClient::fetch START";
+
+ if (mReq) {
+ delete mReq;
+ mReq = 0;
+ }
+
+ mReq = mAppMgr.create(gFetcherInterface, gFetcherOperation, false);
+ if (mReq) {
+ // Connect signals once
+ connect(mReq, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleOk(const QVariant&)));
+ connect(mReq, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&)));
+ } else {
+ qCritical() << "HsImageFetcherClient::fetch -> Create request failed";
+ return;
+ }
+
+ if (!(mReq)->send()) {
+ qCritical() << "HsImageFetcherClient::fetch -> Send failed" << mReq->lastErrorMessage();;
+ }
+
+ qDebug() << "HsImageFetcherClient::fetch END";
+#endif // Q_OS_SYMBIAN
+}
+
+
+
+// Aiw request responses
+void HsImageFetcherClient::handleOk(const QVariant &result)
+{
+#ifdef Q_OS_SYMBIAN
+ // disconnect error signal as it will give -4999 (EConnectionClosed) error afterwards even though image
+ // is fetched successfully
+ disconnect(mReq, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&)));
+
+ XQAiwRequest *request = static_cast<XQAiwRequest *>(sender());
+ int implementationId=-1;
+ implementationId = (request->descriptor().property(XQAiwInterfaceDescriptor::ImplementationId)).toInt();
+
+ if (result.canConvert<QString>()) {
+ qDebug("HsImageFetcherClient::%x:handleOk result=%s,%s",
+ implementationId,
+ result.typeName(),
+ qPrintable(result.value<QString>()));
+
+ emit fetchCompleted(result.value<QString>());
+ } else if (result.canConvert<QStringList>()) {
+ QStringList resultList = result.value<QStringList>();
+ if (resultList.size() > 0) {
+ //for debug
+ QString msg = QString("HsImageFetcherClient::handleOk, size=")+QString::number( resultList.size() )+QString("\n");
+ for (int i(0), size(resultList.size()); i < size; ++i) {
+ msg += QString::number(i) + QString(":") + resultList[i] + QString("\n");
+ }
+ qDebug()<<msg;
+ }
+ emit fetchCompleted(resultList[0]);
+ } else {
+ qCritical("AppMgrClient::%x:handleOk result=%s. Not displayable",
+ implementationId,
+ result.typeName());
+ emit fetchFailed(-1, QString());
+ }
+#else
+ Q_UNUSED(result)
+#endif // Q_OS_SYMBIAN
+}
+
+void HsImageFetcherClient::handleError(int errorCode, const QString &errorMessage)
+{
+#ifdef Q_OS_SYMBIAN
+ XQAiwRequest *request = static_cast<XQAiwRequest *>(sender());
+ int implementationId = -1;
+ implementationId = (request->descriptor().property(XQAiwInterfaceDescriptor::ImplementationId)).toInt();
+
+ qCritical("HsImageFetcherClient::%x:handleError code=%d, errorMessage:%s",
+ implementationId, errorCode, qPrintable(errorMessage));
+ emit fetchFailed(errorCode, errorMessage);
+#else
+ Q_UNUSED(errorCode)
+ Q_UNUSED(errorMessage)
+#endif // Q_OS_SYMBIAN
+}
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/hsutils/src/hsmenuevent.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsutils/src/hsmenuevent.cpp Mon May 03 12:24:59 2010 +0300
@@ -20,7 +20,7 @@
/*!
\class HsMenuEvent
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsutils
\brief Represents class of events in menu application state machine.
\sa HsMenuEventFactory
--- a/homescreenapp/hsutils/src/hsmenueventfactory.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsutils/src/hsmenueventfactory.cpp Mon May 03 12:24:59 2010 +0300
@@ -22,7 +22,7 @@
/*!
\class HsMenuEventFactory
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsutils
\brief Menu event factory class.
@@ -44,44 +44,11 @@
\param attributes Widget params.
\return Event for adding the widget to homescreen.
*/
-QEvent *HsMenuEventFactory::createAddToHomeScreenEvent(
- int entryId,
- const QString &entryTypeName,
- const QString &uri,
- const QString &library,
- QMap<QString, QString>* attributes)
+QEvent *HsMenuEventFactory::createAddToHomeScreenEvent(int entryId)
{
// get CaEntry type, and if widget get uri and library stored as properties...
QVariantMap params;
- QVariantMap widgetParams;
-
params.insert(itemIdKey(), entryId);
-
- if (entryTypeName == widgetTypeName() || entryTypeName == templatedApplicationTypeName()) {
- params.insert(
- widgetUriAttributeName(),
- uri);
-
- params.insert(
- widgetLibraryAttributeName(),
- library);
-
- params.insert(entryTypeNameKey(), entryTypeName);
-
- if (entryTypeName == templatedApplicationTypeName()) {
- QMapIterator<QString, QString> i(*attributes);
- while (i.hasNext()) {
- i.next();
- QString key(i.key());
- QString value(i.value());
- if (key.contains(widgetParam())) {
- widgetParams.insert(key,value);
- }
- }
- params.insert(widgetParam(),widgetParams);
- }
- }
-
return new HsMenuEvent(HsMenuEvent::AddToHomeScreen, params);
}
@@ -153,6 +120,16 @@
}
/*!
+ Creates an HsMenuEvent::OpenApplicationLibrary event.
+
+ \return Open Applications Library event.
+ */
+QEvent *HsMenuEventFactory::createOpenInstalledViewEvent()
+{
+ return new HsMenuEvent(HsMenuEvent::OpenInstalledView);
+}
+
+/*!
Creates an HsMenuEvent::OpenHomeScreen event.
\return Open HomeScreen event.
@@ -274,6 +251,19 @@
}
/*!
+ Creates an HsMenuEvent::ShowAppSettings event.
+ \param entryId Id of an item.
+ \return Event for view the Application Settings.
+*/
+QEvent *HsMenuEventFactory::createAppSettingsViewEvent(int entryId)
+{
+ QVariantMap params;
+ params.insert(itemIdKey(), entryId);
+
+ return new HsMenuEvent(HsMenuEvent::ShowAppSettings, params);
+}
+
+/*!
Creates an HsMenuEvent::Unknown event.
\return Unknown event.
--- a/homescreenapp/hsutils/src/hsmenueventtransition.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsutils/src/hsmenueventtransition.cpp Mon May 03 12:24:59 2010 +0300
@@ -21,7 +21,7 @@
/*!
\class HsMenuEventTransition
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsutils
\brief Transition that happens when specifc event occurs.
\sa HsMenuEvent
--- a/homescreenapp/hsutils/src/hspageindicator.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsutils/src/hspageindicator.cpp Mon May 03 12:24:59 2010 +0300
@@ -136,8 +136,9 @@
layout->setSpacing(8);
layout->addStretch();
foreach (HsPageIndicatorItem *item, mItems) {
+ item->setPreferredSize(preferredHeight(), preferredHeight());
layout->addItem(item);
- }
+ }
layout->addStretch();
setLayout(layout);
}
--- a/homescreenapp/hsutils/src/hspageindicatoritem.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsutils/src/hspageindicatoritem.cpp Mon May 03 12:24:59 2010 +0300
@@ -87,7 +87,6 @@
return mIsActive;
}
-
/*!
*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/src/hstitleresolver.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QDebug>
+#include <QGraphicsLinearLayout>
+#include <HbTextItem>
+
+#include "hstitleresolver.h"
+#include "hsdeviceinfolistener.h"
+#include <QDebug>
+
+namespace
+{
+ //Offline text in home screen view title
+ const char hsLocTextId_Title_Offline[] = "txt_homescreen_title_offline";
+
+ //Text in home screen view title, when device is out of network coverage or no SIM card present
+ const char hsLocTextId_Title_NoService[] = "txt_homescreen_title_no_service";
+}
+
+/*!
+
+*/
+HsTitleResolver::HsTitleResolver(QObject *parent)
+ : QObject(parent),
+ mCurrentStatus(HsDeviceInfoListener::NoService)
+{
+ mDeviceInfoListener = new HsDeviceInfoListener(this);
+ mOperatorName = mDeviceInfoListener->operatorName();
+ mOfflineText = hbTrId(hsLocTextId_Title_Offline);
+ mNoServiceText = hbTrId(hsLocTextId_Title_NoService);
+
+ connect(mDeviceInfoListener, SIGNAL(networkNameChanged(QString)), SLOT(onNetworkNameChanged(QString)));
+ connect(mDeviceInfoListener, SIGNAL(statusChanged(HsDeviceInfoListener::HsDeviceInfoStatus)), SLOT(onStatusChanged(HsDeviceInfoListener::HsDeviceInfoStatus)));
+ mCurrentStatus = mDeviceInfoListener->status();
+}
+
+/*!
+
+*/
+HsTitleResolver::~HsTitleResolver()
+{
+}
+
+/*!
+
+*/
+QString HsTitleResolver::title()
+{
+ QString titleText;
+ switch (mCurrentStatus) {
+ case HsDeviceInfoListener::NoService:
+ titleText = mNoServiceText;
+ break;
+ case HsDeviceInfoListener::OfflineProfile:
+ titleText = mOfflineText;
+ break;
+ default:
+ if(mOperatorName.isEmpty()) {
+ //Sometimes devicelistener has not get operatorNameChanged signal when
+ //profile is changed from Offline to another which has active connections.
+ mOperatorName = mDeviceInfoListener->operatorName();
+ }
+ titleText = mOperatorName;
+ break;
+ };
+ qDebug() << "HsTitleResolver::title() - " << titleText;
+ return titleText;
+}
+
+/*!
+
+*/
+void HsTitleResolver::onNetworkNameChanged(const QString& name)
+{
+ qDebug() << "HsTitleResolver::onNetworkNameChanged() - Entry";
+ if (mOperatorName != name && (mCurrentStatus == HsDeviceInfoListener::ServiceAvailable)) {
+ qDebug() << "HsTitleResolver::onNetworkNameChanged() - Emitting: " << name;
+ mOperatorName = name;
+ emit titleChanged(name);
+ }
+ qDebug() << "HsTitleResolver::onNetworkNameChanged() - Exit";
+}
+
+/*!
+
+*/
+void HsTitleResolver::onStatusChanged(HsDeviceInfoListener::HsDeviceInfoStatus status)
+{
+ qDebug() << "HsTitleResolver::onStatusChanged() - Entry";
+ if (mCurrentStatus != status) {
+ mCurrentStatus = status;
+ qDebug() << "HsTitleResolver::onStatusChanged() - Emitting: " << title();
+ emit titleChanged(title());
+ }
+ qDebug() << "HsTitleResolver::onStatusChanged() - Exit";
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/hsutils/src/hswallpaperhelper.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Homescreen wallpaper helper class.
+*
+*/
+
+#include <QString>
+#include <QImageReader>
+
+#include "hswallpaperhelper.h"
+
+
+/*!
+ \class HsWallpaperHelper
+ \ingroup group_hsapplication
+ \brief Homescreen wallpaper helper class.
+ Implements image scaling and cropping services.
+*/
+
+/*!
+ \internal
+ Scales and crops (if needed) \a sourcePath image using \a targetRect.
+ Centers target rect automatically if a\ centerTarget is true.
+ Pass empty a\ sourceRect to use full size source image as starting point.
+ Returns processed image or null image if operation fails.
+*/
+QImage HsWallpaperHelper::processImage(const QString &sourcePath,
+ const QRect &targetRect,
+ const QRect &sourceRect,
+ bool centerTarget)
+{
+ QImageReader imageReader(sourcePath);
+
+ QRect tempTargetRect = targetRect;
+ QRect tempSourceRect = sourceRect;
+
+ if (imageReader.canRead()) {
+ QSize sourceSize = imageReader.size();
+ if (tempSourceRect.isEmpty()) {
+ // If sourceRect not defined, uses full size image as source.
+ tempSourceRect.setRect(0, 0, sourceSize.width(), sourceSize.height());
+ }
+ sourceSize.scale(tempTargetRect.width(), tempTargetRect.height(),
+ Qt::KeepAspectRatioByExpanding);
+ imageReader.setScaledSize(sourceSize);
+
+ if (centerTarget) {
+ tempTargetRect.moveCenter(QPoint(sourceSize.width() / 2, sourceSize.height() / 2));
+ }
+ imageReader.setScaledClipRect(tempTargetRect);
+
+ return imageReader.read();
+ }
+ return QImage(); // returns null QImage
+}
--- a/homescreenapp/hsutils/src/hswidgetpositioningonorientationchange.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/hsutils/src/hswidgetpositioningonorientationchange.cpp Mon May 03 12:24:59 2010 +0300
@@ -59,45 +59,6 @@
*/
/*!
- \class HsSimpleWidgetPositioningOnOrientationChange
- \brief Simpe widget positioning algorithm.
-
- Bounds center points of \a fromGeometries to the
- \a toRect. \a fromRect is not used by the algorithm.
- \verbatim
- ------
- | A |
- | |
- | |
- | |
- ------
- \endverbatim
- and after conversion widgets from A are moved to A':
- \verbatim
- |----------|
- |A' |
- |----------|
- \endverbatim
- and vice versa.
-*/
-QList<QRectF> HsSimpleWidgetPositioningOnOrientationChange::convert(
- const QRectF &fromRect,
- const QList<QRectF> &fromGeometries,
- const QRectF &toRect)
-{
- Q_UNUSED(fromRect)
- QList<QRectF> toGeometries;
- foreach (QRectF g, fromGeometries) {
- QPointF c(g.center());
- qreal x = qBound(toRect.left(), c.x(), toRect.right());
- qreal y = qBound(toRect.top(), c.y(), toRect.bottom());
- g.moveCenter(QPointF(x, y));
- toGeometries << g;
- }
- return toGeometries;
-}
-
-/*!
\class HsAdvancedWidgetPositioningOnOrientationChange
\brief More advanced widget positioning algorithm.
@@ -127,151 +88,59 @@
const QRectF &toRect)
{
QList<QRectF> toGeometries;
- // check if moving from landscape to portrait
- if ( fromRect.width() > fromRect.height() ) {
+
+ // Portrait -> Landscape
+ if (fromRect.width() < fromRect.height()) {
foreach (QRectF g, fromGeometries) {
- QRectF leftHalf = QRectF(fromRect.x(), fromRect.y(), fromRect.width()/2, fromRect.height());
- QPointF c(g.center());
- qreal x = 0;
- qreal y = 0;
- if ( leftHalf.contains(c) ) {
- x = qBound(toRect.left(), c.x(), toRect.right());
- y = qBound(toRect.top(), c.y(), toRect.bottom());
+
+ QRectF tg(g.topLeft() - fromRect.topLeft(), g.size());
+
+ qreal x = tg.center().x() / fromRect.width();
+ qreal y = tg.center().y() / (fromRect.height() / 2);
+
+ if (y < 1) {
+ x *= toRect.width() / 2;
+ y *= toRect.height();
} else {
- QRectF lowerHalf = QRectF(toRect.x(), toRect.y()+toRect.height()/2, toRect.width(), toRect.height()/2);
- x = qBound(toRect.left(), c.x()-leftHalf.width(), toRect.right());
- y = qBound(lowerHalf.top(), c.y()+leftHalf.height(), lowerHalf.bottom());
+ x *= toRect.width() / 2;
+ x += toRect.width() / 2;
+ y -= 1;
+ y *= toRect.height();
}
- g.moveCenter(QPointF(x, y));
- toGeometries << g;
+
+ x = qBound(g.width() / 2, x, toRect.width() - g.width() / 2);
+ y = qBound(g.height() / 2, y, toRect.height() - g.height() / 2);
+
+ g.moveCenter(QPointF(x, y) + toRect.topLeft());
+
+ toGeometries.append(g);
}
- }
- else { // moving from portrait to landscape
+ } else { // Landscape -> Portrait
foreach (QRectF g, fromGeometries) {
- QRectF upperHalf = QRectF(fromRect.x(), fromRect.y(), fromRect.width(), fromRect.height()/2);
- QPointF c(g.center());
- qreal x = 0;
- qreal y = 0;
- if ( upperHalf.contains(c) ) {
- x = qBound(toRect.left(), c.x(), toRect.right());
- y = qBound(toRect.top(), c.y(), toRect.bottom());
+
+ QRectF tg(g.topLeft() - fromRect.topLeft(), g.size());
+
+ qreal x = tg.center().x() / (fromRect.width() / 2);
+ qreal y = tg.center().y() / fromRect.height();
+
+ if (x < 1) {
+ x *= toRect.width();
+ y *= toRect.height() / 2;
} else {
- QRectF rightHalf = QRectF(toRect.x()+toRect.width()/2, toRect.y(), toRect.width()/2, toRect.height());
- x = qBound(rightHalf.left(), c.x()+rightHalf.width(), rightHalf.right());
- y = qBound(toRect.top(), c.y()-upperHalf.height(), toRect.bottom());
+ x -= 1;
+ x += toRect.width();
+ y *= toRect.height() / 2;
+ y += toRect.height() / 2;
}
- g.moveCenter(QPointF(x, y));
- toGeometries << g;
+
+ x = qBound(g.width() / 2, x, toRect.width() - g.width() / 2);
+ y = qBound(g.height() / 2, y, toRect.height() - g.height() / 2);
+
+ g.moveCenter(QPointF(x, y) + toRect.topLeft());
+
+ toGeometries.append(g);
}
}
return toGeometries;
}
-
-/*!
- \class HsRelativePositionWidgetPositioningOnOrientationChange
- \brief More advanced widget positioning algorithm.
-
- Calculates new center points of
- \a fromGeometries when moving from \a fromRect to \a toRect.
- It calculates widget's relative position on the screen and then calculates new position on the target rect:
- \verbatim
- w
- -------
- | A |
- |(x,y)| h
- | |
- | |
- -------
- \endverbatim
- \verbatim
- w'
- |----------|
- |A'(x',y') | h'
- |----------|
- \endverbatim
- A(x,y) -> A'(x',y') where x'=x*w'/w and y'=y*h'/h and w=width of original rect and h=height of original rect and
- w'=width of target rect and h=height of target rect.
-*/
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-QList<QRectF> HsRelativePositionWidgetPositioningOnOrientationChange::convert(
- const QRectF &fromRect,
- const QList<QRectF> &fromGeometries,
- const QRectF &toRect)
-{
- qreal xTransformation = toRect.width()/fromRect.width();
- qreal yTransformation= toRect.height()/fromRect.height();
- QList<QRectF> toGeometries;
- foreach (QRectF g, fromGeometries) {
- QPointF c(g.center());
- qreal x = qBound(toRect.left(), c.x()*xTransformation, toRect.right());
- qreal y = qBound(toRect.top(), c.y()*yTransformation, toRect.bottom());
- g.moveCenter(QPointF(x, y));
- toGeometries << g;
- }
- return toGeometries;
-}
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
-
-/*!
- \class HsKeepCornerPositionWidgetPositioningOnOrientationChange
- \brief More advanced widget positioning algorithm.
-
- Calculates new center points of
- \a fromGeometries when moving from \a fromRect to \a toRect.
- It checks if left or right edge is closer to widget's center and keeps that distance same on the target rect.
- And same with upper and lower edges.
- \verbatim
- w
- -------
- | A |
- |(x,y)| h
- | |
- | |
- -------
- \endverbatim
- \verbatim
- w'
- |----------|
- |A'(x',y') | h'
- |----------|
- \endverbatim
-*/
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-QList<QRectF> HsKeepCornerPositionWidgetPositioningOnOrientationChange::convert(
- const QRectF &fromRect,
- const QList<QRectF> &fromGeometries,
- const QRectF &toRect)
-{
- QList<QRectF> toGeometries;
- foreach (QRectF g, fromGeometries) {
- QPointF c(g.center());
- qreal x = 0;
- qreal y = 0;
- if ( c.x()-fromRect.x() < fromRect.right() - c.x() ) {
- x = qBound(toRect.left(), c.x(), toRect.right());
- }
- else {
- x = qBound(toRect.left(), toRect.right() - fromRect.right() + c.x(), toRect.right());
- }
- if ( c.y()-fromRect.y() < fromRect.bottom() - c.y() ) {
- y = qBound(toRect.top(), c.y(), toRect.bottom());
- }
- else {
- y = qBound(toRect.top(), toRect.bottom() - fromRect.bottom() + c.y(), toRect.bottom());
- }
- g.moveCenter(QPointF(x, y));
- toGeometries << g;
- }
- return toGeometries;
-}
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/inc/hsapp_defs.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/inc/hsapp_defs.h Mon May 03 12:24:59 2010 +0300
@@ -40,6 +40,11 @@
inline const QString urlEntryKey();
inline const QString defaultCollectionIconId();
inline const QString menuModeType();
+inline const QString swTypeKey();
+inline const QString javaSwType();
+inline const QString packageTypeName();
+inline const QString appSettingsPlugin();
+inline const QString groupNameAttributeName();
// Sort attribute
enum HsSortAttribute {
@@ -56,13 +61,15 @@
AddHsMenuMode
};
-const int taskSwitcherUid = 0x2002677D;
-const int taskSwitcherPropertyValue = 1;
+const char TS_DEVICE_DIALOG_URI[] =
+ "com.nokia.taskswitcher.tsdevicedialogplugin/1.0";
const char LIBRARY[] = "library";
const char URI[] = "uri";
const char PREFERENCES[] = "preferences";
+const int softwareUpdateApplicationUid = 0x2001FE2F;
+
#include "hsapp_defs.inl"
#endif
--- a/homescreenapp/inc/hsapp_defs.inl Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/inc/hsapp_defs.inl Mon May 03 12:24:59 2010 +0300
@@ -226,4 +226,50 @@
return name;
}
+/*!
+ \return sw type key
+*/
+inline const QString swTypeKey()
+{
+ static const QString key("apptype");
+ return key;
+}
+
+/*!
+ \return package entry type name
+*/
+inline const QString packageTypeName()
+{
+ static const QString name("package");
+ return name;
+}
+
+/*!
+ \return java sw type
+*/
+inline const QString javaSwType()
+{
+ static const QString value("java");
+ return value;
+}
+
+/*!
+ \return application settings plugin
+*/
+inline const QString appSettingsPlugin()
+{
+ static const QString key("app_settings_plugin");
+ return key;
+}
+
+/*!
+ \return application group name
+*/
+inline const QString groupNameAttributeName()
+{
+ static const QString key("appgroup_name");
+ return key;
+}
+
+
#endif
--- a/homescreenapp/rom/homescreenapp_core.iby Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/rom/homescreenapp_core.iby Mon May 03 12:24:59 2010 +0300
@@ -20,93 +20,84 @@
// ---- hsapplication --------------------------------------------
-file=ABI_DIR\BUILD_DIR\hsapplication.exe PROGRAMS_DIR\hsapplication.exe
-data=ZPRIVATE\10003a3f\import\apps\hsapplication_reg.rsc private\10003a3f\import\apps\hsapplication_reg.rsc
-data=\epoc32\data\z\resource\apps\hsapplication.rsc resource\apps\hsapplication.rsc
-data=\epoc32\data\z\resource\apps\hsapplication.mif resource\apps\hsapplication.mif
-data=ZPRIVATE\20022f35\homescreen.db private\20022f35\homescreen.db
-data=ZPRIVATE\20022f35\wallpapers\d_portrait.png private\20022f35\wallpapers\d_portrait.png
-data=ZPRIVATE\20022f35\wallpapers\d_landscape.png private\20022f35\wallpapers\d_landscape.png
-data=\epoc32\data\z\data\images\kqtihswallpapers\bg_1.png data\images\kqtihswallpapers\bg_1.png
-data=\epoc32\data\z\data\images\kqtihswallpapers\bg_2.png data\images\kqtihswallpapers\bg_2.png
-data=\epoc32\data\z\data\images\kqtihswallpapers\bg_3.png data\images\kqtihswallpapers\bg_3.png
+file=ABI_DIR\BUILD_DIR\hsapplication.exe PROGRAMS_DIR\hsapplication.exe
+data=ZPRIVATE\10003a3f\import\apps\hsapplication_reg.rsc private\10003a3f\import\apps\hsapplication_reg.rsc
+data=\epoc32\data\z\resource\apps\hsapplication.rsc resource\apps\hsapplication.rsc
+data=\epoc32\data\z\resource\apps\hsapplication.mif resource\apps\hsapplication.mif
+data=ZPRIVATE\20022f35\homescreen.db private\20022f35\homescreen.db
+data=ZPRIVATE\20022f35\wallpapers\d_portrait.png private\20022f35\wallpapers\d_portrait.png
+data=ZPRIVATE\20022f35\wallpapers\d_landscape.png private\20022f35\wallpapers\d_landscape.png
// ---- hsutils --------------------------------------------
-file=ABI_DIR\BUILD_DIR\hsutils.dll SHARED_LIB_DIR\hsutils.dll
+file=ABI_DIR\BUILD_DIR\hsutils.dll SHARED_LIB_DIR\hsutils.dll
// ---- hsdomainmodel --------------------------------------------
-file=ABI_DIR\BUILD_DIR\hsdomainmodel.dll SHARED_LIB_DIR\hsdomainmodel.dll
+file=ABI_DIR\BUILD_DIR\hsdomainmodel.dll SHARED_LIB_DIR\hsdomainmodel.dll
// -------- hshomescreenclientplugin
-file=ABI_DIR\BUILD_DIR\hshomescreenclientplugin.dll SHARED_LIB_DIR\hshomescreenclientplugin.dll
-data=\epoc32\data\z\hsresources\plugins\homescreenclientplugin\hshomescreenclientplugin.qtplugin hsresources\plugins\homescreenclientplugin\hshomescreenclientplugin.qtplugin
-data=\epoc32\data\z\hsresources\plugins\homescreenclientplugin\hshomescreenclientplugin.xml hsresources\plugins\homescreenclientplugin\hshomescreenclientplugin.xml
+file=ABI_DIR\BUILD_DIR\hshomescreenclientplugin.dll SHARED_LIB_DIR\hshomescreenclientplugin.dll
+data=\epoc32\data\z\resource\qt\plugins\hshomescreenclientplugin.qtplugin resource\qt\plugins\hshomescreenclientplugin.qtplugin
+data=ZPRIVATE\20022f35\hshomescreenclientplugin.xml private\20022f35\hshomescreenclientplugin.xml
// ---- runtimeplugins --------------------------------------------
// -------- hsdefaultruntimeplugin
-file=ABI_DIR\BUILD_DIR\hsdefaultruntimeplugin.dll SHARED_LIB_DIR\hsdefaultruntimeplugin.dll
-data=\epoc32\data\z\hsresources\plugins\runtimeplugins\hsdefaultruntimeplugin.qtplugin hsresources\plugins\runtimeplugins\hsdefaultruntimeplugin.qtplugin
-data=\epoc32\data\z\hsresources\plugins\runtimeplugins\hsdefaultruntimeplugin.xml hsresources\plugins\runtimeplugins\hsdefaultruntimeplugin.xml
+file=ABI_DIR\BUILD_DIR\hsdefaultruntimeplugin.dll SHARED_LIB_DIR\hsdefaultruntimeplugin.dll
+data=ZPRIVATE\20022f35\plugins\runtimeplugins\hsdefaultruntimeplugin.qtplugin private\20022f35\plugins\runtimeplugins\hsdefaultruntimeplugin.qtplugin
+data=ZPRIVATE\20022f35\plugins\runtimeplugins\hsdefaultruntimeplugin.xml private\20022f35\plugins\runtimeplugins\hsdefaultruntimeplugin.xml
// ---- serviceproviders --------------------------------------------
// -------- hsmenuserviceprovider
-file=ABI_DIR\BUILD_DIR\hsmenuserviceprovider.dll SHARED_LIB_DIR\hsmenuserviceprovider.dll
+file=ABI_DIR\BUILD_DIR\hsmenuserviceprovider.dll SHARED_LIB_DIR\hsmenuserviceprovider.dll
// ---- stateplugins --------------------------------------------
// -------- hsapplibrarystateplugin
-file=ABI_DIR\BUILD_DIR\hsapplibrarystateplugin.dll SHARED_LIB_DIR\hsapplibrarystateplugin.dll
-data=\epoc32\data\z\hsresources\plugins\stateplugins\hsapplibrarystateplugin.qtplugin hsresources\plugins\stateplugins\hsapplibrarystateplugin.qtplugin
-data=\epoc32\data\z\hsresources\plugins\stateplugins\hsapplibrarystateplugin.xml hsresources\plugins\stateplugins\hsapplibrarystateplugin.xml
+file=ABI_DIR\BUILD_DIR\hsapplibrarystateplugin.dll SHARED_LIB_DIR\hsapplibrarystateplugin.dll
+data=ZPRIVATE\20022f35\plugins\stateplugins\hsapplibrarystateplugin.qtplugin private\20022f35\plugins\stateplugins\hsapplibrarystateplugin.qtplugin
+data=ZPRIVATE\20022f35\plugins\stateplugins\hsapplibrarystateplugin.xml private\20022f35\plugins\stateplugins\hsapplibrarystateplugin.xml
// -------- hshomescreenstateplugin
-file=ABI_DIR\BUILD_DIR\hshomescreenstateplugin.dll SHARED_LIB_DIR\hshomescreenstateplugin.dll
-data=\epoc32\data\z\hsresources\plugins\stateplugins\hshomescreenstateplugin.qtplugin hsresources\plugins\stateplugins\hshomescreenstateplugin.qtplugin
-data=\epoc32\data\z\hsresources\plugins\stateplugins\hshomescreenstateplugin.xml hsresources\plugins\stateplugins\hshomescreenstateplugin.xml
+file=ABI_DIR\BUILD_DIR\hshomescreenstateplugin.dll SHARED_LIB_DIR\hshomescreenstateplugin.dll
+data=ZPRIVATE\20022f35\plugins\stateplugins\hshomescreenstateplugin.qtplugin private\20022f35\plugins\stateplugins\hshomescreenstateplugin.qtplugin
+data=ZPRIVATE\20022f35\plugins\stateplugins\hshomescreenstateplugin.xml private\20022f35\plugins\stateplugins\hshomescreenstateplugin.xml
// -------- hsmenuworkerstateplugin
-file=ABI_DIR\BUILD_DIR\hsmenuworkerstateplugin.dll SHARED_LIB_DIR\hsmenuworkerstateplugin.dll
-data=\epoc32\data\z\hsresources\plugins\stateplugins\hsmenuworkerstateplugin.qtplugin hsresources\plugins\stateplugins\hsmenuworkerstateplugin.qtplugin
-data=\epoc32\data\z\hsresources\plugins\stateplugins\hsmenuworkerstateplugin.xml hsresources\plugins\stateplugins\hsmenuworkerstateplugin.xml
+file=ABI_DIR\BUILD_DIR\hsmenuworkerstateplugin.dll SHARED_LIB_DIR\hsmenuworkerstateplugin.dll
+data=ZPRIVATE\20022f35\plugins\stateplugins\hsmenuworkerstateplugin.qtplugin private\20022f35\plugins\stateplugins\hsmenuworkerstateplugin.qtplugin
+data=ZPRIVATE\20022f35\plugins\stateplugins\hsmenuworkerstateplugin.xml private\20022f35\plugins\stateplugins\hsmenuworkerstateplugin.xml
// ---- widgetplugins --------------------------------------------
// -------- hsshortcutwidgetplugin
-file=ABI_DIR\BUILD_DIR\hsshortcutwidgetplugin.dll SHARED_LIB_DIR\hsshortcutwidgetplugin.dll
-data=ZPRIVATE\20022F35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.qtplugin private\20022f35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.qtplugin
-data=ZPRIVATE\20022F35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.manifest private\20022f35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.manifest
-data=ZPRIVATE\20022F35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.xml private\20022f35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.xml
+file=ABI_DIR\BUILD_DIR\hsshortcutwidgetplugin.dll SHARED_LIB_DIR\hsshortcutwidgetplugin.dll
+data=ZPRIVATE\20022F35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.qtplugin private\20022f35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.qtplugin
+data=ZPRIVATE\20022F35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.manifest private\20022f35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.manifest
+data=ZPRIVATE\20022F35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.xml private\20022f35\import\widgetregistry\20022F46\hsshortcutwidgetplugin.xml
// -------- hsclockwidgetplugin
-file=ABI_DIR\BUILD_DIR\hsclockwidgetplugin.dll SHARED_LIB_DIR\hsclockwidgetplugin.dll
-data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.qtplugin private\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.qtplugin
-data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.manifest private\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.manifest
-data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\tclock.png private\20022f35\import\widgetregistry\20022F6C\tclock.png
-data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.xml private\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.xml
+file=ABI_DIR\BUILD_DIR\hsclockwidgetplugin.dll SHARED_LIB_DIR\hsclockwidgetplugin.dll
+data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.qtplugin private\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.qtplugin
+data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.manifest private\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.manifest
+data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\tclock.png private\20022f35\import\widgetregistry\20022F6C\tclock.png
+data=ZPRIVATE\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.xml private\20022f35\import\widgetregistry\20022F6C\hsclockwidgetplugin.xml
// -------- hsdialerwidgetplugin
-file=ABI_DIR\BUILD_DIR\hsdialerwidgetplugin.dll SHARED_LIB_DIR\hsdialerwidgetplugin.dll
-data=ZPRIVATE\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.qtplugin private\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.qtplugin
-data=ZPRIVATE\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.manifest private\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.manifest
-data=ZPRIVATE\20022f35\import\widgetregistry\20022F44\qtg_graf_hs_dialer.svg private\20022f35\import\widgetregistry\20022F44\qtg_graf_hs_dialer.svg
-data=ZPRIVATE\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.xml private\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.xml
-
-// ---- style plugins --------------------------------------------------
-
-// -------- hsanalogclockstyleplugin
-file=ABI_DIR\BUILD_DIR\hsanalogclockstyleplugin.dll SHARED_LIB_DIR\hsanalogclockstyleplugin.dll
-data=\epoc32\data\z\hsresources\plugins\styleplugins\hsanalogclockstyleplugin.qtplugin hsresources\plugins\styleplugins\hsanalogclockstyleplugin.qtplugin
+file=ABI_DIR\BUILD_DIR\hsdialerwidgetplugin.dll SHARED_LIB_DIR\hsdialerwidgetplugin.dll
+data=ZPRIVATE\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.qtplugin private\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.qtplugin
+data=ZPRIVATE\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.manifest private\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.manifest
+data=ZPRIVATE\20022f35\import\widgetregistry\20022F44\qtg_graf_hs_dialer.svg private\20022f35\import\widgetregistry\20022F44\qtg_graf_hs_dialer.svg
+data=ZPRIVATE\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.xml private\20022f35\import\widgetregistry\20022F44\hsdialerwidgetplugin.xml
// ---- IMenuClient --------------------------------------------
-// -------- hsmenucontentpublish
-file=ABI_DIR\BUILD_DIR\hsmenucontentpublish.dll SHARED_LIB_DIR\hsmenucontentpublish.dll
-data=\epoc32\data\z\hsresources\plugins\hsmenucontentpublishplugin\hsmenucontentpublish.qtplugin hsresources\plugins\hsmenucontentpublishplugin\hsmenucontentpublish.qtplugin
-data=\epoc32\data\z\hsresources\plugins\hsmenucontentpublishplugin\hsmenucontentpublish.xml hsresources\plugins\hsmenucontentpublishplugin\hsmenucontentpublish.xml
+// -------- hsmenuclientplugin
+file=ABI_DIR\BUILD_DIR\hsmenuclientplugin.dll SHARED_LIB_DIR\hsmenuclientplugin.dll
+data=\epoc32\data\z\resource\qt\plugins\hsmenuclientplugin.qtplugin resource\qt\plugins\hsmenuclientplugin.qtplugin
+data=ZPRIVATE\20022f35\hsmenuclientplugin.xml private\20022f35\hsmenuclientplugin.xml
#endif //__HOMESCREENAPP_CORE_IBY__
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -18,13 +18,15 @@
CONFIG += plugin hb mobility
MOBILITY = serviceframework publishsubscribe
-PLUGIN_SUBDIR = /hsresources/plugins/runtimeplugins
+RESOURCES += hsdefaultruntimeplugin.qrc
+
+PLUGIN_SUBDIR = /private/20022F35/plugins/runtimeplugins
include (../../common.pri)
LIBS += -lhsdomainmodel \
-lhsutils
-
+
QT += xml sql
DEPENDPATH += ./inc \
@@ -35,7 +37,7 @@
symbian: {
TARGET.UID3 = 0x20022F3E
- appkey:DEFINES += S60APP_KEY
+ LIBS += -lxqkeycapture
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/hsdefaultruntimeplugin.qrc Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource>
+ <file>resource/tapandhold.axml</file>
+ </qresource>
+</RCC>
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsdefaultruntime.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/inc/hsdefaultruntime.h Mon May 03 12:24:59 2010 +0300
@@ -21,6 +21,10 @@
#include <QStateMachine>
#include <qmobilityglobal.h>
+#ifdef Q_OS_SYMBIAN
+#include <xqkeycapture.h>
+#endif
+
#ifndef HSDEFAULTRUNTIMEPLUGIN_UNITTEST
#define TEST_CLASS_FWD
#define TEST_FRIEND
@@ -55,6 +59,8 @@
private:
Q_DISABLE_COPY(HsDefaultRuntime)
+ void registerAnimations();
+
void createStatePublisher();
void createContentServiceParts();
void createStates();
@@ -72,6 +78,10 @@
bool mIdleStateActive;
QValueSpacePublisher *mPublisher;
+
+#ifdef Q_OS_SYMBIAN
+ XqKeyCapture keyCapture;
+#endif
TEST_FRIEND
};
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/resource/hsdefaultruntimeplugin.s60xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>hsdefaultruntimeplugin</name>
- <filepath>z:/hsresources/plugins/runtimeplugins/hsdefaultruntimeplugin.qtplugin</filepath>
- <description>Homescreen Runtime Plugin</description>
- <interface>
- <name>com.nokia.symbian.IHomeScreenRuntime</name>
- <version>1.0</version>
- <description>Default implementation for homescreen runtime</description>
- <capabilities></capabilities>
- </interface>
-</service>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/resource/tapandhold.axml Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,14 @@
+<animations>
+ <icon name="tapandhold_animation" playmode="playonce">
+ <frame duration="200">qtg_anim_longtap_0</frame>
+ <frame duration="16">qtg_anim_longtap_1</frame>
+ <frame duration="16">qtg_anim_longtap_2</frame>
+ <frame duration="16">qtg_anim_longtap_3</frame>
+ <frame duration="16">qtg_anim_longtap_4</frame>
+ <frame duration="16">qtg_anim_longtap_5</frame>
+ <frame duration="16">qtg_anim_longtap_6</frame>
+ <frame duration="16">qtg_anim_longtap_7</frame>
+ <frame duration="16">qtg_anim_longtap_8</frame>
+ <frame duration="16">qtg_anim_longtap_9</frame>
+ </icon>
+ </animations>
--- a/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/runtimeplugins/hsdefaultruntimeplugin/src/hsdefaultruntime.cpp Mon May 03 12:24:59 2010 +0300
@@ -19,6 +19,7 @@
#include <QFinalState>
#include <QSignalTransition>
#include <QKeyEventTransition>
+#include <QKeyEvent>
#include <qvaluespacepublisher.h>
#include <qservicemanager.h>
@@ -26,6 +27,8 @@
#include <qserviceinterfacedescriptor.h>
#include <HbInstance>
+#include <HbIconAnimationManager>
+#include <HbIconAnimationDefinition>
#include "homescreendomainpskeys.h"
#include "hsdefaultruntime.h"
@@ -39,12 +42,22 @@
QTM_USE_NAMESPACE
-#ifdef S60APP_KEY
-int applicationKey = Qt::Key_Launch0;
+
+#ifdef Q_OS_SYMBIAN
+const static Qt::Key applicationKey = Qt::Key_Menu;
#else
-int applicationKey = Qt::Key_Any;
+const static Qt::Key applicationKey = Qt::Key_Home;
#endif
+namespace
+{
+ const char KHsLoadSceneStateInterface[] = "com.nokia.homescreen.state.HsLoadSceneState";
+ const char KHsIdleStateInterface[] = "com.nokia.homescreen.state.HsIdleState";
+ const char KHsAppLibraryStateInterface[] = "com.nokia.homescreen.state.HsAppLibraryState";
+ const char KHsMenuWorkerStateInterface[] = "com.nokia.homescreen.state.HsMenuWorkerState";
+}
+
+
/*!
\class HsDefaultRuntime
\ingroup group_hsdefaultruntimeplugin
@@ -65,6 +78,9 @@
mHomeScreenActive(false),
mIdleStateActive(false),
mPublisher(NULL)
+#ifdef Q_OS_SYMBIAN
+ ,keyCapture()
+#endif
{
HSTEST_FUNC_ENTRY("HS::HsDefaultRuntime::HsDefaultRuntime");
@@ -73,7 +89,7 @@
#ifdef Q_OS_SYMBIAN
db->setDatabaseName("c:/private/20022f35/homescreen.db");
#else
- db->setDatabaseName("homescreen.db");
+ db->setDatabaseName("private/20022f35/homescreen.db");
#endif
db->open();
HsDatabase::setInstance(db);
@@ -83,6 +99,8 @@
HsWidgetPositioningOnWidgetAdd::setInstance(
new HsAnchorPointInBottomRight);
+
+ registerAnimations();
createStatePublisher();
createContentServiceParts();
@@ -116,22 +134,42 @@
switch (event->type()) {
case QEvent::ApplicationActivate:
- {
- qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationActivate";
- mHomeScreenActive = true;
- updatePSKeys();
- }
- break;
+ qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationActivate";
+#ifdef Q_OS_SYMBIAN
+ keyCapture.captureKey(applicationKey);
+#endif
+ mHomeScreenActive = true;
+ updatePSKeys();
+ break;
case QEvent::ApplicationDeactivate:
- {
- qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationDeactivate";
+ qDebug() << "HsDefaultRuntime::eventFilter: QEvent::ApplicationDeactivate";
+#ifdef Q_OS_SYMBIAN
+ keyCapture.cancelCaptureKey(applicationKey);
+#endif
mHomeScreenActive = false;
- updatePSKeys();
- }
- break;
+ updatePSKeys();
+ break;
+ default:
+ break;
}
-
- return QStateMachine::eventFilter(watched, event);
+
+ bool result = QStateMachine::eventFilter(watched, event);
+ // temporary hack as we should not register twice for events
+ if (event->type() == QEvent::KeyPress ) {
+ QKeyEvent* ke = static_cast<QKeyEvent *>(event);
+ // Key_Launch0 should be removed when QT starts to send Key_Menu
+ result = (ke->key() == applicationKey) || ke->key() == Qt::Key_Launch0;
+ }
+ return result;
+}
+
+/*!
+ Registers framework animations.
+*/
+void HsDefaultRuntime::registerAnimations()
+{
+ HbIconAnimationManager *manager = HbIconAnimationManager::global();
+ manager->addDefinitionFile(QLatin1String(":/resource/tapandhold.axml"));
}
/*!
@@ -178,25 +216,16 @@
QServiceManager manager;
- QServiceFilter filter;
-
- filter.setInterface("com.nokia.homescreen.state.HsLoadSceneState");
-#ifdef HSDEFAULTRUNTIMEPLUGIN_UNITTEST
- filter.setServiceName("mockstateplugins");
-#endif
- QList<QServiceInterfaceDescriptor> interfaces = manager.findInterfaces(filter);
-
- QObject *loadSceneStateObj = manager.loadInterface(interfaces.first());
+
+ QObject *loadSceneStateObj = manager.loadInterface(KHsLoadSceneStateInterface);
QState *loadSceneState = qobject_cast<QState *>(loadSceneStateObj);
loadSceneState->setParent(guiRootState);
- loadSceneState->setObjectName(interfaces.first().interfaceName());
+ loadSceneState->setObjectName(KHsLoadSceneStateInterface);
- filter.setInterface("com.nokia.homescreen.state.HsIdleState");
- interfaces = manager.findInterfaces(filter);
- QObject *idleStateObj = manager.loadInterface(interfaces.first());
+ QObject *idleStateObj = manager.loadInterface(KHsIdleStateInterface);
QState *idleState = qobject_cast<QState *>(idleStateObj);
idleState->setParent(guiRootState);
- idleState->setObjectName(interfaces.first().interfaceName());
+ idleState->setObjectName(KHsIdleStateInterface);
connect(idleState, SIGNAL(entered()), SLOT(onIdleStateEntered()));
connect(idleState, SIGNAL(exited()), SLOT(onIdleStateExited()));
@@ -208,20 +237,16 @@
QState::ParallelStates, guiRootState);
QState *menuRootState = new QState(menuParallelState);
- filter.setInterface("com.nokia.homescreen.state.HsAppLibraryState");
- interfaces = manager.findInterfaces(filter);
- QObject *appLibraryStateObj = manager.loadInterface(interfaces.first());
+ QObject *appLibraryStateObj = manager.loadInterface(KHsAppLibraryStateInterface);
QState *appLibraryState = qobject_cast<QState *>(appLibraryStateObj);
appLibraryState->setParent(menuRootState);
- appLibraryState->setObjectName(interfaces.first().interfaceName());
+ appLibraryState->setObjectName(KHsAppLibraryStateInterface);
menuRootState->setInitialState(appLibraryState);
- filter.setInterface("com.nokia.homescreen.state.HsMenuWorkerState");
- interfaces = manager.findInterfaces(filter);
- QObject *menuWorkerStateObj = manager.loadInterface(interfaces.first());
+ QObject *menuWorkerStateObj = manager.loadInterface(KHsMenuWorkerStateInterface);
QState *menuWorkerState = qobject_cast<QState *>(menuWorkerStateObj);
menuWorkerState->setParent(menuParallelState);
- menuWorkerState->setObjectName(interfaces.first().interfaceName());
+ menuWorkerState->setObjectName(KHsMenuWorkerStateInterface);
// root state transitions
idleState->addTransition(idleState, SIGNAL(event_applicationLibrary()), menuRootState);
@@ -243,15 +268,29 @@
// key driven transition from idle to menu
QKeyEventTransition *idleToMenuRootTransition =
new QKeyEventTransition(
- window, QEvent::KeyRelease, applicationKey, idleState);
+ window, QEvent::KeyPress, applicationKey);
idleToMenuRootTransition->setTargetState(menuRootState);
idleState->addTransition(idleToMenuRootTransition);
// key driven transition from menu to idle
QKeyEventTransition *menuToIdleTransition =
new QKeyEventTransition(
- window, QEvent::KeyRelease, applicationKey, idleState);
+ window, QEvent::KeyPress, applicationKey);
menuToIdleTransition->setTargetState(idleState);
menuRootState->addTransition(menuToIdleTransition);
+
+ // transition for Key_Launch0 should be removed
+ // when OT starts to send Key_Menu (maybe wk14)
+ QKeyEventTransition *idleToMenuRootTransition2 =
+ new QKeyEventTransition(
+ window, QEvent::KeyPress, Qt::Key_Launch0);
+ idleToMenuRootTransition2->setTargetState(menuRootState);
+ idleState->addTransition(idleToMenuRootTransition2);
+ // key driven transition from menu to idle
+ QKeyEventTransition *menuToIdleTransition2 =
+ new QKeyEventTransition(
+ window, QEvent::KeyPress, Qt::Key_Launch0);
+ menuToIdleTransition2->setTargetState(idleState);
+ menuRootState->addTransition(menuToIdleTransition2);
// transitions to child states
// opening shortcut to a colleciton
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenucollectionsitemmodel.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenucollectionsitemmodel.h Mon May 03 12:24:59 2010 +0300
@@ -42,7 +42,7 @@
private:
// Function declarations
- QString getSecondLine(CaEntry *entry) const;
+ QString getSecondLine(const CaEntry *entry) const;
};
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/inc/hsmenuservice.h Mon May 03 12:24:59 2010 +0300
@@ -42,6 +42,8 @@
HsSortAttribute sortAttribute = DescendingNameHsSortAttribute);
static HsMenuItemModel *getAllCollectionsModel(
HsSortAttribute sortAttribute = LatestOnTopHsSortAttribute);
+ static HsMenuItemModel *getInstalledModel(
+ HsSortAttribute sortAttribute = DescendingNameHsSortAttribute);
static HsMenuItemModel *getCollectionModel(int collectionId,
HsSortAttribute sortAttribute = LatestOnTopHsSortAttribute,
const QString &collectionType = collectionTypeName());
@@ -65,6 +67,8 @@
static int allCollectionsId();
static bool touch(int entryId);
+
+ static bool launchSoftwareUpdate();
private:
// data
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenucollectionsitemmodel.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenucollectionsitemmodel.cpp Mon May 03 12:24:59 2010 +0300
@@ -52,8 +52,9 @@
QVariant variant;
if (role == Qt::DisplayRole && secondLineVisibility()) {
QList<QVariant> text;
- text << entry(index)->text();
- text << getSecondLine(entry(index));
+ QSharedPointer<CaEntry> item = entry(index);
+ text << item->text();
+ text << getSecondLine(item.data());
variant = QVariant(text);
} else {
variant = CaItemModel::data(index, role);
@@ -70,7 +71,7 @@
\retval string with applications names separated by ','
no longer than 256 bytes
*/
-QString HsMenuCollectionsItemModel::getSecondLine(CaEntry *entry) const
+QString HsMenuCollectionsItemModel::getSecondLine(const CaEntry *entry) const
{
HSMENUTEST_FUNC_ENTRY("HsMenuCollectionsItemModel::getSecondLine");
QString result;
@@ -87,7 +88,7 @@
query.setFlagsOff(MissingEntryFlag);
- QList<CaEntry *> entries = CaService::instance()->getEntries(query);
+ QList< QSharedPointer<CaEntry> > entries = CaService::instance()->getEntries(query);
if (!entries.count()) {
result = QString(hbTrId("txt_applib_dblist_downloaded_val_empty"));
@@ -118,7 +119,6 @@
}
}
}
- qDeleteAll(entries);
HSMENUTEST_FUNC_EXIT("HsMenuCollectionsItemModel::getSecondLine");
return result;
}
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp Mon May 03 12:24:59 2010 +0300
@@ -18,6 +18,7 @@
#include <QDebug>
#include <QStandardItem>
#include <qvaluespacepublisher.h>
+#include <HbDeviceDialog>
#include "hsapp_defs.h"
#include "hsmenuservice.h"
@@ -84,6 +85,29 @@
}
/*!
+ Returns native and java applications.
+ \param sortAttribute :: SortAttribute
+ \retval HsMenuItemModel: installed model
+ */
+HsMenuItemModel *HsMenuService::getInstalledModel(
+ HsSortAttribute sortAttribute)
+{
+ //TODO get proper items
+ qDebug() << "HsMenuService::getInstalledModel" << "sortAttribute:"
+ << sortAttribute;
+ HSMENUTEST_FUNC_ENTRY("HsMenuService::getInstalledModel");
+ CaQuery query;
+ query.addEntryTypeName(packageTypeName());
+ query.setFlagsOn(VisibleEntryFlag | RemovableEntryFlag);
+ query.setFlagsOff(MissingEntryFlag);
+ query.setSort(HsMenuServiceUtils::sortBy(sortAttribute),
+ HsMenuServiceUtils::sortOrder(sortAttribute));
+ HsMenuItemModel *model = new HsMenuItemModel(query);
+ HSMENUTEST_FUNC_EXIT("HsMenuService::getInstalledModel");
+ return model;
+}
+
+/*!
Returns collection model
\param collectionId :: id of this collection
\param sortAttribute :: SortAttribute
@@ -122,12 +146,10 @@
query.setParentId(allCollectionsId());
query.setFlagsOn(VisibleEntryFlag);
query.setFlagsOff(MissingEntryFlag);
- QList<CaEntry *> collections = CaService::instance()->getEntries(query);
+ QList< QSharedPointer<CaEntry> > collections = CaService::instance()->getEntries(query);
QStringList resultList;
- while (!collections.isEmpty()) {
- CaEntry *entry = collections.takeFirst();
+ foreach(QSharedPointer<CaEntry> entry, collections) {
resultList << entry->text();
- delete entry;
}
qDebug() << "HsMenuService::getCollectionNames resultList:"
@@ -145,12 +167,11 @@
{
qDebug() << "HsMenuService::getName entryId:" << entryId;
HSMENUTEST_FUNC_ENTRY("HsMenuService::getName");
- CaEntry *entry = CaService::instance()->getEntry(entryId);
+ QSharedPointer<CaEntry> entry = CaService::instance()->getEntry(entryId);
QString name;
- if (entry) {
+ if (!entry.isNull()) {
name = entry->text();
- delete entry;
}
qDebug() << "HsMenuService::getName name: " << name;
HSMENUTEST_FUNC_EXIT("HsMenuService::getName");
@@ -177,18 +198,10 @@
*/
bool HsMenuService::launchTaskSwitcher()
{
- qDebug() << "HsMenuService::launchTS";
- QScopedPointer<CaEntry> tsEntry(new CaEntry);
- tsEntry->setEntryTypeName(applicationTypeName());
- tsEntry->setAttribute(
- applicationUidEntryKey(), QString::number(taskSwitcherUid));
- int retval = CaService::instance()->executeCommand(*tsEntry,
- openActionIdentifier());
- if(retval) {
- QValueSpacePublisher publisher("/TaskSwitcher");
- publisher.setValue("Activation", taskSwitcherPropertyValue);
- }
- return retval;
+ qDebug() << "HsMenuService::launchTaskSwitcher";
+ HbDeviceDialog deviceDialog;
+ QVariantMap params;
+ return deviceDialog.show(TS_DEVICE_DIALOG_URI, params);
}
/*!
@@ -204,14 +217,14 @@
CaEntry collection(GroupEntryRole);
collection.setEntryTypeName(collectionTypeName());
collection.setText(name);
+ collection.setAttribute(groupNameAttributeName(),name);
CaIconDescription iconDescription;
iconDescription.setFilename(defaultCollectionIconId());
collection.setIconDescription(iconDescription);
- CaEntry *entry = CaService::instance()->createEntry(collection);
- if (entry) {
+ QSharedPointer<CaEntry> entry = CaService::instance()->createEntry(collection);
+ if (!entry.isNull()) {
qDebug() << "HsMenuService::addCollection entry" << entry;
entryId = entry->id();
- delete entry;
CaService::instance()->appendEntryToGroup(allCollectionsId(),
entryId);
}
@@ -232,14 +245,13 @@
<< collectionId << "newCollectionName" << newCollectionName;
HSMENUTEST_FUNC_ENTRY("HsMenuService::renameCollection");
bool result(false);
- CaEntry *collection = CaService::instance()->getEntry(collectionId);
+ QSharedPointer<CaEntry> collection = CaService::instance()->getEntry(collectionId);
if (collection) {
qDebug() << "HsMenuService::renameCollection collection"
<< collection;
collection->setText(newCollectionName);
result = CaService::instance()->updateEntry(*collection);
- delete collection;
}
HSMENUTEST_FUNC_EXIT("HsMenuService::renameCollection");
return result;
@@ -341,6 +353,22 @@
*/
bool HsMenuService::touch(int entryId)
{
- CaEntry *entry = CaService::instance()->getEntry(entryId);
+ QSharedPointer<CaEntry> entry = CaService::instance()->getEntry(entryId);
return CaService::instance()->touch(* entry);
}
+
+/*!
+ Launch SoftwareUpdateApplication
+ \retval boolean launching status
+ */
+bool HsMenuService::launchSoftwareUpdate()
+{
+ qDebug() << "HsMenuService::launchSoftwareUpdate";
+ QScopedPointer<CaEntry> tsEntry(new CaEntry);
+ tsEntry->setEntryTypeName(applicationTypeName());
+ tsEntry->setAttribute(
+ applicationUidEntryKey(), QString::number(softwareUpdateApplicationUid));
+ int retval = CaService::instance()->executeCommand(*tsEntry,
+ openActionIdentifier());
+ return retval;
+}
--- a/homescreenapp/sis/homescreenapp_ut_hs.pkg Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/sis/homescreenapp_ut_hs.pkg Mon May 03 12:24:59 2010 +0300
@@ -56,7 +56,7 @@
"/epoc32/release/armv5/urel/mockwidgetplugin.dll" - "c:/sys/bin/mockwidgetplugin.dll"
"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.qtplugin" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.qtplugin"
-"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.s60xml" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.s60xml"
+"/epoc32/data/z/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.xml" - "c:/private/20022F59/hsresources/plugins/widgetplugins/mockwidgetplugin.xml"
;--------------- runtimeplugins ---------------
@@ -66,7 +66,7 @@
"/epoc32/data/z/resource/apps/t_hsdefaultruntimeplugin.rsc" - "c:/resource/apps/t_hsdefaultruntimeplugin.rsc"
"/epoc32/release/armv5/urel/mockstateplugins.dll" - "c:/sys/bin/mockstateplugins.dll"
"/epoc32/data/z/private/20022f63/hsresources/plugins/stateplugins/mockstateplugins.qtplugin" - "c:/private/20022f63/hsresources/plugins/stateplugins/mockstateplugins.qtplugin"
-"/epoc32/data/z/private/20022f63/hsresources/plugins/stateplugins/mockstateplugins.s60xml" - "c:/private/20022f63/hsresources/plugins/stateplugins/mockstateplugins.s60xml"
+"/epoc32/data/z/private/20022f63/hsresources/plugins/stateplugins/mockstateplugins.xml" - "c:/private/20022f63/hsresources/plugins/stateplugins/mockstateplugins.xml"
;--------------- serviceproviders ---------------
@@ -84,15 +84,9 @@
"/epoc32/release/armv5/urel/t_hsshortcutwidget.exe" - "c:/sys/bin/t_hsshortcutwidget.exe"
"/epoc32/data/z/private/10003a3f/import/apps/t_hsshortcutwidget_reg.rsc" - "c:/private/10003a3f/import/apps/t_hsshortcutwidget_reg.rsc"
"/epoc32/data/z/resource/apps/t_hsshortcutwidget.rsc" - "c:/resource/apps/t_hsshortcutwidget.rsc"
-"../widgetplugins/hsshortcutwidgetplugin/tsrc/t_hsshortcutwidget/foundicon.png" - "c:/private/20022F64/foundicon.png"
;hsclockwidgetplugin
;t_hsclockwidgetplugin:
"/epoc32/release/armv5/urel/t_hsclockwidgetplugin.exe" - "c:/sys/bin/t_hsclockwidgetplugin.exe"
"/epoc32/data/z/private/10003a3f/import/apps/t_hsclockwidgetplugin_reg.rsc" - "c:/private/10003a3f/import/apps/t_hsclockwidgetprovider_reg.rsc"
"/epoc32/data/z/resource/apps/t_hsclockwidgetplugin.rsc" - "c:/resource/apps/t_hsclockwidgetprovider.rsc"
-
-;t_hsanalogclockstyleplugin
-"/epoc32/release/armv5/urel/t_hsanalogclockstyleplugin.exe" - "c:/sys/bin/t_hsanalogclockstyleplugin.exe"
-"/epoc32/data/z/private/10003a3f/import/apps/t_hsanalogclockstyleplugin_reg.rsc" - "c:/private/10003a3f/import/apps/t_hsanalogclockstyleplugin_reg.rsc"
-"/epoc32/data/z/resource/apps/t_hsanalogclockstyleplugin.rsc" - "c:/resource/apps/t_hsanalogclockstyleplugin.rsc"
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/hsapplibrarystateplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -12,7 +12,7 @@
CONFIG += plugin hb mobility
MOBILITY = serviceframework
-PLUGIN_SUBDIR = /hsresources/plugins/stateplugins
+PLUGIN_SUBDIR = /private/20022F35/plugins/stateplugins
include(../../common.pri)
LIBS += -lhsdomainmodel \
-lhsutils \
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallappsstate.h Mon May 03 12:24:59 2010 +0300
@@ -51,144 +51,49 @@
HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
public:
-
- /**
- * Constructor.
- *
- * @since S60 ?S60_version.
- * @param containerView Container view.
- * @param parent Owner.
- */
HsAllAppsState(HsMenuView &menuView, QState *parent = 0);
-
- /**
- * Destructor.
- *
- * @since S60 ?S60_version.
- */
~HsAllAppsState();
public slots:
- /**
- * Populates all applications
- *
- * @since S60 ?S60_version.
- */
void scrollToBeginning();
-
- /**
- * Sets collections sort order
- *
- * @since S60 ?S60_version.
- * @param sortOrder sort order.
- */
void collectionsSortOrder(HsSortAttribute sortAttribute);
private slots:
bool openTaskSwitcher();
- /**
- * Slot connected to List widget in normal mode.
- *
- * @since S60 ?S60_version.
- * @param index Model index of the activated item.
- */
+ bool checkSoftwareUpdates();
+
void listItemActivated(const QModelIndex &index);
- /**
- * Slot connected to List widget in add mode.
- *
- * @since S60 ?S60_version.
- * @param index Model index of the activated item.
- */
void addActivated(const QModelIndex &index);
- /**
- * Slot connected to List widget in normal mode.
- * Called when item long pressed.
- *
- * @since S60 ?S60_version.
- * @param item View item.
- * @param coords Press point coordinates.
- */
void listItemLongPressed(HbAbstractViewItem *item,
const QPointF &coords);
- /**
- * Slot connected to List widget in add mode.
- * Called when item long pressed.
- *
- * @since S60 ?S60_version.
- * @param item View item.
- * @param coords Press point coordinates.
- */
void addLongPressed(HbAbstractViewItem *item,
const QPointF &coords);
- /**
- * Slot called when application is adding to collection.
- *
- * @since S60 ?S60_version.
- */
void addToCollection();
- /**
- * Menu ascending sort action slot.
- *
- * @since S60 ?S60_version.
- */
+ void openInstalledView();
+
void ascendingMenuAction();
- /**
- * Menu descending sort action slot.
- *
- * @since S60 ?S60_version.
- */
void descendingMenuAction();
- /**
- * Slot invoked when a state is entered.
- *
- * @since S60 ?S60_version.
- */
void stateEntered();
- /**
- * Slot invoked when add mode entered.
- *
- * @since S60 ?S60_version.
- */
void addModeEntered();
- /**
- * Slot invoked when normal mode entered.
- *
- * @since S60 ?S60_version.
- */
void normalModeEntered();
- /**
- * Slot invoked when a state is exited.
- *
- * @since S60 ?S60_version.
- */
void stateExited();
private:
- /**
- * Constructs contained objects.
- *
- * @since S60 ?S60_version.
- */
void construct();
- /**
- * Creates and installs menu options for the view
- *
- * @since S60 ?S60_version.
- */
void setMenuOptions();
void addToHomeScreen(const QModelIndex &index);
@@ -207,7 +112,6 @@
/**
* The View widget.
- * Own.
*/
HsMenuView &mMenuView;
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallcollectionsstate.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsallcollectionsstate.h Mon May 03 12:24:59 2010 +0300
@@ -54,166 +54,56 @@
public:
- /**
- * Constructor.
- *
- * @since S60 ?S60_version.
- * @param containerView Container view.
- * @param parent Owner.
- */
HsAllCollectionsState(HsMenuView &menuView, QState *parent = 0);
-
- /**
- * Destructor.
- *
- * @since S60 ?S60_version.
- */
~HsAllCollectionsState();
signals:
- /**
- * Signal emitted when sort order is changed.
- *
- * @since S60 ?S60_version.
- * @param sortOrder new sort order.
- */
void sortOrderChanged(HsSortAttribute sortAttribute);
public slots:
- /**
- * Populates all folders
- *
- * @since S60 ?S60_version.
- */
+
void scrollToBeginning();
private slots:
bool openTaskSwitcher();
- /**
- * Slot connected to List widget in normal mode.
- *
- * @since S60 ?S60_version.
- * @param index Model index of the activated item.
- */
void listItemActivated(const QModelIndex &index);
- /**
- * Slot connected to List widget in add mode.
- *
- * @since S60 ?S60_version.
- * @param index Model index of the activated item.
- */
void addActivated(const QModelIndex &index);
- /**
- * Slot connected to List widget in normal mode.
- * Called when item long pressed.
- *
- * @since S60 ?S60_version.
- * @param item View item.
- * @param coords Press point coordinates.
- */
void listItemLongPressed(HbAbstractViewItem *item,
const QPointF &coords);
- /**
- * Slot connected to List widget in add mode.
- * Called when item long pressed.
- *
- * @since S60 ?S60_version.
- * @param item View item.
- * @param coords Press point coordinates.
- */
void addLongPressed(HbAbstractViewItem *item,
const QPointF &coords);
- /**
- * Slot connected to constructMenu.
- *
- * @since S60 ?S60_version.
- */
void createNewCollection();
- /**
- * Slot connected to constructMenu.
- *
- * @since S60 ?S60_version.
- */
void createArrangeCollection();
- /**
- * Menu custom sort action slot.
- *
- * @since S60 ?S60_version.
- */
void customMenuAction();
- /**
- * Menu ascending sort action slot.
- *
- * @since S60 ?S60_version.
- */
void ascendingMenuAction();
- /**
- * Menu descending sort action slot.
- *
- * @since S60 ?S60_version.
- */
void descendingMenuAction();
- /**
- * Slot invoked when a state is entered.
- *
- * @since S60 ?S60_version.
- */
void stateEntered();
- /**
- * Slot invoked when add mode is entered.
- *
- * @since S60 ?S60_version.
- */
void addModeEntered();
- /**
- * Slot invoked when normal mode is entered.
- *
- * @since S60 ?S60_version.
- */
void normalModeEntered();
- /**
- * Slot invoked when normal mode is exited.
- *
- * @since S60 ?S60_version.
- */
void normalModeExited();
- /**
- * Slot invoked when a state is exited.
- *
- * @since S60 ?S60_version.
- */
void stateExited();
private:
- /**
- * Constructs contained objects.
- *
- * @since S60 ?S60_version.
- */
void construct();
- /**
- * Creates and installs menu options for the view
- *
- * @since S60 ?S60_version.
- */
+
void setMenuOptions();
private:
@@ -225,7 +115,6 @@
/**
* The List View widget.
- * Own.
*/
HsMenuView &mMenuView;
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsapplibrarystate.h Mon May 03 12:24:59 2010 +0300
@@ -56,68 +56,28 @@
public:
- /**
- * Constructor.
- *
- * @since S60 ?S60_version.
- * @param parent Owner.
- */
HsAppLibraryState(QState *parent = 0);
- /**
- * Destructor.
- *
- * @since S60 ?S60_version.
- */
virtual ~HsAppLibraryState();
signals:
- /**
- * Signal emitted when leaving the state,
- * i.e when the back softkey is pressed.
- *
- * @since S60 ?S60_version.
- */
void toHomescreenState();
- /**
- * Signal emitted when entering the state
- *
- * @since S60 ?S60_version.
- */
void initialize();
public slots:
void clearToolbarLatch();
- /**
- * All apps stete entered.
- * @since S60 ?S60_version.
- */
void allAppsStateEntered();
- /**
- * All collections state entered.
- * @since S60 ?S60_version.
- */
void allCollectionsStateEntered();
private slots:
- /**
- * Slot invoked when a state is entered.
- *
- * @since S60 ?S60_version.
- */
void stateEntered();
- /**
- * Slot invoked when a state is exited.
- *
- * @since S60 ?S60_version.
- */
void stateExited();
@@ -127,18 +87,8 @@
private:
- /**
- * Constructs contained objects.
- *
- * @since S60 ?S60_version.
- */
void construct();
- /**
- * Sets up Toolbar.
- *
- * @since S60 ?S60_version.
- */
void constructToolbar();
private:
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hscollectionstate.h Mon May 03 12:24:59 2010 +0300
@@ -53,30 +53,12 @@
public:
- /**
- * Constructor.
- *
- * @since S60 ?S60_version.
- * @param containerView Container view.
- * @param parent Owner.
- */
HsCollectionState(HsMenuView &menuView, QState *parent = 0);
- /**
- * Destructor.
- *
- * @since S60 ?S60_version.
- */
~HsCollectionState();
public slots:
- /**
- * Sets collections sort order
- *
- * @since S60 ?S60_version.
- * @param sortOrder sort order.
- */
void collectionsSortOrder(HsSortAttribute sortAttribute);
protected:
@@ -91,81 +73,25 @@
bool openTaskSwitcher();
- /**
- * Slot connected to List widget.
- *
- * @since S60 ?S60_version.
- * @param index Model index of the activated item.
- */
void listItemActivated(const QModelIndex &index);
- /**
- * Slot connected to List widget.
- * Called when item long pressed.
- *
- * @since S60 ?S60_version.
- * @param item View item.
- * @param coords Press point coordinates.
- */
void listItemLongPressed(HbAbstractViewItem *item,
const QPointF &coords);
-
- /**
- * Menu add applications action slot
- *
- * @since S60 ?S60_version.
- */
void addAppsAction();
- /**
- * Menu add shortcut action slot
- *
- * @since S60 ?S60_version.
- */
void addCollectionShortcutToHomeScreenAction();
- /**
- * Menu rename action slot
- *
- * @since S60 ?S60_version.
- */
void renameAction();
- /**
- * Menu delete action slot
- *
- * @since S60 ?S60_version.
- */
void deleteAction();
- /**
- * Menu softkey back action slot
- *
- * @since S60 ?S60_version.
- */
void backSteppingAction();
- /**
- * Updates label
- *
- * @since S60 ?S60_version.
- */
void updateLabel();
-
- /**
- * Slot invoked when a state is entered.
- *
- * @since S60 ?S60_version.
- */
void stateEntered();
- /**
- * Slot invoked when a state is exited.
- *
- * @since S60 ?S60_version.
- */
void stateExited();
void latestOnTopMenuAction();
@@ -174,11 +100,6 @@
private:
- /**
- * Constructs contained objects.
- *
- * @since S60 ?S60_version.
- */
void construct();
/**
@@ -189,18 +110,8 @@
*/
void constructMenu(bool isDynamic);
- /**
- * Perform all signal connections.
- *
- * @since S60 ?S60_version.
- */
void makeConnect();
- /**
- * Perform all signal disconnections.
- *
- * @since S60 ?S60_version.
- */
void makeDisconnect();
void addElementToHomeScreen(const QModelIndex &index);
@@ -229,7 +140,6 @@
/**
* The List View widget.
- * Own.
*/
HsMenuView &mMenuView;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsinstalledappsstate.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: Menu Installed state.
+ *
+ */
+
+#ifndef HSINSTALLEDAPPSSTATE_H
+#define HSINSTALLEDAPPSSTATE_H
+
+#include <qstate.h>
+#include <QModelIndex>
+
+#include "hsmenustates_global.h"
+#include "hsmenuservice.h"
+
+HS_STATES_TEST_CLASS(MenuStatesTest)
+
+class HbView;
+class HbAction;
+class HbMenu;
+class HbAbstractViewItem;
+class QPointF;
+class HsMenuView;
+class HsMenuItemModel;
+/**
+ * @ingroup group_hsmenustateplugin
+ * @brief All Applications State.
+ *
+ * Displays all installed packages present on the device.
+ *
+ * @see StateMachine
+ *
+ * @lib ?library
+ * @since S60 ?S60_version
+ */
+class HsInstalledAppsState: public QState
+{
+ Q_OBJECT
+
+ HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
+
+public:
+
+ HsInstalledAppsState(HsMenuView &menuView, QState *parent = 0);
+
+ ~HsInstalledAppsState();
+
+private slots:
+
+ bool openTaskSwitcher();
+
+ void listItemActivated(const QModelIndex &index);
+
+ void listItemLongPressed(HbAbstractViewItem *item,
+ const QPointF &coords);
+
+ void backAction();
+
+ void stateEntered();
+
+ void stateExited();
+
+private:
+
+ void construct();
+
+ void setMenuOptions();
+
+private:
+
+ /**
+ * The View widget.
+ * Own.
+ */
+ HsMenuView &mMenuView;
+
+ /**
+ * Item Model for the List.
+ * Own.
+ */
+ HsMenuItemModel *mInstalledAppsModel;
+
+ /**
+ * Secondary Softkey action.
+ * Backstepping functionality.
+ * Own.
+ */
+ HbAction *mSecondarySoftkeyAction;
+
+ /**
+ * Old navigation icon.
+ * Not own.
+ */
+ HbAction *mOldNavigationAction;
+
+};
+
+#endif // HSINSTALLEDAPPSSTATE_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenusearch.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description: Menu search panel.
- *
- */
-
-#ifndef HSMENUSEARCH_H
-#define HSMENUSEARCH_H
-
-#include <QObject>
-#include "hsmenustates_global.h"
-
-class HsMenuView;
-
-HS_STATES_TEST_CLASS(MenuStatesTest)
-
-class HsMenuSearch: public QObject
-{
- Q_OBJECT
-
- HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
-public:
- HsMenuSearch(HsMenuView *menuView);
-public slots:
-
- void findItem(QString criteriaStr);
-
-private:
- HsMenuView *const mMenuView;//not own
-};
-
-#endif // HSMENUSEARCH_H
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuview.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/inc/hsmenuview.h Mon May 03 12:24:59 2010 +0300
@@ -21,11 +21,12 @@
#include <QObject>
#include <QModelIndex>
#include <QAbstractItemView>
+#include <QSortFilterProxyModel>
#include <HbAbstractItemView>
#include "hsmenustates_global.h"
#include "hsapp_defs.h"
#include "hsmenuviewbuilder.h"
-#include "hsmenusearch.h"
+
class QPointF;
class QActionGroup;
@@ -44,21 +45,17 @@
Q_OBJECT
public:
- HsMenuView(HbMainWindow *window);
+ HsMenuView();
~HsMenuView();
void setModel(HsMenuItemModel *model);
- const HsMenuItemModel *model() const;
+ void setModelToView(QAbstractItemModel *model);
+
void setLabel(const QString &label);
void scrollTo(const QModelIndex &index,
HbAbstractItemView::ScrollHint hint =
HbAbstractItemView::EnsureVisible);
- void scrollToWithoutHidingSearchPanel(
- const QModelIndex &index,
- HbAbstractItemView::ScrollHint hint =
- HbAbstractItemView::EnsureVisible);
-
void setLabelVisible(bool visible);
void setSearchPanelVisible(bool visible);
@@ -73,32 +70,48 @@
HsMenuMode getHsMenuMode();
void setHsMenuMode(HsMenuMode menuMode);
+ void hideToolBar();
+ void showToolBar();
signals:
void activated(const QModelIndex &index);
void longPressed(HbAbstractViewItem *item, const QPointF &coords);
public slots:
+ void activatedProxySlot(const QModelIndex &index);
+ void longPressedProxySlot(HbAbstractViewItem *item,
+ const QPointF &coords);
+
void showSearchPanel();
void hideSearchPanel();
+
+
private slots:
void scrollToRow(int row,
QAbstractItemView::ScrollHint hint =
QAbstractItemView::PositionAtTop);
+ void findItem(QString criteriaStr);
+
private:
HbAbstractItemView::ScrollHint convertScrollHint(
- QAbstractItemView::ScrollHint hint);
+ QAbstractItemView::ScrollHint hint);
+
void connectItemViewsSignals();
void disconnectItemViewsSignals();
+ void connectSearchItemViewsSignals();
+ void disconnectSearchItemViewsSignals();
+
+
void connectModelSignals();
void disconnectModelSignals();
void connectSearchPanelSignals();
void disconnectSearchPanelSignals();
- void hideSearchPanelOnScrolling(bool);
+ void searchFinished();
+ void searchBegins();
void setUpToolBar();
@@ -106,14 +119,18 @@
HsMenuViewBuilder mBuilder;
- HbMainWindow *const mWindow;
HsMenuItemModel *mModel;
- HsMenuSearch mMenuSearch;
+
+ QModelIndex mFirstVisibleIndex;
+ QModelIndex mLastVisibleIndex;
+ QModelIndex mSearchIndex;
QActionGroup *mToolBarActionGroup;
HsMenuMode mMenuMode;
+ QSortFilterProxyModel *mProxyModel; // owned
+
HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
};
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/resource/hsapplibrarystateplugin.s60xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>hsapplibrarystateplugin</name>
- <filepath>z:/hsresources/plugins/stateplugins/hsapplibrarystateplugin.qtplugin</filepath>
- <description></description>
- <interface>
- <name>com.nokia.homescreen.state.HsAppLibraryState</name>
- <version>1.0</version>
- <description></description>
- <capabilities></capabilities>
- </interface>
-</service>
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallappsstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -33,10 +33,14 @@
#include "hsaddappstocollectionstate.h"
#include "hsapp_defs.h"
#include "hsmenumodetransition.h"
+#include "caentry.h"
+#include "caservice.h"
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Constructor.
+ \param menuView Menu view.
+ \param parent Owner.
+ */
HsAllAppsState::HsAllAppsState(HsMenuView &menuView, QState *parent) :
QState(parent), mSortAttribute(AscendingNameHsSortAttribute),
mCollectionsSortAttribute(LatestOnTopHsSortAttribute),
@@ -45,9 +49,9 @@
construct();
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Constructs contained objects.
+ */
void HsAllAppsState::construct()
{
HSMENUTEST_FUNC_ENTRY("HsAllAppsState::construct");
@@ -66,26 +70,29 @@
initialState->addTransition(new HsMenuModeTransition(
mMenuView, AddHsMenuMode, addModeState));
- setObjectName(this->parent()->objectName() + "/allappsstate");
+ const QString parentName =
+ parent() != 0 ? parent()->objectName() : QString("");
+ setObjectName(parentName + "/allappsstate");
+
connect(this, SIGNAL(entered()),SLOT(stateEntered()));
connect(this, SIGNAL(exited()),SLOT(stateExited()));
mAllAppsModel = HsMenuService::getAllApplicationsModel(mSortAttribute);
HSMENUTEST_FUNC_EXIT("HsAllAppsState::construct");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Creates and installs menu options for the view
+ */
void HsAllAppsState::setMenuOptions()
{
HSMENUTEST_FUNC_ENTRY("HsAllAppsState::setMenuOptions");
HbMenu *const mOptions = new HbMenu();
mOptions->addAction(hbTrId("txt_applib_opt_task_switcher"),
- this,
- SLOT(openTaskSwitcher()));
+ this, SLOT(openTaskSwitcher()));
mOptions->addAction(hbTrId("txt_applib_opt_add_to_collection"),
- this,
- SLOT(addToCollection()));
+ this, SLOT(addToCollection()));
+ mOptions->addAction(hbTrId("txt_applib_opt_check_software_updates"),
+ this, SLOT(checkSoftwareUpdates()));
HbMenu *const sortMenu = mOptions->addMenu(hbTrId(
"txt_applib_opt_sort_by"));
@@ -94,12 +101,14 @@
sortGroup->addAction(
sortMenu->addAction(hbTrId("txt_applib_opt_sub_ascending"),
- this,
- SLOT(ascendingMenuAction())));
+ this, SLOT(ascendingMenuAction())));
sortGroup->addAction(
sortMenu->addAction(hbTrId("txt_applib_opt_sub_descending"),
- this,
- SLOT(descendingMenuAction())));
+ this, SLOT(descendingMenuAction())));
+
+ mOptions->addAction(hbTrId("txt_applib_subtitle_installed"),
+ this, SLOT(openInstalledView()));
+
mOptions->setParent(this);
foreach(QAction *action, sortMenu->actions()) {
action->setCheckable(true);
@@ -122,26 +131,25 @@
HSMENUTEST_FUNC_EXIT("HsAllAppsState::setMenuOptions");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Destructor.
+ */
HsAllAppsState::~HsAllAppsState()
{
delete mAllAppsModel;
}
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Populates all applications
+ */
void HsAllAppsState::scrollToBeginning()
{
mBookmark = mAllAppsModel->index(0);
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when a state is entered.
+ */
void HsAllAppsState::stateEntered()
{
qDebug("AllAppsState::stateEntered()");
@@ -152,9 +160,9 @@
HSMENUTEST_FUNC_EXIT("HsAllAppsState::stateEntered");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when add mode entered.
+ */
void HsAllAppsState::normalModeEntered()
{
setMenuOptions();
@@ -176,12 +184,14 @@
SLOT(addLongPressed(HbAbstractViewItem *, QPointF)));
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when a state is exited.
+ */
void HsAllAppsState::stateExited()
{
HSMENUTEST_FUNC_ENTRY("HsAllAppsState::stateExited");
+ mMenuView.setSearchPanelVisible(false);
+
mBookmark = mMenuView.firstVisibleItemIndex();
mMenuView.disconnect(this);
@@ -200,14 +210,24 @@
return HsMenuService::launchTaskSwitcher();
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Check software updates.
+ \retval true if operation is successful.
+ */
+bool HsAllAppsState::checkSoftwareUpdates()
+{
+ return HsMenuService::launchSoftwareUpdate();
+}
+
+/*!
+ Slot connected to List widget in normal mode.
+ \param index Model index of the activated item.
+ */
void HsAllAppsState::listItemActivated(const QModelIndex &index)
{
HSMENUTEST_FUNC_ENTRY("HsAllAppsState::listItemActivated");
- const CaEntry *entry = mAllAppsModel->entry(index);
+ QSharedPointer<const CaEntry> entry = mAllAppsModel->entry(index);
if (entry->entryTypeName() == widgetTypeName()) {
machine()->postEvent(
@@ -228,13 +248,14 @@
HSMENUTEST_FUNC_EXIT("HsAllAppsState::listItemActivated");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot connected to List widget in add mode.
+
+ \param index Model index of the activated item.
+ */
void HsAllAppsState::addActivated(const QModelIndex &index)
{
HSMENUTEST_FUNC_ENTRY("HsAllAppsState::addActivated");
- mMenuView.setSearchPanelVisible(false);
addToHomeScreen(index);
machine()->postEvent(
HsMenuEventFactory::createOpenHomeScreenEvent());
@@ -243,15 +264,14 @@
/*!
Handles long-item-pressed event in all apps view by showing context menu
- \param item the event pertains to
- \param position at which context menu is shown
+ \param item View item
+ \param coords Press point coordinates
*/
void HsAllAppsState::listItemLongPressed(HbAbstractViewItem *item,
const QPointF &coords)
{
HSMENUTEST_FUNC_ENTRY("HsAllAppsState::listItemLongPressed");
- mMenuView.setSearchPanelVisible(false);
// create context menu
HbMenu *menu = new HbMenu();
@@ -264,9 +284,16 @@
HbAction *uninstallAction = menu->addAction(hbTrId(
"txt_common_menu_delete"));
+ HbAction *appSettingsAction(NULL);
// check conditions and hide irrelevant menu items
+ QSharedPointer<const CaEntry> entry = mAllAppsModel->entry(item->modelIndex());
+
+ if (!(entry->attribute(appSettingsPlugin()).isEmpty())) {
+ appSettingsAction = menu->addAction(hbTrId(
+ "txt_common_menu_settings"));
+ }
EntryFlags flags = item->modelIndex().data(
CaItemModel::FlagsRole).value<EntryFlags> ();
@@ -275,6 +302,7 @@
}
// choose proper action
if (HbAction *selectedAction = menu->exec(coords)) {
+
if (selectedAction == addToHomeScreenAction) {
addToHomeScreen(item->modelIndex());
} else if (selectedAction == addToCollectionAction) {
@@ -285,26 +313,35 @@
machine()->postEvent(
HsMenuEventFactory::createAddAppsFromApplicationsViewEvent(
mSortAttribute, mCollectionsSortAttribute, itemId));
-
} else if (selectedAction == uninstallAction) {
const int itemId =
item->modelIndex().data(CaItemModel::IdRole).toInt();
HsMenuService::executeAction(itemId, removeActionIdentifier());
+ } else if (selectedAction == appSettingsAction) {
+ const int itemId =
+ item->modelIndex().data(CaItemModel::IdRole).toInt();
+ QMap<QString, QString> attributes = entry->attributes();
+ machine()->postEvent(
+ HsMenuEventFactory::createAppSettingsViewEvent(itemId));
}
+ mMenuView.setSearchPanelVisible(false);
+
}
delete menu;
HSMENUTEST_FUNC_EXIT("HsAllAppsState::listItemLongPressed");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot connected to List widget in add mode.
+ Called when item long pressed.
+ \param item View item.
+ \param coords Press point coordinates.
+ */
void HsAllAppsState::addLongPressed(HbAbstractViewItem *item,
const QPointF &coords)
{
Q_UNUSED(coords);
HSMENUTEST_FUNC_ENTRY("HsAllAppsState::addLongPressed");
- mMenuView.setSearchPanelVisible(false);
addToHomeScreen(item->modelIndex());
machine()->postEvent(
HsMenuEventFactory::createOpenHomeScreenEvent());
@@ -312,9 +349,9 @@
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot called when application is adding to collection.
+ */
void HsAllAppsState::addToCollection()
{
// Add one/many applications to
@@ -325,6 +362,21 @@
}
/*!
+ Triggers event so that a installed applications state is entered.
+ \retval void
+ */
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsAllAppsState::openInstalledView()
+{
+ machine()->postEvent(HsMenuEventFactory::createOpenInstalledViewEvent());
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+/*!
Triggers event so that a state adding to Home Screen is reached
\param index of an item to be added to homescreen
\retval void
@@ -332,23 +384,17 @@
void HsAllAppsState::addToHomeScreen(const QModelIndex &index)
{
HSMENUTEST_FUNC_ENTRY("HsAllAppsState::addToHomeScreen");
- const CaEntry *entry = mAllAppsModel->entry(index);
-
- QMap<QString, QString> attributes = entry->attributes();
-
+ QSharedPointer<const CaEntry> entry = mAllAppsModel->entry(index);
+
machine()-> postEvent(HsMenuEventFactory::createAddToHomeScreenEvent(
- entry->id(),
- entry->entryTypeName(),
- entry->attribute(widgetUriAttributeName()),
- entry->attribute(widgetLibraryAttributeName()),
- &attributes));
+ entry->id()));
HSMENUTEST_FUNC_EXIT("HsAllAppsState::addToHomeScreen");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu ascending sort action slot.
+ */
void HsAllAppsState::ascendingMenuAction()
{
HSMENUTEST_FUNC_ENTRY("HsAllAppsState::ascendingMenuAction");
@@ -357,18 +403,21 @@
HSMENUTEST_FUNC_EXIT("HsAllAppsState::ascendingMenuAction");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/**
+ * Sets collections sort order
+ *
+ * @since S60 ?S60_version.
+ * @param sortOrder sort order.
+ */
void HsAllAppsState::collectionsSortOrder(
HsSortAttribute sortOrder)
{
mCollectionsSortAttribute = sortOrder;
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu descending sort action slot.
+ */
void HsAllAppsState::descendingMenuAction()
{
HSMENUTEST_FUNC_ENTRY("HsAllAppsState::descendingMenuAction");
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsallcollectionsstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -32,9 +32,11 @@
#include "hsaddappstocollectionstate.h"
#include "hsmenumodetransition.h"
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Constructor.
+ \param menuView Menu view.
+ \param parent Owner.
+ */
HsAllCollectionsState::HsAllCollectionsState(
HsMenuView &menuView, QState *parent) :
QState(parent), mSortAttribute(CustomHsSortAttribute),
@@ -43,9 +45,9 @@
construct();
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Constructs contained objects.
+ */
void HsAllCollectionsState::construct()
{
HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::construct");
@@ -65,7 +67,9 @@
initialState->addTransition(new HsMenuModeTransition(
mMenuView, AddHsMenuMode, addModeState));
- setObjectName(this->parent()->objectName() + "/allcollectionsstate");
+ const QString parentName =
+ parent() != 0 ? parent()->objectName() : QString("");
+ setObjectName(parentName + "/allcollectionsstate");
connect(this, SIGNAL(entered()),SLOT(stateEntered()));
connect(this, SIGNAL(exited()),SLOT(stateExited()));
mAllCollectionsModel = HsMenuService::getAllCollectionsModel(
@@ -73,16 +77,16 @@
HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::construct");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Creates and installs menu options for the view
+ */
void HsAllCollectionsState::setMenuOptions()
{
HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::setMenuOptions");
HbMenu *const options = new HbMenu();
options->addAction(hbTrId("txt_applib_opt_task_switcher"),
- this,
- SLOT(openTaskSwitcher()));
+ this,
+ SLOT(openTaskSwitcher()));
options->addAction(hbTrId("txt_applib_opt_new_collection"),
this, SLOT(createNewCollection()));
@@ -129,25 +133,25 @@
HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::setMenuOptions");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Destructor.
+ */
HsAllCollectionsState::~HsAllCollectionsState()
{
delete mAllCollectionsModel;
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Populates all folders
+ */
void HsAllCollectionsState::scrollToBeginning()
{
mBookmark = mAllCollectionsModel->index(0);
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when a state is entered.
+ */
void HsAllCollectionsState::stateEntered()
{
qDebug("AllCollectionsState::stateEntered()");
@@ -159,9 +163,9 @@
HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::stateEntered");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when normal mode is entered.
+*/
void HsAllCollectionsState::normalModeEntered()
{
setMenuOptions();
@@ -172,17 +176,17 @@
SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when normal mode is exited.
+*/
void HsAllCollectionsState::normalModeExited()
{
mMenuView.view()->setMenu(NULL);
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when add mode is entered.
+ */
void HsAllCollectionsState::addModeEntered()
{
connect(&mMenuView, SIGNAL(activated(QModelIndex)),
@@ -191,13 +195,15 @@
SLOT(addLongPressed(HbAbstractViewItem *, QPointF)));
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when a state is exited.
+ */
void HsAllCollectionsState::stateExited()
{
HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::stateExited");
+ mMenuView.setSearchPanelVisible(false);
+
mMenuView.disconnect(this);
mBookmark = mMenuView.firstVisibleItemIndex();
@@ -215,9 +221,10 @@
return HsMenuService::launchTaskSwitcher();
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot connected to List widget in normal mode.
+ \param index Model index of the activated item.
+ */
void HsAllCollectionsState::listItemActivated(const QModelIndex &index)
{
HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::listItemActivated");
@@ -235,12 +242,12 @@
HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::listItemActivated");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot connected to List widget in add mode.
+ \param index Model index of the activated item.
+ */
void HsAllCollectionsState::addActivated(const QModelIndex &index)
{
- mMenuView.setSearchPanelVisible(false);
const int itemId = index.data(CaItemModel::IdRole).toInt();
machine()->postEvent(
HsMenuEventFactory::createAddToHomeScreenEvent(itemId));
@@ -248,14 +255,16 @@
HsMenuEventFactory::createOpenHomeScreenEvent());
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot connected to List widget in add mode.
+ Called when item long pressed.
+ \param item View item.
+ \param coords Press point coordinates.
+ */
void HsAllCollectionsState::addLongPressed(HbAbstractViewItem *item,
const QPointF &coords)
{
Q_UNUSED(coords);
- mMenuView.setSearchPanelVisible(false);
const int itemId = item->modelIndex().data(CaItemModel::IdRole).toInt();
machine()->postEvent(
HsMenuEventFactory::createAddToHomeScreenEvent(itemId));
@@ -263,15 +272,17 @@
HsMenuEventFactory::createOpenHomeScreenEvent());
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot connected to List widget in normal mode.
+ Called when item long pressed.
+ \param item View item.
+ \param coords Press point coordinates.
+ */
void HsAllCollectionsState::listItemLongPressed(HbAbstractViewItem *item,
const QPointF &coords)
{
HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::listItemLongPressed");
- mMenuView.setSearchPanelVisible(false);
const int itemId = item->modelIndex().data(CaItemModel::IdRole).toInt();
HbMenu *menu = new HbMenu();
@@ -293,6 +304,7 @@
// choose proper action
if (HbAction *selectedAction = menu->exec(coords)) {
+
if (selectedAction == addShortcutAction) {
machine()->postEvent(
HsMenuEventFactory::createAddToHomeScreenEvent(itemId));
@@ -303,23 +315,25 @@
machine()->postEvent(
HsMenuEventFactory::createDeleteCollectionEvent(itemId));
}
+
+ mMenuView.setSearchPanelVisible(false);
}
delete menu;
HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::listItemLongPressed");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot connected to constructMenu.
+ */
void HsAllCollectionsState::createNewCollection()
{
// Adding a new collection via the Collections view
machine()->postEvent(HsMenuEventFactory::createNewCollectionEvent());
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot connected to constructMenu.
+ */
void HsAllCollectionsState::createArrangeCollection()
{
// Arrange collection via the Arrange view
@@ -329,9 +343,9 @@
HsMenuEventFactory::createArrangeCollectionEvent(topItemId));
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu custom sort action slot.
+ */
void HsAllCollectionsState::customMenuAction()
{
HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::customMenuAction");
@@ -342,9 +356,9 @@
HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::customMenuAction");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu ascending sort action slot.
+ */
void HsAllCollectionsState::ascendingMenuAction()
{
HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::ascendingMenuAction");
@@ -355,9 +369,9 @@
HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::ascendingMenuAction");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu descending sort action slot.
+ */
void HsAllCollectionsState::descendingMenuAction()
{
HSMENUTEST_FUNC_ENTRY("HsAllCollectionsState::descendingMenuAction");
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsapplibrarystate.cpp Mon May 03 12:24:59 2010 +0300
@@ -31,24 +31,25 @@
#include "hsallappsstate.h"
#include "hsallcollectionsstate.h"
#include "hscollectionstate.h"
+#include "hsinstalledappsstate.h"
#include "hsovistorehandler.h"
#include "hsmenuview.h"
#include "hsmenumodetransition.h"
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Constructor.
+ \param parent Owner.
+ */
HsAppLibraryState::HsAppLibraryState(QState *parent) :
QState(parent), mSecondarySoftkeyAction(0), mAllAppsState(0),
- mHistoryTransaction(0), mAllCollectionsState(0), mCollectionState(0),
- mMenuView(HbInstance::instance()->allMainWindows().value(0))
+ mHistoryTransaction(0), mAllCollectionsState(0), mCollectionState(0)
{
construct();
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Destructor.
+ */
HsAppLibraryState::~HsAppLibraryState()
{
HbMainWindow *const hbW =
@@ -60,9 +61,9 @@
}
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Constructs contained objects.
+ */
void HsAppLibraryState::construct()
{
HSMENUTEST_FUNC_ENTRY("HsAppLibraryState::construct");
@@ -107,6 +108,19 @@
mCollectionState, mAllCollectionsState);
mCollectionState->addTransition(collectionToAppLibTransition);
+ HsInstalledAppsState *installedAppsState = new HsInstalledAppsState(
+ mMenuView, this);
+
+ HsMenuEventTransition *installedToAppLibTransition =
+ new HsMenuEventTransition(HsMenuEvent::OpenApplicationLibrary,
+ installedAppsState, mAllAppsState);
+ installedAppsState->addTransition(installedToAppLibTransition);
+
+ HsMenuEventTransition *allViewToInstalledTransition =
+ new HsMenuEventTransition(HsMenuEvent::OpenInstalledView,
+ mAllAppsState, installedAppsState);
+ mAllAppsState->addTransition(allViewToInstalledTransition);
+
constructToolbar();
connect(this, SIGNAL(entered()),SLOT(stateEntered()));
@@ -124,9 +138,10 @@
HSMENUTEST_FUNC_EXIT("HsAppLibraryState::construct");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Sets entry event.
+ \param event entry event.
+ */
void HsAppLibraryState::onEntry(QEvent *event)
{
qDebug("HsCollectionState::onEntry()");
@@ -145,9 +160,9 @@
HSMENUTEST_FUNC_EXIT("HsAppLibraryState::onEntry");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when a state is entered.
+ */
void HsAppLibraryState::stateEntered()
{
HSTEST_FUNC_ENTRY("AppLibraryState::stateEntered");
@@ -155,23 +170,23 @@
if (!hbW->views().contains(mMenuView.view())) {
hbW->addView(mMenuView.view());
mMenuView.view()->setNavigationAction(mSecondarySoftkeyAction);
- }
+ }
hbW->setCurrentView(mMenuView.view());
HSTEST_FUNC_EXIT("AppLibraryState::stateEntered");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when a state is exited.
+ */
void HsAppLibraryState::stateExited()
{
- HSTEST_FUNC_ENTRY("AppLibraryState::stateExited");
+ HSTEST_FUNC_ENTRY("AppLibraryState::stateExited");
HSTEST_FUNC_EXIT("AppLibraryState::stateExited");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Sets up Toolbar.
+ */
void HsAppLibraryState::constructToolbar()
{
HSMENUTEST_FUNC_ENTRY("HsAppLibraryState::constructToolbar");
@@ -205,9 +220,9 @@
HSMENUTEST_FUNC_EXIT("HsAppLibraryState::constructToolbar");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Clear toolbar latch
+*/
void HsAppLibraryState::clearToolbarLatch()
{
HSMENUTEST_FUNC_ENTRY("HsAppLibraryState::clearToolbarLatch");
@@ -220,9 +235,9 @@
HSMENUTEST_FUNC_EXIT("HsAppLibraryState::clearToolbarLatch");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ All apps stete entered.
+ */
void HsAppLibraryState::allAppsStateEntered()
{
if (mMenuView.getHsMenuMode() == NormalHsMenuMode) {
@@ -230,9 +245,9 @@
}
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ All collections state entered.
+ */
void HsAppLibraryState::allCollectionsStateEntered()
{
if (mMenuView.getHsMenuMode() == NormalHsMenuMode) {
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hscollectionstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -34,9 +34,11 @@
#include "hsaddappstocollectionstate.h"
#include "hsapp_defs.h"
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Constructor.
+ \param menuView Menu view.
+ \param parent Owner.
+*/
HsCollectionState::HsCollectionState(HsMenuView &menuView, QState *parent) :
QState(parent),
mSortAttribute(LatestOnTopHsSortAttribute),
@@ -47,13 +49,15 @@
construct();
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Constructs contained objects.
+ */
void HsCollectionState::construct()
{
HSMENUTEST_FUNC_ENTRY("HsCollectionState::construct");
- setObjectName(this->parent()->objectName() + "/collectionstate");
+ const QString parentName =
+ parent() != 0 ? parent()->objectName() : QString("");
+ setObjectName(parentName + "/collectionstate");
//new action for backstepping
mSecondarySoftkeyAction = new HbAction(Hb::BackAction, this);
@@ -62,18 +66,19 @@
HSMENUTEST_FUNC_EXIT("HsCollectionState::construct");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Destructor.
+ */
HsCollectionState::~HsCollectionState()
{
delete mCollectionModel;
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Sets entry event.
+ \param event entry event.
+ */
void HsCollectionState::onEntry(QEvent *event)
{
qDebug("HsCollectionState::onEntry()");
@@ -90,9 +95,9 @@
HSMENUTEST_FUNC_EXIT("HsCollectionState::onEntry");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when a state is entered.
+ */
void HsCollectionState::stateEntered()
{
HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateEntered");
@@ -175,17 +180,19 @@
}
mOldNavigationAction = mMenuView.view()->navigationAction();
mMenuView.view()->setNavigationAction(mSecondarySoftkeyAction);
-
+
makeConnect();
HSMENUTEST_FUNC_EXIT("HsCollectionState::stateEntered");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot invoked when a state is exited.
+ */
void HsCollectionState::stateExited()
{
HSMENUTEST_FUNC_ENTRY("HsCollectionState::stateExited");
+ mMenuView.setSearchPanelVisible(false);
+
makeDisconnect();
mOptions = NULL;
@@ -200,9 +207,9 @@
qDebug("CollectionState::stateExited()");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Perform all signal connections.
+ */
void HsCollectionState::makeConnect()
{
connect(mSecondarySoftkeyAction, SIGNAL(triggered()),
@@ -214,9 +221,9 @@
connect(mCollectionModel, SIGNAL(modelReset()),SLOT(updateLabel()));
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Perform all signal disconnections.
+ */
void HsCollectionState::makeDisconnect()
{
disconnect(mSecondarySoftkeyAction, SIGNAL(triggered()),
@@ -241,14 +248,15 @@
return HsMenuService::launchTaskSwitcher();
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Slot connected to List widget.
+ \param index Model index of the activated item.
+ */
void HsCollectionState::listItemActivated(const QModelIndex &index)
{
HSMENUTEST_FUNC_ENTRY("HsCollectionState::listItemActivated");
- const CaEntry *entry = mCollectionModel->entry(index);
+ QSharedPointer<const CaEntry> entry = mCollectionModel->entry(index);
if (entry->entryTypeName() == widgetTypeName()) {
machine()->postEvent(
@@ -271,7 +279,7 @@
/*!
Handles long-item-pressed event in all apps view by showing context menu
\param item the event pertains to
- \param position at which context menu is shown
+ \param coords press point coordinates.
\retval void
*/
void HsCollectionState::listItemLongPressed(HbAbstractViewItem *item,
@@ -279,7 +287,6 @@
{
Q_UNUSED(item);
HSMENUTEST_FUNC_ENTRY("HsCollectionState::listItemLongPressed");
- mMenuView.setSearchPanelVisible(false);
int itemId = item->modelIndex().data(CaItemModel::IdRole).toInt();
// create context menu
HbMenu *menu = new HbMenu();
@@ -290,6 +297,7 @@
"txt_applib_menu_add_to_collection"));
HbAction *removeAction(NULL);
HbAction *uninstallAction(NULL);
+ HbAction *appSettingsAction(NULL);
// we do not add remove option in collection download menu
// check conditions and hide irrelevant menu items
if (mCollectionType != collectionDownloadedTypeName()) {
@@ -303,9 +311,15 @@
if ((flags & RemovableEntryFlag)) {
uninstallAction = menu->addAction(hbTrId("txt_common_menu_delete"));
}
+ QSharedPointer<const CaEntry> entry = mCollectionModel->entry(item->modelIndex());
+ if (!(entry->attribute(appSettingsPlugin()).isEmpty())) {
+ appSettingsAction = menu->addAction(hbTrId(
+ "txt_common_menu_settings"));
+ }
// choose proper action
if (HbAction *selectedAction = menu->exec(coords)) {
+
if (selectedAction == addShortcutAction) {
addElementToHomeScreen(item->modelIndex());
} else if (selectedAction == addToCollection) {
@@ -318,15 +332,23 @@
machine()->postEvent(
HsMenuEventFactory::createRemoveAppFromCollectionEvent(
itemId, mCollectionId));
+ } else if (selectedAction == appSettingsAction) {
+ const int itemId =
+ item->modelIndex().data(CaItemModel::IdRole).toInt();
+ QMap<QString, QString> attributes = entry->attributes();
+ machine()->postEvent(
+ HsMenuEventFactory::createAppSettingsViewEvent(itemId));
}
+
+ mMenuView.setSearchPanelVisible(false);
}
delete menu;
HSMENUTEST_FUNC_EXIT("HsCollectionState::listItemLongPressed");
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu add applications action slot
+ */
void HsCollectionState::addAppsAction()
{
// Add applications
@@ -335,44 +357,44 @@
mCollectionId));
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu add shortcut action slot
+ */
void HsCollectionState::addCollectionShortcutToHomeScreenAction()
{
machine()->postEvent(HsMenuEventFactory::createAddToHomeScreenEvent(
mCollectionId));
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu rename action slot
+ */
void HsCollectionState::renameAction()
{
machine()->postEvent(HsMenuEventFactory::createRenameCollectionEvent(
mCollectionId));
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu delete action slot
+ */
void HsCollectionState::deleteAction()
{
machine()->postEvent(HsMenuEventFactory::createDeleteCollectionEvent(
mCollectionId));
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Menu softkey back action slot
+ */
void HsCollectionState::backSteppingAction()
{
machine()->postEvent(HsMenuEventFactory::createOpenAppLibraryEvent());
}
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
+/*!
+ Updates label
+ */
void HsCollectionState::updateLabel()
{
HSMENUTEST_FUNC_ENTRY("HsCollectionState::updateLabel");
@@ -390,17 +412,13 @@
*/
void HsCollectionState::addElementToHomeScreen(const QModelIndex &index)
{
- const CaEntry *entry = mCollectionModel->entry(index);
-
+ QSharedPointer<const CaEntry> entry = mCollectionModel->entry(index);
+
QMap<QString, QString> attributes = entry->attributes();
machine()->postEvent(
HsMenuEventFactory::createAddToHomeScreenEvent(
- entry->id(),
- entry->entryTypeName(),
- entry->attribute(widgetUriAttributeName()),
- entry->attribute(widgetLibraryAttributeName()),
- &attributes));
+ entry->id()));
}
/*!
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsinstalledappsstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,219 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: Menu All Applications state.
+ *
+ */
+
+#include <qstatemachine.h>
+#include <hbview.h>
+#include <hblistview.h>
+#include <hbaction.h>
+#include <hbmenu.h>
+#include <hbabstractviewitem.h>
+#include <hsmenueventfactory.h>
+#include <hbinstance.h>
+#include <caentry.h>
+#include <hbsearchpanel.h>
+
+#include "hsmenuitemmodel.h"
+#include "hsmenuview.h"
+#include "cadefs.h"
+#include "hsinstalledappsstate.h"
+#include "hsaddappstocollectionstate.h"
+#include "hsapp_defs.h"
+#include "hsmenumodetransition.h"
+
+/*!
+ \class HsInstalledAppsState
+ \ingroup group_hsapplibrarystateplugin
+ \brief Manages displaying installed applications
+ */
+
+/*!
+ Constructor.
+ \param menuView menu view.
+ \param parent Pwner.
+ */
+HsInstalledAppsState::HsInstalledAppsState(HsMenuView &menuView, QState *parent) :
+ QState(parent), mMenuView(menuView), mInstalledAppsModel(0)
+{
+ construct();
+}
+
+/*!
+ Constructor part.
+ */
+void HsInstalledAppsState::construct()
+{
+ HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::construct");
+
+ const QString parentName =
+ parent() != 0 ? parent()->objectName() : QString("");
+ setObjectName(parentName + "/installedappsstate");
+ connect(this, SIGNAL(entered()),SLOT(stateEntered()));
+ connect(this, SIGNAL(exited()),SLOT(stateExited()));
+
+ mSecondarySoftkeyAction = new HbAction(Hb::BackAction, this);
+
+ HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::construct");
+}
+
+/*!
+ Method seting menu options.
+ */
+void HsInstalledAppsState::setMenuOptions()
+{
+ HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::setMenuOptions");
+ HbMenu *const mOptions = new HbMenu();
+ mOptions->setParent(this);
+
+ mOptions->addAction(hbTrId("txt_applib_opt_task_switcher"),
+ this, SLOT(openTaskSwitcher()));
+
+ mMenuView.view()->setMenu(mOptions);
+ HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::setMenuOptions");
+}
+
+/*!
+ Destructor.
+ */
+HsInstalledAppsState::~HsInstalledAppsState()
+{
+ delete mInstalledAppsModel;
+}
+
+/*!
+ Slot connected to entered() signal.
+ Invoked when a state is entered.
+ */
+void HsInstalledAppsState::stateEntered()
+{
+ qDebug("AllAppsState::stateEntered()");
+ HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::stateEntered");
+
+ if (!mInstalledAppsModel) {
+ mInstalledAppsModel
+ = HsMenuService::getInstalledModel(AscendingNameHsSortAttribute);
+ }
+ mMenuView.setModel(mInstalledAppsModel);
+ mMenuView.scrollTo(mInstalledAppsModel->index(0));
+ setMenuOptions();
+
+ connect(&mMenuView, SIGNAL(activated(QModelIndex)),
+ SLOT(listItemActivated(QModelIndex)));
+ connect(&mMenuView, SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
+ SLOT(listItemLongPressed(HbAbstractViewItem *, QPointF)));
+ connect(mSecondarySoftkeyAction, SIGNAL(triggered()),
+ SLOT(backAction()));
+ mMenuView.hideToolBar();
+ mOldNavigationAction = mMenuView.view()->navigationAction();
+ mMenuView.view()->setNavigationAction(mSecondarySoftkeyAction);
+ mMenuView.setLabelVisible(true);
+ mMenuView.setLabel(hbTrId("txt_applib_subtitle_installed"));
+ HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::stateEntered");
+}
+
+/*!
+ Slot invoked when a state is exited.
+ */
+void HsInstalledAppsState::stateExited()
+{
+ HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::stateExited");
+ mMenuView.setSearchPanelVisible(false);
+ // revert navigation action
+ mMenuView.view()->setNavigationAction(mOldNavigationAction);
+ mMenuView.showToolBar();
+ mMenuView.setLabelVisible(false);
+ mMenuView.disconnect(this);
+ mMenuView.view()->setMenu(NULL);
+
+ disconnect(mSecondarySoftkeyAction, SIGNAL(triggered()),
+ this, SLOT(backAction()));
+
+ HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::stateExited");
+ qDebug("AllAppsState::stateExited()");
+}
+
+/*!
+ Open task switcher.
+ \retval true if operation is successful.
+ */
+bool HsInstalledAppsState::openTaskSwitcher()
+{
+ return HsMenuService::launchTaskSwitcher();
+}
+
+/*!
+ Method invoked when a list item is activated.
+ \param index indec of activated item.
+ */
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsInstalledAppsState::listItemActivated(const QModelIndex &/*index*/)
+{
+ //no implementation yet
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+/*!
+ Handles long-item-pressed event in all apps view by showing context menu
+ \param item the event pertains to
+ \param coords press point coordinates.
+ */
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsInstalledAppsState::listItemLongPressed(HbAbstractViewItem *item,
+ const QPointF &coords)
+{
+ HSMENUTEST_FUNC_ENTRY("HsInstalledAppsState::listItemLongPressed");
+
+ // create context menu
+ HbMenu *menu = new HbMenu();
+
+ HbAction *uninstallAction = menu->addAction(
+ hbTrId("txt_common_menu_delete"));
+
+ // choose proper action
+ if (HbAction *selectedAction = menu->exec(coords)) {
+ if (selectedAction == uninstallAction) {
+ const int itemId = item->modelIndex().data(
+ CaItemModel::IdRole).toInt();
+ HsMenuService::executeAction(itemId, removeActionIdentifier());
+ }
+ mMenuView.setSearchPanelVisible(false);
+ }
+ delete menu;
+ HSMENUTEST_FUNC_EXIT("HsInstalledAppsState::listItemLongPressed");
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+/*!
+ Slot invoked when a back action is triggered.
+ */
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsInstalledAppsState::backAction()
+{
+ machine()->postEvent(HsMenuEventFactory::createOpenAppLibraryEvent());
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenumodetransition.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenumodetransition.cpp Mon May 03 12:24:59 2010 +0300
@@ -20,7 +20,7 @@
/*!
\class HsMenuModeTransition
- \ingroup group_applibrarystateplugin
+ \ingroup group_hsmenustateplugin
\brief Transition to normal or add mode
*/
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenusearch.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description: Menu search.
- *
- */
-
-#include <qdebug.h>
-#include "hsmenuitemmodel.h"
-#include "hsmenuview.h"
-#include "hsmenusearch.h"
-
-/*!
- \class Menu Search
- \ingroup group_hsmenustateplugin
-
- \brief Menu View
-
- Provides handler for \a criteriaChanged signal emited
- by menu view search panel
-
- \sa HsMenuView
-*/
-
-/*!
- Constructor
- \param menuView Menu view the object is doing search job for.
- */
-HsMenuSearch::HsMenuSearch(HsMenuView *menuView): mMenuView(menuView)
-{
-}
-
-/*!
- Looks up for item and if found scrolls to it.
- \param criteriaStr The item name to find.
- */
-void HsMenuSearch::findItem(QString criteriaStr)
-{
- qDebug() << QString("HsMenuSearch::findItem: %1").arg(criteriaStr);
- HSMENUTEST_FUNC_ENTRY("HsMenuSearch::findItem");
-
- if ("" != criteriaStr) {
- const HsMenuItemModel *const model = mMenuView->model();
-
- const QModelIndexList list =
- model->match(
- model->index(0, 0),
- CaItemModel::TextRole,
- criteriaStr);
-
- if (list.count() > 0) {
- qDebug() << QString("HsMenuSearch::findItem:row %1"). arg(
- list.at(0).row());
-
- mMenuView->scrollToWithoutHidingSearchPanel(
- list.at(0),
- HbAbstractItemView::PositionAtTop);
- }
- }
-
- HSMENUTEST_FUNC_EXIT("HsMenuSearch::findItem");
-}
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuview.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuview.cpp Mon May 03 12:24:59 2010 +0300
@@ -52,16 +52,21 @@
\param window Main window.
*/
-HsMenuView::HsMenuView(HbMainWindow *window):
+HsMenuView::HsMenuView():
mBuilder(),
- mWindow(window),
mModel(NULL),
- mMenuSearch(this),
+ mFirstVisibleIndex(),
+ mLastVisibleIndex(),
mToolBarActionGroup(new QActionGroup(mBuilder.toolBar())),
- mMenuMode(NormalHsMenuMode)
+ mMenuMode(NormalHsMenuMode),
+ mProxyModel(new QSortFilterProxyModel(this))
{
setUpToolBar();
connectItemViewsSignals();
+
+ mProxyModel->setFilterRole(CaItemModel::TextRole);
+ mProxyModel->setFilterKeyColumn(1);
+ mProxyModel->setSortRole(CaItemModel::TextRole);
}
/*!
@@ -98,13 +103,17 @@
}
/*!
- Sets model for item view.
+ Sets model for item view without connecting scroll signals
- \return Model shown by item view.
+ \param model Model to show by item view
*/
-const HsMenuItemModel *HsMenuView::model() const
+void HsMenuView::setModelToView(QAbstractItemModel *model)
{
- return mModel;
+ HSMENUTEST_FUNC_ENTRY("HsMenuView::setModelToView");
+
+ mBuilder.listView()->setModel(model);
+
+ HSMENUTEST_FUNC_EXIT("HsMenuView::setModelToView");
}
/*!
@@ -136,22 +145,6 @@
HSMENUTEST_FUNC_EXIT("HsAllCollectionsState::scrollTo");
}
-/*!
- Scrolls item view to requested item.
- Does not close search panel.
- \param index The index of the item the view is to be scrolled.
- \param hint Where the target item should be positioned in visible area
- after scroll.
- */
-void HsMenuView::scrollToWithoutHidingSearchPanel(const QModelIndex &index,
- HbAbstractItemView::ScrollHint hint)
-{
- HSMENUTEST_FUNC_ENTRY("HsMenuView::scrollToWithoutHidingSearchPanel");
- hideSearchPanelOnScrolling(false);
- scrollTo(index, hint);
- hideSearchPanelOnScrolling(true);
- HSMENUTEST_FUNC_EXIT("HsMenuView::scrollToWithoutHidingSearchPanel");
-}
/*!
Makes the UI to show or hide view label.
@@ -176,20 +169,18 @@
{
HSMENUTEST_FUNC_ENTRY("HsMenuView::setSearchPanelVisible");
if (mBuilder.searchPanel()->isVisible() != visible) {
- const static Hb::SceneItems statusPaneItems(
- Hb::SecondarySoftKeyItem
- | Hb::TitlePaneItem
- | Hb::IndicatorItems);
+ if (visible) {
+ mFirstVisibleIndex = firstVisibleItemIndex();
+ mBuilder.setSearchPanelVisible(visible);
+ mBuilder.view()->hideItems(Hb::AllItems);
+ connectSearchPanelSignals();
- if (visible) {
- mWindow->hideItems(statusPaneItems);
- connectSearchPanelSignals();
} else {
- mWindow->showItems(statusPaneItems);
+ mLastVisibleIndex = firstVisibleItemIndex();
+ mBuilder.view()->showItems(Hb::AllItems);
+ mBuilder.setSearchPanelVisible(visible);
disconnectSearchPanelSignals();
}
-
- mBuilder.setSearchPanelVisible(visible);
}
HSMENUTEST_FUNC_EXIT("HsMenuView::setSearchPanelVisible");
}
@@ -267,6 +258,9 @@
setSearchPanelVisible(true);
HSMENUTEST_FUNC_EXIT("HsMenuView::showSearchPanel");
}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT skipped: it doubles other method
/*!
* Makes search panel visible.
@@ -278,6 +272,9 @@
setSearchPanelVisible(false);
HSMENUTEST_FUNC_EXIT("HsMenuView::hideSearchPanel");
}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
/*!
Scrolls item view to requested row.
@@ -294,8 +291,8 @@
/*!
Converts scroll hints.
- \param Qt hint Where the target item should be positioned in visible area
- after scroll.
+ \param Qt hint Where the target item should be positioned in
+ visible area after scroll.
\return Qrbit version of hint
*/
HbAbstractItemView::ScrollHint HsMenuView::convertScrollHint(
@@ -343,6 +340,36 @@
}
/*!
+ Connects \a activated and \a longPressed signals coming from search list
+ view to emit corresponding signal of this object with translated model index
+*/
+void HsMenuView::connectSearchItemViewsSignals()
+{
+ const HbListView *const listView = mBuilder.listView();
+
+ connect(listView, SIGNAL(activated(QModelIndex)),
+ this, SLOT(activatedProxySlot(QModelIndex)));
+ connect(listView, SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
+ this, SLOT(longPressedProxySlot(HbAbstractViewItem *, QPointF)));
+
+}
+
+/*!
+ Disconnects \a activated and \a longPressed signals coming from list
+ view from to emit corresponding signal
+ of this object with translated model index
+*/
+void HsMenuView::disconnectSearchItemViewsSignals()
+{
+ const HbListView *const listView = mBuilder.listView();
+
+ disconnect(listView, SIGNAL(activated(QModelIndex)),
+ this, SLOT(activatedProxySlot(QModelIndex)));
+ disconnect(listView, SIGNAL(longPressed(HbAbstractViewItem *, QPointF)),
+ this, SLOT(longPressedProxySlot(HbAbstractViewItem *, QPointF)));
+}
+
+/*!
Connects model's \a scrollTo signal with the object \a scrollToRow slot.
*/
void HsMenuView::connectModelSignals()
@@ -366,47 +393,39 @@
*/
void HsMenuView::connectSearchPanelSignals()
{
+ disconnectModelSignals();
+ disconnectItemViewsSignals();
+
+ searchBegins();
+ connectSearchItemViewsSignals();
+
connect(mBuilder.searchPanel(), SIGNAL(exitClicked()),
this, SLOT(hideSearchPanel()));
+ connect(mBuilder.searchPanel(), SIGNAL(criteriaChanged(QString)),
+ this, SLOT(findItem(QString)));
+ scrollTo(mProxyModel->mapFromSource(mFirstVisibleIndex),
+ HbAbstractItemView::PositionAtTop);
- connect(mBuilder.searchPanel(), SIGNAL(criteriaChanged(QString)),
- &mMenuSearch, SLOT(findItem(QString)));
-
- hideSearchPanelOnScrolling(true);
}
/*!
Disconnects signals \a exitClicked and \a criteriaChanged emitted
by search panel from handling slots of the object or its members
+ Scrolls view to state before connections
*/
void HsMenuView::disconnectSearchPanelSignals()
{
+ disconnectSearchItemViewsSignals();
+
disconnect(mBuilder.searchPanel(), SIGNAL(exitClicked()),
this, SLOT(hideSearchPanel()));
disconnect(mBuilder.searchPanel(), SIGNAL(criteriaChanged(QString)),
- &mMenuSearch, SLOT(findItem(QString)));
-
- hideSearchPanelOnScrolling(false);
-}
+ this, SLOT(findItem(QString)));
-/*!
- Connects or disconnects item views' (list) \a scrollingStarted
- signal with the object \a hideSearchPanel slot.
- \param hide When true connects the signals with the slots, otherwise
- disconnects them.
- */
-void HsMenuView::hideSearchPanelOnScrolling(bool hide)
-{
- const HbListView *const listView = mBuilder.listView();
-
- if (hide) {
- connect(listView, SIGNAL(scrollingStarted()),
- this, SLOT(hideSearchPanel()));
- } else {
- disconnect(listView, SIGNAL(scrollingStarted()),
- this, SLOT(hideSearchPanel()));
- }
+ searchFinished();
+ connectModelSignals();
+ connectItemViewsSignals();
}
/*!
@@ -427,6 +446,20 @@
HSMENUTEST_FUNC_EXIT("HsMenuView::construct()");
}
+void HsMenuView::hideToolBar()
+{
+ HSMENUTEST_FUNC_ENTRY("HsMenuView::hideToolBar()");
+ mBuilder.view()->hideItems(Hb::ToolBarItem);
+ HSMENUTEST_FUNC_EXIT("HsMenuView::hideToolBar()");
+}
+
+void HsMenuView::showToolBar()
+{
+ HSMENUTEST_FUNC_ENTRY("HsMenuView::showToolBar()");
+ mBuilder.view()->showItems(Hb::ToolBarItem);
+ HSMENUTEST_FUNC_EXIT("HsMenuView::showToolBar()");
+}
+
HsMenuMode HsMenuView::getHsMenuMode()
{
return mMenuMode;
@@ -436,3 +469,80 @@
{
mMenuMode = menuMode;
}
+/*!
+ Looks up for item and if found scrolls to it.
+ \param criteriaStr The item name to find.
+ */
+void HsMenuView::findItem(QString criteriaStr)
+{
+ qDebug
+ () << QString("hsmenuview::findItem: %1").arg(criteriaStr);
+ HSMENUTEST_FUNC_ENTRY("hsmenuview::findItem");
+
+ if ("" != criteriaStr) {
+ mProxyModel->setFilterRegExp(QRegExp(criteriaStr,
+ Qt::CaseInsensitive, QRegExp::FixedString));
+ }
+ else {
+ mProxyModel->setFilterRegExp(QRegExp(QString(".*"),
+ Qt::CaseInsensitive, QRegExp::RegExp));
+ // scroll to first item in model
+ mBuilder.listView()->scrollTo(
+ mProxyModel->mapFromSource(mModel->index(0)),
+ HbAbstractItemView::PositionAtTop);
+ }
+ HSMENUTEST_FUNC_EXIT("hsmenuview::findItem");
+}
+
+/*!
+ Initializes search.
+ */
+void HsMenuView::searchBegins()
+{
+ HSMENUTEST_FUNC_ENTRY("hsmenuview::searchBegins");
+ mProxyModel->invalidate();
+ mProxyModel->setSourceModel(mModel);
+ mProxyModel->setFilterRegExp(QRegExp(QString(".*"), Qt::CaseInsensitive,
+ QRegExp::RegExp));
+ setModelToView(mProxyModel);
+ HSMENUTEST_FUNC_EXIT("hsmenuview::searchBegins");
+}
+
+/*!
+ Ends search, scrolls view to last visible item in search view
+ */
+void HsMenuView::searchFinished()
+{
+ HSMENUTEST_FUNC_ENTRY("hsmenuview::searchFinished");
+ QModelIndex temp = mProxyModel->mapToSource(mLastVisibleIndex);
+ setModel(mModel);
+ mBuilder.listView()->scrollTo(temp, HbAbstractItemView::PositionAtTop);
+ HSMENUTEST_FUNC_EXIT("hsmenuview::searchFinished");
+}
+
+/*!
+ * Slot used to translate activated signal from proxy model to normal model
+ */
+void HsMenuView::activatedProxySlot(const QModelIndex &index)
+{
+ emit activated(mProxyModel->mapToSource(index));
+}
+
+/*!
+ * Slot used to translate longPressed signal from proxy model to normal model
+ */
+void HsMenuView::longPressedProxySlot(HbAbstractViewItem *item,
+ const QPointF &coords)
+{
+ /*
+ this is a kind of hack, introduced for reasons:
+ item object should be reusable later, but orbit (or qt) prevents setting
+ its index model to previous state
+ */
+ mSearchIndex = mProxyModel->mapToSource(item->modelIndex());
+ HbAbstractViewItem* itemNew = item->createItem();
+ itemNew->setModelIndex(mSearchIndex);
+ emit longPressed(itemNew, coords);
+ delete itemNew;
+}
+
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuviewbuilder.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsmenuviewbuilder.cpp Mon May 03 12:24:59 2010 +0300
@@ -25,10 +25,41 @@
#include <HbToolBar>
#include <HbView>
#include <HbWidget>
+#include <HbStaticVkbHost>
+#include <HbMainWindow>
+#include <HbInputMethod>
#include "hsmenuviewbuilder.h"
#include "hsmenustates_global.h"
+// TODO this class is temprary solution, proper one should come from Orbit
+class HsVkbHost : public HbStaticVkbHost {
+public:
+ explicit HsVkbHost(HbWidget *target):
+ HbStaticVkbHost(target), mWidget(target) {}
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT skipped: its very temporary TODO
+ void openFinished() {
+ updateViewHeight(applicationArea().height());
+ }
+
+ void closeFinished(){
+ updateViewHeight(-1);
+ }
+
+ void updateViewHeight(qreal height) {
+ HbView* view = mWidget->mainWindow()->currentView();
+ view->setMaximumHeight(height);
+ }
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+ HbWidget * mWidget;
+};
+
/*!
\class HsMenuViewBuilder
\ingroup group_hsmenustateplugin
@@ -72,12 +103,22 @@
result = parseSection(mSections[mViewOptions]);
if (visible) {
+ // TODO this is temprary solution, proper solution should come from Orbit
+ if (!HbVkbHost::getVkbHost(searchPanel()))
+ {
+ new HsVkbHost(searchPanel());
+ }
HbLineEdit *const lineEdit(searchPanelLineEdit());
lineEdit->setText("");
}
+ else {
+ if (static_cast<HsVkbHost *>(HbVkbHost::getVkbHost(searchPanel()))) {
+ static_cast<HsVkbHost *>(HbVkbHost::getVkbHost(searchPanel()))->
+ updateViewHeight(-1);
+ }
+ }
}
-
return result;
}
--- a/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsovistorehandler.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsapplibrarystateplugin/src/hsovistorehandler.cpp Mon May 03 12:24:59 2010 +0300
@@ -25,6 +25,14 @@
const QString DefaultOviStoreLink("https://store.ovi.com/applications");
#endif
+/*!
+ \class HsOviStoreHandler
+ \ingroup group_hsmenustateplugin
+
+ \brief
+
+ \sa
+*/
/*!
Constructor
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/hshomescreenstateplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/hshomescreenstateplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -22,20 +22,21 @@
INCLUDEPATH += ./inc \
../../hsutils/inc \
../../hsdomainmodel/inc \
- ../../hsapplication/inc
+ ../../hsapplication/inc \
+ ../../serviceproviders/hsmenuserviceprovider/inc
QT += xml sql
CONFIG += plugin hb mobility
MOBILITY = serviceframework
-PLUGIN_SUBDIR = /hsresources/plugins/stateplugins
+PLUGIN_SUBDIR = /private/20022F35/plugins/stateplugins
include(../../common.pri)
LIBS += -lhsutils \
-lhsdomainmodel \
- -lhswidgetmodel
+ -lhsmenuserviceprovider
RESOURCES += hshomescreenstateplugin.qrc
@@ -44,5 +45,3 @@
}
include(hshomescreenstateplugin.pri)
-
-win32:exportResources(./tsrc/loc_win/*.qm, hsresources/loc)
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/hshomescreenstateplugin.ts Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
-<context>
-<message id="txt_hs_opt_az">
- <comment>Sort widget gallery list from a to z</comment>
- <source>A-Z</source>
- <translation>A-Z</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>opt</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_opt_add_page">
- <comment>Add new page to the homescreen</comment>
- <source>Add page</source>
- <translation>Add page</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>opt</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_opt_download_widgets">
- <comment>Check for updates </comment>
- <source>Download widgets</source>
- <translation>Download widgets</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>opt</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_button_collections">
- <comment>Hint text for the Collections toolbar</comment>
- <source>Collections</source>
- <translation>Collections</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>button</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_button_download_widgets">
- <comment>Hint text for the Download widgets toolbar</comment>
- <source>Download widgets</source>
- <translation>Download widgets</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>button</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_title_manage_pages">
- <comment>Manage pages state title text</comment>
- <source>Manage pages</source>
- <translation>Manage pages</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>title</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_info_uninstall_failed">
- <comment>Info note if uninstall failed</comment>
- <source>Uninstall failed</source>
- <translation>Uninstall failed</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>info</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_opt_remove_page">
- <comment>Delete current page from the homescreen</comment>
- <source>Remove page</source>
- <translation>Remove page</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>opt</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_dialog_uninstall2">
- <comment>Confirmation query before selected widget is installed</comment>
- <source>Uninstall2</source>
- <translation>Uninstall2</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>dialog</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_opt_za">
- <comment>Sort widget gallery list from z to a</comment>
- <source>Z-A</source>
- <translation>Z-A</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>opt</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_opt_add_widget">
- <comment>Menu item to open widget gallery</comment>
- <source>Add widget</source>
- <translation>Add widget</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>opt</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_info_uninstall_successful">
- <comment>Info note after uninstall is succeeded.</comment>
- <source>Uninstall successful</source>
- <translation>Uninstall successful</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>info</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_menu_add">
- <comment>Context specific menu option to add widget to homescreen</comment>
- <source>Add</source>
- <translation>Add</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>menu</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message id="txt_hs_button_all">
- <comment>Hint text for the All toolbar</comment>
- <source>All</source>
- <translation>All</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>hs</extra-loc-viewid>
- <extra-loc-positionid>button</extra-loc-positionid>
- <extra-loc-feature>hs</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsidlestate.h Mon May 03 12:24:59 2010 +0300
@@ -27,9 +27,12 @@
class QGraphicsItem;
class QGraphicsSceneMouseEvent;
+class QPropertyAnimation;
class HbView;
class HbAction;
class HsIdleWidget;
+class HsTitleResolver;
+class QParallelAnimationGroup;
class HsIdleState : public QState
{
@@ -51,12 +54,16 @@
void event_addPage();
void event_removePage();
void event_toggleConnection();
+
+protected:
+ bool eventFilter(QObject *watched, QEvent *event);
private:
Q_DISABLE_COPY(HsIdleState)
void setupStates();
qreal pageLayerXPos(int pageIndex) const;
void startPageChangeAnimation(int targetPageIndex, int duration);
+ void startPageChangeZoneAnimation(int duration);
bool isInPageChangeZone();
bool isInLeftPageChangeZone();
bool isInRightPageChangeZone();
@@ -70,8 +77,10 @@
void action_idle_layoutNewWidgets();
void action_idle_showActivePage();
void action_idle_connectOrientationChangeEventHandler();
+ void action_idle_installEventFilter();
void action_idle_cleanupView();
void action_idle_disconnectOrientationChangeEventHandler();
+ void action_idle_uninstallEventFilter();
void action_waitInput_updateOptionsMenu();
void action_waitInput_connectMouseEventHandlers();
void action_waitInput_disconnectMouseEventHandlers();
@@ -86,18 +95,18 @@
void action_moveWidget_reparentToControlLayer();
void action_moveWidget_startWidgetDragAnimation();
void action_moveWidget_connectMouseEventHandlers();
- void action_moveWidget_connectGestureTimers();
void action_moveWidget_reparentToPage();
void action_moveWidget_startWidgetDropAnimation();
void action_moveWidget_disconnectMouseEventHandlers();
- void action_moveWidget_disconnectGestureTimers();
void action_moveScene_connectMouseEventHandlers();
void action_moveScene_disconnectMouseEventHandlers();
void action_sceneMenu_showMenu();
void action_addPage_addPage();
void action_removePage_removePage();
void action_toggleConnection_toggleConnection();
+ void action_idle_setupTitle();
+ void action_idle_cleanupTitle();
void waitInput_onMousePressed(
QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered);
@@ -122,12 +131,13 @@
void widgetInteraction_onTapAndHoldTimeout();
void sceneInteraction_onTapAndHoldTimeout();
- void moveWidget_onHoldTimeout();
+
+ void onTitleChanged(QString title);
-#ifndef Q_OS_SYMBIAN
- void switchLanguage();
- void translateUi();
-#endif
+ void onAddContentActionTriggered();
+
+ bool openTaskSwitcher();
+ void zoneAnimationFinished();
private:
HbView *mView;
@@ -139,7 +149,11 @@
qreal mPageChangeZoneWidth;
QPointF mSceneMenuPos;
-
+ HsTitleResolver *mTitleResolver;
+ QPropertyAnimation *mZoneAnimation;
+ bool mPageChanged;
+ bool mAllowZoneAnimation;
+ QParallelAnimationGroup *mPageChangeAnimation;
HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
};
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsselectbackgroundstate.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/inc/hsselectbackgroundstate.h Mon May 03 12:24:59 2010 +0300
@@ -26,7 +26,11 @@
class QImage;
class HbView;
+#ifdef Q_OS_SYMBIAN
+class HsImageFetcherClient;
+#else
class XQAIWGetImageClient;
+#endif
class HsSelectBackgroundState : public QState
{
@@ -41,17 +45,28 @@
private:
Q_DISABLE_COPY(HsSelectBackgroundState)
- bool saveImage(QImage &image, const QString &path, Qt::Orientation orientation);
private slots:
void action_selectWallpaper();
void action_disconnectImageFetcher();
-
+
void onFetchComplete(QStringList imageStringList);
void onFetchFailed(int error);
+ // for S60 API
+#ifdef Q_OS_SYMBIAN
+ void fetchCompleted(const QString&);
+ void fetchFailed(int, const QString&);
+#endif
+
private:
+
+#ifdef Q_OS_SYMBIAN
+ HsImageFetcherClient *mImageFetcher;
+#else
XQAIWGetImageClient *mImageFetcher;
+#endif
+
HbView *mSourceView;
HOMESCREEN_TEST_FRIEND_CLASS(HomeScreenStatePluginTest)
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/resource/hshomescreenstateplugin.s60xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>hshomescreenstateplugin</name>
- <filepath>z:/hsresources/plugins/stateplugins/hshomescreenstateplugin.qtplugin</filepath>
- <description></description>
- <interface>
- <name>com.nokia.homescreen.state.HsLoadSceneState</name>
- <version>1.0</version>
- <description></description>
- <capabilities></capabilities>
- </interface>
- <interface>
- <name>com.nokia.homescreen.state.HsIdleState</name>
- <version>1.0</version>
- <description></description>
- <capabilities></capabilities>
- </interface>
-</service>
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsidlestate.cpp Mon May 03 12:24:59 2010 +0300
@@ -28,6 +28,8 @@
#include <HbMenu>
#include <HbAction>
#include <HbIcon>
+#include <HbMessageBox>
+#include <HbLabel>
#include "hsidlestate.h"
#include "hsidlewidget.h"
@@ -39,10 +41,11 @@
#include "hsselectbackgroundstate.h"
#include "hstrashbinwidget.h"
#include "hspageindicator.h"
-#include "hsapptranslator.h"
#include "hswidgetpositioningonorientationchange.h"
#include "hsmenueventfactory.h"
#include "hshomescreenstatecommon.h"
+#include "hstitleresolver.h"
+#include "hsmenuservice.h"
// Helper macros for connecting state entry and exit actions.
#define ENTRY_ACTION(state, action) \
@@ -62,13 +65,39 @@
namespace
{
const char gApplicationLibraryIconName[] = "qtg_mono_applications_all";
- const char gAddPageTextName[] = "txt_homescreen_opt_add_page";
- const char gRemovePageTextName[] = "txt_homescreen_opt_remove_page";
- const char gToOnlineTextName[] = "txt_homescreen_opt_home_screen_to_online";
- const char gToOfflineTextName[] = "txt_homescreen_opt_home_screen_to_offline";
- const char gChangeWallpaperTextName[] = "txt_homescreen_list_change_wallpaper";
- const char gAddContentTextName[] = "txt_homescreen_list_add_content";
- //const char gTitleOfflineTextName[] = "txt_homescreen_title_offline";
+
+ //User adds a new page to home screen
+ const char hsLocTextId_OptionsMenu_AddPage[] = "txt_homescreen_opt_add_page";
+
+ //User removes page from home screen
+ const char hsLocTextId_OptionsMenu_RemovePage[] = "txt_homescreen_opt_remove_page";
+
+ //Sends request to all widgets to enable data connections
+ const char hsLocTextId_OptionsMenu_HsToOnline[] = "txt_homescreen_opt_home_screen_to_online";
+
+ //Sends request to all widgets to disable data connections
+ const char hsLocTextId_OptionsMenu_HsToOffline[] = "txt_homescreen_opt_home_screen_to_offline";
+
+ //Home screen canvas menu item for opening picture gallery
+ const char hsLocTextId_ContextMenu_ChangeWallpaper[] = "txt_homescreen_list_change_wallpaper";
+
+ //Home screen canvas menu item for opening Application library
+ const char hsLocTextId_ContextMenu_AddContent[] = "txt_homescreen_list_add_content";
+
+ //Home screen options menu item for opening Task switcher
+ const char hsLocTextId_OptionsMenu_TaskSwitcher[] = "txt_homescreen_opt_task_switcher";
+
+ //Heading text in confirmation dialog while removing page with content
+ const char hsLocTextId_Title_RemovePage[] = "txt_homescreen_title_remove_page";
+
+ //Text in confirmation dialog while removing page with content
+ const char hsLocTextId_Confirmation_RemovePage[] = "txt_homescreen_info_page_and_content_will_be_remov";
+
+ //Button in confirmation dialog while removing page with content
+ const char hsLocTextId_ConfirmationButton_Ok[] = "txt_homescreen_button_ok";
+
+ //Button in confirmation dialog while removing page with content
+ const char hsLocTextId_ConfirmationButton_Cancel[] = "txt_homescreen_button_cancel";
}
/*!
@@ -89,10 +118,16 @@
: QState(parent),
mView(0), mNavigationAction(0), mUiWidget(0),
mTapAndHoldDistance(16),
- mPageChangeZoneWidth(60)
+ mPageChangeZoneWidth(60),
+ mTitleResolver(0),
+ mZoneAnimation(0),
+ mPageChanged(false),
+ mAllowZoneAnimation(true),
+ mPageChangeAnimation(0)
{
setupStates();
mTimer.setSingleShot(true);
+ mTitleResolver = new HsTitleResolver(this);
}
/*!
@@ -100,6 +135,22 @@
*/
HsIdleState::~HsIdleState()
{
+ delete mZoneAnimation;
+}
+
+/*!
+ \copydoc QObject::eventFilter(QObject *watched, QEvent *event)
+*/
+bool HsIdleState::eventFilter(QObject *watched, QEvent *event)
+{
+ switch (event->type()) {
+ case QEvent::ApplicationActivate:
+ action_idle_layoutNewWidgets();
+ break;
+ default:
+ break;
+ }
+ return QState::eventFilter(watched, event);
}
/*!
@@ -201,6 +252,8 @@
this, SIGNAL(event_removePage()), state_removePage);
state_waitInput->addTransition(
this, SIGNAL(event_toggleConnection()), state_toggleConnection);
+ state_waitInput->addTransition(
+ this, SIGNAL(event_selectSceneWallpaper()), state_selectSceneWallpaper);
state_widgetInteraction->addTransition(
this, SIGNAL(event_waitInput()), state_waitInput);
@@ -224,6 +277,8 @@
this, SIGNAL(event_waitInput()), state_waitInput);
state_sceneMenu->addTransition(
this, SIGNAL(event_selectSceneWallpaper()), state_selectSceneWallpaper);
+ state_sceneMenu->addTransition(
+ this, SIGNAL(event_addPage()), state_addPage);
state_selectSceneWallpaper->addTransition(
state_selectSceneWallpaper, SIGNAL(event_waitInput()), state_waitInput);
@@ -240,8 +295,12 @@
ENTRY_ACTION(this, action_idle_layoutNewWidgets)
ENTRY_ACTION(this, action_idle_showActivePage)
ENTRY_ACTION(this, action_idle_connectOrientationChangeEventHandler)
+ ENTRY_ACTION(this, action_idle_setupTitle)
+ ENTRY_ACTION(this, action_idle_installEventFilter)
+ EXIT_ACTION(this, action_idle_cleanupTitle)
EXIT_ACTION(this, action_idle_cleanupView)
EXIT_ACTION(this, action_idle_disconnectOrientationChangeEventHandler)
+ EXIT_ACTION(this, action_idle_uninstallEventFilter)
ENTRY_ACTION(state_waitInput, action_waitInput_updateOptionsMenu)
ENTRY_ACTION(state_waitInput, action_waitInput_connectMouseEventHandlers)
@@ -260,12 +319,10 @@
ENTRY_ACTION(state_moveWidget, action_moveWidget_reparentToControlLayer)
ENTRY_ACTION(state_moveWidget, action_moveWidget_startWidgetDragAnimation)
ENTRY_ACTION(state_moveWidget, action_moveWidget_connectMouseEventHandlers)
- ENTRY_ACTION(state_moveWidget, action_moveWidget_connectGestureTimers)
EXIT_ACTION(state_moveWidget, action_moveWidget_reparentToPage)
EXIT_ACTION(state_moveWidget, action_moveWidget_startWidgetDropAnimation)
EXIT_ACTION(state_moveWidget, action_moveWidget_disconnectMouseEventHandlers)
- EXIT_ACTION(state_moveWidget, action_moveWidget_disconnectGestureTimers)
ENTRY_ACTION(state_moveScene, action_moveScene_connectMouseEventHandlers)
EXIT_ACTION(state_moveScene, action_moveScene_disconnectMouseEventHandlers)
@@ -299,25 +356,82 @@
*/
void HsIdleState::startPageChangeAnimation(int targetPageIndex, int duration)
{
- QParallelAnimationGroup *animationGroup = new QParallelAnimationGroup;
+ if (!mPageChangeAnimation) {
+ mPageChangeAnimation = new QParallelAnimationGroup(this);
- QPropertyAnimation *animation = new QPropertyAnimation(mUiWidget->pageLayer(), "x");
- animation->setEndValue(pageLayerXPos(targetPageIndex));
- animation->setDuration(duration);
- animationGroup->addAnimation(animation);
+ QPropertyAnimation *animation = new QPropertyAnimation(mUiWidget->pageLayer(), "x");
+ animation->setEndValue(pageLayerXPos(targetPageIndex));
+ animation->setDuration(duration);
+ mPageChangeAnimation->addAnimation(animation);
- animation = new QPropertyAnimation(mUiWidget->sceneLayer(), "x");
- animation->setEndValue((parallaxFactor() * pageLayerXPos(targetPageIndex)) - HSBOUNDARYEFFECT / 2);
- animation->setDuration(duration);
- animationGroup->addAnimation(animation);
+ animation = new QPropertyAnimation(mUiWidget->sceneLayer(), "x");
+ animation->setEndValue((parallaxFactor() * pageLayerXPos(targetPageIndex)) - HSBOUNDARYEFFECT / 2);
+ animation->setDuration(duration);
+ mPageChangeAnimation->addAnimation(animation);
+ }
+ else {
+ if (QAbstractAnimation::Stopped != mPageChangeAnimation->state()) {
+ mPageChangeAnimation->stop();
+ }
+ QAbstractAnimation *animation = mPageChangeAnimation->animationAt(0);
- animationGroup->start(QAbstractAnimation::DeleteWhenStopped);
+ qobject_cast<QPropertyAnimation*>(animation)->setEndValue(pageLayerXPos(targetPageIndex));
+ qobject_cast<QPropertyAnimation*>(animation)->setDuration(duration);
+ animation = mPageChangeAnimation->animationAt(1);
+ qobject_cast<QPropertyAnimation*>(animation)->setEndValue((parallaxFactor() * pageLayerXPos(targetPageIndex)) - HSBOUNDARYEFFECT / 2);
+ qobject_cast<QPropertyAnimation*>(animation)->setDuration(duration);
+ }
+ mPageChangeAnimation->start();
mUiWidget->showPageIndicator();
mUiWidget->setActivePage(targetPageIndex);
}
/*!
+ Starts the page change zone animation based on the given a\ duration
+*/
+void HsIdleState::startPageChangeZoneAnimation(int duration)
+{
+ HsScene *scene = HsScene::instance();
+
+ int targetPageIndex = scene->activePageIndex();
+
+ if (isInLeftPageChangeZone() && 0 < targetPageIndex) {
+ --targetPageIndex;
+ } else if (isInRightPageChangeZone() &&
+ targetPageIndex < scene->pages().count()) {
+ ++targetPageIndex;
+ } else {
+ mAllowZoneAnimation = true;
+ return;
+ }
+
+ if (targetPageIndex == scene->pages().count()
+ && scene->pages().last()->widgets().isEmpty()) {
+ mAllowZoneAnimation = true;
+ return;
+ }
+
+ if (!mZoneAnimation) {
+ mZoneAnimation = new QPropertyAnimation(mUiWidget->sceneLayer(), "x");
+ }
+
+ if (isInLeftPageChangeZone()) {
+ mZoneAnimation->setEndValue(((parallaxFactor() * pageLayerXPos(scene->activePageIndex()))-HSBOUNDARYEFFECT/2)+HSBOUNDARYEFFECT/2);
+ } else {
+ mZoneAnimation->setEndValue(((parallaxFactor() * pageLayerXPos(scene->activePageIndex()))-HSBOUNDARYEFFECT/2)-HSBOUNDARYEFFECT/2);
+ }
+ mZoneAnimation->setDuration(duration);
+ mZoneAnimation->setDirection(QAbstractAnimation::Forward);
+
+ connect(mZoneAnimation,
+ SIGNAL(finished()),
+ SLOT(zoneAnimationFinished()));
+ mZoneAnimation->start();
+ mPageChanged = true;
+}
+
+/*!
Checks if the active widget is located inside the left or right
page change zone.
*/
@@ -406,17 +520,12 @@
mUiWidget = new HsIdleWidget;
mView = HsScene::mainWindow()->addView(mUiWidget);
mView->setContentFullScreen();
- mView->setTitle("Home Screen"/*hbTrId(gTitleOfflineTextName)*/);
mNavigationAction = new HbAction(this);
mNavigationAction->setIcon(HbIcon(gApplicationLibraryIconName));
connect(mNavigationAction, SIGNAL(triggered()), SIGNAL(event_applicationLibrary()));
mView->setNavigationAction(mNavigationAction);
-#ifndef Q_OS_SYMBIAN
- connect(HsAppTranslator::instance(),
- SIGNAL(languageChanged()), SLOT(translateUi()));
-#endif
// TODO: Workaround to Qt/Hb layouting bugs.
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
}
@@ -425,6 +534,43 @@
}
/*!
+ Sets the idle view's title.
+*/
+void HsIdleState::action_idle_setupTitle()
+{
+ qDebug() << "HsIdleState::action_idle_setupTitle() - ENTRY";
+ onTitleChanged(mTitleResolver->title());
+ connect(mTitleResolver, SIGNAL(titleChanged(QString)), SLOT(onTitleChanged(QString)));
+ qDebug() << "HsIdleState::action_idle_setupTitle() - EXIT";
+}
+
+/*!
+ Updates the idle view's title.
+*/
+void HsIdleState::onTitleChanged(QString title)
+{
+ qDebug() << "HsIdleState::onTitleChanged() to title: " << title;
+ mView->setTitle(title);
+}
+
+/*!
+
+*/
+void HsIdleState::onAddContentActionTriggered()
+{
+ machine()->postEvent(
+ HsMenuEventFactory::createOpenAppLibraryEvent(AddHsMenuMode));
+}
+
+/*!
+ Disconnects the idle view's title.
+*/
+void HsIdleState::action_idle_cleanupTitle()
+{
+ mTitleResolver->disconnect(this);
+}
+
+/*!
Lays out the active page's new widgets that were added
from the application library.
*/
@@ -471,10 +617,21 @@
}
/*!
+ Installs the event filter.
+*/
+void HsIdleState::action_idle_installEventFilter()
+{
+ QCoreApplication::instance()->installEventFilter(this);
+}
+
+/*!
Cleans up the idle view.
*/
void HsIdleState::action_idle_cleanupView()
{
+ if (mUiWidget){
+ mUiWidget->clearDelayedPress();
+ }
}
/*!
@@ -488,6 +645,14 @@
}
/*!
+ Disconnects the event filter.
+*/
+void HsIdleState::action_idle_uninstallEventFilter()
+{
+ QCoreApplication::instance()->removeEventFilter(this);
+}
+
+/*!
Updates the options menu content.
*/
void HsIdleState::action_waitInput_updateOptionsMenu()
@@ -495,33 +660,40 @@
HsScene *scene = HsScene::instance();
HbMenu *menu = new HbMenu();
-
+
+ // Task switcher
+ menu->addAction(hbTrId(hsLocTextId_OptionsMenu_TaskSwitcher),
+ this, SLOT(openTaskSwitcher()));
+
+ // Add content
+ menu->addAction(hbTrId(hsLocTextId_ContextMenu_AddContent),
+ this, SLOT(onAddContentActionTriggered()));
+
// Add page
if (scene->pages().count() < scene->maximumPageCount()) {
- menu->addAction(hbTrId(gAddPageTextName),
+ menu->addAction(hbTrId(hsLocTextId_OptionsMenu_AddPage),
this, SIGNAL(event_addPage()));
}
+ // Change wallpaper
+ menu->addAction(hbTrId(hsLocTextId_ContextMenu_ChangeWallpaper),
+ this, SIGNAL(event_selectSceneWallpaper()));
+
// Remove page
if (scene->activePage()->isRemovable()) {
- menu->addAction(hbTrId(gRemovePageTextName),
+ menu->addAction(hbTrId(hsLocTextId_OptionsMenu_RemovePage),
this, SIGNAL(event_removePage()));
}
// Online / Offline
if (scene->isOnline()) {
- menu->addAction(hbTrId(gToOfflineTextName),
+ menu->addAction(hbTrId(hsLocTextId_OptionsMenu_HsToOffline),
this, SIGNAL(event_toggleConnection()));
} else {
- menu->addAction(hbTrId(gToOnlineTextName),
+ menu->addAction(hbTrId(hsLocTextId_OptionsMenu_HsToOnline),
this, SIGNAL(event_toggleConnection()));
}
-#ifndef Q_OS_SYMBIAN
- menu->addAction(hbTrId("txt_homescreen_opt_switch_language"),
- this, SLOT(switchLanguage()));
-#endif
-
mView->setMenu(menu);
}
@@ -559,6 +731,9 @@
connect(&mTimer, SIGNAL(timeout()),
SLOT(widgetInteraction_onTapAndHoldTimeout()));
mTimer.start();
+
+ HsWidgetHost *widget = HsScene::instance()->activeWidget();
+ widget->startTapAndHoldAnimation();
}
/*!
@@ -577,6 +752,9 @@
{
disconnect(&mTimer, SIGNAL(timeout()),
this, SLOT(widgetInteraction_onTapAndHoldTimeout()));
+
+ HsWidgetHost *widget = HsScene::instance()->activeWidget();
+ widget->stopTapAndHoldAnimation();
}
/*!
@@ -649,16 +827,6 @@
}
/*!
- Connects the moveWidget state's gesture timers.
-*/
-void HsIdleState::action_moveWidget_connectGestureTimers()
-{
- mTimer.setInterval(800);
- connect(&mTimer, SIGNAL(timeout()),
- SLOT(moveWidget_onHoldTimeout()));
-}
-
-/*!
Reparents the active widget to the active page.
*/
void HsIdleState::action_moveWidget_reparentToPage()
@@ -692,15 +860,6 @@
}
/*!
- Disconnects the moveWidget state's gesture timers.
-*/
-void HsIdleState::action_moveWidget_disconnectGestureTimers()
-{
- disconnect(&mTimer, SIGNAL(timeout()),
- this, SLOT(moveWidget_onHoldTimeout()));
-}
-
-/*!
Connects the moveScene state's mouse event handlers.
*/
void HsIdleState::action_moveScene_connectMouseEventHandlers()
@@ -727,18 +886,26 @@
void HsIdleState::action_sceneMenu_showMenu()
{
HbMenu menu;
+
+ HbAction *addContentAction =
+ menu.addAction(hbTrId(hsLocTextId_ContextMenu_AddContent));
+
+ HbAction *addPageAction = 0;
+ HsScene *scene = HsScene::instance();
+ if (scene->pages().count() < scene->maximumPageCount()) {
+ addPageAction = menu.addAction(hbTrId(hsLocTextId_OptionsMenu_AddPage));
+ }
HbAction *changeWallpaperAction =
- menu.addAction(hbTrId(gChangeWallpaperTextName));
- HbAction *addContentAction =
- menu.addAction(hbTrId(gAddContentTextName));
+ menu.addAction(hbTrId(hsLocTextId_ContextMenu_ChangeWallpaper));
- HbAction *action = menu.exec(mSceneMenuPos);
- if (action == changeWallpaperAction) {
+ HbAction *action = menu.exec(mSceneMenuPos);
+ if (action == addContentAction) {
+ onAddContentActionTriggered();
+ } else if (addPageAction && action == addPageAction) {
+ emit event_addPage();
+ } else if (action == changeWallpaperAction) {
emit event_selectSceneWallpaper();
- } else if (action == addContentAction) {
- machine()->postEvent(
- HsMenuEventFactory::createOpenAppLibraryEvent(AddHsMenuMode));
} else {
emit event_waitInput();
}
@@ -767,21 +934,42 @@
void HsIdleState::action_removePage_removePage()
{
HsScene *scene = HsScene::instance();
- HsPage *page = scene->activePage();
- int pageIndex = scene->activePageIndex();
+ HsPage *page = scene->activePage();
+ bool deletePage(true);
- mUiWidget->removePage(pageIndex);
- scene->removePage(page);
- delete page;
+#ifndef HOMESCREEN_TEST //We don't want to test message box.
+ if (!page->widgets().isEmpty()) {
+ HbMessageBox box(HbMessageBox::MessageTypeQuestion);
+ box.setHeadingWidget(new HbLabel
+ (hbTrId(hsLocTextId_Title_RemovePage)));
+ box.setText(hbTrId(hsLocTextId_Confirmation_RemovePage));
+ box.setPrimaryAction(new HbAction(hbTrId(hsLocTextId_ConfirmationButton_Ok)));
+ box.setSecondaryAction(new HbAction(hbTrId(hsLocTextId_ConfirmationButton_Cancel)));
- pageIndex = pageIndex == 0 ? 0 : pageIndex - 1;
- scene->setActivePageIndex(pageIndex);
+ HsScene::mainWindow()->setInteractive(true);
+ HbAction *action = box.exec();
+ if (action != box.primaryAction()) {
+ deletePage = false;
+ }
+ }
+#endif //HOMESCREEN_TEST
+
+ if (deletePage) {
+ int pageIndex = scene->activePageIndex();
- startPageChangeAnimation(pageIndex, 200);
+ mUiWidget->removePage(pageIndex);
+ scene->removePage(page);
+ delete page;
+
+ pageIndex = pageIndex == 0 ? 0 : pageIndex - 1;
+ scene->setActivePageIndex(pageIndex);
- mUiWidget->pageIndicator()->removeItem(pageIndex);
- mUiWidget->setActivePage(pageIndex);
- mUiWidget->showPageIndicator();
+ startPageChangeAnimation(pageIndex, 200);
+
+ mUiWidget->pageIndicator()->removeItem(pageIndex);
+ mUiWidget->setActivePage(pageIndex);
+ mUiWidget->showPageIndicator();
+ }
}
/*!
@@ -849,6 +1037,7 @@
if (mTapAndHoldDistance < point.manhattanLength()) {
mTimer.stop();
mUiWidget->sendDelayedPress();
+ HsScene::instance()->activeWidget()->stopTapAndHoldAnimation();
}
}
@@ -870,7 +1059,8 @@
mUiWidget->sendDelayedPress();
}
- HsScene::instance()->activePage()->updateZValues();
+ HsPage *page = HsScene::instance()->activePage();
+ QMetaObject::invokeMethod(page, "updateZValues", Qt::QueuedConnection);
emit event_waitInput();
}
@@ -933,30 +1123,63 @@
QGraphicsItem *watched, QGraphicsSceneMouseEvent *event, bool &filtered)
{
Q_UNUSED(watched)
- Q_UNUSED(filtered)
- HsWidgetHost *widget = HsScene::instance()->activeWidget();
- Q_ASSERT(widget);
-
+ HsScene *scene = HsScene::instance();
+ HsWidgetHost *widget = scene->activeWidget();
+ HsPage *page = scene->activePage();
+
QPointF delta(event->scenePos() - event->lastScenePos());
- QRectF region = mView->rect().adjusted(10, 55, -10, -10);
- QPointF position = widget->geometry().center() + delta;
- if (!region.contains(position)) {
- position.setX(qBound(region.left(), position.x(), region.right()));
- position.setY(qBound(region.top(), position.y(), region.bottom()));
+
+ QRectF widgetRect = widget->geometry();
+ widgetRect.moveTopLeft(widgetRect.topLeft() + delta);
+
+ QRectF pageRect = mView->rect();
+
+ qreal lowerBoundX = -widgetRect.width() / 2 + 10;
+ if (page == scene->pages().first()) {
+ lowerBoundX = 0;
+ }
+ qreal upperBoundX = pageRect.width() - widgetRect.width() / 2 - 10;
+ if (page == scene->pages().last() && scene->pages().count() == scene->maximumPageCount()) {
+ upperBoundX = pageRect.width() - widgetRect.width();
}
- widget->setPos(position - widget->rect().center());
+ qreal widgetX = qBound(lowerBoundX, widgetRect.x(), upperBoundX);
+ qreal widgetY = qBound(qreal(64), widgetRect.y(), pageRect.height() - widgetRect.height());
+
+ /* if using ItemClipsChildrenToShape-flag in widgethost then
+ setPos does not update position here, however setGeometry does it, QT bug?
+ */
+ widget->setGeometry(widgetX, widgetY, widgetRect.width(), widgetRect.height());
- if (mTimer.isActive()) {
- if (mTapAndHoldDistance < delta.manhattanLength()) {
- mTimer.stop();
+ if (isInPageChangeZone() && mAllowZoneAnimation) {
+ if (!mZoneAnimation) {
+ /* We don't want to create another animation
+ before previous is finished */
+ mAllowZoneAnimation = false;
+ startPageChangeZoneAnimation(800);
}
- } else {
- if (isInPageChangeZone()) {
- mTimer.start();
+ }
+ else if (mZoneAnimation && !isInPageChangeZone()) {
+ if (mZoneAnimation->state() == QAbstractAnimation::Running) {
+ if (mZoneAnimation->direction() == QAbstractAnimation::Forward) {
+ mPageChanged = false;
+ mZoneAnimation->setDuration(200);
+ mZoneAnimation->setDirection(QAbstractAnimation::Backward);
+ }
+ }
+ else {
+ // Out of the page change zone. Delete animation.
+ delete mZoneAnimation;
+ mZoneAnimation = NULL;
+ mAllowZoneAnimation = true;
}
}
+ else if (!isInPageChangeZone()) {
+ /* Zone animation finished and deleted.
+ New animation can be launched. */
+ mAllowZoneAnimation = true;
+ }
if (mUiWidget->trashBin()->isUnderMouse()) {
mUiWidget->trashBin()->activate();
@@ -967,6 +1190,7 @@
if (!mUiWidget->pageIndicator()->isAnimationRunning()) {
mUiWidget->showTrashBin();
}
+ filtered = true;
}
/*!
@@ -983,6 +1207,14 @@
mTimer.stop();
+ if (mZoneAnimation
+ && mZoneAnimation->state() == QAbstractAnimation::Running
+ && mZoneAnimation->direction() == QAbstractAnimation::Forward) {
+ mPageChanged = false;
+ mZoneAnimation->setDuration(200);
+ mZoneAnimation->setDirection(QAbstractAnimation::Backward);
+ }
+
HsScene *scene = HsScene::instance();
HsPage *page = scene->activePage();
HsWidgetHost *widget = scene->activeWidget();
@@ -1003,10 +1235,17 @@
widget->deleteWidgetPresentation(Qt::Horizontal);
}
}
+
+ QRectF widgetRect = widget->geometry();
+ QRectF pageRect = page->rect();
+ qreal widgetX = qBound(qreal(0), widgetRect.x(), pageRect.width() - widgetRect.width());
+ qreal widgetY = qBound(qreal(64), widgetRect.y(), pageRect.height() - widgetRect.height());
+ widget->setPos(widgetX, widgetY);
+
widget->setWidgetPresentation();
page->updateZValues();
}
-
+ mAllowZoneAnimation = true;
filtered = true;
emit event_waitInput();
}
@@ -1077,9 +1316,18 @@
QList<HsWidgetHost *> widgets;
HsWidgetHost *widget = 0;
- const int KChromeHeight = 64; // TODO: get this somewhere
- const int KWidgetAdjust = 10; // TODO: get this somewhere
-
+ QRectF pageRect = HsScene::mainWindow()->layoutRect();
+
+ // TODO: Temporary workaround for the Orbit bug.
+ if (orientation == Qt::Horizontal) {
+ pageRect = QRectF(0, 0, 640, 360);
+ } else {
+ pageRect = QRectF(0, 0, 360, 640);
+ }
+ // End of the workaround.
+
+ const int chromeHeight = 64; // TODO: get this somewhere
+
for (int i = 0; i < pages.count(); ++i) {
widgets = pages[i]->widgets();
for (int j = 0; j < widgets.count(); ++j) {
@@ -1088,13 +1336,17 @@
if (presentation.widgetId < 0) {
QList<QRectF> geometries =
HsWidgetPositioningOnOrientationChange::instance()->convert(
- QRectF(0, KChromeHeight, pages[i]->rect().height(), pages[i]->rect().width()-KChromeHeight).adjusted(KWidgetAdjust, KWidgetAdjust, -KWidgetAdjust, -KWidgetAdjust),
+ QRectF(0, chromeHeight,
+ pageRect.height(),
+ pageRect.width() - chromeHeight),
QList<QRectF>() << widget->geometry(),
- QRectF(0, KChromeHeight, pages[i]->rect().width(), pages[i]->rect().height()-KChromeHeight).adjusted(KWidgetAdjust, KWidgetAdjust, -KWidgetAdjust, -KWidgetAdjust));
+ QRectF(0, chromeHeight,
+ pageRect.width(),
+ pageRect.height() - chromeHeight));
widget->setGeometry(geometries.first());
widget->setWidgetPresentation();
} else {
- widget->setGeometry(presentation.geometry());
+ widget->setPos(presentation.x, presentation.y);
widget->setZValue(presentation.zValue);
}
}
@@ -1121,92 +1373,77 @@
emit event_sceneMenu();
}
-/*!
- Handles page change zone hold events for the moveWidget state.
-*/
-void HsIdleState::moveWidget_onHoldTimeout()
-{
- HsScene *scene = HsScene::instance();
-
- int pageIndex = scene->activePageIndex();
-
- if (isInLeftPageChangeZone() &&
- 0 < pageIndex) {
- --pageIndex;
- } else if (isInRightPageChangeZone() &&
- pageIndex < scene->pages().count()) {
- ++pageIndex;
- } else {
- return;
- }
-
- if (pageIndex == scene->pages().count()) {
- if (scene->pages().last()->widgets().isEmpty()) {
- return;
- } else if (scene->pages().count() < scene->maximumPageCount()) {
- addPageToScene(pageIndex);
- mUiWidget->showPageIndicator();
- mUiWidget->pageIndicator()->addItem(pageIndex);
- } else {
- return;
- }
- }
-
- scene->setActivePageIndex(pageIndex);
- startPageChangeAnimation(pageIndex, 200);
-}
-
-#ifndef Q_OS_SYMBIAN
#ifdef COVERAGE_MEASUREMENT
#pragma CTC SKIP
#endif //COVERAGE_MEASUREMENT
-/*!
- Switch the home screen language.
-*/
-void HsIdleState::switchLanguage()
-{
- QString locale;
- QFile file("hslocale.txt");
- QTextStream stream(&file);
- if (file.open(QIODevice::ReadWrite | QIODevice::Text)) {
- QString word;
- stream >> word;
- if (!word.isEmpty()) {
- locale = word;
- } else {
- locale = "en_US";
- }
- } else {
- locale = QLocale::system().name();
- }
-
- if (locale == "en_US") {
- locale = "fi_FI";
- } else {
- locale = "en_US";
- }
-
- file.seek(0);
- stream << locale;
- file.close();
-
- QEvent event(QEvent::LocaleChange);
- QApplication::sendEvent(qApp, &event);
-}
/*!
- Translates the home screen ui.
-*/
-void HsIdleState::translateUi()
+ Open task switcher.
+ \retval true if operation is successful.
+ */
+bool HsIdleState::openTaskSwitcher()
{
- mView->setTitle("Home Screen"/*hbTrId(gTitleOfflineTextName)*/);
- action_waitInput_updateOptionsMenu();
+ return HsMenuService::launchTaskSwitcher();
}
#ifdef COVERAGE_MEASUREMENT
#pragma CTC ENDSKIP
#endif //COVERAGE_MEASUREMENT
-#endif // Q_OS_SYMBIAN
+
+/*!
+ Page change zone animation has been finished.
+ */
+void HsIdleState::zoneAnimationFinished()
+{
+ HsScene *scene = HsScene::instance();
+ int pageIndex = scene->activePageIndex();
+
+ if (mPageChanged) {
+ if (isInLeftPageChangeZone() &&
+ 0 < pageIndex) {
+ --pageIndex;
+ }
+ else if (isInRightPageChangeZone() &&
+ pageIndex < scene->pages().count()) {
+ ++pageIndex;
+ }
+ else {
+ delete mZoneAnimation;
+ mZoneAnimation = NULL;
+ mAllowZoneAnimation = true;
+ return;
+ }
+ if (pageIndex == scene->pages().count()) {
+ if (scene->pages().last()->widgets().isEmpty()) {
+ delete mZoneAnimation;
+ mZoneAnimation = NULL;
+ mAllowZoneAnimation = true;
+ return;
+ }
+ else if (scene->pages().count() < scene->maximumPageCount()) {
+ addPageToScene(pageIndex);
+ mUiWidget->showPageIndicator();
+ mUiWidget->pageIndicator()->addItem(pageIndex);
+ }
+ else {
+ delete mZoneAnimation;
+ mZoneAnimation = NULL;
+ mAllowZoneAnimation = true;
+ return;
+ }
+ }
+ scene->setActivePageIndex(pageIndex);
+ startPageChangeAnimation(pageIndex, 200);
+ }
+ else {
+ scene->setActivePageIndex(pageIndex);
+ mUiWidget->setActivePage(pageIndex);
+ mAllowZoneAnimation = true;
+ }
+
+ delete mZoneAnimation;
+ mZoneAnimation = NULL;
+}
// Undefine the helper macros.
#undef ENTRY_ACTION
#undef EXIT_ACTION
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsselectbackgroundstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hshomescreenstateplugin/src/hsselectbackgroundstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -17,6 +17,7 @@
#include <QDir>
#include <QFileInfo>
+#include <QImageReader>
#include <HbMainWindow>
#include <HbView>
@@ -27,10 +28,14 @@
#include "hswallpaper.h"
#include "hsdatabase.h"
#include "hshomescreenstatecommon.h"
+#include "hswallpaperhelper.h"
+#ifdef Q_OS_SYMBIAN
+#include "hsimagefetcherclient.h"
+#else
#include "xqaiwgetimageclient.h"
#include "xqaiwcommon.h"
-
+#endif
/*!
\class HsSelectBackgroundState
\ingroup group_hshomescreenstateprovider
@@ -48,7 +53,11 @@
mImageFetcher(0),
mSourceView(0)
{
+#ifdef Q_OS_SYMBIAN
+ mImageFetcher = new HsImageFetcherClient(this);
+#else
mImageFetcher = new XQAIWGetImageClient;
+#endif
connect(this, SIGNAL(entered()), SLOT(action_selectWallpaper()));
connect(this, SIGNAL(exited()), SLOT(action_disconnectImageFetcher()));
}
@@ -64,30 +73,6 @@
/*!
\internal
- Scales and crops (if needed) \a image for given \a orientation
- and saves it to \a path. Return true on successful.
-*/
-bool HsSelectBackgroundState::saveImage(QImage &image, const QString &path, Qt::Orientation orientation)
-{
- QRect rect;
- if (orientation == Qt::Vertical) {
- rect.setRect(0, 0, (2* 360) + HSBOUNDARYEFFECT, 640);
- } else {
- rect.setRect(0, 0, (2 * 640) + HSBOUNDARYEFFECT, 360);
- }
-
- if (image.rect().contains(rect)) {
- rect.moveCenter(image.rect().center());
- return image.copy(rect).save(path);
- } else {
- QImage scaledImage = image.scaledToWidth(rect.width());
- rect.moveCenter(scaledImage.rect().center());
- return scaledImage.copy(rect).save(path);
- }
-}
-
-/*!
- \internal
Connects to image fetcher and launches "remote" ui from photos
from which user can select background image
*/
@@ -95,12 +80,19 @@
{
mSourceView = HsScene::mainWindow()->currentView();
+#ifdef Q_OS_SYMBIAN
+ connect(mImageFetcher, SIGNAL(fetchCompleted(const QString&)),
+ this, SLOT(fetchCompleted(const QString&)));
+ connect(mImageFetcher, SIGNAL(fetchFailed(int, const QString&)),
+ this, SLOT(fetchFailed(int, const QString&)));
+ mImageFetcher->fetch();
+#else
connect(mImageFetcher, SIGNAL(fetchComplete(QStringList)),
SLOT(onFetchComplete(QStringList)));
connect(mImageFetcher, SIGNAL(fetchFailed(int)),
SLOT(onFetchFailed(int)));
-
mImageFetcher->fetch(QVariantMap(), SelectionSingle);
+#endif
}
/*!
@@ -116,7 +108,19 @@
/*!
\internal
- Called when user has selected an image
+ Called when user has selected an image on emulator or HW
+*/
+#ifdef Q_OS_SYMBIAN
+void HsSelectBackgroundState::fetchCompleted(const QString& imageFileName)
+{
+ QStringList imageFileNameAsList(imageFileName);
+ onFetchComplete(imageFileNameAsList);
+}
+#endif
+
+/*!
+ \internal
+ Called when user has selected an image
*/
void HsSelectBackgroundState::onFetchComplete(QStringList imageStringList)
{
@@ -151,17 +155,31 @@
QString landscapePath = HsWallpaper::wallpaperPath(
Qt::Horizontal, QString(), fileExtension);
- QImage image(imageStringList.first());
+ QRect portraitRect = QRect(0, 0, (2 * 360) + HSBOUNDARYEFFECT, 640);
+ QRect landscapeRect = QRect(0, 0, (2 * 640) + HSBOUNDARYEFFECT, 360);
+ QRect sourceRect; // left empty to signal we want to use full size image as source
+
+ QImage portraitImage = HsWallpaperHelper::processImage(imageStringList.first(),
+ portraitRect, sourceRect);
- if (saveImage(image, portraitPath, Qt::Vertical) &&
- saveImage(image, landscapePath, Qt::Horizontal)) {
+ QImage landscapeImage = HsWallpaperHelper::processImage(imageStringList.first(),
+ landscapeRect, sourceRect);
+
+ if (!portraitImage.isNull() && !landscapeImage.isNull()) {
+ portraitImage.save(portraitPath);
sceneData.portraitWallpaper = portraitPath;
+
+ landscapeImage.save(landscapePath);
sceneData.landscapeWallpaper = landscapePath;
+
if (db->updateScene(sceneData)) {
scene->wallpaper()->setImagesById(QString(), fileInfo.suffix());
}
}
-
+ else {
+ // display some error note here
+ }
+
emit event_waitInput();
}
@@ -174,3 +192,15 @@
Q_UNUSED(error)
emit event_waitInput();
}
+
+/*!
+ \internal
+ Called when selection of background image fails on emulator or HW
+*/
+#ifdef Q_OS_SYMBIAN
+void HsSelectBackgroundState::fetchFailed(int error, const QString& errorString)
+{
+ Q_UNUSED(errorString)
+ onFetchFailed(error);
+}
+#endif
\ No newline at end of file
Binary file homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/loc_win/hslanguageswitch_en.qm has changed
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/loc_win/hslanguageswitch_en.ts Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
-<context>
-<message id="txt_homescreen_opt_switch_language">
- <comment>Language switch</comment>
- <source>Switch language</source>
- <translation>Switch language (en_GB)</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>Homescreen_01</extra-loc-viewid>
- <extra-loc-positionid>title</extra-loc-positionid>
- <extra-loc-feature>Ho</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
Binary file homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/loc_win/hslanguageswitch_en_us.qm has changed
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/loc_win/hslanguageswitch_en_us.ts Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" language="en_US" sourcelanguage="en_GB">
-<context>
-<message id="txt_homescreen_opt_switch_language">
- <comment>Language switch</comment>
- <source>Switch language</source>
- <translation>Switch language (en_US)</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>Homescreen_01</extra-loc-viewid>
- <extra-loc-positionid>title</extra-loc-positionid>
- <extra-loc-feature>Ho</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
Binary file homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/loc_win/hslanguageswitch_fi.qm has changed
--- a/homescreenapp/stateplugins/hshomescreenstateplugin/tsrc/loc_win/hslanguageswitch_fi.ts Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" language="fi" sourcelanguage="en_GB">
-<context>
-<message id="txt_homescreen_opt_switch_language">
- <comment>Language switch</comment>
- <source>Switch language</source>
- <translation>Vaihda kieltä</translation>
- <extra-loc-layout_id></extra-loc-layout_id>
- <extra-loc-viewid>Homescreen_01</extra-loc-viewid>
- <extra-loc-positionid>title</extra-loc-positionid>
- <extra-loc-feature>Ho</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/hsmenuworkerstateplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -18,7 +18,7 @@
CONFIG += plugin hb mobility
MOBILITY = serviceframework
-PLUGIN_SUBDIR = /hsresources/plugins/stateplugins
+PLUGIN_SUBDIR = /private/20022F35/plugins/stateplugins
include(../../common.pri)
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddappstocollectionstate.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddappstocollectionstate.h Mon May 03 12:24:59 2010 +0300
@@ -28,7 +28,7 @@
class HsAppsCheckList;
/**
- * @ingroup group_hsmenustateplugin
+ * @ingroup group_hsworkerstateplugin
* @brief Application Library State.
*
* State responsible for adding new applications to collections.
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddtohomescreenstate.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsaddtohomescreenstate.h Mon May 03 12:24:59 2010 +0300
@@ -25,9 +25,11 @@
HS_STATES_TEST_CLASS(MenuStatesTest)
+class CaEntry;
+
/**
- * @ingroup group_hsmenustateplugin
+ * @ingroup group_hsworkerstateplugin
* @brief Application Library State.
*
* Parent state for Application Library functionality (browsing applications and collections)
@@ -78,8 +80,7 @@
void addShortcut(HsContentService &contentService, int entryId);
- void addTApplication(HsContentService &contentService, int entryId,
- QVariantMap &data);
+ void addApplication(HsContentService &contentService, CaEntry &entryId);
void logActionResult(QString operationName, int entryId,
bool operationSucceded);
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenubasestate.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsmenubasestate.h Mon May 03 12:24:59 2010 +0300
@@ -28,7 +28,7 @@
class HsContentService;
/**
- * @ingroup group_hsmenustateplugin
+ * @ingroup group_hsworkerstateplugin
* @brief Menu Base State
*
* Menu Base state is the base class for states used in Menu.
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hspreviewhswidgetstate.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hspreviewhswidgetstate.h Mon May 03 12:24:59 2010 +0300
@@ -27,10 +27,11 @@
class HbDialog;
class HsWidgetHost;
class CaNotifier;
-
+class HbAction;
+class HbScrollArea;
/**
- * @ingroup group_hsmenustateprovider
+ * @ingroup group_hsworkerstateplugin
* @brief Application Library State.
*
* Parent state for Application Library functionality (browsing applications and collections)
@@ -66,6 +67,19 @@
private slots:
/**
+ * Slot invoked when preview dialog is dismissed.
+ *
+ * @since S60 ?S60_version.
+ */
+ void previewDialogFinished(HbAction* finishedAction);
+
+ /**
+ * Slot invoked when message for corrupted widget is dismissed
+ *
+ * @since S60 ?S60_version.
+ */
+ void messageWidgetCorruptedFinished(HbAction* finishedAction);
+ /**
* Inherited from HsMenuBaseState.
*
* @since S60 ?S60_version.
@@ -73,41 +87,39 @@
void onEntry(QEvent *event);
/**
- * Slot invoked when a state is exited.
- *
- * @since S60 ?S60_version.
- */
- void stateExited();
-
- /**
* Memory card removed.
*/
void memoryCardRemoved();
+
private:
/**
* Show message widget corrupted.
*
- * @param itemId Widget id.
*/
- void showMessageWidgetCorrupted(int itemId);
+ void showMessageWidgetCorrupted();
/**
* Subscribe for memory card remove.
*
- * @param entryId Widget id.
*/
- void subscribeForMemoryCardRemove(int entryId);
+ void subscribeForMemoryCardRemove();
private:
HbDialog *mPopupDialog;
CaNotifier *mNotifier;
-
+
+ HbScrollArea *mScrollArea;
+
+ HsWidgetHost *mWidget;
+
QObjectList mObjectList;
+ int mEntryId;
+
};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/inc/hsviewappsettingsstate.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Menu Application Library state.
+*
+*/
+
+
+#ifndef HSVIEWAPPSETTINGSSTATE_H
+#define HSVIEWAPPSETTINGSSTATE_H
+
+#include <QState>
+
+#include "hsmenustates_global.h"
+#include "hbmainwindow.h"
+
+HS_STATES_TEST_CLASS(MenuStatesTest)
+
+class HsMenuService;
+class HbView;
+class HbAction;
+class CaNotifier;
+
+class HsViewAppSettingsState : public QState
+{
+ Q_OBJECT
+
+ HS_STATES_TEST_FRIEND_CLASS(MenuStatesTest)
+
+public:
+
+ /**
+ * Constructor.
+ *
+ * @since S60 ?S60_version.
+ * @param parent Owner.
+ */
+ HsViewAppSettingsState(QState *parent = 0);
+
+ /**
+ * Destructor.
+ *
+ * @since S60 ?S60_version.
+ */
+ virtual ~HsViewAppSettingsState();
+
+private slots:
+
+ /**
+ * Slot connected trrigger action of secondary soft key of check list box.
+ * It is called when done button is selected.
+ *
+ * @since S60 ?S60_version.
+ */
+ void settingsDone();
+
+signals:
+ void initialize(const QString &aUid);
+
+protected:
+
+ void onEntry(QEvent *event);
+
+private:
+
+ /**
+ * Constructs contained objects.
+ *
+ * @since S60 ?S60_version.
+ */
+ void construct();
+
+ /**
+ * Returns pointer to tha main window.
+ *
+ * @since S60 ?S60_version.
+ * @return Pointer to the main window.
+ */
+ HbMainWindow *mainWindow() const;
+
+ void subscribeForMemoryCardRemove(int entryId);
+
+private:
+ /**
+ * View. Owned.
+ */
+ HbView *mView;
+
+ /**
+ * Previous view. Not owned.
+ */
+ HbView *mPreviousView;
+
+ /**
+ * Confirm action. Owned.
+ */
+ HbAction *mActionConfirm;
+
+ CaNotifier *mNotifier;
+
+};
+
+
+
+#endif //HSVIEWAPPSETTINGSSTATE_H
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/resource/hsmenuworkerstateplugin.s60xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>hsmenuworkerstateplugin</name>
- <filepath>z:/hsresources/plugins/stateplugins/hsmenuworkerstateplugin.qtplugin</filepath>
- <description></description>
- <interface>
- <name>com.nokia.homescreen.state.HsMenuWorkerState</name>
- <version>1.0</version>
- <description></description>
- <capabilities></capabilities>
- </interface>
-</service>
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddappstocollectionstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -160,28 +160,28 @@
// Add a specific item to a collection via collection specific menu.
// Adding a new collection via the Collections view.
mSelectCollectionState->addTransition(this,
- SIGNAL(transitToNewCollectionState()), mNewCollectionState);
+ SIGNAL(transitToNewCollectionState()), mNewCollectionState);
mSelectCollectionState->addTransition(this,
- SIGNAL(transitToSaveState(int)), saveState);
+ SIGNAL(transitToSaveState(int)), saveState);
mNewCollectionState->addTransition(this,
- SIGNAL(transitToSaveState(QString)), saveState);
+ SIGNAL(transitToSaveState(QString)), saveState);
// Add one/many applications to an existing/a new collection
// via the All view options menu.
// Add items to a collection via the collection's view options menu.
mSelectCollectionState->addTransition(this,
- SIGNAL(transitToAppsCheckListState(int)), mAppsCheckListState);
+ SIGNAL(transitToAppsCheckListState(int)), mAppsCheckListState);
mNewCollectionState->addTransition(this,
- SIGNAL(transitToAppsCheckListState(QString)), mAppsCheckListState);
+ SIGNAL(transitToAppsCheckListState(QString)), mAppsCheckListState);
mAppsCheckListState->addTransition(this,
- SIGNAL(transitToSaveState(QList<int>)), saveState);
+ SIGNAL(transitToSaveState(QList<int>)), saveState);
mSelectCollectionState->addTransition(this,
- SIGNAL(transitToFinalState()),finalState);
+ SIGNAL(transitToFinalState()),finalState);
mNewCollectionState->addTransition(this,
- SIGNAL(transitToFinalState()), finalState);
+ SIGNAL(transitToFinalState()), finalState);
mAppsCheckListState->addTransition(this,
- SIGNAL(transitToFinalState()), finalState);
+ SIGNAL(transitToFinalState()), finalState);
//transition to final state after save
saveState->addTransition(finalState);
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -78,19 +78,16 @@
HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
QVariantMap data = menuEvent->data();
- const QString entryTypeName = data.value(entryTypeNameKey()).toString();
-
const int entryId = data.value(itemIdKey()).toInt();
+ QSharedPointer<CaEntry> entry = CaService::instance()->getEntry(entryId);
+ const QString entryTypeName = entry->entryTypeName();
if (entryTypeName == widgetTypeName()) {
- const QString uri = data.value(widgetUriAttributeName()).toString();
+ const QString uri = entry->attribute(widgetUriAttributeName());
addWidget(*contentService(), uri, entryId);
- HsMenuService::touch(entryId);
- } else if (entryTypeName==templatedApplicationTypeName()) {
- addTApplication(*contentService(), entryId, data);
- HsMenuService::touch(entryId);
+ HsMenuService::touch(entryId);
} else {
- addShortcut(*contentService(), entryId);
+ addApplication(*contentService(), *entry);
}
HSMENUTEST_FUNC_EXIT("HsAddToHomeScreenState::onEntry");
@@ -151,34 +148,14 @@
void HsAddToHomeScreenState::addShortcut(HsContentService &contentService,
int entryId)
{
- //ShortcutData item_id;
- //item_id.mShortcutId = entryId;
-
HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::addShortcut");
- CaQuery query;
- query.setEntryTypeNames(QStringList(widgetTypeName()));
- QList<CaEntry *> entries = CaService::instance()->getEntries(query);
-
- if (mLibraryPath.isEmpty()) {
- foreach(CaEntry *entry,entries) {
- QString uri = entry->attribute(widgetUriAttributeName());
- if (uri == SHORTCUT_WIDGET_URI) {
- mLibraryPath = entry->attribute(
- widgetLibraryAttributeName());
- break;
- }
- }
- }
- if (!mLibraryPath.isEmpty()) {
- QVariantHash params;
- params[LIBRARY] = mLibraryPath;
- params[URI] = SHORTCUT_WIDGET_URI;
- QVariantHash preferences;
- preferences[SHORTCUT_ID] = QString::number(entryId);
- params[PREFERENCES] = preferences;
- const bool result = contentService.createWidget(params);
- logActionResult("Adding shortcut", entryId, result);
- }
+ QVariantHash params;
+ params[URI] = SHORTCUT_WIDGET_URI;
+ QVariantHash preferences;
+ preferences[SHORTCUT_ID] = QString::number(entryId);
+ params[PREFERENCES] = preferences;
+ const bool result = contentService.createWidget(params);
+ logActionResult("Adding shortcut", entryId, result);
HSMENUTEST_FUNC_EXIT("HsAddToHomeScreenState::addShortcut");
}
@@ -189,34 +166,33 @@
\param data: data from event
\retval void
*/
-void HsAddToHomeScreenState::addTApplication(HsContentService &contentService,
- int entryId, QVariantMap &data)
-{
- CaEntry* entry = CaService::instance()->getEntry(entryId);
-
-
- if (entry->attributes().contains(widgetUriAttributeName())) {
+void HsAddToHomeScreenState::addApplication(HsContentService &contentService,
+ CaEntry& entry)
+{
+ if (entry.attributes().contains(widgetUriAttributeName())) {
QVariantHash params;
- const QString uri = entry->attribute(widgetUriAttributeName());
- params[URI] = uri;
+ const QString uri = entry.attribute(widgetUriAttributeName());
+ params[URI] = uri;
QVariantHash preferences;
- QVariantMap widgetParams = data.value(widgetParam()).toMap();
- QMapIterator<QString, QVariant> i(widgetParams);
+ QMap<QString, QString> attributes = entry.attributes();
+ QMapIterator<QString, QString> i(attributes);
while (i.hasNext()) {
i.next();
QString key(i.key());
- QString value = i.value().toString();
- preferences.insert(key.remove(widgetParam()), value);
+ QString value(i.value());
+ if (key.contains(widgetParam())) {
+ preferences.insert(key.remove(widgetParam()),value);
+ }
}
params[PREFERENCES] = preferences;
bool ok = contentService.createWidget(params);
if (!ok) {
- addShortcut(contentService, entryId);
+ addShortcut(contentService, entry.id());
}
} else {
- addShortcut(contentService, entryId);
+ addShortcut(contentService, entry.id());
}
}
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsappschecklist.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsappschecklist.cpp Mon May 03 12:24:59 2010 +0300
@@ -27,7 +27,7 @@
/*!
\class HsAppsCheckList
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsworkerstateplugin
\brief Application Library State.
State responsible for selecting a group of applications to be added to
a collection.
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsarrangestate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsarrangestate.cpp Mon May 03 12:24:59 2010 +0300
@@ -31,7 +31,7 @@
/*!
\class HsArrangeState
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsworkerstateplugin
\brief Application Library State.
State responsible for arrange collection's entries.
*/
@@ -82,14 +82,9 @@
HSMENUTEST_FUNC_ENTRY("HsArrangeState::save");
getArrangedEntriesIds(listWidget);
- if (mArrangedCollIdList.count() == mCollIdList.count()) {
- for (int i(0); i < mArrangedCollIdList.count(); i++) {
- if (mArrangedCollIdList.at(i) != mCollIdList.at(i)) {
- HsMenuService::organizeCollection(
- HsMenuService::allCollectionsId(), mArrangedCollIdList);
- break;
- }
- }
+ if (mArrangedCollIdList != mCollIdList) {
+ HsMenuService::organizeCollection(
+ HsMenuService::allCollectionsId(), mArrangedCollIdList);
}
HSMENUTEST_FUNC_EXIT("HsArrangeState::save");
@@ -129,6 +124,9 @@
if (mEntriesList != NULL && mDialog != NULL) {
mItemModel = HsMenuService::getAllCollectionsModel();
+ // as we copy the model contents to the list widget
+ // we do not need the model to auto update
+ mItemModel->setAutoUpdate(false);
fulfillEntriesList(*mEntriesList);
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamedialog.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamedialog.cpp Mon May 03 12:24:59 2010 +0300
@@ -26,7 +26,7 @@
/*!
\class HsCollectionNameDialog
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsworkerstateplugin
\brief Rename Collection State.
Collection name state
*/
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamestate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionnamestate.cpp Mon May 03 12:24:59 2010 +0300
@@ -25,7 +25,7 @@
/*!
\class HsCollectionNameState
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsworkerstateplugin
\brief Rename Collection State.
Collection name state
*/
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionslistdialog.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hscollectionslistdialog.cpp Mon May 03 12:24:59 2010 +0300
@@ -27,7 +27,7 @@
/*!
\class HsCollectionsListDialog
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsworkerstateplugin
\brief Hs List Dialog
Hs List Dialog
*/
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionitemstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionitemstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -24,7 +24,7 @@
/*!
\class HsDeleteCollectionItemState
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsworkerstateplugin
\brief Delete Collection Item State.
Deletes app from collection.
*/
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsdeletecollectionstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -26,7 +26,7 @@
/*!
\class HsDeleteCollectionState
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsworkerstateplugin
\brief Delete Collection State.
Deletes collections.
*/
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsmenuworkerstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsmenuworkerstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -25,9 +25,10 @@
#include "hscollectionnamestate.h"
#include "hsarrangestate.h"
#include "hspreviewhswidgetstate.h"
+#include "hsviewappsettingsstate.h"
/*!
\class HsMenuWorkerState
- \ingroup group_hsmenustateplugin
+ \ingroup group_hsworkerstateplugin
\brief Menu Worker State.
*/
@@ -97,6 +98,7 @@
SIGNAL(finished()), mInitialState);
createChildState<HsPreviewHSWidgetState> (HsMenuEvent::PreviewHSWidget);
+ createChildState<HsViewAppSettingsState> (HsMenuEvent::ShowAppSettings);
HSMENUTEST_FUNC_EXIT("HsMenuWorkerState::construct");
}
--- a/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hspreviewhswidgetstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hspreviewhswidgetstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -55,10 +55,12 @@
HsPreviewHSWidgetState::HsPreviewHSWidgetState(QState *parent) :
HsMenuBaseState(HS_PREVIEW_HS_WIDGET_STATE, parent),
mPopupDialog(0),
- mNotifier(0)
+ mNotifier(0),
+ mScrollArea(0),
+ mWidget(0),
+ mEntryId(0)
{
requestServices(QList<QVariant> () << CONTENT_SERVICE_KEY);
- connect(this, SIGNAL(exited()),SLOT(stateExited()));
}
/*!
@@ -93,13 +95,13 @@
HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
QVariantMap data = menuEvent->data();
- const int entryId = data.value(itemIdKey()).toInt();
+ mEntryId = data.value(itemIdKey()).toInt();
QVariantHash widgetData;
widgetData.insert(LIBRARY, data.value(widgetLibraryAttributeName()).toString());
widgetData.insert(URI, data.value(widgetUriAttributeName()).toString());
- QScopedPointer<HsWidgetHost> widget(
- contentService()->createWidgetForPreview(widgetData));
+
+ QScopedPointer<HsWidgetHost> widget(contentService()->createWidgetForPreview(widgetData));
if (widget) {
widget->setMinimumSize(widget->preferredWidth(),widget->preferredHeight());
@@ -116,41 +118,33 @@
mPopupDialog =
qobject_cast<HbDialog*>(
loader.findWidget(HS_WIDGET_PREVIEW_DIALOG_NAME));
-
- HbScrollArea *const scrollArea(
+
+ mScrollArea =
qobject_cast<HbScrollArea*>(
- loader.findWidget(HS_WIDGET_PREVIEW_SCROLL_AREA_NAME)));
-
- if (mPopupDialog != NULL && scrollArea != NULL) {
- mPopupDialog->setContentWidget(scrollArea); //ownership transferred
+ loader.findWidget(HS_WIDGET_PREVIEW_SCROLL_AREA_NAME));
+
+ // set parent to actions to delete them together with dialog
+ mPopupDialog->primaryAction()->setParent(mPopupDialog);
+ mPopupDialog->secondaryAction()->setParent(mPopupDialog);
+
+ if (mPopupDialog != NULL && mScrollArea != NULL) {
+ mPopupDialog->setContentWidget(mScrollArea); // ownership transferred
mPopupDialog->setTimeout(HbPopup::NoTimeout);
- scrollArea->verticalScrollBar()->setInteractive(true);
- scrollArea->horizontalScrollBar()->setInteractive(true);
- scrollArea->setContentWidget(widget.data());
- scrollArea->takeContentWidget();
+ mPopupDialog->setAttribute(Qt::WA_DeleteOnClose, true);
+ mScrollArea->verticalScrollBar()->setInteractive(true);
+ mScrollArea->horizontalScrollBar()->setInteractive(true);
+ mWidget = widget.take(); // ownership transfered
+ mScrollArea->setContentWidget(mWidget); // ownership transferred
- subscribeForMemoryCardRemove(entryId);
- widget->initializeWidget();
- widget->showWidget();
- // Launch popup syncronously
- const HbAction *const action(mPopupDialog->exec());
-
- disconnect(mNotifier,
- SIGNAL(entryChanged(CaEntry,ChangeType)),
- this, SLOT(memoryCardRemoved()));
-
- if (action == mPopupDialog->primaryAction()) {
- widget->hideWidget();
- HsScene::instance()->activePage()->addNewWidget(
- widget.take()); // ownership transferred
- } else {
- widget->uninitializeWidget();
- widget->deleteFromDatabase();
- }
+ subscribeForMemoryCardRemove();
+ mWidget->initializeWidget();
+ mWidget->showWidget();
+ // Launch popup asyncronously
+ mPopupDialog->open(this, SLOT(previewDialogFinished(HbAction*)));
}
} else {
- showMessageWidgetCorrupted(entryId);
+ showMessageWidgetCorrupted();
}
HSMENUTEST_FUNC_EXIT("HsPreviewHSWidgetState::onEntry");
@@ -159,26 +153,6 @@
#pragma CTC ENDSKIP
#endif //COVERAGE_MEASUREMENT
-/*!
- State exited.
- \retval void
- */
-void HsPreviewHSWidgetState::stateExited()
-{
- HSMENUTEST_FUNC_ENTRY("HsPreviewHSWidgetState::stateExited");
-
-
- delete mNotifier;
- mNotifier = NULL;
-
- qDeleteAll(mObjectList);
- mObjectList.clear();
-
- mPopupDialog = NULL;
-
- HSMENUTEST_FUNC_EXIT("HsPreviewHSWidgetState::stateExited");
- qDebug("HsPreviewHSWidgetState::stateExited()");
-}
/*!
Memory card with instaled widget was removed.
@@ -192,15 +166,50 @@
}
/*!
- Subscribe for memory card remove.
- \param entryId: HSWidget id.
+ Slot launched on dismissing the preview dialog
\retval void
*/
-void HsPreviewHSWidgetState::subscribeForMemoryCardRemove(int entryId)
+void HsPreviewHSWidgetState::previewDialogFinished(HbAction* finishedAction)
+{
+ if (mPopupDialog != NULL) {
+ // (work-around for crash if more then one action is selected in HbDialog)
+ disconnect(mNotifier,
+ SIGNAL(entryChanged(CaEntry,ChangeType)),
+ this, SLOT(memoryCardRemoved()));
+
+ if (finishedAction == mPopupDialog->primaryAction()) {
+ mWidget->hideWidget();
+ mScrollArea->takeContentWidget();
+ HsScene::instance()->activePage()->addNewWidget(
+ mWidget); // ownership transferred
+ } else {
+ mWidget->uninitializeWidget();
+ mWidget->deleteFromDatabase();
+ }
+ mPopupDialog = NULL;
+ mScrollArea = NULL;
+ mWidget = NULL;
+
+ delete mNotifier;
+ mNotifier = NULL;
+
+ } else {
+ // (work-around for crash if more then one action is selected in HbDialog)
+ qWarning("Another signal finished was emited.");
+ }
+}
+
+
+
+/*!
+ Subscribe for memory card remove.
+ \retval void
+ */
+void HsPreviewHSWidgetState::subscribeForMemoryCardRemove()
{
CaNotifierFilter filter;
QList<int> entryIds;
- entryIds.append(entryId);
+ entryIds.append(mEntryId);
filter.setIds(entryIds);
mNotifier = CaService::instance()->createNotifier(filter);
mNotifier->setParent(this);
@@ -212,23 +221,34 @@
/*!
Shows message about corrupted widget library. Deletes widget eventually
- \param itemId entryId of widget (needed to delete it)
\retval void
*/
#ifdef COVERAGE_MEASUREMENT
#pragma CTC SKIP
#endif //COVERAGE_MEASUREMENT
-void HsPreviewHSWidgetState::showMessageWidgetCorrupted(int itemId)
+void HsPreviewHSWidgetState::showMessageWidgetCorrupted()
{
HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted");
+
QString message(hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi"));
- if (HbMessageBox::question(message,hbTrId(
- "txt_common_button_ok"), hbTrId("txt_common_button_cancel"))) {
- HsMenuService::executeAction(itemId, removeActionIdentifier());
- }
+ HbMessageBox::question(message, this,
+ SLOT(messageWidgetCorruptedFinished(HbAction*)),
+ hbTrId("txt_common_button_ok"), hbTrId("txt_common_button_cancel"));
+
HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted");
}
#ifdef COVERAGE_MEASUREMENT
#pragma CTC ENDSKIP
#endif //COVERAGE_MEASUREMENT
+
+/*!
+ Slot launched on dismissing the corrupted widget error note
+ \retval void
+ */
+void HsPreviewHSWidgetState::messageWidgetCorruptedFinished(HbAction* finishedAction)
+{
+ if (finishedAction && qobject_cast<HbMessageBox*>(finishedAction->parent())->primaryAction() == finishedAction) {
+ HsMenuService::executeAction(mEntryId, removeActionIdentifier());
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsviewappsettingsstate.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,180 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Menu Application Library state.
+ *
+*/
+
+#include <hbmainwindow.h>
+#include <hbview.h>
+#include <hbinstance.h>
+#include <qstatemachine.h>
+#include <hbaction.h>
+#include <qpluginloader.h>
+
+#include "hsdomainmodel_global.h"
+#include "hsapp_defs.h"
+#include "hsmenuevent.h"
+#include "hsviewappsettingsstate.h"
+#include "caentry.h"
+#include "canotifier.h"
+#include "canotifierfilter.h"
+
+#include "hsmenuservice.h"
+
+/*!
+ \class HsCollectionNameDialog
+ \ingroup HsViewAppSettingsState
+ \brief State for showing Application Settings HbView from provided plugin
+ */
+
+/*!
+ Constructor
+ \param parent: parent state
+ \retval void
+ */
+HsViewAppSettingsState::HsViewAppSettingsState(QState *parent) :
+ QState(parent),
+ mView(0),
+ mPreviousView(0),
+ mActionConfirm(0),
+ mNotifier(0)
+
+{
+ construct();
+}
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+void HsViewAppSettingsState::construct()
+{
+ setObjectName(this->parent()->objectName()
+ + "/ViewAppSettingsState");
+}
+
+/*!
+ Destructor.
+ */
+HsViewAppSettingsState::~HsViewAppSettingsState()
+{
+ if (mNotifier) {
+ delete mNotifier;
+ }
+}
+
+/*!
+ onEntry method invoked on entering the state
+ \param event: event
+ \retval void
+ */
+void HsViewAppSettingsState::onEntry(QEvent *event)
+{
+ HSMENUTEST_FUNC_ENTRY("HsViewAppSettingsState::onEntry");
+ QState::onEntry(event);
+ qDebug("CollectionState::onEntry()");
+ HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event);
+ QVariantMap data = menuEvent->data();
+
+ const int entryId = data.value(itemIdKey()).toInt();
+ QSharedPointer<const CaEntry> entry = CaService::instance()->getEntry(entryId);
+
+ if(mView)
+ {
+
+ delete mActionConfirm;
+ mActionConfirm = NULL;
+
+ delete mView;
+ mView = NULL;
+
+ }
+
+ QString pluginPath(entry->attribute(appSettingsPlugin()));
+ QPluginLoader loader(pluginPath);
+ mView = qobject_cast<HbView *>(loader.instance());
+
+ mActionConfirm = new HbAction(Hb::ConfirmNaviAction, mView);
+ connect(mActionConfirm, SIGNAL(triggered()),SLOT(settingsDone()));
+
+ if(mView)
+ {
+ subscribeForMemoryCardRemove(entryId);
+ QObject::connect(this, SIGNAL(initialize(QString)), mView, SLOT(initialize(QString)));
+ mView->setParent(this);
+ emit initialize(entry->attribute(applicationUidEntryKey()));
+ // Add View to main window
+ HbMainWindow *hbMainWindow = mainWindow();
+ // add confirm action
+ mView->setNavigationAction(mActionConfirm);
+
+ hbMainWindow->addView(mView);
+ // record the current view in order to activate it once done
+ mPreviousView = hbMainWindow->currentView();
+ hbMainWindow->setCurrentView(mView);
+ hbMainWindow->show();
+ }
+
+
+ HSMENUTEST_FUNC_EXIT("HsViewAppSettingsState::onEntry");
+}
+
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+HbMainWindow *HsViewAppSettingsState::mainWindow() const
+{
+ return HbInstance::instance()->allMainWindows().value(0);
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC SKIP
+#endif //COVERAGE_MEASUREMENT
+void HsViewAppSettingsState::settingsDone()
+{
+ // Remove mView from main window and restore previous view.
+ HbMainWindow *hbMainWindow = mainWindow();
+ hbMainWindow->setCurrentView(mPreviousView);
+ hbMainWindow->removeView(mView);
+ delete mActionConfirm;
+ mActionConfirm = NULL;
+ delete mView;
+ mView = NULL;
+}
+#ifdef COVERAGE_MEASUREMENT
+#pragma CTC ENDSKIP
+#endif //COVERAGE_MEASUREMENT
+
+/*!
+ Subscribe for memory card remove.
+ \param entryId: entry id.
+ \retval void
+ */
+void HsViewAppSettingsState::subscribeForMemoryCardRemove(int entryId)
+{
+ CaNotifierFilter filter;
+ QList<int> entryIds;
+ entryIds.append(entryId);
+ filter.setIds(entryIds);
+ mNotifier = CaService::instance()->createNotifier(filter);
+ mNotifier->setParent(this);
+ connect(mNotifier,
+ SIGNAL(entryChanged(CaEntry,ChangeType)),
+ SLOT(settingsDone()));
+}
+
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -17,12 +17,9 @@
TEMPLATE = lib
CONFIG += plugin hb mobility
MOBILITY = serviceframework
-win32: PLUGIN_SUBDIR = /hsresources/import/widgetregistry/20022F6C
-symbian: PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F6C
+PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F6C
include(../../common.pri)
-LIBS += -lhswidgetmodel
-
DEPENDPATH += ./inc \
./src
@@ -30,7 +27,7 @@
symbian: {
TARGET.UID3 = 0x20022F6C
- LIBS += -lbafl
+ LIBS += -lbafl -lapgrfx -lcone
}
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.qrc Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin.qrc Mon May 03 12:24:59 2010 +0300
@@ -1,6 +1,6 @@
<RCC>
- <qresource prefix="/xml" >
- <file alias="hsdigitalclockwidget.docml">resource/hsdigitalclockwidget.docml</file>
- <file alias="hsanalogclockwidget.docml">resource/hsanalogclockwidget.docml</file>
+ <qresource>
+ <file alias="hsanalogclockwidget.css">resource/hsanalogclockwidget.css</file>
+ <file alias="hsanalogclockwidget.widgetml">resource/hsanalogclockwidget.widgetml</file>
</qresource>
</RCC>
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin_win.pri Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/hsclockwidgetplugin_win.pri Mon May 03 12:24:59 2010 +0300
@@ -14,17 +14,13 @@
# Description:
#
-HEADERS += ./inc/hsanalogclockstyleoption.h \
- ./inc/hsanalogclockwidget.h \
+HEADERS += ./inc/hsanalogclockwidget.h \
./inc/hsclockwidget.h \
- ./inc/hsclockwidgetdocumentloader.h \
./inc/hsclockwidgetplugin.h \
./inc/hsdigitalclockwidget.h
-SOURCES += ./src/hsanalogclockstyleoption.cpp \
- ./src/hsanalogclockwidget.cpp \
+SOURCES += ./src/hsanalogclockwidget.cpp \
./src/hsclockwidget.cpp \
- ./src/hsclockwidgetdocumentloader.cpp \
./src/hsclockwidgetplugin.cpp \
./src/hsdigitalclockwidget.cpp
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/inc/hsanalogclockstyleoption.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Style option for analog clock widget.
-*
-*/
-
-#ifndef HSANALOGCLOCKSTYLEOPTION_H
-#define HSANALOGCLOCKSTYLEOPTION_H
-
-#include <hbstyleoption.h>
-
-const int backgroundItemIndex = 0;
-const int hourHandItemIndex = 1;
-const int minuteHandItemIndex = 2;
-
-class HsAnalogClockStyleOption : public HbStyleOption
-{
-public:
- HsAnalogClockStyleOption();
- HsAnalogClockStyleOption(const HsAnalogClockStyleOption &other);
- ~HsAnalogClockStyleOption();
-
- enum StyleOptionType { Type = HbSO_Widget+1000};
- enum StyleOptionVersion { Version = 1 };
-
- qreal mM;
- qreal mH;
-};
-
-#endif // HSANALOGCLOCKSTYLEOPTION_H
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/inc/hsanalogclockwidget.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/inc/hsanalogclockwidget.h Mon May 03 12:24:59 2010 +0300
@@ -20,18 +20,19 @@
#include <QGraphicsSvgItem>
#include <hbwidget.h>
-#include "hsanalogclockstyleoption.h"
#include <hstest_global.h>
HOMESCREEN_TEST_CLASS(TestClockWidget)
+class HbIconItem;
+
class HsAnalogClockWidget : public HbWidget
{
Q_OBJECT
public:
- explicit HsAnalogClockWidget(const QString &stylePluginName = QString(), QGraphicsItem *parent = 0);
+ explicit HsAnalogClockWidget(QGraphicsItem *parent = 0);
virtual ~HsAnalogClockWidget();
public slots:
@@ -45,21 +46,17 @@
private:
- void createPrimitives();
void updatePrimitives();
private:
- QGraphicsItem *mClockBackground;
- QGraphicsItem *mClockHourHand;
- QGraphicsItem *mClockMinuteHand;
+ HbIconItem *mClockBackground;
+ HbIconItem *mClockHourHand;
+ HbIconItem *mClockMinuteHand;
- QString mStylePluginName;
-
Q_DISABLE_COPY(HsAnalogClockWidget)
HOMESCREEN_TEST_FRIEND_CLASS(TestClockWidget)
-
};
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/inc/hsclockwidget.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/inc/hsclockwidget.h Mon May 03 12:24:59 2010 +0300
@@ -25,7 +25,6 @@
#include <QImage>
#include <hbwidget.h>
#include <hstest_global.h>
-#include "hsanalogclockstyleoption.h"
HOMESCREEN_TEST_CLASS(TestClockWidget)
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/inc/hsclockwidgetdocumentloader.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Screensaver custom document loader.
-*
-*/
-
-#ifndef HSCLOCKWIDGETDOCUMENTLOADER_H
-#define HSCLOCKWIDGETDOCUMENTLOADER_H
-
-#include <hbdocumentloader.h>
-
-#include <hstest_global.h>
-
-HOMESCREEN_TEST_CLASS(TestClockWidget)
-
-class HsClockWidgetDocumentLoader : public HbDocumentLoader
-{
-
-private:
-
- virtual QObject *createObject(const QString &type, const QString &name);
-
- HOMESCREEN_TEST_FRIEND_CLASS(TestClockWidget)
-
-};
-
-#endif // HSCLOCKWIDGETDOCUMENTLOADER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/resource/hsanalogclockwidget.css Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,21 @@
+HsAnalogClockWidget {
+ layout: layout_1;
+}
+
+HsAnalogClockWidget::clock_background {
+ fixed-width: 25.0un;
+ fixed-height: 25.0un;
+ zvalue: 0;
+}
+
+HsAnalogClockWidget::clock_minute_hand {
+ fixed-width: 25.0un;
+ fixed-height: 25.0un;
+ zvalue: 1;
+}
+
+HsAnalogClockWidget::clock_hour_hand {
+ fixed-width: 25.0un;
+ fixed-height: 25.0un;
+ zvalue: 2;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/resource/hsanalogclockwidget.widgetml Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,10 @@
+<hbwidget version="0.1">
+ <layout name="layout_1" type="mesh">
+ <meshitem src="clock_background" srcEdge="CENTERV" dst="" dstEdge="CENTERV" spacing="0.0un" />
+ <meshitem src="clock_background" srcEdge="CENTERH" dst="" dstEdge="CENTERH" spacing="0.0un" />
+ <meshitem src="clock_hour_hand" srcEdge="CENTERV" dst="clock_background" dstEdge="CENTERV" spacing="0.0un" />
+ <meshitem src="clock_hour_hand" srcEdge="CENTERH" dst="clock_background" dstEdge="CENTERH" spacing="0.0un" />
+ <meshitem src="clock_minute_hand" srcEdge="CENTERV" dst="clock_background" dstEdge="CENTERV" spacing="0.0un" />
+ <meshitem src="clock_minute_hand" srcEdge="CENTERH" dst="clock_background" dstEdge="CENTERH" spacing="0.0un" />
+ </layout>
+</hbwidget>
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/resource/hsclockwidgetplugin.s60xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>hsclockwidgetplugin</name>
- <filepath>z:/private/20022F35/import/widgetregistry/20022F6C/hsclockwidgetplugin.qtplugin</filepath>
- <description>Themable clock widget.</description>
- <interface>
- <name>com.nokia.symbian.IHomeScreenWidget</name>
- <version>1.0</version>
- <description>The clock widget displays current time.</description>
- <capabilities></capabilities>
- <customproperty key="iconuri">tclock.png</customproperty>
- <customproperty key="title">Clock</customproperty>
- </interface>
-</service>
Binary file homescreenapp/widgetplugins/hsclockwidgetplugin/resource/tclock.png has changed
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsanalogclockstyleoption.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Style option for analog clock widget.
-*
-*/
-
-#include "hsanalogclockstyleoption.h"
-
-HsAnalogClockStyleOption::HsAnalogClockStyleOption():
- HbStyleOption(), mM(0), mH(0)
-{
- type = Type;
- version = Version;
-}
-
-HsAnalogClockStyleOption::HsAnalogClockStyleOption(const HsAnalogClockStyleOption &other) :
- HbStyleOption(other), mM(other.mM), mH(other.mH)
-{
- type = Type;
- version = Version;
-}
-
-HsAnalogClockStyleOption::~HsAnalogClockStyleOption()
-{
-}
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsanalogclockwidget.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsanalogclockwidget.cpp Mon May 03 12:24:59 2010 +0300
@@ -19,11 +19,8 @@
#include <QGraphicsGridLayout>
#include <QTime>
#include <QDir>
-
-namespace
-{
- const char PLUGIN_PATH[] = "/hsresources/plugins/styleplugins/hsanalogclockstyleplugin.dll";
-}
+#include <HbIconItem>
+#include <HbStyleLoader>
/*!
\class HsAnalogClockWidget
@@ -37,20 +34,15 @@
Constructs widget.
*/
-HsAnalogClockWidget::HsAnalogClockWidget(const QString &stylePluginName, QGraphicsItem *parent)
+HsAnalogClockWidget::HsAnalogClockWidget(QGraphicsItem *parent)
: HbWidget(parent),
mClockBackground(0),
mClockHourHand(0),
mClockMinuteHand(0)
{
- if (stylePluginName.isEmpty()) {
- mStylePluginName = QDir::currentPath() + PLUGIN_PATH;
- } else {
- mStylePluginName = stylePluginName;
- }
- setPluginBaseId(style()->registerPlugin(mStylePluginName));
+ HbStyleLoader::registerFilePath(":/hsanalogclockwidget.widgetml");
+ HbStyleLoader::registerFilePath(":/hsanalogclockwidget.css");
- createPrimitives();
updatePrimitives();
}
@@ -65,7 +57,8 @@
delete mClockHourHand;
delete mClockMinuteHand;
- style()->unregisterPlugin(mStylePluginName);
+ HbStyleLoader::registerFilePath(":/hsanalogclockwidget.widgetml");
+ HbStyleLoader::registerFilePath(":/hsanalogclockwidget.css");
}
/*!
@@ -78,52 +71,47 @@
}
/*!
- Creates all widget primitives.
- */
-void HsAnalogClockWidget::createPrimitives()
-{
- if (pluginBaseId()==-1) {
- return;
- }
- if (!mClockBackground) {
- mClockBackground = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()), this);
- }
- if (!mClockHourHand) {
- mClockHourHand = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()+hourHandItemIndex), this);
- }
- if (!mClockMinuteHand) {
- mClockMinuteHand = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()+minuteHandItemIndex), this);
- }
-}
-
-/*!
@copydoc HbWidget::updatePrimitives()
*/
void HsAnalogClockWidget::updatePrimitives()
{
- if (pluginBaseId()==-1) {
- return;
+ if (!mClockBackground) {
+ mClockBackground = new HbIconItem(QLatin1String("qtg_graf_clock_day_bg"), this);
+ HbStyle::setItemName(mClockBackground, QLatin1String("clock_background"));
}
// Calculate angles for clock hands.
QTime time = QTime::currentTime();
qreal s = 6 * time.second();
qreal m = 6 * (time.minute() + s/360);
- qreal h = 30 * ((time.hour() % 12) + m/360)-90;
- HsAnalogClockStyleOption option;
- initStyleOption(&option);
- option.mM = m;
- option.mH = h;
+ qreal h = 30 * ((time.hour() % 12) + m/360);
+
+ if (!mClockHourHand) {
+ mClockHourHand = new HbIconItem(QLatin1String("qtg_graf_clock_day_hour"), this);
+ HbStyle::setItemName(mClockHourHand, QLatin1String("clock_hour_hand"));
+ }
- if (mClockBackground) {
- style()->updatePrimitive(mClockBackground, (HbStyle::Primitive)(pluginBaseId()), &option);
+ // these should work but don't
+ //int x = mClockHourHand->iconItemSize().width()/2;
+ //int y = mClockHourHand->iconItemSize().height()/2;
+ // workaround
+ int x = mClockHourHand->preferredSize().width()/2;
+ int y = mClockHourHand->preferredSize().height()/2;
+ mClockHourHand->setTransform(QTransform().translate(x, y).rotate(h).translate(-x, -y));
+
+ if (!mClockMinuteHand) {
+ mClockMinuteHand = new HbIconItem(QLatin1String("qtg_graf_clock_day_min"), this);
+ HbStyle::setItemName(mClockMinuteHand, QLatin1String("clock_minute_hand"));
}
- if (mClockHourHand) {
- style()->updatePrimitive(mClockHourHand, (HbStyle::Primitive)(pluginBaseId()+hourHandItemIndex), &option);
- }
- if (mClockMinuteHand) {
- style()->updatePrimitive(mClockMinuteHand, (HbStyle::Primitive)(pluginBaseId()+minuteHandItemIndex), &option);
- }
+
+ // these should work but don't
+ //int x = mClockMinuteHand->iconItemSize().width()/2;
+ //int y = mClockMinuteHand->iconItemSize().height()/2;
+ // workaround
+ x = mClockMinuteHand->preferredSize().width()/2;
+ y = mClockMinuteHand->preferredSize().height()/2;
+ mClockMinuteHand->setTransform(QTransform().translate(x, y).rotate(m).translate(-x, -y));
+
}
/*!
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsclockwidget.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsclockwidget.cpp Mon May 03 12:24:59 2010 +0300
@@ -21,30 +21,31 @@
#include <QGraphicsLinearLayout>
#include <hblabel.h>
#include <hbextendedlocale.h>
+#include <hbdeviceprofile.h> // temp
#include "hsclockwidget.h"
#include "hsanalogclockwidget.h"
#include "hsdigitalclockwidget.h"
-#include "hsclockwidgetdocumentloader.h"
#ifdef Q_OS_SYMBIAN
#include "hsclockwidgettype_symbian.h"
-#endif
+#include <apgtask.h>
+#include <eikenv.h>
+#endif //Q_OS_SYMBIAN
namespace
{
const char ANALOG[] = "analog";
const char DIGITAL[] = "digital";
- const char DIGITAL_CLOCK_DOCML[] = ":/xml/hsdigitalclockwidget.docml";
- const char ANALOG_CLOCK_DOCML[] = ":/xml/hsanalogclockwidget.docml";
-
- const char DIGITAL_CLOCK_WIDGET[] = "timeLabel";
- const char ANALOG_CLOCK_WIDGET[] = "analogClockWidget";
-
const int clockUpdateInterval = 1000; // msec
}
+#ifdef Q_OS_SYMBIAN
+#define KClockAppUid TUid::Uid(0x10005903)
+_LIT (KClockAppExe, "clock.exe");
+#endif //Q_OS_SYMBIAN
+
/*!
\class HsClockWidget
\ingroup group_hsclockwidgetplugin
@@ -201,9 +202,26 @@
update();
mTimer->start(clockUpdateInterval);
-#endif
+#else //Q_OS_SYMBIAN
+ TApaTaskList taskList(CEikonEnv::Static()->WsSession());
+ TApaTask task = taskList.FindApp(KClockAppUid);
+ if (task.Exists()){
+ task.BringToForeground();
+ }
+ else {
+ RProcess process;
+ TInt error = process.Create(KClockAppExe, KNullDesC, EOwnerThread);
+
+ if (error == KErrNone){
+ // start the process running.
+ process.Resume();
+ process.Close();
+ }
+ }
+#endif //Q_OS_SYMBIAN
}
+
/*!
Toggles the clock type.
*/
@@ -223,35 +241,22 @@
{
HbWidget *clockWidget = 0;
- QString docmlFile;
if (mClockType == DIGITAL) {
- docmlFile = DIGITAL_CLOCK_DOCML;
+ clockWidget = new HsDigitalClockWidget();
+ clockWidget->setBackgroundItem(HbStyle::P_Fade_background);
} else {
- docmlFile = ANALOG_CLOCK_DOCML;
+ clockWidget = new HsAnalogClockWidget();
}
- HsClockWidgetDocumentLoader loader;
- bool loaded = false;
- loader.load(docmlFile, &loaded);
-
- if (loaded) {
- if (mClockType == DIGITAL) {
- clockWidget = qobject_cast<HsDigitalClockWidget *>(loader.findWidget(DIGITAL_CLOCK_WIDGET));
- clockWidget->setBackgroundItem(HbStyle::P_Fade_background);
- } else {
- clockWidget = qobject_cast<HsAnalogClockWidget *>(loader.findWidget(ANALOG_CLOCK_WIDGET));
- }
-
- } else {
- qWarning() << "Unable to load clock widget from docml: " << docmlFile;
- // TODO: We must handle this error situation once error handling strategy is clear!
- }
+ qreal unit = HbDeviceProfile::current().unitValue();
+ clockWidget->setPreferredSize(QSizeF(25 * unit, 25 * unit)); // TODO: temp workaround
return clockWidget;
}
void HsClockWidget::onTypeChanged(QString type)
{
+ Q_UNUSED(type);
#if 0
if (mClockType != type) {
mTimer->stop();
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsclockwidgetdocumentloader.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Clock widget
-*
-*/
-
-#include "hsclockwidgetdocumentloader.h"
-
-#include "hsanalogclockwidget.h"
-#include "hsdigitalclockwidget.h"
-
-/*!
- \class HsClockWidgetDocumentLoader
- \ingroup group_hsclockwidgetplugin
- \brief Custom homescreen themable clock docml layout loader.
- */
-
-/*!
- Creates the homescreen themable clock custom docml objects.
- \param type Static type name.
- \param name Object name.
- \retval Created object.
- */
-QObject *HsClockWidgetDocumentLoader::createObject(const QString &type, const QString &name)
-{
- if (type == HsAnalogClockWidget::staticMetaObject.className()) {
- QObject *object = new HsAnalogClockWidget();
- object->setObjectName(name);
- return object;
- }
- else if (type == HsDigitalClockWidget::staticMetaObject.className()) {
- QObject *object = new HsDigitalClockWidget();
- object->setObjectName(name);
- return object;
- }
-
- return HbDocumentLoader::createObject(type, name);
-}
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/styles/hsanalogclockstyleplugin/hsanalogclockstyleplugin.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: hsanalogclockstyleplugin.pri
-#
-
-HEADERS += ./inc/*.h
-
-SOURCES += ./src/*.cpp
-
-DEPENDPATH += ./inc \
- ./src \
- ./resource
-
-INCLUDEPATH += ./inc \
- ./../../inc
-
-
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/styles/hsanalogclockstyleplugin/hsanalogclockstyleplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: hsanalogclockstyleplugin.pro
-#
-
-TEMPLATE = lib
-CONFIG += plugin hb
-win32: PLUGIN_SUBDIR = /hsresources/plugins/styleplugins
-symbian: PLUGIN_SUBDIR = /hsresources/plugins/styleplugins
-
-include (../../../../common.pri)
-
-symbian: {
-TARGET.UID3 = 0x20022F6E
-}
-
-include(hsanalogclockstyleplugin.pri)
-
-RESOURCES += hsanalogclockstyleplugin.qrc
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/styles/hsanalogclockstyleplugin/hsanalogclockstyleplugin.qrc Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<RCC>
- <qresource>
- <file alias="hsanalogclockwidget.css">resource/hsanalogclockwidget.css</file>
- <file alias="hsanalogclockwidget.widgetml">resource/hsanalogclockwidget.widgetml</file>
- </qresource>
-</RCC>
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/styles/hsanalogclockstyleplugin/inc/hsanalogclockstyleplugin.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Analog clock style plugin.
-*
-*/
-
-#ifndef HSANALOGCLOCKSTYLEPLUGIN_H
-#define HSANALOGCLOCKSTYLEPLUGIN_H
-
-#include <QtPlugin>
-
-#include <hbstyleinterface.h>
-#include <hbglobal.h>
-
-#include <hstest_global.h>
-
-HOMESCREEN_TEST_CLASS(T_HsAnalogClockStylePlugin)
-
-class HsAnalogClockStylePlugin: public QObject, public HbStyleInterface
-{
- Q_OBJECT
- Q_INTERFACES(HbStyleInterface)
-
-public:
- int primitiveCount() const;
- QGraphicsItem *createPrimitive(HbStyle::Primitive primitive, QGraphicsItem *parent = 0) const;
- void updatePrimitive(QGraphicsItem *item, HbStyle::Primitive primitive, const QStyleOption *option) const;
- QString layoutPath() const;
-
- HOMESCREEN_TEST_FRIEND_CLASS(T_HsAnalogClockStylePlugin)
-
-};
-
-#endif // HSANALOGCLOCKSTYLEPLUGIN_H
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/styles/hsanalogclockstyleplugin/resource/hsanalogclockstyleplugin.manifest Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-common.pri currently requires manifest file
\ No newline at end of file
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/styles/hsanalogclockstyleplugin/resource/hsanalogclockwidget.css Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-HsAnalogClockWidget {
- layout: layout_1;
-}
-
-HsAnalogClockWidget::clock_background {
- fixed-width: 25.0un;
- fixed-height: 25.0un;
- zvalue: 0;
-}
-
-HsAnalogClockWidget::clock_minute_hand {
- fixed-width: 25.0un;
- fixed-height: 25.0un;
- zvalue: 1;
-}
-
-HsAnalogClockWidget::clock_hour_hand {
- fixed-width: 25.0un;
- fixed-height: 25.0un;
- zvalue: 2;
-}
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/styles/hsanalogclockstyleplugin/resource/hsanalogclockwidget.widgetml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<hbwidget version="0.1">
- <layout name="layout_1" type="mesh">
- <meshitem src="clock_background" srcEdge="CENTERV" dst="" dstEdge="CENTERV" spacing="0.0un" />
- <meshitem src="clock_background" srcEdge="CENTERH" dst="" dstEdge="CENTERH" spacing="0.0un" />
- <meshitem src="clock_hour_hand" srcEdge="CENTERV" dst="clock_background" dstEdge="CENTERV" spacing="0.0un" />
- <meshitem src="clock_hour_hand" srcEdge="CENTERH" dst="clock_background" dstEdge="CENTERH" spacing="0.0un" />
- <meshitem src="clock_minute_hand" srcEdge="CENTERV" dst="clock_background" dstEdge="CENTERV" spacing="0.0un" />
- <meshitem src="clock_minute_hand" srcEdge="CENTERH" dst="clock_background" dstEdge="CENTERH" spacing="0.0un" />
- </layout>
-</hbwidget>
--- a/homescreenapp/widgetplugins/hsclockwidgetplugin/styles/hsanalogclockstyleplugin/src/hsanalogclockstyleplugin.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Analog clock style plugin.
-*
-*/
-
-#include "hsanalogclockstyleplugin.h"
-
-#include <hbstyle.h>
-#include <hbiconitem.h>
-
-#include "hsanalogclockstyleoption.h"
-
-/*!
- \class HsAnalogClockStylePlugin
- \brief Screensaver analog clock style plugin.
- */
-
-/*!
- @copydoc HbStyleInterface::primitiveCount()
- */
-int HsAnalogClockStylePlugin::primitiveCount() const
-{
- return 3;
-}
-
-/*!
- @copydoc HbStyleInterface::createPrimitive()
- */
-QGraphicsItem* HsAnalogClockStylePlugin::createPrimitive(HbStyle::Primitive primitive, QGraphicsItem *parent) const
-{
- if (primitive == backgroundItemIndex) {
- HbIconItem *item = new HbIconItem("qtg_graf_clock_day_bg", parent);
- HbStyle::setItemName(item, "clock_background");
- return item;
- }
- else if (primitive == hourHandItemIndex) {
- HbIconItem *item = new HbIconItem("qtg_graf_clock_day_hour", parent);
- HbStyle::setItemName(item, "clock_hour_hand");
- return item;
- }
- else if (primitive == minuteHandItemIndex) {
- HbIconItem *item = new HbIconItem("qtg_graf_clock_day_min", parent);
- HbStyle::setItemName(item, "clock_minute_hand");
- return item;
- }
- return 0;
-}
-
-/*!
- @copydoc HbStyleInterface::updatePrimitive()
- */
-void HsAnalogClockStylePlugin::updatePrimitive(QGraphicsItem *item, HbStyle::Primitive primitive, const QStyleOption *option ) const
-{
- const HsAnalogClockStyleOption *opt = qstyleoption_cast<const HsAnalogClockStyleOption *>(option);
- if (!opt || !item) {
- return;
- }
-
- HbIconItem *iconItem = static_cast<HbIconItem *>(item);
-
- // these should work but don't
- //int x = iconItem->iconItemSize().width()/2;
- //int y = iconItem->iconItemSize().height()/2;
-
- // workaround
- int x = iconItem->preferredSize().width()/2;
- int y = iconItem->preferredSize().height()/2;
-
- if (primitive == hourHandItemIndex) {
- iconItem->setTransform(QTransform().translate(x, y).rotate(opt->mH).translate(-x, -y));
- }
- else if (primitive == minuteHandItemIndex) {
- iconItem->setTransform(QTransform().translate(x, y).rotate(opt->mM).translate(-x, -y));
- }
-}
-
-/*!
- @copydoc HbStyleInterface::layoutPath()
- */
-QString HsAnalogClockStylePlugin::layoutPath() const
-{
- return QString(":/");
-}
-
-#ifndef COVERAGE_MEASUREMENT
-Q_EXPORT_PLUGIN2(hsanalogclockstyleplugin, HsAnalogClockStylePlugin)
-#endif //COVERAGE_MEASUREMENT
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/hsshortcutwidgetplugin.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-HEADERS += ./inc/*.h
-
-SOURCES += ./src/*.cpp
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/hsshortcutwidgetplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/hsshortcutwidgetplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -18,11 +18,15 @@
CONFIG += plugin hb mobility
MOBILITY = serviceframework
-win32: PLUGIN_SUBDIR = /hsresources/import/widgetregistry/20022F46
-symbian: PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F46
+PLUGIN_SUBDIR = /private/20022F35/import/widgetregistry/20022F46
include(../../common.pri)
+RESOURCES += hsshortcutwidgetplugin.qrc
+
+HEADERS += ./inc/*.h
+SOURCES += ./src/*.cpp
+
LIBS += -lhsdomainmodel \
-lcaclient
@@ -36,7 +40,4 @@
TARGET.UID3 = 0x20022F46
}
-
-include(hsshortcutwidgetplugin.pri)
-
exportResources(./resource/*.manifest, $$PLUGIN_SUBDIR)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/hsshortcutwidgetplugin.qrc Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource>
+ <file alias="hsshortcutwidget.css">resource/hsshortcutwidget.css</file>
+ <file alias="hsshortcutwidget.widgetml">resource/hsshortcutwidget.widgetml</file>
+ </qresource>
+</RCC>
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/inc/hsshortcutwidget.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/inc/hsshortcutwidget.h Mon May 03 12:24:59 2010 +0300
@@ -11,25 +11,24 @@
*
* Contributors:
*
-* Description: Shortcut widget
+* Description: Home screen shortcut widget.
*
*/
#ifndef HSSHORTCUTWIDGET_H
#define HSSHORTCUTWIDGET_H
-#include <QVariant>
-#include <QMap>
+#include <HbWidget>
-#include <HbWidget>
+#include "cadefs.h"
#include "hstest_global.h"
-#include "cadefs.h"
-
HOMESCREEN_TEST_CLASS(TestShortcutWidget)
+class HbFrameItem;
class HbIconItem;
class HbTextItem;
+class HbTouchArea;
class CaEntry;
class HsShortcutWidget : public HbWidget
@@ -41,41 +40,41 @@
HsShortcutWidget(QGraphicsItem *parent = 0, Qt::WindowFlags flags = 0);
~HsShortcutWidget();
+ void setMcsId(int mcsId);
int mcsId() const;
- void setMcsId(int mcsId);
+
+ bool eventFilter(QObject *watched, QEvent *event);
signals:
void finished();
public slots:
- void onEntryChanged(const CaEntry &entry, ChangeType changeType);
-
void onInitialize();
void onShow();
void onHide();
-protected:
- void mousePressEvent(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event) }
- void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+ void onEntryChanged(const CaEntry &entry, ChangeType changeType);
private:
- void constructUI();
+ Q_DISABLE_COPY(HsShortcutWidget)
+
+ void handleMousePressEvent(QGraphicsSceneMouseEvent *event);
+ void handleMouseReleaseEvent(QGraphicsSceneMouseEvent *event);
- HbIcon fetchIcon(int aShortcutId);
- QString fetchText(int aShortcutId);
+ void updatePrimitives();
+ void createCaNotifier();
+ void updateVisibility();
- void executeCollectionAction(int shortcutId, const QString& collectionType);
- void createCaNotifier(int aShortcutId);
+private:
+ HbFrameItem *mBackground;
+ HbIconItem *mIcon;
+ HbTextItem *mText;
+ HbTouchArea *mTouchArea;
- void hideOrShowWidget(EntryFlags aEntryFlags);
- EntryFlags fetchEntryFlags(int aShortcutId);
-
-private:
- HbIconItem *mShortcutBackgroundItem;
- HbIconItem *mShortcutIconItem;
- HbTextItem *mShortcutTextItem;
+ bool mIsPressed;
int mMcsId;
+ QSharedPointer<CaEntry> mCaEntry;
HOMESCREEN_TEST_FRIEND_CLASS(TestShortcutWidget)
};
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/inc/hsshortcutwidgetplugin.h Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/inc/hsshortcutwidgetplugin.h Mon May 03 12:24:59 2010 +0300
@@ -11,21 +11,18 @@
*
* Contributors:
*
-* Description: Homescreen widget plugin
+* Description: Homescreen shortcut widget plugin.
*
*/
-
#ifndef HSSHORTCUTWIDGETPLUGIN_H
#define HSSHORTCUTWIDGETPLUGIN_H
#include <QObject>
#include <qserviceplugininterface.h>
-#include <hstest_global.h>
QTM_USE_NAMESPACE
-HOMESCREEN_TEST_CLASS(TestShortcutWidgetPlugin)
class HsShortcutWidgetPlugin : public QObject, public QServicePluginInterface
{
Q_OBJECT
@@ -35,7 +32,6 @@
QObject *createInstance(const QServiceInterfaceDescriptor &descriptor,
QServiceContext *context,
QAbstractSecuritySession *session);
-HOMESCREEN_TEST_FRIEND_CLASS(TestShortcutWidgetPlugin)
};
#endif //HSSHORTCUTWIDGETPLUGIN_H
Binary file homescreenapp/widgetplugins/hsshortcutwidgetplugin/resource/calculator.png has changed
Binary file homescreenapp/widgetplugins/hsshortcutwidgetplugin/resource/email.png has changed
Binary file homescreenapp/widgetplugins/hsshortcutwidgetplugin/resource/globe.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/resource/hsshortcutwidget.css Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,60 @@
+HsShortcutWidget {
+ layout: icon_text_shortcut;
+}
+
+HsShortcutWidget[icon][text] {
+ layout: icon_text_shortcut;
+}
+
+HsShortcutWidget[icon][!text] {
+ layout: icon_shortcut;
+}
+
+HsShortcutWidget::background {
+ border-width: 0.0un;
+ fixed-width: 12un;
+ fixed-height: expr(12.5un + var(hb-param-text-height-tiny));
+ zvalue: 0;
+}
+
+HsShortcutWidget[icon][text]::background {
+ border-width: 0.0un;
+ fixed-width: 12un;
+ fixed-height: expr(12.5un + var(hb-param-text-height-tiny));
+ zvalue: 0;
+}
+
+HsShortcutWidget[icon][!text]::background {
+ border-width: 0.0un;
+ fixed-width: 12un;
+ fixed-height: 12un;
+ zvalue: 0;
+}
+
+HsShortcutWidget::icon{
+ left: -0.5un;
+ right: 0.5un;
+ top: -0.5un;
+ bottom: 0.5un;
+ fixed-width: 11.0un;
+ fixed-height: 11.0un;
+ zvalue: 1;
+}
+
+HsShortcutWidget::text{
+ left: -0.5un;
+ right: 0.5un;
+ top: 0.0un;
+ bottom: 0.5un;
+ fixed-width: 11.0un;
+ font-variant: secondary;
+ text-align: center center;
+ text-height: var(hb-param-text-height-tiny);
+ text-line-count-max: 1;
+ color: var(qtc_hs_list_item_title_normal);
+ zvalue: 2;
+}
+
+HsShortcutWidget::toucharea {
+ zvalue: 3;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/resource/hsshortcutwidget.widgetml Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,36 @@
+<hbwidget version="0.1" type="HsShortcutWidget">
+
+ <layout name="icon_text_shortcut" type="mesh">
+ <meshitem src="background" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="background" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ <meshitem src="background" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="background" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+
+ <meshitem src="icon" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="icon" srcEdge="CENTERH" dst="" dstEdge="CENTERH" />
+
+ <meshitem src="text" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ <meshitem src="text" srcEdge="CENTERH" dst="" dstEdge="CENTERH" />
+
+ <meshitem src="toucharea" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="toucharea" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+ <meshitem src="toucharea" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="toucharea" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ </layout>
+
+ <layout name="icon_shortcut" type="mesh">
+ <meshitem src="background" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="background" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ <meshitem src="background" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="background" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+
+ <meshitem src="icon" srcEdge="CENTERV" dst="" dstEdge="CENTERV" />
+ <meshitem src="icon" srcEdge="CENTERH" dst="" dstEdge="CENTERH" />
+
+ <meshitem src="toucharea" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+ <meshitem src="toucharea" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
+ <meshitem src="toucharea" srcEdge="TOP" dst="" dstEdge="TOP" />
+ <meshitem src="toucharea" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+ </layout>
+
+</hbwidget>
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/resource/hsshortcutwidgetplugin.s60xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>hsshortcutwidgetplugin</name>
- <filepath>z:/private/20022F35/import/widgetregistry/20022F46/hsshortcutwidgetplugin.qtplugin</filepath>
- <description>Shortcut widget.</description>
- <interface>
- <name>com.nokia.symbian.IHomeScreenWidget</name>
- <version>1.0</version>
- <description></description>
- <capabilities></capabilities>
- <customproperty key="iconuri">shortcut.png</customproperty>
- <customproperty key="hidden">true</customproperty>
- <customproperty key="title">Shortcut</customproperty>
- </interface>
-</service>
Binary file homescreenapp/widgetplugins/hsshortcutwidgetplugin/resource/note.png has changed
Binary file homescreenapp/widgetplugins/hsshortcutwidgetplugin/resource/shortcuticon.png has changed
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/src/hsshortcutwidget.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/src/hsshortcutwidget.cpp Mon May 03 12:24:59 2010 +0300
@@ -11,16 +11,18 @@
*
* Contributors:
*
-* Description: Shortcut widget
+* Description: Home screen shortcut widget.
*
*/
-#include <QGraphicsLinearLayout>
#include <QGraphicsSceneMouseEvent>
-#include <HbStackedLayout>
+#include <HbStyleLoader>
+#include <HbFrameItem>
+#include <HbFrameDrawer>
#include <HbIconItem>
#include <HbTextItem>
+#include <HbTouchArea>
#include "hsshortcutwidget.h"
#include "hsshortcutservice.h"
@@ -30,52 +32,37 @@
/*!
\class HsShortcutWidget
- \ingroup group_hsshortcutwidgetprovider
+ \ingroup group_hsshortcutwidgetplugin
\brief Implementation for the homescreen shortcut widget.
Shortcut can be defined to launch different applications or applications
with parameters, for example browser with certain url.
-
- \section how_to_use_shortcut_plugin How to use HsShortcutWidget
-
- At the moment code is compiled with homescreen core implementation.
-
*/
/*!
-
- Constructs shortcut widget object
+ Constructor.
*/
HsShortcutWidget::HsShortcutWidget(QGraphicsItem *parent, Qt::WindowFlags flags)
: HbWidget(parent, flags),
- mShortcutBackgroundItem(0),
- mShortcutIconItem(0),
- mShortcutTextItem(0),
- mMcsId(-1)
+ mBackground(0), mIcon(0), mText(0), mTouchArea(0),
+ mIsPressed(false),
+ mMcsId(-1), mCaEntry()
{
- setPreferredSize(QSizeF(82,82));
- resize(82,82);
+ HbStyleLoader::registerFilePath(":/hsshortcutwidget.widgetml");
+ HbStyleLoader::registerFilePath(":/hsshortcutwidget.css");
}
/*!
- \fn HsShortcutWidget::~HsShortcutWidget()
-
- Destructor
+ Destructor.
*/
HsShortcutWidget::~HsShortcutWidget()
{
+ HbStyleLoader::unregisterFilePath(":/hsshortcutwidget.widgetml");
+ HbStyleLoader::unregisterFilePath(":/hsshortcutwidget.css");
}
/*!
- Getter for menu content service id
-*/
-int HsShortcutWidget::mcsId() const
-{
- return mMcsId;
-}
-
-/*!
- Sets menu content service id to \a mcsId
+ Sets the menu content service id.
*/
void HsShortcutWidget::setMcsId(int mcsId)
{
@@ -83,194 +70,186 @@
}
/*!
- \fn void HsShortcutWidget::onEntryChanged(const CaEntry &entry, ChangeType changeType)
-
- Invoked when \a entry has changed with a \a changeType event.
+ Returns the menu content service id.
*/
-void HsShortcutWidget::onEntryChanged(const CaEntry &entry, ChangeType changeType)
+int HsShortcutWidget::mcsId() const
{
+ return mMcsId;
+}
- switch(changeType) {
- case RemoveChangeType: {
- emit finished();
+/*!
+ Filters touch area events.
+*/
+bool HsShortcutWidget::eventFilter(QObject *watched, QEvent *event)
+{
+ Q_UNUSED(watched)
+
+ switch (event->type()) {
+ case QEvent::GraphicsSceneMousePress:
+ handleMousePressEvent(static_cast<QGraphicsSceneMouseEvent *>(event));
break;
- }
- case UpdateChangeType: {
- hideOrShowWidget(entry.flags());
- mShortcutIconItem->setIcon(fetchIcon(mMcsId));
+
+ case QEvent::GraphicsSceneMouseRelease:
+ handleMouseReleaseEvent(static_cast<QGraphicsSceneMouseEvent *>(event));
+ break;
+
+ default:
+ break;
+ }
+
+ return true;
+}
- QString text = fetchText(mMcsId);
- mShortcutTextItem->setText(text);
- break;
- }
- default:
- break;
+/*!
+ Initializes this widget.
+*/
+void HsShortcutWidget::onInitialize()
+{
+ mCaEntry = CaService::instance()->getEntry(mMcsId);
+ if (!mCaEntry.isNull()) {
+ createCaNotifier();
+ updatePrimitives();
+ } else {
+ emit finished();
}
}
/*!
- \fn void HsShortcutWidget::onInitialize()
-
- Initializes shortcut
+ Wakes up this widget.
*/
-void HsShortcutWidget::onInitialize()
+void HsShortcutWidget::onShow()
{
- constructUI();
-
- if (!HsShortcutService::instance() || mMcsId < 0) {
- emit finished();
- }
-
- createCaNotifier(mMcsId);
-
- mShortcutIconItem->setIcon(fetchIcon(mMcsId));
-
- QString text = fetchText(mMcsId);
- mShortcutTextItem->setText(text);
-
- setEnabled(true);
+ updateVisibility();
}
/*!
- \fn void HsClockWidget::show()
-
- Shows the widget
-*/
-void HsShortcutWidget::onShow()
-{
- hideOrShowWidget(fetchEntryFlags(mMcsId));
-}
-
-/*!
- \fn void HsClockWidget::show()
-
- Hides the widget
+ Puts this widget in quiescent state.
*/
void HsShortcutWidget::onHide()
{
}
/*!
- \fn void HsShortcutWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-
- Executes configured action
+ Invoked when \a entry has changed with a \a changeType.
*/
-void HsShortcutWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
- if (!contains(event->pos())) {
- return;
- }
+void HsShortcutWidget::onEntryChanged(const CaEntry &entry, ChangeType changeType)
+{
+ Q_UNUSED(entry)
+
+ mCaEntry = CaService::instance()->getEntry(mMcsId);
- CaEntry *entry = CaService::instance()->getEntry(mMcsId);
- if (!entry) {
- return;
- }
-
- if (entry->role() == ItemEntryRole) {
- CaService::instance()->executeCommand(mMcsId);
- } else {
- executeCollectionAction(mMcsId, entry->entryTypeName());
+ switch(changeType) {
+ case RemoveChangeType:
+ emit finished();
+ break;
+ case UpdateChangeType:
+ updateVisibility();
+ updatePrimitives();
+ break;
+ default:
+ break;
}
}
/*!
- \fn void HsShortcutWidget::constructUI()
-
- Constructs and initializes ui parts
+ Mouse press handler.
*/
-void HsShortcutWidget::constructUI()
-{
- mShortcutBackgroundItem = new HbIconItem("hs_shortcut_bg");
- mShortcutBackgroundItem->setAlignment(Qt::AlignCenter);
- mShortcutIconItem = new HbIconItem;
- mShortcutIconItem->setAlignment(Qt::AlignCenter);
- mShortcutTextItem = new HbTextItem;
- mShortcutTextItem->setAlignment(Qt::AlignCenter);
+void HsShortcutWidget::handleMousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+ Q_UNUSED(event)
- HbStackedLayout *mainLayout = new HbStackedLayout;
- mainLayout->addItem(mShortcutBackgroundItem);
-
- QGraphicsLinearLayout *contentLayout =
- new QGraphicsLinearLayout(Qt::Vertical);
- contentLayout->setContentsMargins(4, 4, 4, 4);
- contentLayout->addItem(mShortcutIconItem);
- contentLayout->addItem(mShortcutTextItem);
- mainLayout->addItem(contentLayout);
-
- setLayout(mainLayout);
-}
-
-/*!
- \internal
-*/
-HbIcon HsShortcutWidget::fetchIcon(int aShortcutId)
-{
- CaEntry *entry = CaService::instance()->getEntry(aShortcutId);
- if (!entry) {
- return HbIcon();
- }
- return entry->makeIcon();
+ mIsPressed = true;
+ updatePrimitives();
}
/*!
- \internal
+ Mouse release handler.
*/
-QString HsShortcutWidget::fetchText(int aShortcutId)
+void HsShortcutWidget::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
- CaEntry *entry = CaService::instance()->getEntry(aShortcutId);
- if (!entry) {
- return QString();
- }
- return entry->text();
-}
-
-/*!
- \internal
-*/
-void HsShortcutWidget::executeCollectionAction(
- int shortcutId, const QString& collectionType)
-{
- HsShortcutService::instance()->executeCollectionAction(
- shortcutId, collectionType);
-}
+ mIsPressed = false;
+ updatePrimitives();
-/*!
- \internal
-*/
-void HsShortcutWidget::createCaNotifier(int aShortcutId)
-{
- CaNotifierFilter filter;
- filter.setIds(QList<int>() << aShortcutId);
-
- CaNotifier *itemNotifier = CaService::instance()->createNotifier(filter);
- itemNotifier->setParent(this);
+ if (!contains(event->pos())) {
+ return;
+ }
- connect(itemNotifier,
- SIGNAL(entryChanged(CaEntry,ChangeType)),
- SLOT(onEntryChanged(CaEntry,ChangeType)),Qt::QueuedConnection);
-}
-
-/*!
- \internal
-*/
-void HsShortcutWidget::hideOrShowWidget(EntryFlags aEntryFlags)
-{
- if (aEntryFlags.testFlag(MissingEntryFlag)) {
- hide();
+ if (mCaEntry->role() == ItemEntryRole) {
+ CaService::instance()->executeCommand(mMcsId);
} else {
- show();
+ HsShortcutService::instance()->executeCollectionAction(mMcsId, mCaEntry->entryTypeName());
}
}
/*!
\internal
*/
-EntryFlags HsShortcutWidget::fetchEntryFlags(int aShortcutId)
+void HsShortcutWidget::updatePrimitives()
+{
+ // Background
+ if (!mBackground) {
+ HbFrameDrawer *drawer = new HbFrameDrawer(
+ QLatin1String("qtg_fr_hsshortcut_normal"), HbFrameDrawer::NinePieces);
+ mBackground = new HbFrameItem(drawer, this);
+ HbStyle::setItemName(mBackground, QLatin1String("background"));
+ }
+ if (mIsPressed) {
+ mBackground->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_hsitems_pressed"));
+ } else {
+ mBackground->frameDrawer().setFrameGraphicsName(QLatin1String("qtg_fr_hsshortcut_normal"));
+ }
+
+ // Icon
+ if (!mIcon) {
+ mIcon = new HbIconItem(this);
+ HbStyle::setItemName(mIcon, QLatin1String("icon"));
+ }
+ mIcon->setIcon(mCaEntry->makeIcon());
+
+ // Text
+ QString text = mCaEntry->text();
+ if (!text.isNull()) {
+ if (!mText) {
+ mText = new HbTextItem(this);
+ HbStyle::setItemName(mText, QLatin1String("text"));
+ }
+ mText->setText(text);
+ } else {
+ if (mText) {
+ delete mText;
+ mText = 0;
+ }
+ }
+
+ // Touch Area
+ if (!mTouchArea) {
+ mTouchArea = new HbTouchArea(this);
+ mTouchArea->installEventFilter(this);
+ HbStyle::setItemName(mTouchArea, QLatin1String("toucharea"));
+ }
+}
+
+/*!
+ \internal
+*/
+void HsShortcutWidget::createCaNotifier()
{
- CaEntry *entry = CaService::instance()->getEntry(aShortcutId);
- EntryFlags entryFlags = 0;
- if (entry) {
- entryFlags = entry->flags();
- }
- return entryFlags;
+ CaNotifierFilter filter;
+ filter.setIds(QList<int>() << mMcsId);
+
+ CaNotifier *notifier = CaService::instance()->createNotifier(filter);
+ notifier->setParent(this);
+
+ connect(notifier,
+ SIGNAL(entryChanged(CaEntry,ChangeType)),
+ SLOT(onEntryChanged(CaEntry,ChangeType)),
+ Qt::QueuedConnection);
}
+
+/*!
+ \internal
+*/
+void HsShortcutWidget::updateVisibility()
+{
+ setVisible(!mCaEntry->flags().testFlag(MissingEntryFlag));
+}
--- a/homescreenapp/widgetplugins/hsshortcutwidgetplugin/src/hsshortcutwidgetplugin.cpp Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/hsshortcutwidgetplugin/src/hsshortcutwidgetplugin.cpp Mon May 03 12:24:59 2010 +0300
@@ -11,7 +11,7 @@
*
* Contributors:
*
-* Description: Homescreen widget plugin
+* Description: Homescreen shortcut widget plugin.
*
*/
@@ -26,18 +26,14 @@
#pragma CTC SKIP
#endif //COVERAGE_MEASUREMENT
-/**
+/*!
\class HsShortcutWidgetPlugin
\ingroup group_hsshortcutwidgetplugin
- \brief Homescreen shortcut widget plugin collects ready-made homescreen shortcut widget(s).
-
- This library includes homescreen shortcut widgets implemented by homescreen scrum team.
- This plugin provides widgets that are described in the hsshortcutwidgetplugin.xml plugin
- xml file.
+ \brief The plugin part of the homescreen shortcut widget.
*/
/*!
- Creates widget object.
+ Instantiates and returns new shortcut widget.
*/
QObject *HsShortcutWidgetPlugin::createInstance(const QServiceInterfaceDescriptor &descriptor,
QServiceContext *context,
--- a/homescreenapp/widgetplugins/widgetplugins.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/homescreenapp/widgetplugins/widgetplugins.pro Mon May 03 12:24:59 2010 +0300
@@ -17,6 +17,5 @@
TEMPLATE = subdirs
SUBDIRS = hsshortcutwidgetplugin \
- hsclockwidgetplugin \
- hsclockwidgetplugin/styles/hsanalogclockstyleplugin
+ hsclockwidgetplugin
\ No newline at end of file
--- a/screensaverapp/bwins/snsrutilsu.def Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-EXPORTS
- ?qt_metacall@SnsrLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1 NONAME ; int SnsrLabel::qt_metacall(enum QMetaObject::Call, int, void * *)
- ??0SnsrLabel@@QAE@PAVQGraphicsItem@@@Z @ 2 NONAME ; SnsrLabel::SnsrLabel(class QGraphicsItem *)
- ?tr@SnsrLabel@@SA?AVQString@@PBD0H@Z @ 3 NONAME ; class QString SnsrLabel::tr(char const *, char const *, int)
- ?tr@SnsrLabel@@SA?AVQString@@PBD0@Z @ 4 NONAME ; class QString SnsrLabel::tr(char const *, char const *)
- ?getStaticMetaObject@SnsrLabel@@SAABUQMetaObject@@XZ @ 5 NONAME ; struct QMetaObject const & SnsrLabel::getStaticMetaObject(void)
- ?changeEvent@SnsrLabel@@MAEXPAVQEvent@@@Z @ 6 NONAME ; void SnsrLabel::changeEvent(class QEvent *)
- ?staticMetaObject@SnsrLabel@@2UQMetaObject@@B @ 7 NONAME ; struct QMetaObject const SnsrLabel::staticMetaObject
- ??1SnsrLabel@@UAE@XZ @ 8 NONAME ; SnsrLabel::~SnsrLabel(void)
- ?trUtf8@SnsrLabel@@SA?AVQString@@PBD0@Z @ 9 NONAME ; class QString SnsrLabel::trUtf8(char const *, char const *)
- ?metaObject@SnsrLabel@@UBEPBUQMetaObject@@XZ @ 10 NONAME ; struct QMetaObject const * SnsrLabel::metaObject(void) const
- ??0SnsrLabel@@QAE@ABVQString@@PAVQGraphicsItem@@@Z @ 11 NONAME ; SnsrLabel::SnsrLabel(class QString const &, class QGraphicsItem *)
- ?setThemedTextColor@SnsrLabel@@AAEXXZ @ 12 NONAME ; void SnsrLabel::setThemedTextColor(void)
- ?trUtf8@SnsrLabel@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString SnsrLabel::trUtf8(char const *, char const *, int)
- ?qt_metacast@SnsrLabel@@UAEPAXPBD@Z @ 14 NONAME ; void * SnsrLabel::qt_metacast(char const *)
- ??_ESnsrLabel@@UAE@I@Z @ 15 NONAME ; SnsrLabel::~SnsrLabel(unsigned int)
-
--- a/screensaverapp/common.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: screensaverapp project - common QMake settings
-#
-
-CONFIG += debug_and_release
-
-# On win32 and mac, debug and release libraries are named differently.
-# We must follow the debug and release settings Qt was compiled with:
-# build debug iff Qt built debug, build release iff Qt built release.
-win32|mac {
- !contains(QT_CONFIG,debug)|!contains(QT_CONFIG,release) {
- CONFIG -= debug_and_release debug release
- contains(QT_CONFIG,debug): CONFIG+=debug
- contains(QT_CONFIG,release):CONFIG+=release
- }
-}
-
-CONFIG(debug, debug|release) {
- SUBDIRPART = debug
-} else {
- SUBDIRPART = release
-}
-
-win32: OUTPUT_DIR = $$PWD/../../bin/$$SUBDIRPART
-symbian: OUTPUT_DIR = $$PWD/bin
-
-SOURCE_DIR = $$PWD/inc
-
-#test whether we have a unit test
-!testcase {
- OBJECTS_DIR = $$OUTPUT_DIR/tmp/$$TARGET
- DESTDIR = $$OUTPUT_DIR
- MOC_DIR = $$OUTPUT_DIR/tmp/$$TARGET/moc
- RCC_DIR = $$OUTPUT_DIR/tmp/$$TARGET/rcc
- UI_DIR = $$OUTPUT_DIR/tmp/$$TARGET/ui
-} else { # test part is NOT DONE
- QT *= testlib
- CONFIG += console
- CONFIG -= app_bundle
- OBJECTS_DIR = $$OUTPUT_DIR/bin/tests/$$SUBDIRPART/tmp/$$TARGET
- DESTDIR = $$OUTPUT_DIR/bin/tests/$$SUBDIRPART
- MOC_DIR = $$OUTPUT_DIR/bin/tests/$$SUBDIRPART/tmp/$$TARGET/moc
- RCC_DIR = $$OUTPUT_DIR/bin/tests/$$SUBDIRPART/tmp/$$TARGET/rcc
- UI_DIR = $$OUTPUT_DIR/bin/tests/$$SUBDIRPART/tmp/$$TARGET/ui
- LIBS += -L$$OUTPUT_DIR/bin/$$SUBDIRPART/bin #link against library that we test
-}
-
-# Add the output dirs to the link path too
-LIBS += -L$$DESTDIR
-
-DEPENDPATH += . $$SOURCE_DIR
-INCLUDEPATH += . $$SOURCE_DIR
-#For some reason the default include path doesn't include MOC_DIR on symbian
-symbian {
- INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
- INCLUDEPATH += $$MOC_DIR
- TARGET.CAPABILITY = ALL -TCB
- TARGET.EPOCALLOWDLLDATA=1
-}
-
-win32 {
- # add platfrom API for windows
- INCLUDEPATH += \
- $$PWD/../../homescreensrv/homescreensrv_plat/appruntimemodel_api \
- $$PWD/../../homescreensrv/homescreensrv_plat/servicemodel_api \
- $$PWD/../../homescreensrv/homescreensrv_plat/statemodel_api \
- $$PWD/../../homescreensrv/screensavermodel/inc
-}
-
-plugin: !isEmpty(PLUGIN_SUBDIR): DESTDIR = $$OUTPUT_DIR/$$PLUGIN_SUBDIR
-
-win32: plugin { # copy manifiers
- manifest.path = $$DESTDIR
- manifest.files = ./resource/*.manifest
- manifest.CONFIG += no_build
-
- INSTALLS += manifest
- PRE_TARGETDEPS += install_manifest
-}
-
-symbian: plugin { # copy qtstub and manifest
- pluginstub.sources = $${TARGET}.dll
- pluginstub.path = $$PLUGIN_SUBDIR
-
- DEPLOYMENT += pluginstub
-
- qtplugins.path = $$PLUGIN_SUBDIR
- qtplugins.sources += qmakepluginstubs/$${TARGET}.qtplugin
- qtplugins.sources += resource/$${TARGET}.manifest
-
- for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin z:$$qtplugins.path/$$basename(qtplugin)"
-}
-
-defineTest(exportResources) {
-symbian {
- for(subdirs, 1) {
- entries = $$files($$subdirs)
- for(entry, entries) : BLD_INF_RULES.prj_exports += "./$$entry z:/$$replace(2, ^/,)/$$basename(entry)"
- }
- export ( BLD_INF_RULES.prj_exports)
-}
-win32 {
- name = $$replace(1, [/\\\\\.\*], _)
- eval ($${name}.path = $${OUTPUT_DIR}/$${2})
- eval ($${name}.files = $$1)
- eval ($${name}.CONFIG += no_build)
-
- INSTALLS += $$name
- PRE_TARGETDEPS += install_$${name}
-
- export ( $${name}.path )
- export ( $${name}.files )
- export ( $${name}.CONFIG )
- export ( INSTALLS )
- export ( PRE_TARGETDEPS )
-}
-}
-
-# support for NFT
-nft:DEFINES += NFT
-nft_ram {
- DEFINES += NFT NFT_RAM
- LIBS += -lhal
-}
--- a/screensaverapp/eabi/snsrutilsu.def Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-EXPORTS
- _ZN9SnsrLabel11changeEventEP6QEvent @ 1 NONAME
- _ZN9SnsrLabel11qt_metacallEN11QMetaObject4CallEiPPv @ 2 NONAME
- _ZN9SnsrLabel11qt_metacastEPKc @ 3 NONAME
- _ZN9SnsrLabel16staticMetaObjectE @ 4 NONAME DATA 16
- _ZN9SnsrLabel18setThemedTextColorEv @ 5 NONAME
- _ZN9SnsrLabel19getStaticMetaObjectEv @ 6 NONAME
- _ZN9SnsrLabelC1EP13QGraphicsItem @ 7 NONAME
- _ZN9SnsrLabelC1ERK7QStringP13QGraphicsItem @ 8 NONAME
- _ZN9SnsrLabelC2EP13QGraphicsItem @ 9 NONAME
- _ZN9SnsrLabelC2ERK7QStringP13QGraphicsItem @ 10 NONAME
- _ZN9SnsrLabelD0Ev @ 11 NONAME
- _ZN9SnsrLabelD1Ev @ 12 NONAME
- _ZN9SnsrLabelD2Ev @ 13 NONAME
- _ZNK9SnsrLabel10metaObjectEv @ 14 NONAME
- _ZTI9SnsrLabel @ 15 NONAME
- _ZTV9SnsrLabel @ 16 NONAME
- _ZThn16_N9SnsrLabelD0Ev @ 17 NONAME
- _ZThn16_N9SnsrLabelD1Ev @ 18 NONAME
- _ZThn8_N9SnsrLabelD0Ev @ 19 NONAME
- _ZThn8_N9SnsrLabelD1Ev @ 20 NONAME
-
--- a/screensaverapp/inc/snsrtest_global.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Global Screensaver macros for testing purposes.
-*
-*/
-
-#ifndef SNSRTEST_GLOBAL_H
-#define SNSRTEST_GLOBAL_H
-
-#ifndef SCREENSAVER_TEST
- #define SCREENSAVER_TEST_CLASS(aClassName)
- #define SCREENSAVER_TEST_FRIEND_CLASS(aClassName)
-#else
- #define SCREENSAVER_TEST_CLASS(aClassName) class aClassName;
- #define SCREENSAVER_TEST_FRIEND_CLASS(aClassName) friend class aClassName;
-#endif //SCREENSAVER_TEST
-
-/*!
-To enable logging of function entry and exit use the following flag for qmake:
--config nft
-To enable logging of function entry and exit aswell as RAM usage (Symbian only!)
-use the following flag for qmake:
--config nft_ram
-*/
-
-#ifdef NFT
- #include <QDebug>
- #include <QTime>
-
-#ifdef NFT_RAM && Q_OS_SYMBIAN
- #include <hal.h>
- #include <e32std.h>
-
- #define SCREENSAVER_TEST_FREERAM_ENTRY(function) \
- TInt gEntryFreeRam(0); \
- TInt gEntryFreeHeap(0); \
- TInt gEntryTotalHeap(0); \
- { \
- HAL::Get(HAL::EMemoryRAMFree, gEntryFreeRam); \
- RHeap &heap = User::Heap(); \
- TInt biggestBlock(0); \
- gEntryFreeHeap = heap.Available(biggestBlock); \
- gEntryTotalHeap = heap.Size(); \
- qDebug("(snsr nft RAM in) " function \
- " - Memory (kB) - Free RAM: %d, Heap size: %d, Free heap: %d", \
- gEntryFreeRam >> 10, \
- gEntryTotalHeap >> 10, \
- gEntryFreeHeap >> 10); \
- }
-
- #define SCREENSAVER_TEST_FREERAM_EXIT(function) \
- { \
- TInt freeRAM(0); \
- HAL::Get(HAL::EMemoryRAMFree, freeRAM); \
- RHeap &heap = User::Heap(); \
- TInt biggestBlock(0); \
- TInt freeHeap = heap.Available(biggestBlock); \
- TInt totalHeap = heap.Size(); \
- qDebug("(snsr nft RAM out) " function \
- " - Memory (kB) - Free RAM: %d (%+d), Heap size: %d (%+d), Free heap: %d (%+d)", \
- freeRAM >> 10, (freeRAM-gEntryFreeRam) >> 10, \
- totalHeap >> 10, (totalHeap-gEntryTotalHeap) >> 10, \
- freeHeap >> 10, (freeHeap-gEntryFreeHeap) >> 10); \
- }
-#else // NFT_RAM && Q_OS_SYMBIAN
- #define SCREENSAVER_TEST_FREERAM_ENTRY(function)
- #define SCREENSAVER_TEST_FREERAM_EXIT(function)
-#endif // NFT_RAM && Q_OS_SYMBIAN
-
- #define SCREENSAVER_TEST_TIME_ENTRY(function) \
- QTime _ENTRY_TIME; \
- _ENTRY_TIME.start(); \
- { \
- qDebug() << "(snsr nft time in)" << function << "-" << \
- _ENTRY_TIME.toString("hh:mm:ss.zzz"); \
- }
-
- #define SCREENSAVER_TEST_TIME_EXIT(function) \
- { \
- qDebug() << "(snsr nft time out)" << function << "-" << \
- QTime::currentTime().toString("hh:mm:ss.zzz") << \
- "elapsed:" << _ENTRY_TIME.elapsed() << "ms"; \
- }
-
- #define SCREENSAVER_TEST_FUNC_ENTRY(function) SCREENSAVER_TEST_TIME_ENTRY(function) \
- SCREENSAVER_TEST_FREERAM_ENTRY(function)
- #define SCREENSAVER_TEST_FUNC_EXIT(function) SCREENSAVER_TEST_TIME_EXIT(function) \
- SCREENSAVER_TEST_FREERAM_EXIT(function)
-#else //NFT
- #define SCREENSAVER_TEST_FUNC_ENTRY(function)
- #define SCREENSAVER_TEST_FUNC_EXIT(function)
-#endif //NFT
-
-#endif // SNSRTEST_GLOBAL_H
--- a/screensaverapp/misc/cmt/cmtsnsr.cmd Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-@rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-@rem All rights reserved.
-@rem This component and the accompanying materials are made available
-@rem under the terms of "Eclipse Public License v1.0"
-@rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-@rem
-@rem Initial Contributors:
-@rem Nokia Corporation - initial contribution.
-@rem
-@rem Contributors:
-@rem
-@rem Description:
-@rem
-
-call collectsnsrfiles.cmd
-cmt -c snsrconf.ini -o snsrcmt.txt < snsrfiles.txt
-cmt2html -i snsrcmt.txt
\ No newline at end of file
--- a/screensaverapp/misc/cmt/collectsnsrfiles.cmd Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-@rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-@rem All rights reserved.
-@rem This component and the accompanying materials are made available
-@rem under the terms of "Eclipse Public License v1.0"
-@rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-@rem
-@rem Initial Contributors:
-@rem Nokia Corporation - initial contribution.
-@rem
-@rem Contributors:
-@rem
-@rem Description:
-@rem
-rem dir ..\..\screensaverapp\*.cpp /s /b >snsrfiles.txt
-dir ..\..\screensaverproviders\snsrbigclockscreensaverprovider\src\*.cpp /s /b >snsrfiles.txt
-dir ..\..\runtimeproviders\snsrdefaultruntimeprovider\src\*.cpp /s /b >>snsrfiles.txt
-dir ..\..\snsrapplication\src\*.cpp /s /b >>snsrfiles.txt
-dir ..\..\stateproviders\snsrdefaultstateprovider\src\*.cpp /s /b >>snsrfiles.txt
-dir ..\..\..\..\homescreensrv\bagetmodel\src\*.cpp /s /b >>snsrfiles.txt
-dir ..\..\..\..\homescreensrv\screensavermodel\src\*.cpp /s /b >>snsrfiles.txt
\ No newline at end of file
--- a/screensaverapp/misc/cmt/snsrconf.ini Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-MCCABE_FUNCTION_MAX=20
-V_FUNCTION_MIN=1
-V_FUNCTION_MAX=2000
-V_FILE_MIN=1
-V_FILE_MAX=20000
-LOC_FUNCTION_MIN=1
-LOC_FUNCTION_MAX=100
-LOC_FILE_MIN=1
-LOC_FILE_MAX=2000
-B_FILE_MIN=0
-B_FILE_MAX=10
-COMMENT_RATIO_FILE_MIN=0
-COMMENT_RATIO_FILE_MAX=100
-COMMENT_RATIO_FUNCTION_MIN=0
-COMMENT_RATIO_FUNCTION_MAX=100
-COMMENT_FUNCTION_MIN=0
Binary file screensaverapp/misc/screensaver_uids.xls has changed
--- a/screensaverapp/rom/screensaverapp.iby Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef __SCREENSAVERAPP_IBY__
-#define __SCREENSAVERAPP_IBY__
-
-
-// ---- hsapplication --------------------------------------------
-
-file=ABI_DIR\BUILD_DIR\snsrapplication.exe PROGRAMS_DIR\snsrapplication.exe
-data=ZPRIVATE\10003a3f\import\apps\snsrapplication_reg.rsc private\10003a3f\import\apps\snsrapplication_reg.rsc
-
-// ---- runtimeproviders --------------------------------------------
-
-// -------- snsrdefaultruntimeprovider
-file=ABI_DIR\BUILD_DIR\snsrdefaultruntimeprovider.dll SHARED_LIB_DIR\snsrdefaultruntimeprovider.dll
-data=\epoc32\data\z\snsrresources\plugins\runtimeproviders\snsrdefaultruntimeprovider.qtplugin snsrresources\plugins\runtimeproviders\snsrdefaultruntimeprovider.qtplugin
-data=\epoc32\data\z\snsrresources\plugins\runtimeproviders\snsrdefaultruntimeprovider.manifest snsrresources\plugins\runtimeproviders\snsrdefaultruntimeprovider.manifest
-
-// ---- stateproviders --------------------------------------------
-
-// -------- snsrdefaultstateprovider
-file=ABI_DIR\BUILD_DIR\snsrdefaultstateprovider.dll SHARED_LIB_DIR\snsrdefaultstateprovider.dll
-data=\epoc32\data\z\snsrresources\plugins\stateproviders\snsrdefaultstateprovider.qtplugin snsrresources\plugins\stateproviders\snsrdefaultstateprovider.qtplugin
-data=\epoc32\data\z\snsrresources\plugins\stateproviders\snsrdefaultstateprovider.manifest snsrresources\plugins\stateproviders\snsrdefaultstateprovider.manifest
-
-// ---- screensaverproviders --------------------------------------------
-
-// -------- snsrbigclockscreensaverprovider
-file=ABI_DIR\BUILD_DIR\snsrbigclockscreensaverprovider.dll SHARED_LIB_DIR\snsrbigclockscreensaverprovider.dll
-data=\epoc32\data\z\snsrresources\plugins\screensaverproviders\snsrbigclockscreensaverprovider.qtplugin snsrresources\plugins\screensaverproviders\snsrbigclockscreensaverprovider.qtplugin
-data=\epoc32\data\z\snsrresources\plugins\screensaverproviders\snsrbigclockscreensaverprovider.manifest snsrresources\plugins\screensaverproviders\snsrbigclockscreensaverprovider.manifest
-
-// ---- style plugins --------------------------------------------------
-
-// -------- snsranalogclockstyleplugin
-file=ABI_DIR\BUILD_DIR\snsranalogclockstyleplugin.dll SHARED_LIB_DIR\snsranalogclockstyleplugin.dll
-data=\epoc32\data\z\snsrresources\plugins\snsrstyleplugins\snsranalogclockstyleplugin.qtplugin snsrresources\plugins\snsrstyleplugins\snsranalogclockstyleplugin.qtplugin
-data=\epoc32\data\z\snsrresources\plugins\snsrstyleplugins\snsranalogclockstyleplugin.manifest snsrresources\plugins\snsrstyleplugins\snsranalogclockstyleplugin.manifest
-
-// -------- snsroledclockstyleplugin
-file=ABI_DIR\BUILD_DIR\snsroledclockstyleplugin.dll SHARED_LIB_DIR\snsroledclockstyleplugin.dll
-data=\epoc32\data\z\snsrresources\plugins\snsrstyleplugins\snsroledclockstyleplugin.qtplugin snsrresources\plugins\snsrstyleplugins\snsroledclockstyleplugin.qtplugin
-data=\epoc32\data\z\snsrresources\plugins\snsrstyleplugins\snsroledclockstyleplugin.manifest snsrresources\plugins\snsrstyleplugins\snsroledclockstyleplugin.manifest
-
-// ---- serviceproviders --------------------------------------------
-
-// -------- snsruseractivityservice
-file=ABI_DIR\BUILD_DIR\snsruseractivityservice.dll SHARED_LIB_DIR\snsruseractivityservice.dll
-
-// ---- snsrutils --------------------------------------------
-
-file=ABI_DIR\BUILD_DIR\snsrutils.dll SHARED_LIB_DIR\snsrutils.dll
-
-#endif //__SCREENSAVERAPP_IBY__
--- a/screensaverapp/runtimeproviders/runtimeproviders.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: runtimeproviders.pro
-#
-
-TEMPLATE = subdirs
-
-SUBDIRS = snsrdefaultruntimeprovider
--- a/screensaverapp/runtimeproviders/snsrdefaultruntimeprovider/inc/snsrdefaultruntime.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Default Screensaver runtime.
-*
-*/
-
-#ifndef SNSRDEFAULTRUNTIME_H
-#define SNSRDEFAULTRUNTIME_H
-
-#include <hsruntime.h>
-#include "snsrtest_global.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrDefaultRuntimeProvider)
-
-class QStateMachine;
-class HbMainWindow;
-
-class SnsrDefaultRuntime : public HsRuntime
-{
-
- Q_OBJECT
-
-public:
-
- SnsrDefaultRuntime(QObject *parent = 0);
- ~SnsrDefaultRuntime();
-
-public slots:
-
- void start();
- void stop();
-
-private:
-
- Q_DISABLE_COPY(SnsrDefaultRuntime)
-
- void initializeUserInterface();
- void initializeStateMachine();
-
- void createStates();
-
-private:
-
- QStateMachine *mStateMachine;
- HbMainWindow *mWindow;
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrDefaultRuntimeProvider)
-
-};
-
-#endif // SNSRDEFAULTRUNTIME_H
--- a/screensaverapp/runtimeproviders/snsrdefaultruntimeprovider/inc/snsrdefaultruntimeprovider.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Default runtime provider.
-*
-*/
-
-#ifndef SNSRDEFAULTRUNTIMEPROVIDER_H
-#define SNSRDEFAULTRUNTIMEPROVIDER_H
-
-#include <hsiruntimeprovider.h>
-
-class SnsrDefaultRuntimeProvider : public QObject,
- public IHsRuntimeProvider
-{
-
- Q_OBJECT
- Q_INTERFACES(IHsRuntimeProvider)
-
-public:
-
- SnsrDefaultRuntimeProvider(QObject *parent = 0);
- ~SnsrDefaultRuntimeProvider();
-
- QList<HsRuntimeToken> runtimes();
- HsRuntime *createRuntime(const HsRuntimeToken& token);
-
-};
-
-#endif // SNSRDEFAULTRUNTIMEPROVIDER_H
--- a/screensaverapp/runtimeproviders/snsrdefaultruntimeprovider/resource/snsrdefaultruntimeprovider.manifest Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<runtimeprovider>
- <runtime library="snsrdefaultruntimeprovider.dll"
- uri="screensaver.nokia.com/runtime/defaultruntime"/>
-</runtimeprovider>
--- a/screensaverapp/runtimeproviders/snsrdefaultruntimeprovider/snsrdefaultruntimeprovider.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsrdefaultruntimeprovider.pri
-#
-
-HEADERS += ./inc/*.h
-
-SOURCES += ./src/*.cpp
-
-DEPENDPATH += ./inc \
- ./src
-
-INCLUDEPATH += ./inc
--- a/screensaverapp/runtimeproviders/snsrdefaultruntimeprovider/snsrdefaultruntimeprovider.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsrdefaultruntimeprovider.pro
-#
-
-TEMPLATE = lib
-CONFIG += plugin
-PLUGIN_SUBDIR = /snsrresources/plugins/runtimeproviders
-
-include (../../common.pri)
-
-LIBS += -lappruntimemodel \
- -lstatemodel
-
-CONFIG += hb
-
-symbian: {
-TARGET.UID3 = 0x2002704F
-}
-
-include(snsrdefaultruntimeprovider.pri)
--- a/screensaverapp/runtimeproviders/snsrdefaultruntimeprovider/src/snsrdefaultruntime.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Default Screensaver runtime.
-*
-*/
-
-#include "snsrdefaultruntime.h"
-
-#include <QStateMachine>
-#include <QState>
-
-#include <hbmainwindow.h>
-
-#include <hsistateprovider.h>
-#include <hsstatefactory.h>
-
-/*!
- \class SnsrDefaultRuntime
- \ingroup group_snsrdefaultruntimeprovider
- \brief Default implementation of the screensaver runtime.
-*/
-
-const char factoryManifestDir [] = "snsrresources/plugins/stateproviders";
-const char factoryPluginDir [] = "snsrresources/plugins/stateproviders";
-const char stateLibrary[] = "snsrdefaultstateprovider.dll";
-
-const char rootStateUri [] = "screensaver.nokia.com/state/root";
-
-/*!
- Constructs a new SnsrDefaultRuntime with parent.
-*/
-SnsrDefaultRuntime::SnsrDefaultRuntime(QObject *parent) :
- HsRuntime(parent),
- mStateMachine(0),
- mWindow(0)
-{
- initializeUserInterface();
- initializeStateMachine();
-}
-
-/*!
- Destructs the class.
-*/
-SnsrDefaultRuntime::~SnsrDefaultRuntime()
-{
- delete mWindow;
-}
-
-/*!
- Starts the runtime.
-*/
-void SnsrDefaultRuntime::start()
-{
- mStateMachine->start();
-}
-
-/*!
- Stops the runtime.
-*/
-void SnsrDefaultRuntime::stop()
-{
- mStateMachine->stop();
-}
-
-/*!
- Function initializes objects required to UI creation.
-*/
-void SnsrDefaultRuntime::initializeUserInterface()
-{
- mWindow = new HbMainWindow();
- mWindow->show();
-}
-
-/*!
- Function initialize state machine.
-*/
-void SnsrDefaultRuntime::initializeStateMachine()
-{
- // Ownership transfered to application.
- // State machine instance will be removed after runtime destruction.
- mStateMachine = new QStateMachine(this);
-
- // Forward signals emited by statemachine.
- connect(mStateMachine, SIGNAL(started()), SIGNAL(started()));
- connect(mStateMachine, SIGNAL(stopped()), SIGNAL(stopped()));
-
- createStates();
-}
-
-/*!
- Function creates and initializes UI states.
-*/
-void SnsrDefaultRuntime::createStates()
-{
- HsStateToken token;
- HsStateFactory factory(factoryManifestDir, factoryPluginDir);
-
- token.mLibrary = stateLibrary;
- token.mUri = rootStateUri;
- QState *snsrRootState = factory.createState(token);
- snsrRootState->setParent(mStateMachine);
- snsrRootState->setObjectName(token.mUri);
-
- mStateMachine->setInitialState(snsrRootState);
-}
--- a/screensaverapp/runtimeproviders/snsrdefaultruntimeprovider/src/snsrdefaultruntimeprovider.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Default runtime provider.
-*
-*/
-
-#include "snsrdefaultruntimeprovider.h"
-
-#include <QList>
-
-#include "snsrdefaultruntime.h"
-
-/*!
- \class SnsrDefaultRuntimeProvider
- \ingroup group_snsrdefaultruntimeprovider
- \brief Provides a default implementation of the screensaver runtime.
-
- This provider includes a default implementation of the screensaver runtime.
- The runtime is described in the snsrdefaultruntimeprovider.manifest file.
-*/
-
-// Constants
-const char gFileName [] = "snsrdefaultruntimeprovider.dll";
-const char gFileUri [] = "screensaver.nokia.com/runtime/defaultruntime";
-
-/*!
- Constructs a new SnsrDefaultRuntimeProvider with parent.
-*/
-SnsrDefaultRuntimeProvider::SnsrDefaultRuntimeProvider(QObject *parent) :
- QObject(parent)
-{
-}
-
-/*!
- Destructs the class.
-*/
-SnsrDefaultRuntimeProvider::~SnsrDefaultRuntimeProvider()
-{
-}
-
-/*!
- Returns contained runtimes as a list of tokens.
-*/
-QList<HsRuntimeToken> SnsrDefaultRuntimeProvider::runtimes()
-{
- HsRuntimeToken token = {gFileName, gFileUri};
- return QList<HsRuntimeToken>() << token;
-}
-
-/*!
- Creates a runtime based on the given token.
-*/
-HsRuntime *SnsrDefaultRuntimeProvider::createRuntime(const HsRuntimeToken& token)
-{
- if ((token.mLibrary == gFileName) && (token.mUri == gFileUri)) {
- return new SnsrDefaultRuntime();
- }
- else {
- return 0;
- }
-}
-
-#ifndef COVERAGE_MEASUREMENT
-Q_EXPORT_PLUGIN2(snsrdefaultruntimeprovider, SnsrDefaultRuntimeProvider)
-#endif // COVERAGE_MEASUREMENT
--- a/screensaverapp/screensaverapp.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: screensaverapp.pro
-#
-
-TEMPLATE = subdirs
-
-SUBDIRS = snsrutils\
- serviceproviders \
- stateproviders \
- runtimeproviders \
- snsrapplication \
- screensaverproviders
-
-CONFIG += ordered
-
-symbian:include(screensaverapp_exports_to_rom.pri)
--- a/screensaverapp/screensaverapp_exports_to_rom.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-BLD_INF_RULES.prj_exports += \
- "$${LITERAL_HASH}include <platform_paths.hrh>" \
- "rom/screensaverapp.iby CORE_APP_LAYER_IBY_EXPORT_PATH(screensaverapp.iby)"
--- a/screensaverapp/screensaverproviders/screensaverproviders.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: screensaverproviders.pro
-#
-
-TEMPLATE = subdirs
-
-SUBDIRS += snsrbigclockscreensaverprovider/snsranalogclockstyleplugin
-SUBDIRS += snsrbigclockscreensaverprovider/snsroledclockstyleplugin
-SUBDIRS += snsrbigclockscreensaverprovider
-
-CONFIG += ordered
\ No newline at end of file
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/inc/snsranalogclockcontainer.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Container for analog clock.
-*
-*/
-
-#ifndef SNSRANALOGCLOCKCONTAINER_H
-#define SNSRANALOGCLOCKCONTAINER_H
-
-#include "snsrbigclockcontainer.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrBigClockScreensaverProvider)
-
-class HbLabel;
-class SnsrAnalogClockWidget;
-
-class SnsrAnalogClockContainer : public SnsrBigClockContainer
-{
- Q_OBJECT
-
-public:
-
- SnsrAnalogClockContainer();
- ~SnsrAnalogClockContainer();
-
-public slots:
-
- virtual void update();
- virtual void changeLayout(Qt::Orientation orientation);
-
-private:
-
- HbLabel *mDateLabel;
- SnsrAnalogClockWidget *mAnalogClockWidget;
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrBigClockScreensaverProvider)
-};
-
-#endif // SNSRANALOGCLOCKCONTAINER_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/inc/snsrbigclockcontainer.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Base class container.
-*
-*/
-
-#ifndef SNSRBIGCLOCKCONTAINER_H
-#define SNSRBIGCLOCKCONTAINER_H
-
-#include <hbwidget.h>
-
-#include "snsrtest_global.h"
-#include "snsrdocumentloader.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrBigClockScreensaverProvider)
-
-class QGraphicsLinearLayout;
-
-class SnsrBigClockContainer : public HbWidget
-{
- Q_OBJECT
-
-public:
-
- SnsrBigClockContainer();
- ~SnsrBigClockContainer();
-
-public slots:
-
- virtual void update() = 0;
- virtual void changeLayout(Qt::Orientation orientation) = 0;
-
-protected:
-
- virtual void changeEvent(QEvent * event);
-
-private:
-
- void setBackgroundColor();
- void paint(
- QPainter *painter,
- const QStyleOptionGraphicsItem *option,
- QWidget *widget = 0
- );
-
-protected:
-
- QGraphicsWidget *mMainContainer;
- QGraphicsLinearLayout *mBackgroundContainerLayout;
-
- SnsrDocumentLoader mDocumentLoader;
- QObjectList mDocumentObjects;
-
- int mCurrentOrientation;
-
-private:
-
- QColor mBackgroundColor;
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrBigClockScreensaverProvider)
-};
-
-#endif // SNSRBIGCLOCKCONTAINER_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/inc/snsrbigclockscreensaver.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Big clock Screensaver.
-*
-*/
-
-#ifndef SNSRBIGCLOCKSCREENSAVER_H
-#define SNSRBIGCLOCKSCREENSAVER_H
-
-#include <QTimer>
-
-#include <screensaver.h>
-#include "snsrtest_global.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrBigClockScreensaverProvider)
-
-class HbMainWindow;
-class SnsrBigClockContainer;
-
-class SnsrBigClockScreensaver : public Screensaver
-{
- Q_OBJECT
-
-public:
-
- enum ClockFormat
- {
- ClockFormatUndefined,
- ClockFormatAnalog,
- ClockFormatDigital
- };
-
- SnsrBigClockScreensaver();
- ~SnsrBigClockScreensaver();
-
-private:
-
- ClockFormat clockFormat();
-
- virtual bool onInitialize();
- virtual bool onForeground();
- virtual bool onPartialForeground();
- virtual bool onBackground();
- virtual bool onPowerSave();
- virtual bool onClose();
-
-private:
-
- QTimer mTimer;
- HbMainWindow *mMainWindow;
- SnsrBigClockContainer *mCurrentContainer;
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrBigClockScreensaverProvider)
-
-};
-
-#endif // SNSRBIGCLOCKSCREENSAVER_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/inc/snsrbigclockscreensaverprovider.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Big clock Screensaver provider.
-*
-*/
-
-#ifndef SNSRBIGCLOCKSCREENSAVERPROVIDER_H
-#define SNSRBIGCLOCKSCREENSAVERPROVIDER_H
-
-#include <iscreensaverprovider.h>
-#include <screensaver.h>
-
-class SnsrBigClockScreensaverProvider : public QObject, public IScreensaverProvider
-{
- Q_OBJECT
- Q_INTERFACES(IScreensaverProvider)
-
-public:
-
- SnsrBigClockScreensaverProvider();
- virtual ~SnsrBigClockScreensaverProvider();
-
- QList<ScreensaverToken> screensavers();
- Screensaver *createScreensaver(const ScreensaverToken& token);
-
-private:
-
- ScreensaverToken mClockScreensaverToken;
-
-};
-
-#endif // SNSRBIGCLOCKSCREENSAVERPROVIDER_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/inc/snsrdigitalclockcontainer.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Container for digital clock.
-*
-*/
-
-#ifndef SNSRDIGITALCLOCKCONTAINER_H
-#define SNSRDIGITALCLOCKCONTAINER_H
-
-#include "snsrbigclockcontainer.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrBigClockScreensaverProvider)
-
-class HbLabel;
-
-class SnsrDigitalClockContainer : public SnsrBigClockContainer
-{
- Q_OBJECT
-
-public:
-
- SnsrDigitalClockContainer();
- ~SnsrDigitalClockContainer();
-
-public slots:
-
- virtual void update();
- virtual void changeLayout(Qt::Orientation orientation);
-
-private:
-
- HbLabel *mTimeLabel;
- HbLabel *mAmPmLabel;
- HbLabel *mDateLabel;
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrBigClockScreensaverProvider)
-};
-
-#endif // SNSRDIGITALCLOCKCONTAINER_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/inc/snsrdocumentloader.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Screensaver custom document loader.
-*
-*/
-
-#ifndef SNSRDOCUMENTLOADER_H
-#define SNSRDOCUMENTLOADER_H
-
-#include <hbdocumentloader.h>
-
-#include "snsrtest_global.h"
-
-class SnsrDocumentLoader : public HbDocumentLoader
-{
-
-private:
-
- virtual QObject *createObject(const QString &type, const QString &name);
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrBigClockScreensaverProvider)
-
-};
-
-#endif // SNSRDOCUMENTLOADER_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/inc/snsroledanalogclockcontainer.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Container for oled analog clock.
-*
-*/
-
-#ifndef SNSROLEDANALOGCLOCKCONTAINER_H
-#define SNSROLEDANALOGCLOCKCONTAINER_H
-
-#include "snsrbigclockcontainer.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrBigClockScreensaverProvider)
-
-class SnsrOledClockWidget;
-
-class SnsrOledAnalogClockContainer : public SnsrBigClockContainer
-{
- Q_OBJECT
-
-public:
-
- SnsrOledAnalogClockContainer();
- ~SnsrOledAnalogClockContainer();
-
-public slots:
-
- virtual void update();
- virtual void changeLayout(Qt::Orientation orientation);
-
-private:
-
- SnsrOledClockWidget *mOledClockWidget;
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrBigClockScreensaverProvider)
-};
-
-#endif // SNSROLEDANALOGCLOCKCONTAINER_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/inc/snsroleddigitalclockcontainer.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Container for oled digital clock.
-*
-*/
-
-#ifndef SNSROLEDDIGITALCLOCKCONTAINER_H
-#define SNSROLEDDIGITALCLOCKCONTAINER_H
-
-#include "snsrbigclockcontainer.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrBigClockScreensaverProvider)
-
-class HbLabel;
-
-class SnsrOledDigitalClockContainer : public SnsrBigClockContainer
-{
- Q_OBJECT
-
-public:
-
- SnsrOledDigitalClockContainer();
- ~SnsrOledDigitalClockContainer();
-
-public slots:
-
- virtual void update();
- virtual void changeLayout(Qt::Orientation orientation);
-
-private:
-
- HbLabel *mTimeLabel;
- HbLabel *mAmPmLabel;
- HbLabel *mDateLabel;
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrBigClockScreensaverProvider)
-};
-
-#endif // SNSROLEDDIGITALCLOCKCONTAINER_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/resource/snsrbigclockscreensaverprovider.manifest Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<screensaverprovider>
- <screensaver library="snsrbigclockscreensaverprovider.dll"
- uri="screensaver.nokia.com/screensaver/bigclock"/>
-</screensaverprovider>
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsranalogclockstyleplugin/inc/snsranalogclockstyleplugin.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Analog clock style plugin.
-*
-*/
-
-#ifndef SNSRANALOGCLOCKSTYLEPLUGIN_H
-#define SNSRANALOGCLOCKSTYLEPLUGIN_H
-
-#include <QtPlugin>
-
-#include <hbstyleinterface.h>
-#include <hbglobal.h>
-
-#include "snsrtest_global.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrACStylePlugin)
-
-class SnsrAnalogClockStylePlugin: public QObject, public HbStyleInterface
-{
- Q_OBJECT
- Q_INTERFACES(HbStyleInterface)
-
-public:
- int primitiveCount() const;
- HbWidgetBase *createPrimitive(HbStyle::Primitive primitive, QGraphicsItem *parent = 0) const;
- void updatePrimitive(QGraphicsItem *item, HbStyle::Primitive primitive, const QStyleOption *option) const;
- QString layoutPath() const;
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrACStylePlugin)
-
-};
-
-#endif // SNSRANALOGCLOCKSTYLEPLUGIN_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsranalogclockstyleplugin/resource/snsranalogclockstyleplugin.manifest Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<snsranalogclockstyleplugin>
- <screensaver library="snsranalogclockstyleplugin.dll"
- uri="screensaver.nokia.com/screensaver/analogclock"/>
-</snsranalogclockstyleplugin>
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsranalogclockstyleplugin/resource/snsranalogclockwidget.css Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-HbWidget {
- margin-left: 0un;
- margin-top: 0un;
-}
-
-SnsrAnalogClockWidget {
- layout: layout_1;
-}
-
-SnsrAnalogClockWidget::analog_clock_background {
- pref-width: 40.0un;
- pref-height: 40.0un;
-}
-
-SnsrAnalogClockWidget::analog_clock_hour_hand {
- pref-height: 28.0un;
-}
-
-SnsrAnalogClockWidget::analog_clock_minute_hand {
- pref-height: 34.0un;
-}
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsranalogclockstyleplugin/resource/snsranalogclockwidget.widgetml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<hbwidget version="0.1">
- <layout name="layout_1" type="mesh">
- <meshitem src="analog_clock_background" srcEdge="CENTERV" dst="" dstEdge="CENTERV" spacing="0.0un" />
- <meshitem src="analog_clock_background" srcEdge="CENTERH" dst="" dstEdge="CENTERH" spacing="0.0un" />
- <meshitem src="analog_clock_hour_hand" srcEdge="CENTERV" dst="analog_clock_background" dstEdge="CENTERV" spacing="0.0un" />
- <meshitem src="analog_clock_hour_hand" srcEdge="CENTERH" dst="analog_clock_background" dstEdge="CENTERH" spacing="0.0un" />
- <meshitem src="analog_clock_minute_hand" srcEdge="CENTERV" dst="analog_clock_background" dstEdge="CENTERV" spacing="0.0un" />
- <meshitem src="analog_clock_minute_hand" srcEdge="CENTERH" dst="analog_clock_background" dstEdge="CENTERH" spacing="0.0un" />
- </layout>
-</hbwidget>
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsranalogclockstyleplugin/snsranalogclockstyleplugin.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsranalogclockstyleplugin.pri
-#
-
-HEADERS += ./inc/*.h \
- ./../snsrclockwidgets/inc/snsrstyleoptionanalogclock.h
-
-SOURCES += ./src/*.cpp
-
-DEPENDPATH += ./inc \
- ./src \
- ./resource
-
-INCLUDEPATH += ./inc \
- ./../snsrclockwidgets/inc
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsranalogclockstyleplugin/snsranalogclockstyleplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsranalogclockstyleplugin.pro
-#
-
-TEMPLATE = lib
-
-CONFIG += plugin hb
-
-PLUGIN_SUBDIR = /snsrresources/plugins/snsrstyleplugins
-
-include (../../../common.pri)
-
-symbian: {
- TARGET.UID3 = 0x20027054
-}
-
-include(snsranalogclockstyleplugin.pri)
-
-RESOURCES += snsranalogclockstyleplugin.qrc
\ No newline at end of file
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsranalogclockstyleplugin/snsranalogclockstyleplugin.qrc Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<RCC>
- <qresource>
- <file alias="snsranalogclockwidget.css">resource/snsranalogclockwidget.css</file>
- <file alias="snsranalogclockwidget.widgetml">resource/snsranalogclockwidget.widgetml</file>
- </qresource>
-</RCC>
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsranalogclockstyleplugin/src/snsranalogclockstyleplugin.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Analog clock style plugin.
-*
-*/
-
-#include "snsranalogclockstyleplugin.h"
-
-#include <QGraphicsDropShadowEffect>
-#include <hbiconitem.h>
-
-#include "snsrstyleoptionanalogclock.h"
-
-const int gDropShadowOffset(2);
-
-/*!
- \class SnsrAnalogClockStylePlugin
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Screensaver analog clock style plugin.
- */
-
-/*!
- @copydoc HbStyleInterface::primitiveCount()
- */
-int SnsrAnalogClockStylePlugin::primitiveCount() const
-{
- return SnsrStyleOptionAnalogClock::LastItemIndex; // first index = 0, index of LastItemIndex = number of primitives;
-}
-
-/*!
- @copydoc HbStyleInterface::createPrimitive()
- */
-HbWidgetBase* SnsrAnalogClockStylePlugin::createPrimitive(HbStyle::Primitive primitive,
- QGraphicsItem *parent) const
-{
- if (primitive == (int)SnsrStyleOptionAnalogClock::BackgroundItemIndex) {
- HbIconItem *item = new HbIconItem("analog-clock-background", parent);
- HbStyle::setItemName(item, "analog_clock_background");
- item->setZValue(1);
- return item;
- }
- else if (primitive == (int)SnsrStyleOptionAnalogClock::HourHandItemIndex) {
- HbIconItem *item = new HbIconItem("analog-clock-hour-hand", parent);
- HbStyle::setItemName(item, "analog_clock_hour_hand");
- item->setZValue(2);
- QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect();
- effect->setOffset(gDropShadowOffset);
- item->setGraphicsEffect(effect);
- return item;
- }
- else if (primitive == (int)SnsrStyleOptionAnalogClock::MinuteHandItemIndex) {
- HbIconItem *item = new HbIconItem("analog-clock-minute-hand", parent);
- HbStyle::setItemName(item, "analog_clock_minute_hand");
- item->setZValue(3);
- QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect();
- effect->setOffset(gDropShadowOffset);
- item->setGraphicsEffect(effect);
- return item;
- }
- return 0;
-}
-
-/*!
- @copydoc HbStyleInterface::updatePrimitive()
- */
-void SnsrAnalogClockStylePlugin::updatePrimitive(QGraphicsItem *item,
- HbStyle::Primitive primitive,
- const QStyleOption *option ) const
-{
- const SnsrStyleOptionAnalogClock *opt =
- qstyleoption_cast<const SnsrStyleOptionAnalogClock *>(option);
- if (!opt || !item) {
- return;
- }
-
- HbIconItem *iconItem = static_cast<HbIconItem *>(item);
-
- int x = iconItem->iconItemSize().width()/2;
- int y = iconItem->iconItemSize().height()/2;
-
- if (primitive == (int)SnsrStyleOptionAnalogClock::HourHandItemIndex) {
- iconItem->setTransform(QTransform().translate(x, y).rotate(opt->mH).translate(-x, -y));
- }
- else if (primitive == (int)SnsrStyleOptionAnalogClock::MinuteHandItemIndex) {
- iconItem->setTransform(QTransform().translate(x, y).rotate(opt->mM).translate(-x, -y));
- }
-}
-
-/*!
- @copydoc HbStyleInterface::layoutPath()
- */
-QString SnsrAnalogClockStylePlugin::layoutPath() const
-{
- return QString(":/");
-}
-
-#ifndef COVERAGE_MEASUREMENT
-Q_EXPORT_PLUGIN2(snsranalogclockstyleplugin, SnsrAnalogClockStylePlugin)
-#endif //COVERAGE_MEASUREMENT
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrbigclockscreensaver.qrc Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<RCC>
- <qresource prefix="/xml" >
- <file alias="snsrbigclockscreensaverdigital.docml">resource/snsrbigclockscreensaverdigital.docml</file>
- <file alias="snsrbigclockscreensaveranalog.docml">resource/snsrbigclockscreensaveranalog.docml</file>
- <file alias="snsrbigclockscreensaveroledanalog.docml">resource/snsrbigclockscreensaveroledanalog.docml</file>
- <file alias="snsrbigclockscreensaveroleddigital.docml">resource/snsrbigclockscreensaveroleddigital.docml</file>
- </qresource>
-</RCC>
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrbigclockscreensaverprovider.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsrbigclockscreensaverprovider.pri
-#
-
-HEADERS += ./inc/*.h \
- ./snsrclockwidgets/inc/*.h
-
-SOURCES += ./src/*.cpp \
- ./snsrclockwidgets/src/*.cpp
-
-DEPENDPATH += ./inc \
- ./src \
- ./resource
-
-INCLUDEPATH += ./inc \
- ./snsrclockwidgets/inc
\ No newline at end of file
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrbigclockscreensaverprovider.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsrbigclockscreensaverprovider.pro
-#
-
-TEMPLATE = lib
-
-CONFIG += plugin
-PLUGIN_SUBDIR = /snsrresources/plugins/screensaverproviders
-
-include (../../common.pri)
-
-LIBS += -lscreensavermodel \
- -lsnsrutils
-
-INCLUDEPATH += ../../snsrutils/inc
-
-CONFIG += hb
-
-symbian: {
- TARGET.UID3 = 0x20027052
- # TODO: temporary until screensavermodel goes to platform API
- INCLUDEPATH += ../../../../homescreensrv/screensavermodel/inc
-}
-
-include(snsrbigclockscreensaverprovider.pri)
-
-RESOURCES = snsrbigclockscreensaver.qrc
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrclockwidgets/inc/snsranalogclockwidget.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Analog Clock Widget.
-*
-*/
-
-#ifndef SNSRANALOGCLOCKWIDGET_H
-#define SNSRANALOGCLOCKWIDGET_H
-
-#include <hbwidget.h>
-#include "snsrtest_global.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrClockWidgets)
-
-class QGraphicsItem;
-
-class SnsrAnalogClockWidget: public HbWidget
-{
- Q_OBJECT
-
-public:
-
- explicit SnsrAnalogClockWidget(QGraphicsItem *parent = 0);
- virtual ~SnsrAnalogClockWidget();
-
-public slots:
-
- void tick();
-
-private:
-
- void resizeEvent (QGraphicsSceneResizeEvent *event);
- void createPrimitives();
- void updatePrimitives();
-
-private:
-
- QString mStylePluginName;
-
- QGraphicsItem *mClockBackground;
- QGraphicsItem *mClockHourHand;
- QGraphicsItem *mClockMinuteHand;
-
- Q_DISABLE_COPY(SnsrAnalogClockWidget)
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrClockWidgets)
-
-};
-
-#endif // SNSRANALOGCLOCKWIDGET_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrclockwidgets/inc/snsroledclockwidget.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Oled Clock Widget.
-*
-*/
-
-#ifndef SNSROLEDCLOCKWIDGET_H
-#define SNSROLEDCLOCKWIDGET_H
-
-#include <hbwidget.h>
-#include "snsrtest_global.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrClockWidgets)
-
-class QGraphicsItem;
-
-class SnsrOledClockWidget: public HbWidget
-{
- Q_OBJECT
-
-public:
-
- explicit SnsrOledClockWidget(QGraphicsItem *parent = 0);
- virtual ~SnsrOledClockWidget();
-
-public slots:
-
- void tick();
-
-private:
-
- void resizeEvent (QGraphicsSceneResizeEvent *event);
- void createPrimitives();
- void updatePrimitives();
-
-private:
-
- QString mStylePluginName;
-
- QGraphicsItem *mClockBackground;
- QGraphicsItem *mClockHourHand;
- QGraphicsItem *mClockMinuteHand;
- QGraphicsItem *mClockDateFrame;
- QGraphicsItem *mClockDateLabel;
-
- Q_DISABLE_COPY(SnsrOledClockWidget)
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrClockWidgets)
-
-};
-
-#endif // SNSROLEDCLOCKWIDGET_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrclockwidgets/inc/snsrstyleoptionanalogclock.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Style option for analog clock widget.
-*
-*/
-
-#ifndef SNSRSTYLEOPTIONANALOGCLOCK_H
-#define SNSRSTYLEOPTIONANALOGCLOCK_H
-
-#include <hbstyleoption.h>
-
-class SnsrStyleOptionAnalogClock : public HbStyleOption
-{
-
-public:
-
- enum ItemIndex
- {
- BackgroundItemIndex = 0,
- HourHandItemIndex,
- MinuteHandItemIndex,
- LastItemIndex
- };
-
-public:
- SnsrStyleOptionAnalogClock();
- SnsrStyleOptionAnalogClock(const SnsrStyleOptionAnalogClock &other);
- ~SnsrStyleOptionAnalogClock();
-
- enum StyleOptionType { Type = HbSO_Widget+1000};
- enum StyleOptionVersion { Version = 1 };
-
- qreal mM;
- qreal mH;
-};
-
-#endif // SNSRSTYLEOPTIONANALOGCLOCK_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrclockwidgets/inc/snsrstyleoptionoledanalogclock.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Style option for oled analog clock widget.
-*
-*/
-
-#ifndef SNSRSTYLEOPTIONOLEDANALOGCLOCK_H
-#define SNSRSTYLEOPTIONOLEDANALOGCLOCK_H
-
-#include <hbstyleoption.h>
-
-class SnsrStyleOptionOledAnalogClock : public HbStyleOption
-{
-
-public:
-
- enum ItemIndex
- {
- BackgroundItemIndex = 0,
- HourHandItemIndex,
- MinuteHandItemIndex,
- DateFrameItemIndex,
- DateLabelItemIndex,
- LastItemIndex
- };
-
-public:
- SnsrStyleOptionOledAnalogClock();
- SnsrStyleOptionOledAnalogClock(const SnsrStyleOptionOledAnalogClock &other);
- ~SnsrStyleOptionOledAnalogClock();
-
- enum StyleOptionType { Type = HbSO_Widget+1000};
- enum StyleOptionVersion { Version = 1 };
-
- qreal mM;
- qreal mH;
- QString mShortDate;
-};
-
-#endif // SNSRSTYLEOPTIONOLEDANALOGCLOCK_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrclockwidgets/src/snsranalogclockwidget.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,129 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Analog Clock Widget.
-*
-*/
-
-#include "snsranalogclockwidget.h"
-
-#include <QGraphicsSvgItem>
-#include <QTime>
-
-#include "snsrstyleoptionanalogclock.h"
-
-#ifdef Q_OS_SYMBIAN
-const char *gAnalogClockPluginPath("../../snsrresources/plugins/snsrstyleplugins/snsranalogclockstyleplugin.dll");
-#else
-const char *gAnalogClockPluginPath("snsrresources/plugins/snsrstyleplugins/snsranalogclockstyleplugin.dll");
-#endif
-
-/*!
- \class SnsrAnalogClockWidget
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Screensaver analog clock widget.
- */
-
-/*!
- Constructs a new SnsrAnalogClockWidget.
- \param stylePluginPath Style plugin path.
- \param parent Parent object.
- */
-SnsrAnalogClockWidget::SnsrAnalogClockWidget(QGraphicsItem* parent):
- HbWidget(parent), mStylePluginName(gAnalogClockPluginPath),
- mClockBackground(0), mClockHourHand(0), mClockMinuteHand(0)
-{
- setPluginBaseId(style()->registerPlugin(mStylePluginName));
-
- createPrimitives();
- updatePrimitives();
-}
-
-/*!
- Destructs the class.
- */
-SnsrAnalogClockWidget::~SnsrAnalogClockWidget()
-{
- delete mClockBackground;
- delete mClockHourHand;
- delete mClockMinuteHand;
-
- style()->unregisterPlugin(mStylePluginName);
-}
-
-/*!
- @copydoc HbWidget::resizeEvent()
- */
-void SnsrAnalogClockWidget::resizeEvent(QGraphicsSceneResizeEvent *event)
-{
- QGraphicsWidget::resizeEvent(event);
- updatePrimitives();
-}
-
-/*!
- Creates all widget primitives.
- */
-void SnsrAnalogClockWidget::createPrimitives()
-{
- if (pluginBaseId()==-1) {
- return;
- }
- if (!mClockBackground) {
- mClockBackground = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()), this);
- }
- if (!mClockHourHand) {
- mClockHourHand = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionAnalogClock::HourHandItemIndex), this);
- }
- if (!mClockMinuteHand) {
- mClockMinuteHand = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionAnalogClock::MinuteHandItemIndex), this);
- }
-}
-
-/*!
- @copydoc HbWidget::updatePrimitives()
- */
-void SnsrAnalogClockWidget::updatePrimitives()
-{
- if (pluginBaseId()==-1) {
- return;
- }
-
- // Calculate angles for clock hands.
- QTime time = QTime::currentTime();
- qreal s = 6 * time.second();
- qreal m = 6 * (time.minute() + s/360);
- qreal h = 30 * ((time.hour() % 12) + m/360);
-
- SnsrStyleOptionAnalogClock option;
- initStyleOption(&option);
- option.mM = m;
- option.mH = h;
-
- if (mClockBackground) {
- style()->updatePrimitive(mClockBackground, (HbStyle::Primitive)(pluginBaseId()), &option);
- }
- if (mClockHourHand) {
- style()->updatePrimitive(mClockHourHand, (HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionAnalogClock::HourHandItemIndex), &option);
- }
- if (mClockMinuteHand) {
- style()->updatePrimitive(mClockMinuteHand, (HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionAnalogClock::MinuteHandItemIndex), &option);
- }
-}
-
-/*!
- Updates primitives when time change.
- */
-void SnsrAnalogClockWidget::tick()
-{
- updatePrimitives();
-}
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrclockwidgets/src/snsroledclockwidget.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Oled Clock Widget.
-*
-*/
-
-#include "snsroledclockwidget.h"
-
-#include <QGraphicsSvgItem>
-#include <QTime>
-
-#include "snsrstyleoptionoledanalogclock.h"
-
-#ifdef Q_OS_SYMBIAN
-const char *gOledClockPluginPath("../../snsrresources/plugins/snsrstyleplugins/snsroledclockstyleplugin.dll");
-#else
-const char *gOledClockPluginPath("snsrresources/plugins/snsrstyleplugins/snsroledclockstyleplugin.dll");
-#endif
-
-/*!
- \class SnsrOledClockWidget
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Screensaver oled clock widget.
- */
-
-/*!
- Constructs a new SnsrOledClockWidget.
- \param stylePluginPath Style plugin path.
- \param parent Parent object.
- */
-SnsrOledClockWidget::SnsrOledClockWidget(QGraphicsItem* parent):
- HbWidget(parent), mStylePluginName(gOledClockPluginPath),
- mClockBackground(0), mClockHourHand(0), mClockMinuteHand(0),
- mClockDateFrame(0), mClockDateLabel(0)
-{
- setPluginBaseId(style()->registerPlugin(mStylePluginName));
-
- createPrimitives();
- updatePrimitives();
-}
-
-/*!
- Destructs the class.
- */
-SnsrOledClockWidget::~SnsrOledClockWidget()
-{
- delete mClockBackground;
- delete mClockHourHand;
- delete mClockMinuteHand;
- delete mClockDateFrame;
- delete mClockDateLabel;
-
- style()->unregisterPlugin(mStylePluginName);
-}
-
-/*!
- @copydoc HbWidget::resizeEvent()
- */
-void SnsrOledClockWidget::resizeEvent(QGraphicsSceneResizeEvent *event)
-{
- QGraphicsWidget::resizeEvent(event);
- updatePrimitives();
-}
-
-/*!
- Creates all widget primitives.
- */
-void SnsrOledClockWidget::createPrimitives()
-{
- if (pluginBaseId()==-1) {
- return;
- }
- if (!mClockBackground) {
- mClockBackground = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()), this);
- }
- if (!mClockHourHand) {
- mClockHourHand = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionOledAnalogClock::HourHandItemIndex), this);
- }
- if (!mClockMinuteHand) {
- mClockMinuteHand = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionOledAnalogClock::MinuteHandItemIndex), this);
- }
- if (!mClockDateFrame) {
- mClockDateFrame = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionOledAnalogClock::DateFrameItemIndex), this);
- }
- if (!mClockDateLabel) {
- mClockDateLabel = style()->createPrimitive((HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionOledAnalogClock::DateLabelItemIndex), this);
- }
-}
-
-/*!
- @copydoc HbWidget::updatePrimitives()
- */
-void SnsrOledClockWidget::updatePrimitives()
-{
- if (pluginBaseId()==-1) {
- return;
- }
-
- // Calculate angles for clock hands.
- QTime time = QTime::currentTime();
- qreal s = 6 * time.second();
- qreal m = 6 * (time.minute() + s/360);
- qreal h = 30 * ((time.hour() % 12) + m/360);
-
- SnsrStyleOptionOledAnalogClock option;
- initStyleOption(&option);
- option.mM = m;
- option.mH = h;
-
- QDate currentdate = QDate::currentDate();
- option.mShortDate = QDate::shortDayName(currentdate.dayOfWeek())+" "+QString::number(currentdate.day());
-
- if (mClockBackground) {
- style()->updatePrimitive(mClockBackground, (HbStyle::Primitive)(pluginBaseId()), &option);
- }
- if (mClockHourHand) {
- style()->updatePrimitive(mClockHourHand, (HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionOledAnalogClock::HourHandItemIndex), &option);
- }
- if (mClockMinuteHand) {
- style()->updatePrimitive(mClockMinuteHand, (HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionOledAnalogClock::MinuteHandItemIndex), &option);
- }
- if (mClockDateFrame) {
- style()->updatePrimitive(mClockDateFrame, (HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionOledAnalogClock::DateFrameItemIndex), &option);
- }
- if (mClockDateLabel) {
- style()->updatePrimitive(mClockDateLabel, (HbStyle::Primitive)(pluginBaseId()+SnsrStyleOptionOledAnalogClock::DateLabelItemIndex), &option);
- }
-}
-
-/*!
- Updates primitives when time change.
- */
-void SnsrOledClockWidget::tick()
-{
- updatePrimitives();
-}
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrclockwidgets/src/snsrstyleoptionanalogclock.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Style option for analog clock widget.
-*
-*/
-
-#include "snsrstyleoptionanalogclock.h"
-
-/*!
- \class SnsrStyleOptionAnalogClock
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Style option for analog clock widget.
- */
-
-/*!
- Constructs a new SnsrStyleOptionAnalogClock.
- */
-SnsrStyleOptionAnalogClock::SnsrStyleOptionAnalogClock():
- HbStyleOption(), mM(0), mH(0)
-{
- type = Type;
- version = Version;
-}
-
-/*!
- Copy constructor - constructs a new SnsrStyleOptionAnalogClock.
- */
-SnsrStyleOptionAnalogClock::SnsrStyleOptionAnalogClock(const SnsrStyleOptionAnalogClock &other) :
- HbStyleOption(other), mM(other.mM), mH(other.mH)
-{
- type = Type;
- version = Version;
-}
-
-/*!
- Destructs the class.
- */
-SnsrStyleOptionAnalogClock::~SnsrStyleOptionAnalogClock()
-{
-}
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsrclockwidgets/src/snsrstyleoptionoledanalogclock.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Style option for oled analog clock widget.
-*
-*/
-
-#include "snsrstyleoptionoledanalogclock.h"
-
-/*!
- \class SnsrStyleOptionOledAnalogClock
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Style option for analog clock widget.
- */
-
-/*!
- Constructs a new SnsrStyleOptionOledAnalogClock.
- */
-SnsrStyleOptionOledAnalogClock::SnsrStyleOptionOledAnalogClock():
- HbStyleOption(), mM(0), mH(0), mShortDate(QString())
-{
- type = Type;
- version = Version;
-}
-
-/*!
- Copy constructor - constructs a new SnsrStyleOptionOledAnalogClock.
- */
-SnsrStyleOptionOledAnalogClock::SnsrStyleOptionOledAnalogClock(const SnsrStyleOptionOledAnalogClock &other) :
- HbStyleOption(other), mM(other.mM), mH(other.mH), mShortDate(other.mShortDate)
-{
- type = Type;
- version = Version;
-}
-
-/*!
- Destructs the class.
- */
-SnsrStyleOptionOledAnalogClock::~SnsrStyleOptionOledAnalogClock()
-{
-}
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsroledclockstyleplugin/inc/snsroledclockstyleplugin.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Analog clock style plugin.
-*
-*/
-
-#ifndef SNSROLEDCLOCKSTYLEPLUGIN_H
-#define SNSROLEDCLOCKSTYLEPLUGIN_H
-
-#include <QtPlugin>
-
-#include <hbstyleinterface.h>
-#include <hbglobal.h>
-
-#include "snsrtest_global.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrOCStylePlugin)
-
-class SnsrOledClockStylePlugin: public QObject, public HbStyleInterface
-{
- Q_OBJECT
- Q_INTERFACES(HbStyleInterface)
-
-public:
- int primitiveCount() const;
- HbWidgetBase *createPrimitive(HbStyle::Primitive primitive, QGraphicsItem *parent = 0) const;
- void updatePrimitive(QGraphicsItem *item, HbStyle::Primitive primitive, const QStyleOption *option) const;
- QString layoutPath() const;
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrOCStylePlugin)
-
-};
-
-#endif // SNSROLEDCLOCKSTYLEPLUGIN_H
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsroledclockstyleplugin/resource/snsroledclockstyleplugin.manifest Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<snsroledclockstyleplugin>
- <screensaver library="snsroledclockstyleplugin.dll"
- uri="screensaver.nokia.com/screensaver/oledclock"/>
-</snsroledclockstyleplugin>
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsroledclockstyleplugin/resource/snsroledclockwidget.css Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-HbWidget {
- margin-left: 0un;
- margin-top: 0un;
-}
-
-SnsrOledClockWidget {
- layout: layout_1;
-}
-
-SnsrOledClockWidget::oled_clock_background {
- pref-width: 40.0un;
- pref-height: 40.0un;
-}
-
-SnsrOledClockWidget::oled_clock_hour_hand {
- pref-height: 28.0un;
-}
-
-SnsrOledClockWidget::oled_clock_minute_hand {
- pref-height: 34.0un;
-}
-
-SnsrOledClockWidget::oled_clock_date_frame {
- pref-height: 10.0un;
-}
-
-SnsrOledClockWidget::oled_clock_date_label {
- pref-height: 10.0un;
-}
\ No newline at end of file
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsroledclockstyleplugin/resource/snsroledclockwidget.widgetml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<hbwidget version="0.1">
- <layout name="layout_1" type="mesh">
- <meshitem src="oled_clock_background" srcEdge="CENTERV" dst="" dstEdge="CENTERV" spacing="0.0un" />
- <meshitem src="oled_clock_background" srcEdge="CENTERH" dst="" dstEdge="CENTERH" spacing="0.0un" />
- <meshitem src="oled_clock_hour_hand" srcEdge="CENTERV" dst="oled_clock_background" dstEdge="CENTERV" spacing="0.0un" />
- <meshitem src="oled_clock_hour_hand" srcEdge="CENTERH" dst="oled_clock_background" dstEdge="CENTERH" spacing="0.0un" />
- <meshitem src="oled_clock_minute_hand" srcEdge="CENTERV" dst="oled_clock_background" dstEdge="CENTERV" spacing="0.0un" />
- <meshitem src="oled_clock_minute_hand" srcEdge="CENTERH" dst="oled_clock_background" dstEdge="CENTERH" spacing="0.0un" />
- <meshitem src="oled_clock_date_frame" srcEdge="CENTERV" dst="oled_clock_background" dstEdge="CENTERV" spacing="0.0un" />
- <meshitem src="oled_clock_date_frame" srcEdge="CENTERH" dst="oled_clock_background" dstEdge="CENTERH" spacing="-10.0un" />
- <meshitem src="oled_clock_date_label" srcEdge="CENTERV" dst="oled_clock_date_frame" dstEdge="CENTERV" spacing="-3.5un" />
- <meshitem src="oled_clock_date_label" srcEdge="CENTERH" dst="oled_clock_date_frame" dstEdge="CENTERH" spacing="0.0un" />
- </layout>
-</hbwidget>
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsroledclockstyleplugin/snsroledclockstyleplugin.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsroledclockstyleplugin.pri
-#
-
-HEADERS += ./inc/*.h \
- ./../snsrclockwidgets/inc/snsrstyleoptionoledanalogclock.h
-
-SOURCES += ./src/*.cpp
-
-DEPENDPATH += ./inc \
- ./src \
- ./resource
-
-INCLUDEPATH += ./inc \
- ./../snsrclockwidgets/inc
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsroledclockstyleplugin/snsroledclockstyleplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsroledclockstyleplugin.pro
-#
-
-TEMPLATE = lib
-
-CONFIG += plugin hb
-PLUGIN_SUBDIR = /snsrresources/plugins/snsrstyleplugins
-
-include (../../../common.pri)
-
-LIBS += -lsnsrutils
-
-INCLUDEPATH += ../../../snsrutils/inc
-
-symbian: {
- TARGET.UID3 = 0x20027055
-}
-
-include(snsroledclockstyleplugin.pri)
-
-RESOURCES += snsroledclockstyleplugin.qrc
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsroledclockstyleplugin/snsroledclockstyleplugin.qrc Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<RCC>
- <qresource>
- <file alias="snsroledclockwidget.css">resource/snsroledclockwidget.css</file>
- <file alias="snsroledclockwidget.widgetml">resource/snsroledclockwidget.widgetml</file>
- </qresource>
-</RCC>
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/snsroledclockstyleplugin/src/snsroledclockstyleplugin.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Analog clock style plugin.
-*
-*/
-
-#include "snsroledclockstyleplugin.h"
-
-#include <QGraphicsDropShadowEffect>
-
-#include <hbiconitem.h>
-
-#include "snsrstyleoptionoledanalogclock.h"
-#include "snsrlabel.h"
-
-/*!
- \class SnsrOledClockStylePlugin
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Screensaver oled clock style plugin.
- */
-
-/*!
- @copydoc HbStyleInterface::primitiveCount()
- */
-int SnsrOledClockStylePlugin::primitiveCount() const
-{
- return SnsrStyleOptionOledAnalogClock::LastItemIndex; // first index = 0, index of LastItemIndex = number of primitives;
-}
-
-/*!
- @copydoc HbStyleInterface::createPrimitive()
- */
-HbWidgetBase* SnsrOledClockStylePlugin::createPrimitive(HbStyle::Primitive primitive,
- QGraphicsItem *parent) const
-{
- if (primitive == (int)SnsrStyleOptionOledAnalogClock::BackgroundItemIndex) {
- HbIconItem *item = new HbIconItem("oled-clock-background", parent);
- HbStyle::setItemName(item, "oled_clock_background");
- item->setZValue(1);
- return item;
- }
- else if (primitive == (int)SnsrStyleOptionOledAnalogClock::DateFrameItemIndex) {
- HbIconItem *item = new HbIconItem("oled-clock-date-frame", parent);
- HbStyle::setItemName(item, "oled_clock_date_frame");
- item->setZValue(2);
- return item;
- }
- else if (primitive == (int)SnsrStyleOptionOledAnalogClock::DateLabelItemIndex) {
- SnsrLabel *item = new SnsrLabel(parent);
- HbStyle::setItemName(item, "oled_clock_date_label");
- item->setZValue(3);
- return item;
- }
- else if (primitive == (int)SnsrStyleOptionOledAnalogClock::HourHandItemIndex) {
- HbIconItem *item = new HbIconItem("oled-clock-hour-hand", parent);
- HbStyle::setItemName(item, "oled_clock_hour_hand");
- item->setZValue(4);
- return item;
- }
- else if (primitive == (int)SnsrStyleOptionOledAnalogClock::MinuteHandItemIndex) {
- HbIconItem *item = new HbIconItem("oled-clock-minute-hand", parent);
- HbStyle::setItemName(item, "oled_clock_minute_hand");
- item->setZValue(5);
- return item;
- }
-
- return 0;
-}
-
-/*!
- @copydoc HbStyleInterface::updatePrimitive()
- */
-void SnsrOledClockStylePlugin::updatePrimitive(QGraphicsItem *item,
- HbStyle::Primitive primitive,
- const QStyleOption *option ) const
-{
- const SnsrStyleOptionOledAnalogClock *opt =
- qstyleoption_cast<const SnsrStyleOptionOledAnalogClock *>(option);
- if (!opt || !item) {
- return;
- }
-
- if (primitive == (int)SnsrStyleOptionOledAnalogClock::HourHandItemIndex) {
- HbIconItem *iconItem = static_cast<HbIconItem *>(item);
- int x = iconItem->iconItemSize().width()/2;
- int y = iconItem->iconItemSize().height()/2;
-
- iconItem->setTransform(QTransform().translate(x, y).rotate(opt->mH).translate(-x, -y));
- }
- else if (primitive == (int)SnsrStyleOptionOledAnalogClock::MinuteHandItemIndex) {
- HbIconItem *iconItem = static_cast<HbIconItem *>(item);
- int x = iconItem->iconItemSize().width()/2;
- int y = iconItem->iconItemSize().height()/2;
-
- iconItem->setTransform(QTransform().translate(x, y).rotate(opt->mM).translate(-x, -y));
- }
- else if (primitive == (int)SnsrStyleOptionOledAnalogClock::DateLabelItemIndex) {
- HbLabel *dateLabel = static_cast<HbLabel *>(item);
- dateLabel->setPlainText(opt->mShortDate);
- }
-}
-
-/*!
- @copydoc HbStyleInterface::layoutPath()
- */
-QString SnsrOledClockStylePlugin::layoutPath() const
-{
- return QString(":/");
-}
-
-#ifndef COVERAGE_MEASUREMENT
-Q_EXPORT_PLUGIN2(snsroledclockstyleplugin, SnsrOledClockStylePlugin)
-#endif //COVERAGE_MEASUREMENT
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/src/snsranalogclockcontainer.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Container for analog clock.
-*
-*/
-
-#include "snsranalogclockcontainer.h"
-
-#include <QDebug>
-#include <QTime>
-#include <QGraphicsLinearLayout>
-
-#include <hblabel.h>
-#include <hbextendedlocale.h>
-
-#include "snsranalogclockwidget.h"
-
-/*!
- \class SnsrAnalogClockContainer
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Container used for preparing layout for analog clock.
- */
-
-const char *gAnalogLayoutDocml = ":/xml/snsrbigclockscreensaveranalog.docml";
-
-const char *gPortraitSectionName = "portrait";
-const char *gLandscapeSectionName = "landscape";
-
-const char *gMainViewName = "view";
-
-const char *gDateLabelName = "dateLabel";
-const char *gAnalogClockWidgetName = "analogClockWidget";
-
-const char *gDateFormatVerticalStr = "%E%,% %*D%*N%/0%4%/1%5";
-const char *gDateFormatHorizontalStr = "%E%,% %*D%N%/0%4%/1%5";
-
-/*!
- Constructs a new SnsrAnalogClockContainer.
- */
-SnsrAnalogClockContainer::SnsrAnalogClockContainer() :
- SnsrBigClockContainer(),
- mDateLabel(0),
- mAnalogClockWidget(0)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrAnalogClockContainer::SnsrAnalogClockContainer")
-
- bool ok(true);
-
- // load analog clock
- qDebug() << gAnalogLayoutDocml;
- mDocumentObjects = mDocumentLoader.load(gAnalogLayoutDocml, &ok);
- Q_ASSERT_X(ok, gAnalogLayoutDocml, "Invalid DocML file.");
- if (ok) {
- mMainContainer = mDocumentLoader.findWidget(gMainViewName);
- mDateLabel = qobject_cast<HbLabel *>(
- mDocumentLoader.findWidget(gDateLabelName));
- mAnalogClockWidget = qobject_cast<SnsrAnalogClockWidget *>(
- mDocumentLoader.findWidget(gAnalogClockWidgetName));
- Q_ASSERT_X(
- mMainContainer && mDateLabel && mAnalogClockWidget,
- gAnalogLayoutDocml, "Objects not found in DocML file."
- );
-
- mBackgroundContainerLayout->addItem(mMainContainer);
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrAnalogClockContainer::SnsrAnalogClockContainer")
-}
-
-/*!
- Destructs the class.
- */
-SnsrAnalogClockContainer::~SnsrAnalogClockContainer()
-{
- //mDateLabel, mAnalogClockWidget - deleted by the parent
-}
-
-/*!
- Updates displayed time and date.
- */
-void SnsrAnalogClockContainer::update()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrAnalogClockContainer::update")
-
- // time
- mAnalogClockWidget->tick();
-
- // date
- if (mCurrentOrientation == Qt::Vertical) {
- mDateLabel->setPlainText(
- HbExtendedLocale().format(QDate::currentDate(), gDateFormatVerticalStr)
- );
- } else {
- mDateLabel->setPlainText(
- HbExtendedLocale().format(QDate::currentDate(), gDateFormatHorizontalStr)
- );
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrAnalogClockContainer::update")
-}
-
-/*!
- Changes screensaver layout basing on orientation changes.
- \param orientation Current orientation.
- */
-void SnsrAnalogClockContainer::changeLayout(Qt::Orientation orientation)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrAnalogClockContainer::changeLayout")
-
- if (mCurrentOrientation != orientation) {
- mCurrentOrientation = orientation;
- bool ok;
- // hide controls to avoid screen flickering
- mMainContainer->hide();
-
- QString sectionToLoad("");
- if (mCurrentOrientation == Qt::Vertical) {
- sectionToLoad = gPortraitSectionName;
- } else {
- sectionToLoad = gLandscapeSectionName;
- }
- qDebug() << "loading: " << gAnalogLayoutDocml << ", section: " << sectionToLoad;
- mDocumentLoader.load(gAnalogLayoutDocml, sectionToLoad, &ok);
- // view is rebuilt and ready to show
- mMainContainer->show();
- Q_ASSERT_X(ok, gAnalogLayoutDocml, "Invalid section in DocML file.");
- }
- // update anyway - this is needed in situations when screensaver goes to
- // foreground but layout change did not occur
- update();
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrAnalogClockContainer::changeLayout")
-}
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/src/snsrbigclockcontainer.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Base class container.
-*
-*/
-
-#include "snsrbigclockcontainer.h"
-
-#ifdef Q_OS_SYMBIAN
-#include <e32std.h>
-#endif // Q_OS_SYMBIAN
-
-#include <QPainter>
-#include <QDebug>
-#include <QGraphicsLinearLayout>
-
-#include <hbevent.h>
-#include <hbcolorscheme.h>
-
-#include "snsrbigclockcontainer.h"
-
-/*!
- \class SnsrBigClockContainer
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Base class. Container used for drawing background and for preparing layout.
- */
-
-const QString popupBackgroundColorRole("popupbackground");
-const QString snsrBackgroundColorRole("snsrbackground");
-
-/*!
- Constructs a new SnsrBigClockContainer.
- */
-SnsrBigClockContainer::SnsrBigClockContainer() :
- mMainContainer(0),
- mBackgroundContainerLayout(0),
- mCurrentOrientation(-1)
-{
- setBackgroundColor();
- mBackgroundContainerLayout = new QGraphicsLinearLayout(Qt::Vertical);
- setLayout(mBackgroundContainerLayout);
-}
-
-/*!
- Destructs the class.
- */
-SnsrBigClockContainer::~SnsrBigClockContainer()
-{
- mDocumentLoader.reset();
- qDeleteAll(mDocumentObjects);
- mDocumentObjects.clear();
-
- //mMainContainer, mBackgroundContainerLayout - deleted by the parent
-}
-
-/*!
- \fn virtual void update() = 0;
-
- Slot for members update in container e.g. when time or date changed.
- */
-
-/*!
- \fn virtual void changeLayout(Qt::Orientation orientation) = 0;
-
- Slot for members update in container when orientation changed.
- */
-
-/*!
- \reimp
- */
-void SnsrBigClockContainer::changeEvent(QEvent *event)
-{
- if (event->type() == HbEvent::ThemeChanged) {
- setBackgroundColor();
- }
- return QGraphicsWidget::changeEvent(event);
-}
-
-/*!
- Set background color.
- */
-void SnsrBigClockContainer::setBackgroundColor()
-{
- QColor backgroundColor = HbColorScheme::color(snsrBackgroundColorRole);
- if (backgroundColor.isValid()) {
- mBackgroundColor = backgroundColor;
- }
- else {
- backgroundColor = HbColorScheme::color(popupBackgroundColorRole);
- if (backgroundColor.isValid()) {
- mBackgroundColor = backgroundColor;
- }
- else {
- mBackgroundColor = Qt::black;
- }
- }
-}
-
-/*!
- Paints the contents of an item in local coordinates.
- */
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-void SnsrBigClockContainer::paint(
- QPainter *painter,
- const QStyleOptionGraphicsItem *option,
- QWidget *widget
- )
-{
- Q_UNUSED(option)
- Q_UNUSED(widget)
-
- painter->fillRect(rect(), mBackgroundColor);
-}
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/src/snsrbigclockscreensaver.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Big clock Screensaver.
-*
-*/
-
-#include "snsrbigclockscreensaver.h"
-
-#ifdef Q_OS_SYMBIAN
-#include <e32std.h>
-#endif // Q_OS_SYMBIAN
-
-#include <QDebug>
-#include <QTime>
-#include <QTimer>
-
-#include <hbinstance.h>
-#include <hbmainwindow.h>
-
-#include "snsranalogclockcontainer.h"
-#include "snsrdigitalclockcontainer.h"
-#include "snsroledanalogclockcontainer.h"
-#include "snsroleddigitalclockcontainer.h"
-
-/*!
- \class SnsrBigClockScreensaver
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Screensaver with big digital clock.
- */
-
-/*!
- Constructs a new SnsrBigClockScreensaver.
- */
-SnsrBigClockScreensaver::SnsrBigClockScreensaver() :
- mMainWindow(0),
- mCurrentContainer(0)
-{
- mMainWindow = HbInstance::instance()->allMainWindows().at(0);
- // for nice looking clock hand transformations
- mMainWindow->setRenderHint(QPainter::SmoothPixmapTransform);
-}
-
-/*!
- Destructs the class.
- */
-SnsrBigClockScreensaver::~SnsrBigClockScreensaver()
-{
- // mCurrentContainer - deleted by the parent
-}
-
-/*!
- @copydoc Screensaver::onInitialize()
-*/
-bool SnsrBigClockScreensaver::onInitialize()
-{
- qDebug() << "SnsrBigClockScreensaver::onInitialize()";
- return true;
-}
-
-/*!
- @copydoc Screensaver::onForeground()
- */
-bool SnsrBigClockScreensaver::onForeground()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrBigClockScreensaver::onForeground")
- qDebug() << "SnsrBigClockScreensaver::onForeground()";
-
- bool ret(false);
-
- if (mCurrentContainer) {
- disconnect(
- mMainWindow, SIGNAL(orientationChanged(Qt::Orientation)),
- mCurrentContainer, SLOT(changeLayout(Qt::Orientation))
- );
- disconnect(
- &mTimer, SIGNAL(timeout()),
- mCurrentContainer, SLOT(update())
- );
- emit viewChanged(0);
- delete mCurrentContainer;
- mCurrentContainer = 0;
- }
-
- if (clockFormat() == ClockFormatAnalog) {
- mCurrentContainer = new SnsrAnalogClockContainer();
- }
- else {
- mCurrentContainer = new SnsrDigitalClockContainer();
- }
- connect(
- mMainWindow, SIGNAL(orientationChanged(Qt::Orientation)),
- mCurrentContainer, SLOT(changeLayout(Qt::Orientation))
- );
- connect(&mTimer, SIGNAL(timeout()), mCurrentContainer, SLOT(update()));
-
- mCurrentContainer->changeLayout(mMainWindow->orientation());
- mTimer.start(1000);
- emit viewChanged(mCurrentContainer);
-
- ret = true;
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrBigClockScreensaver::onForeground")
- return ret;
-}
-
-/*!
- @copydoc Screensaver::onPartialForeground()
- */
-bool SnsrBigClockScreensaver::onPartialForeground()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrBigClockScreensaver::onPartialForeground")
- qDebug() << "SnsrBigClockScreensaver::onPartialForeground()";
-
- bool ret(false);
-
- if (mCurrentContainer) {
- disconnect(
- mMainWindow, SIGNAL(orientationChanged(Qt::Orientation)),
- mCurrentContainer, SLOT(changeLayout(Qt::Orientation))
- );
- disconnect(
- &mTimer, SIGNAL(timeout()),
- mCurrentContainer, SLOT(update())
- );
- emit viewChanged(0);
- delete mCurrentContainer;
- mCurrentContainer = 0;
- }
-
- if (clockFormat() == ClockFormatAnalog) {
- mCurrentContainer = new SnsrOledAnalogClockContainer();
- }
- else {
- mCurrentContainer = new SnsrOledDigitalClockContainer();
- }
- connect(
- mMainWindow, SIGNAL(orientationChanged(Qt::Orientation)),
- mCurrentContainer, SLOT(changeLayout(Qt::Orientation))
- );
- connect(&mTimer, SIGNAL(timeout()), mCurrentContainer, SLOT(update()));
-
- mCurrentContainer->changeLayout(mMainWindow->orientation());
- mTimer.start(1000);
- emit viewChanged(mCurrentContainer);
-
- ret = true;
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrBigClockScreensaver::onPartialForeground")
- return ret;
-}
-
-/*!
- @copydoc Screensaver::onBackground()
- */
-bool SnsrBigClockScreensaver::onBackground()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrBigClockScreensaver::onBackground")
- qDebug() << "SnsrBigClockScreensaver::onBackground()";
-
- disconnect(
- mMainWindow, SIGNAL(orientationChanged(Qt::Orientation)),
- mCurrentContainer, SLOT(changeLayout(Qt::Orientation))
- );
- disconnect(
- &mTimer, SIGNAL(timeout()),
- mCurrentContainer, SLOT(update())
- );
- mTimer.stop();
- emit viewChanged(0);
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrBigClockScreensaver::onBackground")
- return true;
-}
-
-/*!
- @copydoc Screensaver::onPowerSave()
- */
-bool SnsrBigClockScreensaver::onPowerSave()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrBigClockScreensaver::onPowerSave")
- qDebug() << "SnsrBigClockScreensaver::onPowerSave()";
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrBigClockScreensaver::onPowerSave")
- return false;
-}
-
-/*!
- @copydoc Screensaver::onClose()
- */
-bool SnsrBigClockScreensaver::onClose()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrBigClockScreensaver::onClose")
- qDebug() << "SnsrBigClockScreensaver::onClose()";
-
- bool ret(false);
- if (onBackground()) {
- delete mCurrentContainer;
- mCurrentContainer = 0;
- ret = true;
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrBigClockScreensaver::onClose")
- return ret;
-}
-
-/*!
- Determines the curent clock format settings.
- \retval ClockFormat.
- */
-SnsrBigClockScreensaver::ClockFormat SnsrBigClockScreensaver::clockFormat()
-{
-#ifdef Q_OS_SYMBIAN
- if (TLocale().ClockFormat() == EClockAnalog) {
- return ClockFormatAnalog;
- } else {
- return ClockFormatDigital;
- }
-#else
- // windows build - change the format every 30 seconds for testing purposes
- if (QTime::currentTime().second() < 30) {
- return ClockFormatAnalog;
- } else {
- return ClockFormatDigital;
- }
-#endif // Q_OS_SYMBIAN
-}
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/src/snsrbigclockscreensaverprovider.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Big clock Screensaver provider.
-*
-*/
-
-#include "snsrbigclockscreensaverprovider.h"
-
-#include "snsrbigclockscreensaver.h"
-
-/*!
- \class SnsrBigClockScreensaverProvider
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Screensaver big clock screensaver provider collects ready-made screensaver clock.
- */
-
-/*!
- Constructs a new SnsrBigClockScreensaverProvider.
- */
-SnsrBigClockScreensaverProvider::SnsrBigClockScreensaverProvider()
-{
- mClockScreensaverToken.mLibrary =
- QString("snsrbigclockscreensaverprovider.dll");
- mClockScreensaverToken.mUri =
- QString("screensaver.nokia.com/screensaver/bigclock");
-}
-
-/*!
- Destructs the class.
- */
-SnsrBigClockScreensaverProvider::~SnsrBigClockScreensaverProvider()
-{
-}
-
-/*!
- Returns list of loadable screensavers' tokens.
- \return ScreensaverToken info about loadable screensavers.
- */
-QList<ScreensaverToken> SnsrBigClockScreensaverProvider::screensavers()
-{
- return QList<ScreensaverToken>() << mClockScreensaverToken;
-}
-
-/*!
- Creates a screensaver based to given token.
- \param token Reference to ScreensaverToken.
- */
-Screensaver *SnsrBigClockScreensaverProvider::
- createScreensaver(const ScreensaverToken &token)
-{
- if (token.mLibrary == mClockScreensaverToken.mLibrary &&
- token.mUri == mClockScreensaverToken.mUri) {
- return new SnsrBigClockScreensaver();
- }
- return 0;
-}
-
-#ifndef COVERAGE_MEASUREMENT
-Q_EXPORT_PLUGIN2(snsrbigclockscreensaverprovider, SnsrBigClockScreensaverProvider)
-#endif //COVERAGE_MEASUREMENT
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/src/snsrdigitalclockcontainer.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Container for digital clock.
-*
-*/
-
-#include "snsrdigitalclockcontainer.h"
-
-#include <QDebug>
-#include <QTime>
-#include <QGraphicsLinearLayout>
-
-#include <hblabel.h>
-#include <hbextendedlocale.h>
-
-/*!
- \class SnsrDigitalClockContainer
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Container used for preparing layout for digital clock.
- */
-
-const char *gDigitalLayoutDocml = ":/xml/snsrbigclockscreensaverdigital.docml";
-extern const char *gPortraitSectionName;
-extern const char *gLandscapeSectionName;
-
-extern const char *gMainViewName;
-
-const char *gTimeLabelName = "timeLabel";
-const char *gAmPmLabelName = "amPmLabel";
-extern const char *gDateLabelName;
-
-extern const char *gDateFormatVerticalStr;
-extern const char *gDateFormatHorizontalStr;
-
-const char *gTimeFormatStr = "%:0%J%:1%T%:3";
-const char *gAmPmFormatStr = "%B";
-
-/*!
- Constructs a new SnsrDigitalClockContainer.
- */
-SnsrDigitalClockContainer::SnsrDigitalClockContainer() :
- SnsrBigClockContainer(),
- mTimeLabel(0),
- mAmPmLabel(0),
- mDateLabel(0)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrDigitalClockContainer::SnsrDigitalClockContainer")
-
- bool ok(true);
-
- // load digital clock
- qDebug() << gDigitalLayoutDocml;
- mDocumentObjects = mDocumentLoader.load(gDigitalLayoutDocml, &ok);
- Q_ASSERT_X(ok, gDigitalLayoutDocml, "Invalid DocML file.");
-
- if (ok) {
- mMainContainer = mDocumentLoader.findWidget(gMainViewName);
- mDateLabel = qobject_cast<HbLabel *>(
- mDocumentLoader.findWidget(gDateLabelName));
- mTimeLabel = qobject_cast<HbLabel *>(
- mDocumentLoader.findWidget(gTimeLabelName));
- mAmPmLabel = qobject_cast<HbLabel *>(
- mDocumentLoader.findWidget(gAmPmLabelName));
- Q_ASSERT_X(
- mMainContainer && mDateLabel && mTimeLabel && mAmPmLabel,
- gDigitalLayoutDocml, "Objects not found in DocML file."
- );
-
- mBackgroundContainerLayout->addItem(mMainContainer);
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrDigitalClockContainer::SnsrDigitalClockContainer")
-}
-
-/*!
- Destructs the class.
- */
-SnsrDigitalClockContainer::~SnsrDigitalClockContainer()
-{
- //mTimeLabel, mAmPmLabel, mDateLabel - deleted by the parent
-}
-
-/*!
- Updates displayed time and date.
- */
-void SnsrDigitalClockContainer::update()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrDigitalClockContainer::update")
-
- // time
- mTimeLabel->setPlainText(
- HbExtendedLocale().format(QTime::currentTime(), gTimeFormatStr)
- );
- mAmPmLabel->setPlainText(
- HbExtendedLocale().format(QTime::currentTime(), gAmPmFormatStr)
- );
-
- // date
- if (mCurrentOrientation == Qt::Vertical) {
- mDateLabel->setPlainText(
- HbExtendedLocale().format(QDate::currentDate(), gDateFormatVerticalStr)
- );
- } else {
- mDateLabel->setPlainText(
- HbExtendedLocale().format(QDate::currentDate(), gDateFormatHorizontalStr)
- );
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrDigitalClockContainer::update")
-}
-
-/*!
- Changes screensaver layout basing on orientation changes.
- \param orientation Current orientation.
- */
-void SnsrDigitalClockContainer::changeLayout(Qt::Orientation orientation)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrDigitalClockContainer::changeLayout")
-
- if (mCurrentOrientation != orientation) {
- mCurrentOrientation = orientation;
- bool ok;
- // hide controls to avoid screen flickering
- mMainContainer->hide();
-
- QString sectionToLoad("");
- if (mCurrentOrientation == Qt::Vertical) {
- sectionToLoad = gPortraitSectionName;
- } else {
- sectionToLoad = gLandscapeSectionName;
- }
- qDebug() << "loading: " << gDigitalLayoutDocml << ", section: " << sectionToLoad;
- mDocumentLoader.load(gDigitalLayoutDocml, sectionToLoad, &ok);
- // view is rebuilt and ready to show
- mMainContainer->show();
- Q_ASSERT_X(ok, gDigitalLayoutDocml, "Invalid section in DocML file.");
- }
- // update anyway - this is needed in situations when screensaver goes to
- // foreground but layout change did not occur
- update();
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrDigitalClockContainer::changeLayout")
-}
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/src/snsrdocumentloader.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Screensaver custom document loader.
-*
-*/
-
-#include "snsrdocumentloader.h"
-
-#include "snsranalogclockwidget.h"
-#include "snsroledclockwidget.h"
-#include "snsrlabel.h"
-
-/*!
- \class SnsrDocumentLoader
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Custom screensaver docml layout loader.
-
- Used mainly to create the analog clock widget from docml.
- */
-
-/*!
- Creates the analog clock.
- \param type Static type name.
- \param name Object name.
- \retval Created object.
- */
-QObject *SnsrDocumentLoader::createObject(const QString &type, const QString &name)
-{
- if (type == SnsrAnalogClockWidget::staticMetaObject.className()) {
- QObject *object = new SnsrAnalogClockWidget();
- object->setObjectName(name);
- return object;
- }
-
- if (type == SnsrOledClockWidget::staticMetaObject.className()) {
- QObject *object = new SnsrOledClockWidget();
- object->setObjectName(name);
- return object;
- }
-
- if (type == SnsrLabel::staticMetaObject.className()) {
- QObject *object = new SnsrLabel();
- object->setObjectName(name);
- return object;
- }
-
- return HbDocumentLoader::createObject(type, name);
-}
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/src/snsroledanalogclockcontainer.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Container for oled analog clock.
-*
-*/
-
-#include "snsroledanalogclockcontainer.h"
-
-#include <QDebug>
-#include <QGraphicsLinearLayout>
-
-#include <hblabel.h>
-
-#include "snsroledclockwidget.h"
-
-/*!
- \class SnsrOledAnalogClockContainer
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Container used for preparing layout for oled analog clock.
- */
-
-const char *gOledAnalogLayoutDocml = ":/xml/snsrbigclockscreensaveroledanalog.docml";
-extern const char *gPortraitSectionName;
-extern const char *gLandscapeSectionName;
-
-extern const char *gMainViewName;
-
-const char *gOledAnalogClockWidgetName = "oledAnalogClockWidget";
-
-/*!
- Constructs a new SnsrOledAnalogClockContainer.
- */
-SnsrOledAnalogClockContainer::SnsrOledAnalogClockContainer() :
- SnsrBigClockContainer(),
- mOledClockWidget(0)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrOledAnalogClockContainer::SnsrOledAnalogClockContainer")
-
- bool ok(true);
-
- // load oled analog clock
- qDebug() << gOledAnalogLayoutDocml;
- mDocumentObjects = mDocumentLoader.load(gOledAnalogLayoutDocml, &ok);
- Q_ASSERT_X(ok, gOledAnalogLayoutDocml, "Invalid DocML file.");
- if (ok) {
- mMainContainer = mDocumentLoader.findWidget(gMainViewName);
- mOledClockWidget = qobject_cast<SnsrOledClockWidget *>(
- mDocumentLoader.findWidget(gOledAnalogClockWidgetName));
- Q_ASSERT_X(
- mMainContainer && mOledClockWidget, gOledAnalogLayoutDocml,
- "Objects not found in DocML file."
- );
-
- mBackgroundContainerLayout->addItem(mMainContainer);
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrOledAnalogClockContainer::SnsrOledAnalogClockContainer")
-}
-
-/*!
- Destructs the class.
- */
-SnsrOledAnalogClockContainer::~SnsrOledAnalogClockContainer()
-{
- //mOledClockWidget - deleted by the parent
-}
-
-/*!
- Updates displayed time.
- */
-void SnsrOledAnalogClockContainer::update()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrOledAnalogClockContainer::update")
-
- // time
- mOledClockWidget->tick();
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrOledAnalogClockContainer::update")
-}
-
-/*!
- Changes screensaver layout basing on orientation changes.
- \param orientation Current orientation.
- */
-void SnsrOledAnalogClockContainer::changeLayout(Qt::Orientation orientation)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrOledAnalogClockContainer::changeLayout")
-
- if (mCurrentOrientation != orientation) {
- mCurrentOrientation = orientation;
- bool ok;
- // hide controls to avoid screen flickering
- mMainContainer->hide();
-
- QString sectionToLoad("");
- if (mCurrentOrientation == Qt::Vertical) {
- sectionToLoad = gPortraitSectionName;
- } else {
- sectionToLoad = gLandscapeSectionName;
- }
- qDebug() << "loading: " << gOledAnalogLayoutDocml << ", section: " << sectionToLoad;
- mDocumentLoader.load(gOledAnalogLayoutDocml, sectionToLoad, &ok);
- // view is rebuilt and ready to show
- mMainContainer->show();
- Q_ASSERT_X(ok, gOledAnalogLayoutDocml, "Invalid section in DocML file.");
- }
- // update anyway - this is needed in situations when screensaver goes to
- // foreground but layout change did not occur
- update();
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrOledAnalogClockContainer::changeLayout")
-}
--- a/screensaverapp/screensaverproviders/snsrbigclockscreensaverprovider/src/snsroleddigitalclockcontainer.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Container for oled digital clock.
-*
-*/
-
-#include "snsroleddigitalclockcontainer.h"
-
-#include <QDebug>
-#include <QTime>
-#include <QGraphicsLinearLayout>
-
-#include <hblabel.h>
-#include <hbextendedlocale.h>
-
-/*!
- \class SnsrOledDigitalClockContainer
- \ingroup group_snsrbigclockscreensaverprovider
- \brief Container used for preparing layout for oled digital clock.
- */
-
-const char *gOledDigitalLayoutDocml = ":/xml/snsrbigclockscreensaveroleddigital.docml";
-extern const char *gPortraitSectionName;
-extern const char *gLandscapeSectionName;
-
-extern const char *gMainViewName;
-
-extern const char *gTimeLabelName;
-extern const char *gAmPmLabelName;
-extern const char *gDateLabelName;
-
-extern const char *gDateFormatVerticalStr;
-extern const char *gDateFormatHorizontalStr;
-
-extern const char *gTimeFormatStr;
-extern const char *gAmPmFormatStr;
-
-/*!
- Constructs a new SnsrOledDigitalClockContainer.
- */
-SnsrOledDigitalClockContainer::SnsrOledDigitalClockContainer() :
- SnsrBigClockContainer(),
- mTimeLabel(0),
- mAmPmLabel(0),
- mDateLabel(0)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrOledDigitalClockContainer::SnsrOledDigitalClockContainer")
-
- bool ok(true);
- qDebug() << gOledDigitalLayoutDocml;
-
- // load digital clock
- mDocumentObjects = mDocumentLoader.load(gOledDigitalLayoutDocml, &ok);
- Q_ASSERT_X(ok, gOledDigitalLayoutDocml, "Invalid DocML file.");
-
- if (ok) {
- mMainContainer = mDocumentLoader.findWidget(gMainViewName);
- mDateLabel = qobject_cast<HbLabel *>(
- mDocumentLoader.findWidget(gDateLabelName));
- mTimeLabel = qobject_cast<HbLabel *>(
- mDocumentLoader.findWidget(gTimeLabelName));
- mAmPmLabel = qobject_cast<HbLabel *>(
- mDocumentLoader.findWidget(gAmPmLabelName));
- Q_ASSERT_X(
- mMainContainer && mDateLabel && mTimeLabel && mAmPmLabel,
- gOledDigitalLayoutDocml, "Objects not found in DocML file."
- );
-
- mBackgroundContainerLayout->addItem(mMainContainer);
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrOledDigitalClockContainer::SnsrOledDigitalClockContainer")
-}
-
-/*!
- Destructs the class.
- */
-SnsrOledDigitalClockContainer::~SnsrOledDigitalClockContainer()
-{
- //mTimeLabel, mAmPmLabel, mDateLabel - deleted by the parent
-}
-
-/*!
- Updates displayed time and date.
- */
-void SnsrOledDigitalClockContainer::update()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrOledDigitalClockContainer::update")
-
- // time
- mTimeLabel->setPlainText(
- HbExtendedLocale().format(QTime::currentTime(), gTimeFormatStr)
- );
- mAmPmLabel->setPlainText(
- HbExtendedLocale().format(QTime::currentTime(), gAmPmFormatStr)
- );
-
- // date
- if (mCurrentOrientation == Qt::Vertical) {
- mDateLabel->setPlainText(
- HbExtendedLocale().format(QDate::currentDate(), gDateFormatVerticalStr)
- );
- } else {
- mDateLabel->setPlainText(
- HbExtendedLocale().format(QDate::currentDate(), gDateFormatHorizontalStr)
- );
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrOledDigitalClockContainer::update")
-}
-
-/*!
- Changes screensaver layout basing on orientation changes.
- \param orientation Current orientation.
- */
-void SnsrOledDigitalClockContainer::changeLayout(Qt::Orientation orientation)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrOledDigitalClockContainer::changeLayout")
-
- if (mCurrentOrientation != orientation) {
- mCurrentOrientation = orientation;
- bool ok;
- // hide controls to avoid screen flickering
- mMainContainer->hide();
-
- QString sectionToLoad("");
- if (mCurrentOrientation == Qt::Vertical) {
- sectionToLoad = gPortraitSectionName;
- } else {
- sectionToLoad = gLandscapeSectionName;
- }
- qDebug() << "loading: " << gOledDigitalLayoutDocml << ", section: " << sectionToLoad;
- mDocumentLoader.load(gOledDigitalLayoutDocml, sectionToLoad, &ok);
- // view is rebuilt and ready to show
- mMainContainer->show();
- Q_ASSERT_X(ok, gOledDigitalLayoutDocml, "Invalid section in DocML file.");
- }
- // update anyway - this is needed in situations when screensaver goes to
- // foreground but layout change did not occur
- update();
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrOledDigitalClockContainer::changeLayout")
-}
--- a/screensaverapp/serviceproviders/bwins/snsruseractivityserviceu.def Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-EXPORTS
- ??0SnsrUserActivityService@@QAE@XZ @ 1 NONAME ; SnsrUserActivityService::SnsrUserActivityService(void)
- ??1SnsrUserActivityService@@UAE@XZ @ 2 NONAME ; SnsrUserActivityService::~SnsrUserActivityService(void)
- ??_ESnsrUserActivityService@@UAE@I@Z @ 3 NONAME ; SnsrUserActivityService::~SnsrUserActivityService(unsigned int)
- ?getStaticMetaObject@SnsrUserActivityService@@SAABUQMetaObject@@XZ @ 4 NONAME ; struct QMetaObject const & SnsrUserActivityService::getStaticMetaObject(void)
- ?inactivityPeriod@SnsrUserActivityService@@UBEHXZ @ 5 NONAME ; int SnsrUserActivityService::inactivityPeriod(void) const
- ?metaObject@SnsrUserActivityService@@UBEPBUQMetaObject@@XZ @ 6 NONAME ; struct QMetaObject const * SnsrUserActivityService::metaObject(void) const
- ?qt_metacall@SnsrUserActivityService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 7 NONAME ; int SnsrUserActivityService::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?qt_metacast@SnsrUserActivityService@@UAEPAXPBD@Z @ 8 NONAME ; void * SnsrUserActivityService::qt_metacast(char const *)
- ?setInactivityPeriod@SnsrUserActivityService@@UAEXH@Z @ 9 NONAME ; void SnsrUserActivityService::setInactivityPeriod(int)
- ?tr@SnsrUserActivityService@@SA?AVQString@@PBD0@Z @ 10 NONAME ; class QString SnsrUserActivityService::tr(char const *, char const *)
- ?tr@SnsrUserActivityService@@SA?AVQString@@PBD0H@Z @ 11 NONAME ; class QString SnsrUserActivityService::tr(char const *, char const *, int)
- ?trUtf8@SnsrUserActivityService@@SA?AVQString@@PBD0@Z @ 12 NONAME ; class QString SnsrUserActivityService::trUtf8(char const *, char const *)
- ?trUtf8@SnsrUserActivityService@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString SnsrUserActivityService::trUtf8(char const *, char const *, int)
- ?staticMetaObject@SnsrUserActivityService@@2UQMetaObject@@B @ 14 NONAME ; struct QMetaObject const SnsrUserActivityService::staticMetaObject
-
--- a/screensaverapp/serviceproviders/eabi/snsruseractivityserviceu.def Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-EXPORTS
- _ZN23SnsrUserActivityService11qt_metacallEN11QMetaObject4CallEiPPv @ 1 NONAME
- _ZN23SnsrUserActivityService11qt_metacastEPKc @ 2 NONAME
- _ZN23SnsrUserActivityService16staticMetaObjectE @ 3 NONAME DATA 16
- _ZN23SnsrUserActivityService19getStaticMetaObjectEv @ 4 NONAME
- _ZN23SnsrUserActivityService19setInactivityPeriodEi @ 5 NONAME
- _ZN23SnsrUserActivityServiceC1Ev @ 6 NONAME
- _ZN23SnsrUserActivityServiceC2Ev @ 7 NONAME
- _ZN23SnsrUserActivityServiceD0Ev @ 8 NONAME
- _ZN23SnsrUserActivityServiceD1Ev @ 9 NONAME
- _ZN23SnsrUserActivityServiceD2Ev @ 10 NONAME
- _ZNK23SnsrUserActivityService10metaObjectEv @ 11 NONAME
- _ZNK23SnsrUserActivityService16inactivityPeriodEv @ 12 NONAME
- _ZTI23SnsrUserActivityService @ 13 NONAME
- _ZTV23SnsrUserActivityService @ 14 NONAME
-
--- a/screensaverapp/serviceproviders/serviceproviders.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: serviceproviders.pro
-#
-
-TEMPLATE = subdirs
-
-SUBDIRS = snsruseractivityservice
--- a/screensaverapp/serviceproviders/snsruseractivityservice/inc/snsruseractivityservice.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: snsruseractivityservice.h
-*
-*/
-
-#ifndef SNSRSNSRUSERACTIVITYSERVICE_H
-#define SNSRSNSRUSERACTIVITYSERVICE_H
-
-#include "snsruseractivityserviceinterface.h"
-#include "snsruseractivityservice_global.h"
-
-#include "snsrtest_global.h"
-
-class SnsrUserActivityServicePrivate;
-
-class SNSRUSERACTIVITYSERVICE_EXPORT SnsrUserActivityService : public SnsrUserActivityServiceInterface
-{
- Q_OBJECT
-
-public:
-
- explicit SnsrUserActivityService(/*QObject *parent = 0*/);
- ~SnsrUserActivityService();
-
- virtual void setInactivityPeriod(int seconds);
- virtual int inactivityPeriod() const;
-
-private:
-
- //virtual void connectNotify(const char *signal);
- //virtual void disconnectNotify(const char *signal);
-
- //bool receiversConnected();
-
- Q_DISABLE_COPY(SnsrUserActivityService)
-
-private:
-
- SnsrUserActivityServicePrivate *m_d;
- friend class SnsrUserActivityServicePrivate;
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrUserActivityService)
-
-};
-
-#endif // SNSRSNSRUSERACTIVITYSERVICE_H
--- a/screensaverapp/serviceproviders/snsruseractivityservice/inc/snsruseractivityservice_global.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: snsruseractivityservice_global.h
-*
-*/
-
-
-#ifndef SNSRSNSRUSERACTIVITYSERVICE_GLOBAL_H
-#define SNSRSNSRUSERACTIVITYSERVICE_GLOBAL_H
-
-#include <qglobal.h>
-
-#ifdef SNSRUSERACTIVITYSERVICE_LIB
- #define SNSRUSERACTIVITYSERVICE_EXPORT Q_DECL_EXPORT
-#else
- #ifdef SNSRUSERACTIVITYSERVICE_TEST
- #define SNSRUSERACTIVITYSERVICE_EXPORT
- #else
- #define SNSRUSERACTIVITYSERVICE_EXPORT Q_DECL_IMPORT
- #endif
-#endif
-
-#endif // SNSRSNSRUSERACTIVITYSERVICE_GLOBAL_H
--- a/screensaverapp/serviceproviders/snsruseractivityservice/inc/snsruseractivityserviceinterface.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: snsruseractivityserviceinterface.h
-*
-*/
-
-#ifndef SNSRUSERACTIVITYSERVICEINTERFACE_H
-#define SNSRUSERACTIVITYSERVICEINTERFACE_H
-
-#include <QObject>
-
-class SnsrUserActivityServiceInterface : public QObject
-{
- Q_OBJECT
-
-public:
-
- virtual void setInactivityPeriod(int seconds) = 0;
- virtual int inactivityPeriod() const = 0;
-
-signals:
-
- void notActive();
- void active();
-
-};
-
-#endif // SNSRUSERACTIVITYSERVICEINTERFACE_H
--- a/screensaverapp/serviceproviders/snsruseractivityservice/s60/inc/snsruseractivityservice_p.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: snsruseractivityservice_p.h
-*
-*/
-
-#ifndef SNSRUSERACTIVITYSERVICEPRIVATE_H
-#define SNSRUSERACTIVITYSERVICEPRIVATE_H
-
-#include "snsrtest_global.h"
-
-class CUserActivityManager;
-
-class SnsrUserActivityService;
-
-class SnsrUserActivityServicePrivate
-{
-
-public:
-
- explicit SnsrUserActivityServicePrivate(SnsrUserActivityService *servicePublic);
- ~SnsrUserActivityServicePrivate();
-
- void setInactivityPeriod(int seconds);
- int inactivityPeriod() const;
-
- void watch(bool shouldWatch);
-
- void emitActive() const;
- void emitNotActive() const;
-
-private:
-
- bool isWatching() const;
-
-private:
-
- SnsrUserActivityService *m_q;
-
- CUserActivityManager *mActivityManager;
- int mInactivityPeriod;
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrUserActivityService)
-
-};
-
-#endif // SNSRUSERACTIVITYSERVICEPRIVATE_H
--- a/screensaverapp/serviceproviders/snsruseractivityservice/s60/src/snsruseractivityservice_p.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: snsruseractivityservice_p.cpp
-*
-*/
-
-#include "snsruseractivityservice.h"
-#include "snsruseractivityservice_p.h"
-
-#include <activitymanager.h>
-
-const int lDefaultInactivityPeriod(5);
-
-// ======== LOCAL FUNCTIONS ========
-
-/*!
- Called as callback to activity event.
- \param pointer to activity callback object.
- \retval error code.
-*/
-TInt activityCallback(TAny *ptr)
-{
- static_cast<SnsrUserActivityServicePrivate *>(ptr)->emitActive();
- // activity manager doesn't care about the return value,
- // we return a value indicating 'true' to be elegant (see CIdle)
- return 1;
-}
-
-/*!
- Called as callback to inactivity event.
- \param pointer to inactivity callback object.
- \retval error code.
-*/
-TInt inactivityCallback(TAny *ptr)
-{
- static_cast<SnsrUserActivityServicePrivate *>(ptr)->emitNotActive();
- // activity manager doesn't care about the return value,
- // we return a value indicating 'true' to be elegant (see CIdle)
- return 1;
-}
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
- Constructor.
- \param servicePublic public implementation.
-*/
-SnsrUserActivityServicePrivate::SnsrUserActivityServicePrivate(SnsrUserActivityService *servicePublic) :
- m_q(servicePublic), mActivityManager(0), mInactivityPeriod(lDefaultInactivityPeriod)
-{
- mActivityManager = CUserActivityManager::NewL(CActive::EPriorityStandard);
-}
-
-/*!
- Destructor.
-*/
-SnsrUserActivityServicePrivate::~SnsrUserActivityServicePrivate()
-{
- delete mActivityManager;
-}
-
-/*!
- Sets the inactivity period after which to emit signal of inactivity.
- \param seconds after which inactivity is detected.
-*/
-void SnsrUserActivityServicePrivate::setInactivityPeriod(int seconds)
-{
- mInactivityPeriod = seconds;
- // activity manager panics if timeout set before start
- if (isWatching())
- {
- mActivityManager->SetInactivityTimeout(TTimeIntervalSeconds(mInactivityPeriod));
- }
-}
-
-/*!
- Retrives the current inactivity period setting.
- \retval inactivity period set.
-*/
-int SnsrUserActivityServicePrivate::inactivityPeriod() const
-{
- return mInactivityPeriod;
-}
-
-/*!
- Starts or stops activity manager user activity watching.
- \param shouldWatch determines if we shoul start watching or stop watching.
-*/
-void SnsrUserActivityServicePrivate::watch(bool shouldWatch)
-{
- if (shouldWatch && !isWatching()) {
- mActivityManager->Start(
- TTimeIntervalSeconds(mInactivityPeriod),
- TCallBack(inactivityCallback, this),
- TCallBack(activityCallback, this));
- } else if (!shouldWatch && isWatching()) {
- mActivityManager->Cancel();
- }
-}
-
-/*!
- Checks if activity service is currently watching for user activity.
- \retval true if user acitivity service is active.
-*/
-bool SnsrUserActivityServicePrivate::isWatching() const
-{
- return mActivityManager && mActivityManager->IsActive();
-}
-
-/*!
- Emits signal that user is active.
-*/
-void SnsrUserActivityServicePrivate::emitActive() const
-{
- emit m_q->active();
-}
-
-/*!
- Emits signal that user is not active.
-*/
-void SnsrUserActivityServicePrivate::emitNotActive() const
-{
- emit m_q->notActive();
-}
--- a/screensaverapp/serviceproviders/snsruseractivityservice/snsruseractivityservice.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsruseractivityservice.pri
-#
-
-HEADERS += ./inc/*.h
-
-SOURCES += ./src/*.cpp
-
-INCLUDEPATH += . \
- inc
-
-DEPENDPATH += . \
- inc \
- src
--- a/screensaverapp/serviceproviders/snsruseractivityservice/snsruseractivityservice.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsruseractivityservice.pro
-#
-
-TEMPLATE = lib
-
-include(../../common.pri)
-
-DEFINES += SNSRUSERACTIVITYSERVICE_LIB
-
-symbian: {
-TARGET.UID3 = 0x2002704D
-LIBS += -lactivitymanager
-
-include(snsruseractivityservice_s60.pri)
-} else {
-include(snsruseractivityservice_stub.pri)
-}
-
-include(snsruseractivityservice.pri)
--- a/screensaverapp/serviceproviders/snsruseractivityservice/snsruseractivityservice_s60.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsruseractivityservice_s60.pri
-#
-
-HEADERS += ./s60/inc/*.h
-
-SOURCES += ./s60/src/*.cpp
-
-INCLUDEPATH += ./s60/inc
-
-DEPENDPATH += ./s60/inc \
- ./s60/src
--- a/screensaverapp/serviceproviders/snsruseractivityservice/snsruseractivityservice_stub.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsruseractivityservice_stub.pri
-#
-
-HEADERS += ./stub/inc/*.h
-
-SOURCES += ./stub/src/*.cpp
-
-INCLUDEPATH += ./stub/inc
-
-DEPENDPATH += ./stub/inc \
- ./stub/src
--- a/screensaverapp/serviceproviders/snsruseractivityservice/src/snsruseractivityservice.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: snsruseractivityservice.cpp
-*
-*/
-
-#include "snsruseractivityservice.h"
-#include "snsruseractivityservice_p.h"
-
-/*!
- \class SnsrUserActivityService
- \brief ?brier_description
-
- ?Qt_style_documentation
-*/
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
- Constructor.
-*/
-SnsrUserActivityService::SnsrUserActivityService() :
- m_d(new SnsrUserActivityServicePrivate(this))
-{
- m_d->watch(true);
-}
-
-/*!
- Destructor.
-*/
-SnsrUserActivityService::~SnsrUserActivityService()
-{
- delete m_d;
-}
-
-/*!
- Sets the inactivity period after which to emit signal of inactivity.
- \param seconds after which inactivity is detected.
-*/
-void SnsrUserActivityService::setInactivityPeriod(int seconds)
-{
- m_d->setInactivityPeriod(seconds);
-}
-
-/*!
- Retrives the current inactivity period setting.
- \retval inactivity period set.
-*/
-int SnsrUserActivityService::inactivityPeriod() const
-{
- return m_d->inactivityPeriod();
-}
--- a/screensaverapp/serviceproviders/snsruseractivityservice/stub/inc/snsruseractivityservice_p.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: snsruseractivityservice_p.h
-*
-*/
-
-#ifndef SNSRUSERACTIVITYSERVICEPRIVATE_H
-#define SNSRUSERACTIVITYSERVICEPRIVATE_H
-
-#include "snsrtest_global.h"
-
-class QTimer;
-
-class SnsrUserActivityService;
-
-class SnsrUserActivityServicePrivate
-{
-
-public:
-
- explicit SnsrUserActivityServicePrivate(SnsrUserActivityService *servicePublic);
- ~SnsrUserActivityServicePrivate();
-
- void setInactivityPeriod(int seconds);
- int inactivityPeriod() const;
-
- void watch(bool shouldWatch);
-
-private:
-
- bool isWatching() const;
-
-private:
-
- SnsrUserActivityService *m_q;
-
- QTimer *mActivityTimer;
- QTimer *mInactivityTimer;
-
- int mInactivityPeriod;
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrUserActivityService)
-};
-
-#endif // SNSRUSERACTIVITYSERVICEPRIVATE_H
--- a/screensaverapp/serviceproviders/snsruseractivityservice/stub/src/snsruseractivityservice_p.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: snsruseractivityservice_p.cpp
-*
-*/
-
-#include "snsruseractivityservice.h"
-#include "snsruseractivityservice_p.h"
-
-#include <QTimer>
-#include <QObject>
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
- Constructor.
- \param servicePublic public implementation.
-*/
-SnsrUserActivityServicePrivate::SnsrUserActivityServicePrivate(SnsrUserActivityService *servicePublic) :
- m_q(servicePublic), mInactivityPeriod(9)
-{
- mActivityTimer = new QTimer();
- QObject::connect(mActivityTimer, SIGNAL(timeout()), m_q, SIGNAL(active()));
-
- mInactivityTimer = new QTimer();
- QObject::connect(mInactivityTimer, SIGNAL(timeout()), m_q, SIGNAL(notActive()));
-}
-
-/*!
- Destructor.
-*/
-SnsrUserActivityServicePrivate::~SnsrUserActivityServicePrivate()
-{
- delete mActivityTimer;
- delete mInactivityTimer;
-}
-
-/*!
- Sets the inactivity period after which to emit signal of inactivity.
- \param seconds after which inactivity is detected.
-*/
-void SnsrUserActivityServicePrivate::setInactivityPeriod(int seconds)
-{
- mInactivityPeriod = seconds;
- if (isWatching()) {
- mInactivityTimer->start(seconds * 1000);
- }
-}
-
-/*!
- Retrives the current inactivity period setting.
- \retval inactivity period set.
-*/
-int SnsrUserActivityServicePrivate::inactivityPeriod() const
-{
- return mInactivityPeriod;
-}
-
-/*!
- Starts or stops activity manager user activity watching.
- \param shouldWatch determines if we shoul start watching or stop watching.
-*/
-void SnsrUserActivityServicePrivate::watch(bool shouldWatch)
-{
- if (shouldWatch && !isWatching()) {
- mActivityTimer->start(5000);
- mInactivityTimer->start(mInactivityPeriod * 1000);
- } else if (!shouldWatch && isWatching()) {
- mActivityTimer->stop();
- mInactivityTimer->stop();
- }
-}
-
-/*!
- Checks if activity service is currently watching for user activity.
- \retval true if user acitivity service is active.
-*/
-bool SnsrUserActivityServicePrivate::isWatching() const
-{
- return (mActivityTimer->isActive() || mInactivityTimer->isActive());
-}
-
-
--- a/screensaverapp/sis/rd-key.pem Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDLRF+r1FGGkCwTrb420kbnAps7gi1yYUcXYUdWeFTuBeQe5eW4
-6Y+LWaA8HMlDdoHRB0FgASisYcFagwno9+oFf4AJka4H1gWEs5XTGwAA1s0d8XGh
-7W7Dt9F5FZij8F7/9Pi6+FhhxZFIf1DD+yry9D7+Sp+BgdNALe4XOpf25QIBAwKB
-gQCHgupyjYuvCsgNHn7PNtnvVxInrB5MQNoPli+O+uNJWUK/Q+57Rl+yO8AoEzDX
-pFaLWiuVVhsdloDnAgabT/FXzYncs6uOHyEUV+dSXb78vtLPJqAX+Fg2i3hOXreB
-yskcZ13/OsKVOu5wgrJkx2baZufkqMwOSytf5y9nwjEIKwJBAP+inobagVNrN62j
-KQva3cC+UN/6XnKdTc0CA6bHyLOaJoH1xiMwG/VS2PGjHI0tiSMNtLn/QPpHJ003
-iabGhdUCQQDLjp/9UjFT6K6CF66Chqf30pZXhx+GTSQZmv/gvZiMly7X9fX9BGX3
-2MbJohBC4yI21XKTbisWywkF73Hwh+TRAkEAqmxprzxWN5zPyRdwspHpKymLP/w+
-9xOJM1atGdqFzRFvAU6EF3Vn+OHl9my9s3OwwgkjJqorUYTE3iUGby8D4wJBAIe0
-aqjhdjfwdFa6dFcEb/qMZDpaFQQzbWZnVUB+ZbMPdI/5TqitmU/l2dvBYCyXbCSO
-TGJJcg8yBgP09qBamIsCQFL7j1tM0XPVQJQ89WpKCld7O9ORxRGVj1eG0tWijrH8
-mGbYh8SGCVoWV3vrKSS8GBrFVgQnqUaHuEdtM7tpCAQ=
------END RSA PRIVATE KEY-----
--- a/screensaverapp/sis/rd.cer Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICzDCCAjWgAwIBAgIBADANBgkqhkiG9w0BAQUFADArMRAwDgYDVQQKEwdSRCBD
-ZXJ0MRcwFQYDVQQDEw5SRCBDZXJ0aWZpY2F0ZTAeFw0wNDExMTUxMjQyMDZaFw0z
-NzA5MjMxMjQyMDZaMCsxEDAOBgNVBAoTB1JEIENlcnQxFzAVBgNVBAMTDlJEIENl
-cnRpZmljYXRlMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDLRF+r1FGGkCwT
-rb420kbnAps7gi1yYUcXYUdWeFTuBeQe5eW46Y+LWaA8HMlDdoHRB0FgASisYcFa
-gwno9+oFf4AJka4H1gWEs5XTGwAA1s0d8XGh7W7Dt9F5FZij8F7/9Pi6+FhhxZFI
-f1DD+yry9D7+Sp+BgdNALe4XOpf25QIBA6OCAQAwgf0wDAYDVR0TBAUwAwEB/zAL
-BgNVHQ8EBAMCAoQwHQYDVR0OBBYEFFi/kuGzxhVpjGxe9ZwlxC3fH9jFMFMGA1Ud
-IwRMMEqAFFi/kuGzxhVpjGxe9ZwlxC3fH9jFoS+kLTArMRAwDgYDVQQKEwdSRCBD
-ZXJ0MRcwFQYDVQQDEw5SRCBDZXJ0aWZpY2F0ZYIBADBsBgNVHSAEZTBjMGEGBFUd
-IAAwWTATBggrBgEFBQcCARYHaHR0cDovLzBCBggrBgEFBQcCAjA2GjRGb3IgUiZE
-IHVzYWdlIG9ubHkuIFRoaXMgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuMA0G
-CSqGSIb3DQEBBQUAA4GBAHGB4RQMAgBdeT2hxfOr6f2nA/dZm+M5yX5daUtZnET9
-Ed0A9sazLawfN2G1KFQT9kxEParAyoAkpbMAsRrnRz/9cM3OHgFm/NiKRnf50DpT
-7oCx0I/65mVD2kt+xXE62/Ii5KPnTufIkPi2uLvURCia1tTS8JmJ8dtxDGyQt8BR
------END CERTIFICATE-----
--- a/screensaverapp/sis/screensaverapp.pkg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-;
-; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-; All rights reserved.
-; This component and the accompanying materials are made available
-; under the terms of "Eclipse Public License v1.0"
-; which accompanies this distribution, and is available
-; at the URL "http://www.eclipse.org/legal/epl-v10.html".
-;
-; Initial Contributors:
-; Nokia Corporation - initial contribution.
-;
-; Contributors:
-;
-; Description:
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"screensaverapp"},(0x2002704E),1,0,0
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-; Supports S60 5th Edition
-[0x1028315F], 0, 0, 0, {"S60ProductID"}
-
-
-; ---- snsrapplication --------------------------------------------
-
-"/epoc32/release/armv5/urel/snsrapplication.exe" - "c:/sys/bin/snsrapplication.exe"
-"/epoc32/data/z/private/10003a3f/import/apps/snsrapplication_reg.rsc" - "c:/private/10003a3f/import/apps/snsrapplication_reg.rsc"
-
-;themes
-;color specific
-"\epoc32\winscw\c\resource\hb\apptheme\snsrapplication\style\hbdefault\variables\color\hbcolorgroup.css" - "c:\resource\hb\apptheme\snsrapplication\style\hbdefault\variables\color\hbcolorgroup.css"
-"\epoc32\winscw\c\resource\hb\apptheme\snsrapplication\style\redtheme\variables\color\hbcolorgroup.css" - "c:\resource\hb\apptheme\snsrapplication\style\redtheme\variables\color\hbcolorgroup.css"
-"\epoc32\winscw\c\resource\hb\apptheme\snsrapplication\style\bluetheme\variables\color\hbcolorgroup.css" - "c:\resource\hb\apptheme\snsrapplication\style\bluetheme\variables\color\hbcolorgroup.css"
-
-;hbdefault theme
-;"\epoc32\winscw\c\resource\hb\themes\icons\hbdefault\scalable\oled-clock-background.svg" - "c:\resource\hb\themes\icons\hbdefault\scalable\aoled-clock-background.svg"
-;"\epoc32\winscw\c\resource\hb\themes\icons\hbdefault\scalable\oled-clock-hour-hand.svg" - "c:\resource\hb\themes\icons\hbdefault\scalable\oled-clock-hour-hand.svg"
-;"\epoc32\winscw\c\resource\hb\themes\icons\hbdefault\scalable\oled-clock-minute-hand.svg" - "c:\resource\hb\themes\icons\hbdefault\scalable\oled-clock-minute-hand.svg"
-
-;icon specific (redtheme)
-"\epoc32\winscw\c\resource\hb\themes\icons\redtheme\pixmap\analog-clock-background.png" - "c:\resource\hb\themes\icons\redtheme\pixmap\analog-clock-background.png"
-"\epoc32\winscw\c\resource\hb\themes\icons\redtheme\scalable\analog-clock-hour-hand.svg" - "c:\resource\hb\themes\icons\redtheme\scalable\analog-clock-hour-hand.svg"
-"\epoc32\winscw\c\resource\hb\themes\icons\redtheme\scalable\analog-clock-minute-hand.svg" - "c:\resource\hb\themes\icons\redtheme\scalable\analog-clock-minute-hand.svg"
-
-;icon specific (bluetheme)
-"\epoc32\winscw\c\resource\hb\themes\icons\bluetheme\scalable\analog-clock-background.svg" - "c:\resource\hb\themes\icons\bluetheme\scalable\analog-clock-background.svg"
-"\epoc32\winscw\c\resource\hb\themes\icons\bluetheme\scalable\analog-clock-hour-hand.svg" - "c:\resource\hb\themes\icons\bluetheme\scalable\analog-clock-hour-hand.svg"
-"\epoc32\winscw\c\resource\hb\themes\icons\bluetheme\scalable\analog-clock-minute-hand.svg" - "c:\resource\hb\themes\icons\bluetheme\scalable\analog-clock-minute-hand.svg"
-
-; ---- runtimeproviders --------------------------------------------
-
-; -------- snsrdefaultruntimeprovider
-"/epoc32/release/armv5/urel/snsrdefaultruntimeprovider.dll" - "c:/sys/bin/snsrdefaultruntimeprovider.dll"
-"/epoc32/data/z/snsrresources/plugins/runtimeproviders/snsrdefaultruntimeprovider.qtplugin" - "c:/snsrresources/plugins/runtimeproviders/snsrdefaultruntimeprovider.qtplugin"
-"/epoc32/data/z/snsrresources/plugins/runtimeproviders/snsrdefaultruntimeprovider.manifest" - "c:/snsrresources/plugins/runtimeproviders/snsrdefaultruntimeprovider.manifest"
-
-; ---- stateproviders --------------------------------------------
-
-; -------- snsrdefaultstateprovider
-"/epoc32/release/armv5/urel/snsrdefaultstateprovider.dll" - "c:/sys/bin/snsrdefaultstateprovider.dll"
-"/epoc32/data/z/snsrresources/plugins/stateproviders/snsrdefaultstateprovider.qtplugin" - "c:/snsrresources/plugins/stateproviders/snsrdefaultstateprovider.qtplugin"
-"/epoc32/data/z/snsrresources/plugins/stateproviders/snsrdefaultstateprovider.manifest" - "c:/snsrresources/plugins/stateproviders/snsrdefaultstateprovider.manifest"
-
-; ---- screensaverproviders --------------------------------------------
-
-; -------- snsrbigclockscreensaverprovider
-"/epoc32/release/armv5/urel/snsrbigclockscreensaverprovider.dll" - "c:/sys/bin/snsrbigclockscreensaverprovider.dll"
-"/epoc32/data/z/snsrresources/plugins/screensaverproviders/snsrbigclockscreensaverprovider.qtplugin" - "c:/snsrresources/plugins/screensaverproviders/snsrbigclockscreensaverprovider.qtplugin"
-"/epoc32/data/z/snsrresources/plugins/screensaverproviders/snsrbigclockscreensaverprovider.manifest" - "c:/snsrresources/plugins/screensaverproviders/snsrbigclockscreensaverprovider.manifest"
-
-; -------- snsranalogclockstyleplugin
-"/epoc32/release/armv5/urel/snsranalogclockstyleplugin.dll" - "c:/sys/bin/snsranalogclockstyleplugin.dll"
-"/epoc32/data/z/snsrresources/plugins/snsrstyleplugins/snsranalogclockstyleplugin.qtplugin" - "c:/snsrresources/plugins/snsrstyleplugins/snsranalogclockstyleplugin.qtplugin"
-"/epoc32/data/z/snsrresources/plugins/snsrstyleplugins/snsranalogclockstyleplugin.manifest" - "c:/snsrresources/plugins/snsrstyleplugins/snsranalogclockstyleplugin.manifest"
-
-; -------- snsroledclockstyleplugin
-"/epoc32/release/armv5/urel/snsroledclockstyleplugin.dll" - "c:/sys/bin/snsroledclockstyleplugin.dll"
-"/epoc32/data/z/snsrresources/plugins/snsrstyleplugins/snsroledclockstyleplugin.qtplugin" - "c:/snsrresources/plugins/snsrstyleplugins/snsroledclockstyleplugin.qtplugin"
-"/epoc32/data/z/snsrresources/plugins/snsrstyleplugins/snsroledclockstyleplugin.manifest" - "c:/snsrresources/plugins/snsrstyleplugins/snsroledclockstyleplugin.manifest"
-
-; ---- serviceproviders --------------------------------------------
-
-; -------- snsruseractivityservice
-"/epoc32/release/armv5/urel/snsruseractivityservice.dll" - "c:/sys/bin/snsruseractivityservice.dll"
-
-; ---- snsrutils --------------------------------------------
-
-"/epoc32/release/armv5/urel/snsrutils.dll" - "c:/sys/bin/snsrutils.dll"
--- a/screensaverapp/sis/screensaverapp_sisx.bat Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-@rem
-@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-@rem All rights reserved.
-@rem This component and the accompanying materials are made available
-@rem under the terms of "Eclipse Public License v1.0"
-@rem which accompanies this distribution, and is available
-@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-@rem
-@rem Initial Contributors:
-@rem Nokia Corporation - initial contribution.
-@rem
-@rem Contributors:
-@rem
-@rem Description:
-@rem
-@echo off
-
-if exist screensaverapp.sisx del screensaverapp.sisx
-
-makesis screensaverapp.pkg
-signsis screensaverapp.sis screensaverapp.sisx rd.cer rd-key.pem
-
-if exist screensaverapp.sisx (
-echo screensaverapp.sisx creation SUCCEEDED
-del screensaverapp.sis
-)
-
-if not exist screensaverapp.sisx (
-echo screensaverapp.sisx creation FAILED
-)
\ No newline at end of file
--- a/screensaverapp/snsrapplication/inc/snsrscreensaver.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Main Screensaver application class, loads runtime.
-*
-*/
-
-#ifndef SNSRSCREENSAVER_H
-#define SNSRSCREENSAVER_H
-
-#include <QObject>
-#include "snsrtest_global.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrScreensaver)
-
-class HsRuntime;
-
-class SnsrScreensaver : public QObject
-{
- Q_OBJECT
-
-public:
-
- SnsrScreensaver(QObject *parent = 0);
- virtual ~SnsrScreensaver();
-
-signals:
-
- void exit();
-
-public slots:
-
- void start();
- void stop();
-
-private:
-
- Q_DISABLE_COPY (SnsrScreensaver)
-
-private slots:
-
- void onRuntimeStarted();
- void onRuntimeStopped();
- void onRuntimeFaulted();
-
-private:
-
- HsRuntime *mRuntime;
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrScreensaver)
-
-};
-
-#endif // SNSRSCREENSAVER_H
--- a/screensaverapp/snsrapplication/installs_symbian.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-deploy.path = c:
-
-#style
-
-styleexports1.path = /resource/hb/apptheme/snsrapplication/style/redtheme/variables/color
-styleexports1.sources += themes/style/theme1/hbcolorgroup.css
-for(styleexport1, styleexports1.sources):BLD_INF_RULES.prj_exports += "./$$styleexport1 $$deploy.path$$styleexports1.path/$$basename(styleexport1)"
-
-styleexports2.path = /resource/hb/apptheme/snsrapplication/style/bluetheme/variables/color
-styleexports2.sources += themes/style/theme2/hbcolorgroup.css
-for(styleexport2, styleexports2.sources):BLD_INF_RULES.prj_exports += "./$$styleexport2 $$deploy.path$$styleexports2.path/$$basename(styleexport2)"
-
-styleexports3.path = /resource/hb/apptheme/snsrapplication/style/hbdefault/variables/color
-styleexports3.sources += themes/style/defaulttheme/hbcolorgroup.css
-for(styleexport3, styleexports3.sources):BLD_INF_RULES.prj_exports += "./$$styleexport3 $$deploy.path$$styleexports3.path/$$basename(styleexport3)"
-
-#icons
-
-iconsexports11.path = /resource/hb/themes/icons/redtheme/scalable
-iconsexports11.sources += themes/icons/theme1/analog-clock-hour-hand.svg
-iconsexports11.sources += themes/icons/theme1/analog-clock-minute-hand.svg
-for(iconsexport11, iconsexports11.sources):BLD_INF_RULES.prj_exports += "./$$iconsexport11 $$deploy.path$$iconsexports11.path/$$basename(iconsexport11)"
-
-iconsexports12.path = /resource/hb/themes/icons/redtheme/pixmap
-iconsexports12.sources += themes/icons/theme1/analog-clock-background.png
-for(iconsexport12, iconsexports12.sources):BLD_INF_RULES.prj_exports += "./$$iconsexport12 $$deploy.path$$iconsexports12.path/$$basename(iconsexport12)"
-
-iconsexports2.path = /resource/hb/themes/icons/bluetheme/scalable
-iconsexports2.sources += themes/icons/theme2/analog-clock-background.svg
-iconsexports2.sources += themes/icons/theme2/analog-clock-hour-hand.svg
-iconsexports2.sources += themes/icons/theme2/analog-clock-minute-hand.svg
-for(iconsexport2, iconsexports2.sources):BLD_INF_RULES.prj_exports += "./$$iconsexport2 $$deploy.path$$iconsexports2.path/$$basename(iconsexport2)"
--- a/screensaverapp/snsrapplication/installs_win.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-stylefortheme1.path = "$$(USERPROFILE)/Application Data/hb/apptheme/snsrapplication/style/redtheme/variables/color"
-stylefortheme1.files = ./themes/style/theme1/hbcolorgroup.css
-
-stylefortheme2.path = "$$(USERPROFILE)/Application Data/hb/apptheme/snsrapplication/style/bluetheme/variables/color"
-stylefortheme2.files = ./themes/style/theme2/hbcolorgroup.css
-
-stylefortheme3.path = "$$(USERPROFILE)/Application Data/hb/apptheme/snsrapplication/style/hbdefault/variables/color"
-stylefortheme3.files = ./themes/style/defaulttheme/hbcolorgroup.css
-
-themeableimagesfortheme11.path = "$$(USERPROFILE)/Application Data/hb/themes/icons/redtheme/scalable"
-themeableimagesfortheme11.files = ./themes/icons/theme1/analog-clock-hour-hand.svg \
- ./themes/icons/theme1/analog-clock-minute-hand.svg
-
-themeableimagesfortheme12.path = "$$(USERPROFILE)/Application Data/hb/themes/icons/redtheme/pixmap"
-themeableimagesfortheme12.files = ./themes/icons/theme1/analog-clock-background.png
-
-themeableimagesfortheme2.path = "$$(USERPROFILE)/Application Data/hb/themes/icons/bluetheme/scalable"
-themeableimagesfortheme2.files = ./themes/icons/theme2/analog-clock-background.svg \
- ./themes/icons/theme2/analog-clock-hour-hand.svg \
- ./themes/icons/theme2/analog-clock-minute-hand.svg
-
-INSTALLS += stylefortheme1 stylefortheme2 stylefortheme3 themeableimagesfortheme11 themeableimagesfortheme12 themeableimagesfortheme2
--- a/screensaverapp/snsrapplication/screensaverapp_fallbacktheme.qrc Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<RCC>
- <qresource prefix="/" >
- <file>themes/icons/hbdefault/scalable/analog-clock-hour-hand.svg</file>
- <file>themes/icons/hbdefault/scalable/analog-clock-minute-hand.svg</file>
- <file>themes/icons/hbdefault/pixmap/analog-clock-background.png</file>
-
- <file>themes/icons/hbdefault/scalable/oled-clock-hour-hand.svg</file>
- <file>themes/icons/hbdefault/scalable/oled-clock-minute-hand.svg</file>
- <file>themes/icons/hbdefault/scalable/oled-clock-background.svg</file>
- <file>themes/icons/hbdefault/scalable/oled-clock-date-frame.svg</file>
- </qresource>
-</RCC>
--- a/screensaverapp/snsrapplication/snsrapplication.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsrapplication.pri
-#
-
-HEADERS += ./inc/*.h
-SOURCES += ./src/*.cpp
-
-DEPENDPATH += . \
- ./inc \
- ./src
-
-INCLUDEPATH += . \
- ./inc \
- ../inc
\ No newline at end of file
--- a/screensaverapp/snsrapplication/snsrapplication.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsrapplication.pro
-#
-
-TEMPLATE = app
-
-include(../common.pri)
-
-LIBS += -lappruntimemodel
-CONFIG += console hb
-
-RESOURCES += screensaverapp_fallbacktheme.qrc
-
-symbian: {
- TARGET.UID3 = 0x2002704E
- TARGET.CAPABILITY = CAP_APPLICATION
-
- include(installs_symbian.pri)
-}
-
-win32: {
- include(installs_win.pri)
-}
-
-include(snsrapplication.pri)
--- a/screensaverapp/snsrapplication/src/main.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Screensaver application.
-*
-*/
-
-#include <hbapplication.h>
-
-#include "snsrscreensaver.h"
-#include "snsrtest_global.h"
-
-int main(int argc, char *argv[])
-{
- SCREENSAVER_TEST_FUNC_ENTRY("main")
-
- HbApplication scsrApp(argc, argv);
- scsrApp.setApplicationName("Screensaver");
- SnsrScreensaver scsr;
- QObject::connect(&scsrApp, SIGNAL(aboutToQuit()), &scsr, SLOT(stop()));
- QObject::connect(&scsr, SIGNAL(exit()), &scsrApp, SLOT(quit()), Qt::QueuedConnection);
- scsr.start();
- int ret = scsrApp.exec();
-
- SCREENSAVER_TEST_FUNC_EXIT("main")
- return ret;
-}
--- a/screensaverapp/snsrapplication/src/snsrscreensaver.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,126 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Main Screensaver application class, loads runtime.
-*
-*/
-
-#include "snsrscreensaver.h"
-
-#include <hsruntimefactory.h>
-#include <hsruntime.h>
-
-#include "snsrtest_global.h"
-
-/*!
- \class SnsrScreensaver
- \ingroup group_snsrapplication
- \brief Main Screensaver application class.
-
- Loads and manages the runtime.
-*/
-
-/*!
- Constructs a new SnsrScreensaver with parent.
-*/
-SnsrScreensaver::SnsrScreensaver(QObject *parent):
- QObject(parent)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrScreensaver::SnsrScreensaver")
-
- HsRuntimeFactory factory(
- "snsrresources/plugins/runtimeproviders",
- "snsrresources/plugins/runtimeproviders");
-
- HsRuntimeToken token;
- token.mLibrary = "snsrdefaultruntimeprovider.dll";
- token.mUri = "screensaver.nokia.com/runtime/defaultruntime";
-
- mRuntime = factory.createRuntime(token);
- if (mRuntime) {
- mRuntime->setParent(this);
-
- connect(mRuntime, SIGNAL(started()), SLOT(onRuntimeStarted()));
- connect(mRuntime, SIGNAL(stopped()), SLOT(onRuntimeStopped()));
- connect(mRuntime, SIGNAL(faulted()), SLOT(onRuntimeFaulted()));
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrScreensaver::SnsrScreensaver")
-}
-
-/*!
- Destructs the class.
-*/
-SnsrScreensaver::~SnsrScreensaver()
-{
-}
-
-/*!
- \fn void SnsrScreensaver::exit()
-
- This signal is emitted when the runtime ends job.
- */
-
-/*!
- Starts the runtime.
-*/
-void SnsrScreensaver::start()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrScreensaver::start")
-
- if (mRuntime) {
- mRuntime->start();
- }
- else {
- emit exit();
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrScreensaver::start")
-}
-
-/*!
- Stops the runtime.
-*/
-void SnsrScreensaver::stop()
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrScreensaver::stop")
-
- if (mRuntime) {
- mRuntime->stop();
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrScreensaver::stop")
-}
-
-/*!
- Called after the runtime has started.
-*/
-void SnsrScreensaver::onRuntimeStarted()
-{
-}
-
-/*!
- Called after the runtime has stopped.
-*/
-void SnsrScreensaver::onRuntimeStopped()
-{
- emit exit();
-}
-
-/*!
- Called after the runtime has faulted.
-*/
-void SnsrScreensaver::onRuntimeFaulted()
-{
- emit exit();
-}
Binary file screensaverapp/snsrapplication/themes/icons/hbdefault/pixmap/analog-clock-background.png has changed
--- a/screensaverapp/snsrapplication/themes/icons/hbdefault/scalable/analog-clock-hour-hand.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- baseProfile="tiny"
- id="Layer_1"
- width="45"
- height="240"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="analog-clock-hour-hand.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- xml:space="preserve"><metadata
- id="metadata18"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs16"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="131 : 18 : 1"
- inkscape:persp3d-origin="65.5 : 12 : 1"
- id="perspective20" /></defs><sodipodi:namedview
- inkscape:window-height="844"
- inkscape:window-width="1440"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- showgrid="true"
- inkscape:zoom="2.6848739"
- inkscape:cx="-52.463224"
- inkscape:cy="119"
- inkscape:window-x="18"
- inkscape:window-y="71"
- inkscape:current-layer="Layer_1"
- showguides="true"
- inkscape:guide-bbox="true"><inkscape:grid
- type="xygrid"
- id="grid2388"
- visible="true"
- enabled="true" /><sodipodi:guide
- orientation="1,0"
- position="22.719875,92.741784"
- id="guide2385" /><sodipodi:guide
- orientation="0,1"
- position="-105.03286,119.93114"
- id="guide2387" /></sodipodi:namedview>
-<g
- id="g3"
- transform="matrix(0,-0.968254,1,0,7.874,128.80784)">
-
- <image
- width="126"
- height="34"
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAiCAYAAACZb20EAAAACXBIWXMAAAsSAAALEgHS3X78AAAA GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA0hJREFUeNrsmvtvEkEQxzvAP+Ur GmOMMaa1qY9GTWPUtLTYhyDYFoQGpE0R2mJtocaEGKPxrdUYozE+o/5ZI2qjB707dtiZO1p3flyO vd35fuaxLNBlrCNsOhrG5rHZhSpIvQ+My/2zVGz4r9jo8ly+VAEj/DaxTCKCrZ6xPpAtrLBqFTIS eG+5qTFLpKMvazAR77HNpibQPqYtowQWkvkyGOE73OYzUexqWdSRMGr/wWRuEYzwHWKl7GVsHdH6 ottZfKYErsKvzk+jW92JXJkzoLRhS9cSCo0cksQldwZ12qLpIjQIv1ZMWWikNxvheN4A4WLLc5Po rgnN56j5wXiyAL8Fu72Qxnaoa/WawVjuvwKiUtjImEjxFa/PVTrFXyNQK2fIi+Wk9/yl7JaA41Yp hdwpGJmcjm00AaFgIEBOHe5nTyDVqVp5BnWY5vCdvABOPgS5SLeb3/JwKFAXnu4kEHISDSg+YGmw 6krzZ+8gDKz7/PWIB+LmOJyEDkPA4Gg5YLGtcxUIwaquhd0M5IjXaSq4nEE+79o5iQNWYWClYB0Y TUMoGAxoUudUXnSd4VbTwXdY6VwywEoGdvPo6ZGrsBHx4NgLqNYLfafazQHaSpKAZYFVuKaTfdv4 zv5wsvEHnPXadWKrhdrphr5ptm5LBFbyUjizq8LwicEpcETi1Z0ism7O5QcEno6NrwOQgNVRSBTd /qbF912YBFIOf323hN5FNIu6TNGIUsmFr6lUXHrvuQToFe+6vbm3iOob0XcTHSj0IaKpR1YhWJs2 1X02DsS2Ud3e3l9Cqehic4ZkfWXZEn8JOjIQ8/4+/t2Dslie9KXBYzuleAPs4TNRJU09uSB5//AG ykURyone4bBapzl0aoKkpe83Yx8eLSN7ZHjdsPkAa/MsB/vHt5bwrezj45soFtF+nBgEgD1wcoys 47b7o8SnJysoIRf6QIIKsPuPj5p/2XaSfX7aCCBf1v/3hX3HLratnxFe0L48W2WtAtb79719ES3t jPDC9vV5hT3x7+kd0dbNCO+BfXtRRZX8rkLI7qPDLJoZ4T2y7+tV1O0Hd/WE2fQywnsNwMs10nXl zp4hEY2M8D7aDzsI6raje0hcl58CDAA856IpWveJ7AAAAABJRU5ErkJggg=="
- transform="translate(2.7529,1.3525)"
- id="image5">
- </image>
- <path
- d="M 102.457,2.182 C 97.374,2.873 93.998,6.657 91.807,10.626 C 65.705,14.422 39.322,14.508 12.465,9.214 C 6.546,8.044 3.421,9.383 3.04,14.554 C 2.654,19.783 5.286,18.916 13.199,21.079 C 46.57,30.197 88.088,27.713 88.088,27.713 C 88.431,27.717 88.757,27.706 89.083,27.686 C 91.598,32.689 98.175,36.957 107.247,33.139 C 112.039,31.122 114.781,26.138 116.952,24.064 C 119.338,21.787 128.957,16.525 128.476,11.992 C 128.177,9.171 117.227,6.249 108.641,5.65 C 107.431,3.313 105.461,1.773 102.457,2.182 z M 106.349,4.221 C 106.766,4.596 107.129,5.069 107.463,5.586 C 107.728,5.966 107.831,6.187 107.959,6.439 C 109.067,8.634 109.573,11.531 109.52,13.961 C 109.446,17.465 108.624,19.333 108.16,19.808 C 107.648,20.331 106.628,20.124 106.168,19.949 C 104.31,19.255 102.903,16.179 102.371,14.991 C 102.371,14.991 102.163,14.179 102.099,14.032 C 101.785,13.325 101.05,13.964 101.202,14.394 C 101.356,14.827 101.577,15.322 101.577,15.322 C 101.577,15.322 104.879,22.741 108.464,20.569 C 110.206,19.515 111.136,11.651 109.047,6.534 C 115.69,7.172 123.548,9.143 126.466,11.069 C 127.238,11.579 127.586,12.104 127.528,12.475 C 126.914,16.26 117.919,21.883 116.298,23.286 C 114.425,24.905 111.321,30.451 106.922,32.228 C 101.322,34.489 96.991,33.896 93.414,31.46 C 91.887,30.418 90.742,29.109 90.05,27.593 L 89.654,26.626 C 89.558,26.342 88.581,26.529 88.645,26.698 C 88.436,26.704 88.232,26.718 88.014,26.718 C 87.558,26.752 46.211,29.264 13.38,20.351 C 4.911,18.053 3.672,18.5 3.878,14.787 C 3.974,13.054 4.715,11.059 5.941,10.275 C 7.427,9.325 9.957,9.489 12.337,9.959 C 45.963,16.587 69.436,14.456 91.405,11.368 C 90.703,12.703 91.534,13.254 92.281,11.667 C 92.356,11.517 92.437,11.371 92.513,11.222 C 92.534,11.219 92.834,10.617 92.834,10.617 C 94.874,6.887 98.053,3.704 102.567,2.98 C 104.069,2.738 105.327,3.309 106.349,4.221 z"
- id="path7"
- style="fill:#534741" />
- <path
- d="M 109.672,16.708 C 112.999,16.003 113.687,17.167 114.319,17.608 C 114.632,17.826 115.493,17.327 114.772,16.757 C 113.543,15.782 112.191,15.302 109.818,15.649 C 109.818,15.648 109.543,16.736 109.672,16.708 z"
- id="path9"
- style="fill:#534741" />
- <path
- d="M 103.416,17.996 C 103.416,17.996 98.376,19.599 97.113,23.244 C 96.207,25.856 96.077,26.784 96.034,28.692 C 96.022,29.13 95.033,29.624 95.054,28.686 C 95.075,27.748 95.715,23.173 97.029,21.33 C 98.313,19.529 101.109,17.672 102.686,17.166 C 103.781,16.813 103.416,17.996 103.416,17.996 z"
- id="path11"
- style="fill:#534741" />
- <path
- d="M 102.902,13.834 C 102.902,13.834 103.563,16.602 105.257,17.822 C 106.953,19.043 107.945,19.165 108.297,15.01 C 108.65,10.858 107.184,5.131 103.628,4.012 C 100.074,2.894 94.053,12.05 93.081,13.105 C 92.111,14.161 90.677,13.425 88.908,12.918 C 87.851,12.616 82.874,13.799 81.547,14.014 C 79.489,14.345 62.844,15.75 45.36,15.276 C 25.688,14.745 18.796,12.787 9.555,10.793 C 6.136,10.052 5.265,13.528 5.181,14.189 C 5.099,14.853 4.612,17.395 8.823,18.007 C 14.265,18.796 17.4,21.935 42.783,23.769 C 68.308,25.615 89.75,24.95 89.75,24.95 C 89.75,24.95 91.942,30.263 97.813,31.671 C 103.686,33.076 111.006,27.954 114.931,22.392 C 116.565,20.078 125.66,15.843 126.201,12.889 C 126.74,9.93 110.552,7.737 110.552,7.737"
- id="path13"
- style="fill:none;stroke:#d5c6b2;stroke-dasharray:3" />
-</g>
-</svg>
\ No newline at end of file
--- a/screensaverapp/snsrapplication/themes/icons/hbdefault/scalable/analog-clock-minute-hand.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- baseProfile="tiny"
- id="Layer_1"
- x="0px"
- y="0px"
- width="40"
- height="285"
- xml:space="preserve"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="analog-clock-minute-hand.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
- id="metadata18"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs16"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="153 : 18 : 1"
- inkscape:persp3d-origin="76.5 : 12 : 1"
- id="perspective20" /></defs><sodipodi:namedview
- inkscape:window-height="844"
- inkscape:window-width="1440"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- showgrid="true"
- inkscape:zoom="2.25"
- inkscape:cx="17"
- inkscape:cy="142"
- inkscape:window-x="22"
- inkscape:window-y="29"
- inkscape:current-layer="Layer_1"
- showguides="true"
- inkscape:guide-bbox="true"><inkscape:grid
- type="xygrid"
- id="grid2408"
- visible="true"
- enabled="true" /><sodipodi:guide
- orientation="1,0"
- position="20,126.22222"
- id="guide2410" /><sodipodi:guide
- orientation="0,1"
- position="-229.33333,142.66667"
- id="guide2412" /></sodipodi:namedview>
-<g
- id="g3"
- transform="matrix(0,0.9666667,-1,0,35.2145,2.6649299)">
-
- <image
- width="150"
- height="34"
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAiCAYAAAC9WiCBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtZJREFUeNrsmo9Lk0EYx73Nfyoz CQokIn9RSUSESDmdis7N6RyO5n64dJtiOgdWRGU/FGtFREQURfVnPTVjlnNbd+/dvXf33vOFwRjv vc9tz+f5vs/djrRJViwUgPrPMoVt0obytKQleGFmFP53TTpfQsAQLHolZoPAcv2du5sImMfkk3FT v9/H9ErOTwCmwnLHysSnfkPgnANoMXQhvY7OZQtYuUToLwpcvkI3OJosIlxeBCufDAOtw4iCqV7h RB7hMlzttTdrqVlhfQ4cAUXcYhGlo2NtZOe40wkglojJWA5dSzMVU5GmSZ6OrxzLF9nKxTgfdsAz mErBuSxC5pIamQyLadQMgZRX48xkiHYnHgUiaYSOUiwmwmMYwWiWHCZlp7AIMgOp7J3qw96eWTIe RCdm4KZhVIv9sHn3+0mLYNQ7E9qo1Q90v7gI+s5bVfGJX2z9AcvnE2suIOJLcq9JXJyzMhQFQSze NI7u+GRzCdRVqpl7DCr2+BTWPNPgY6g+K6XAjEpV6TBg4Jzd1wkPfFHO6NuDmNjAuOgSQh+VMpqR /Z1lEB0JdFkWWtU7qdHgSIw07doOHuTASA+21dk0WWxduTVPqJYDlYcrLvddippaIwtIHzseGI4S 5nXm20er4M1KBfPmrElr0DcUIcw9ViO9e1wArboQ2x7Rit3p0s0w02YX08XvnxbB3Gqzca/MuS7e CHHtmjIP/rC7Bva4hHlEsEa9cH1ayn91jm768fk6eBYmQ5unVo7cfW3K9T96HQf89HIDdKt02w6f nh+c1PZkANfEPu/dAzHVZm5TKyr0uasTnjpX1s5FJSHS6T57Ocgc5Ms+JfCkFmMcDwvq5FhVfT3Y klr3XQNjmHQbwarq26uSFLjO9I8iVDaDVdX31yfh4qGtsw+hQrD+Bayyze1ep3sDCBWC1Vg/KmVm wDp6RxAoBIteP980h+xUD8LkRf0SYAB1yg1o6fi76wAAAABJRU5ErkJggg=="
- transform="translate(1.7949,0.8145)"
- id="image5">
- </image>
- <path
- d="M 22.749,4.884 C 14.146,5.218 3.113,7.81 2.728,10.614 C 2.107,15.133 11.566,20.688 13.88,23.04 C 15.985,25.176 18.573,30.242 23.306,32.407 C 32.255,36.495 38.963,32.432 41.626,27.511 C 41.948,27.538 42.277,27.56 42.616,27.566 C 42.616,27.566 106.848,29.618 140.496,21.58 C 150.479,19.19 151.108,18.526 150.848,15.365 C 150.411,10.14 147.545,8.752 141.598,9.74 C 114.583,14.215 65.398,14.963 39.424,10.373 C 37.355,6.334 34.096,2.452 29.036,1.604 C 26.044,1.106 24.027,2.583 22.749,4.884 z M 28.869,2.428 C 33.391,3.182 36.471,6.541 38.399,10.328 C 38.399,10.328 38.681,10.938 38.703,10.944 C 38.774,11.096 38.851,11.243 38.918,11.397 C 39.618,13.004 40.547,12.626 39.886,11.272 C 61.749,15.026 107.885,16.116 141.701,10.514 C 144.093,10.118 146.689,9.996 148.024,11.15 C 149.253,12.212 149.793,12.879 149.991,15.464 C 150.175,17.851 149.543,18.737 140.338,20.844 C 107.177,28.435 43.178,26.621 42.725,26.572 C 42.508,26.568 42.302,26.55 42.094,26.534 C 42.165,26.368 41.197,26.151 41.088,26.427 L 40.663,27.384 C 39.925,28.884 38.695,30.171 37.139,31.163 C 33.486,33.489 28.466,33.736 23.705,31.539 C 19.745,29.714 15.234,22.715 14.589,22.06 C 13.951,21.413 12.823,20.677 11.576,19.722 C 8.408,17.289 3.678,13.813 3.7,11.03 C 3.7,10.937 3.701,10.846 3.718,10.753 C 3.738,10.613 3.982,10.242 4.77,9.757 C 7.745,7.922 15.66,6.192 22.318,5.752 C 20.07,10.802 20.763,18.695 22.473,19.802 C 25.992,22.082 29.516,14.766 29.516,14.766 C 29.516,14.766 29.75,14.281 29.917,13.85 C 30.085,13.42 29.371,12.76 29.033,13.459 C 28.966,13.601 28.731,14.413 28.731,14.413 C 28.164,15.584 26.665,18.613 24.784,19.253 C 24.323,19.409 23.306,19.589 22.806,19.024 C 22.345,18.502 21.587,16.668 21.615,13.164 C 21.635,10.733 22.233,7.851 23.409,5.696 C 23.539,5.444 23.651,5.226 23.927,4.851 C 24.274,4.349 24.654,3.886 25.083,3.522 C 26.132,2.648 27.371,2.173 28.869,2.428 z"
- id="path7"
- style="fill:#534741" />
- <path
- d="M 21.346,15.69 C 17.543,14.596 17.311,15.712 16.6,15.9 C 15.889,16.088 15.436,15.466 16.307,14.912 C 17.45,14.183 18.904,13.871 21.272,14.724 C 21.271,14.724 21.473,15.73 21.346,15.69 z"
- id="path9"
- style="fill:#534741" />
- <path
- d="M 27.671,17.255 C 27.671,17.255 31.934,19.105 33.395,21.474 C 34.878,23.879 34.735,27.889 34.731,28.328 C 34.729,28.764 35.619,29.263 35.628,28.322 C 35.634,27.388 35.684,23.03 34.25,20.999 C 32.944,19.149 30.197,17.04 28.389,16.503 C 27.542,16.253 27.671,17.255 27.671,17.255 z"
- id="path11"
- style="fill:#534741" />
- <path
- d="M 28.233,13.238 C 28.233,13.238 27.491,15.984 25.759,17.154 C 24.027,18.322 23.033,18.413 22.806,14.252 C 22.579,10.086 24.181,4.258 27.807,3.399 C 32.389,2.313 37.131,11.728 38.071,12.809 C 39.009,13.893 40.409,12.823 42.25,12.753 C 43.484,12.706 47.135,13.441 48.467,13.611 C 50.334,13.854 69.743,15.963 87.237,16.023 C 106.913,16.088 135.151,13.116 144.449,11.403 C 147.89,10.769 148.653,14.27 148.718,14.935 C 148.779,15.599 149.039,17.423 144.968,18.637 C 138.241,20.644 113.452,23.946 88.021,25.007 C 62.453,26.071 41.041,24.751 41.041,24.751 C 41.041,24.751 38.688,29.994 32.777,31.223 C 26.867,32.452 19.705,27.106 15.95,21.429 C 14.386,19.064 5.425,14.549 4.975,11.581 C 4.527,8.609 20.773,6.911 20.773,6.911"
- id="path13"
- style="fill:none;stroke:#d5c6b2;stroke-dasharray:3" />
-</g>
-</svg>
\ No newline at end of file
--- a/screensaverapp/snsrapplication/themes/icons/hbdefault/scalable/oled-clock-background.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="350"
- height="350"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="background_simple_clock.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- version="1.0">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.98994949"
- inkscape:cx="205.94631"
- inkscape:cy="184.91651"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1280"
- inkscape:window-height="977"
- inkscape:window-x="-4"
- inkscape:window-y="-4">
- <inkscape:grid
- type="xygrid"
- id="grid2383"
- visible="true"
- enabled="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-160,-132.36218)">
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3197"
- width="10"
- height="22.761906"
- x="330"
- y="154.93361" />
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3199"
- width="10"
- height="25.190475"
- x="302.36218"
- y="-487.85715"
- transform="matrix(0,1,-1,0,0,0)" />
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3203"
- width="10"
- height="25.190472"
- x="302.36218"
- y="-207.33334"
- transform="matrix(0,1,-1,0,0,0)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3231"
- sodipodi:cx="335"
- sodipodi:cy="197.36218"
- sodipodi:rx="5"
- sodipodi:ry="5"
- d="M 340,197.36218 A 5,5 0 1 1 330,197.36218 A 5,5 0 1 1 340,197.36218 z"
- transform="matrix(0.8660254,-0.5,0.5,0.8660254,-125.2996,181.09989)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3233"
- sodipodi:cx="335"
- sodipodi:cy="417.36218"
- sodipodi:rx="5"
- sodipodi:ry="5"
- d="M 340,417.36218 A 5,5 0 1 1 330,417.36218 A 5,5 0 1 1 340,417.36218 z"
- transform="matrix(0.8660254,-0.5,0.5,0.8660254,-92.299602,238.25756)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3239"
- sodipodi:cx="335"
- sodipodi:cy="197.36218"
- sodipodi:rx="5"
- sodipodi:ry="5"
- d="M 340,197.36218 A 5,5 0 1 1 330,197.36218 A 5,5 0 1 1 340,197.36218 z"
- transform="matrix(0.5,-0.8660254,0.8660254,0.5,-127.09242,428.64123)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3241"
- sodipodi:cx="335"
- sodipodi:cy="417.36218"
- sodipodi:rx="5"
- sodipodi:ry="5"
- d="M 340,417.36218 A 5,5 0 1 1 330,417.36218 A 5,5 0 1 1 340,417.36218 z"
- transform="matrix(0.5,-0.8660254,0.8660254,0.5,-69.93475,461.64123)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3243"
- sodipodi:cx="335"
- sodipodi:cy="197.36218"
- sodipodi:rx="5"
- sodipodi:ry="5"
- d="M 340,197.36218 A 5,5 0 1 1 330,197.36218 A 5,5 0 1 1 340,197.36218 z"
- transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,207.56784,768.32015)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3245"
- sodipodi:cx="335"
- sodipodi:cy="417.36218"
- sodipodi:rx="5"
- sodipodi:ry="5"
- d="M 340,417.36218 A 5,5 0 1 1 330,417.36218 A 5,5 0 1 1 340,417.36218 z"
- transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,264.72551,735.32015)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3247"
- sodipodi:cx="335"
- sodipodi:cy="197.36218"
- sodipodi:rx="5"
- sodipodi:ry="5"
- d="M 340,197.36218 A 5,5 0 1 1 330,197.36218 A 5,5 0 1 1 340,197.36218 z"
- transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,455.1073,770.96611)" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3249"
- sodipodi:cx="335"
- sodipodi:cy="417.36218"
- sodipodi:rx="5"
- sodipodi:ry="5"
- d="M 340,417.36218 A 5,5 0 1 1 330,417.36218 A 5,5 0 1 1 340,417.36218 z"
- transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,488.10729,713.80843)" />
- <rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect3251"
- width="10"
- height="22.761906"
- x="330"
- y="438.36218" />
- </g>
-</svg>
--- a/screensaverapp/snsrapplication/themes/icons/hbdefault/scalable/oled-clock-date-frame.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- baseProfile="tiny"
- id="Layer_1"
- x="0px"
- y="0px"
- width="40"
- height="20"
- xml:space="preserve"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="oled-clock-date-frame.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
- id="metadata18"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs16"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="153 : 18 : 1"
- inkscape:persp3d-origin="76.5 : 12 : 1"
- id="perspective20" /></defs><sodipodi:namedview
- inkscape:window-height="844"
- inkscape:window-width="1280"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- showgrid="true"
- inkscape:zoom="20.2"
- inkscape:cx="10.693069"
- inkscape:cy="10"
- inkscape:window-x="154"
- inkscape:window-y="172"
- inkscape:current-layer="Layer_1"
- showguides="true"
- inkscape:guide-bbox="true"><inkscape:grid
- type="xygrid"
- id="grid2408"
- visible="true"
- enabled="true" /><sodipodi:guide
- orientation="1,0"
- position="20,126.22222"
- id="guide2410" /><sodipodi:guide
- orientation="0,1"
- position="-229.33333,142.66667"
- id="guide2412" /></sodipodi:namedview>
-
-<rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5496"
- width="10"
- height="124.99615"
- x="15"
- y="30" /><rect
- style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.73845792000000010;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect2384"
- width="35.895233"
- height="15.873453"
- x="2.0634999"
- y="2.0335598" /></svg>
\ No newline at end of file
--- a/screensaverapp/snsrapplication/themes/icons/hbdefault/scalable/oled-clock-hour-hand.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- baseProfile="tiny"
- id="Layer_1"
- width="45"
- height="240"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="analog-clock-hour-hand.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- xml:space="preserve"><metadata
- id="metadata18"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs16"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="131 : 18 : 1"
- inkscape:persp3d-origin="65.5 : 12 : 1"
- id="perspective20" /></defs><sodipodi:namedview
- inkscape:window-height="977"
- inkscape:window-width="1280"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- showgrid="true"
- inkscape:zoom="1.8984925"
- inkscape:cx="-151.22579"
- inkscape:cy="119"
- inkscape:window-x="-4"
- inkscape:window-y="-4"
- inkscape:current-layer="Layer_1"
- showguides="true"
- inkscape:guide-bbox="true"><inkscape:grid
- type="xygrid"
- id="grid2388"
- visible="true"
- enabled="true" /><sodipodi:guide
- orientation="1,0"
- position="22.719875,92.741784"
- id="guide2385" /><sodipodi:guide
- orientation="0,1"
- position="-105.03286,119.93114"
- id="guide2387" /></sodipodi:namedview>
-
-<rect
- style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#ffffff;stroke-width:7.99999952;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5442"
- width="7.3333335"
- height="58.601177"
- x="18.666666"
- y="71.398819" /></svg>
\ No newline at end of file
--- a/screensaverapp/snsrapplication/themes/icons/hbdefault/scalable/oled-clock-minute-hand.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- baseProfile="tiny"
- id="Layer_1"
- x="0px"
- y="0px"
- width="40"
- height="285"
- xml:space="preserve"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="analog-clock-minute-hand.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
- id="metadata18"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs16"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="153 : 18 : 1"
- inkscape:persp3d-origin="76.5 : 12 : 1"
- id="perspective20" /></defs><sodipodi:namedview
- inkscape:window-height="844"
- inkscape:window-width="1280"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- showgrid="true"
- inkscape:zoom="2.25"
- inkscape:cx="-66.333333"
- inkscape:cy="177.55556"
- inkscape:window-x="0"
- inkscape:window-y="88"
- inkscape:current-layer="Layer_1"
- showguides="true"
- inkscape:guide-bbox="true"><inkscape:grid
- type="xygrid"
- id="grid2408"
- visible="true"
- enabled="true" /><sodipodi:guide
- orientation="1,0"
- position="20,126.22222"
- id="guide2410" /><sodipodi:guide
- orientation="0,1"
- position="-229.33333,142.66667"
- id="guide2412" /></sodipodi:namedview>
-
-<rect
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.4000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect5496"
- width="10"
- height="124.99615"
- x="15"
- y="30" /></svg>
\ No newline at end of file
Binary file screensaverapp/snsrapplication/themes/icons/theme1/analog-clock-background.png has changed
--- a/screensaverapp/snsrapplication/themes/icons/theme1/analog-clock-hour-hand.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- baseProfile="tiny"
- id="Layer_1"
- width="45"
- height="240"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="analog-clock-hour-hand.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- xml:space="preserve"><metadata
- id="metadata18"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs16"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="131 : 18 : 1"
- inkscape:persp3d-origin="65.5 : 12 : 1"
- id="perspective20" /></defs><sodipodi:namedview
- inkscape:window-height="844"
- inkscape:window-width="1440"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- showgrid="true"
- inkscape:zoom="2.6848739"
- inkscape:cx="-52.463224"
- inkscape:cy="119"
- inkscape:window-x="18"
- inkscape:window-y="71"
- inkscape:current-layer="Layer_1"
- showguides="true"
- inkscape:guide-bbox="true"><inkscape:grid
- type="xygrid"
- id="grid2388"
- visible="true"
- enabled="true" /><sodipodi:guide
- orientation="1,0"
- position="22.719875,92.741784"
- id="guide2385" /><sodipodi:guide
- orientation="0,1"
- position="-105.03286,119.93114"
- id="guide2387" /></sodipodi:namedview>
-<g
- id="g3"
- transform="matrix(0,-0.968254,1,0,7.874,128.80784)">
-
- <image
- width="126"
- height="34"
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAAAiCAYAAACZb20EAAAACXBIWXMAAAsSAAALEgHS3X78AAAA GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA0hJREFUeNrsmvtvEkEQxzvAP+Ur GmOMMaa1qY9GTWPUtLTYhyDYFoQGpE0R2mJtocaEGKPxrdUYozE+o/5ZI2qjB707dtiZO1p3flyO vd35fuaxLNBlrCNsOhrG5rHZhSpIvQ+My/2zVGz4r9jo8ly+VAEj/DaxTCKCrZ6xPpAtrLBqFTIS eG+5qTFLpKMvazAR77HNpibQPqYtowQWkvkyGOE73OYzUexqWdSRMGr/wWRuEYzwHWKl7GVsHdH6 ottZfKYErsKvzk+jW92JXJkzoLRhS9cSCo0cksQldwZ12qLpIjQIv1ZMWWikNxvheN4A4WLLc5Po rgnN56j5wXiyAL8Fu72Qxnaoa/WawVjuvwKiUtjImEjxFa/PVTrFXyNQK2fIi+Wk9/yl7JaA41Yp hdwpGJmcjm00AaFgIEBOHe5nTyDVqVp5BnWY5vCdvABOPgS5SLeb3/JwKFAXnu4kEHISDSg+YGmw 6krzZ+8gDKz7/PWIB+LmOJyEDkPA4Gg5YLGtcxUIwaquhd0M5IjXaSq4nEE+79o5iQNWYWClYB0Y TUMoGAxoUudUXnSd4VbTwXdY6VwywEoGdvPo6ZGrsBHx4NgLqNYLfafazQHaSpKAZYFVuKaTfdv4 zv5wsvEHnPXadWKrhdrphr5ptm5LBFbyUjizq8LwicEpcETi1Z0ism7O5QcEno6NrwOQgNVRSBTd /qbF912YBFIOf323hN5FNIu6TNGIUsmFr6lUXHrvuQToFe+6vbm3iOob0XcTHSj0IaKpR1YhWJs2 1X02DsS2Ud3e3l9Cqehic4ZkfWXZEn8JOjIQ8/4+/t2Dslie9KXBYzuleAPs4TNRJU09uSB5//AG ykURyone4bBapzl0aoKkpe83Yx8eLSN7ZHjdsPkAa/MsB/vHt5bwrezj45soFtF+nBgEgD1wcoys 47b7o8SnJysoIRf6QIIKsPuPj5p/2XaSfX7aCCBf1v/3hX3HLratnxFe0L48W2WtAtb79719ES3t jPDC9vV5hT3x7+kd0dbNCO+BfXtRRZX8rkLI7qPDLJoZ4T2y7+tV1O0Hd/WE2fQywnsNwMs10nXl zp4hEY2M8D7aDzsI6raje0hcl58CDAA856IpWveJ7AAAAABJRU5ErkJggg=="
- transform="translate(2.7529,1.3525)"
- id="image5">
- </image>
- <path
- d="M 102.457,2.182 C 97.374,2.873 93.998,6.657 91.807,10.626 C 65.705,14.422 39.322,14.508 12.465,9.214 C 6.546,8.044 3.421,9.383 3.04,14.554 C 2.654,19.783 5.286,18.916 13.199,21.079 C 46.57,30.197 88.088,27.713 88.088,27.713 C 88.431,27.717 88.757,27.706 89.083,27.686 C 91.598,32.689 98.175,36.957 107.247,33.139 C 112.039,31.122 114.781,26.138 116.952,24.064 C 119.338,21.787 128.957,16.525 128.476,11.992 C 128.177,9.171 117.227,6.249 108.641,5.65 C 107.431,3.313 105.461,1.773 102.457,2.182 z M 106.349,4.221 C 106.766,4.596 107.129,5.069 107.463,5.586 C 107.728,5.966 107.831,6.187 107.959,6.439 C 109.067,8.634 109.573,11.531 109.52,13.961 C 109.446,17.465 108.624,19.333 108.16,19.808 C 107.648,20.331 106.628,20.124 106.168,19.949 C 104.31,19.255 102.903,16.179 102.371,14.991 C 102.371,14.991 102.163,14.179 102.099,14.032 C 101.785,13.325 101.05,13.964 101.202,14.394 C 101.356,14.827 101.577,15.322 101.577,15.322 C 101.577,15.322 104.879,22.741 108.464,20.569 C 110.206,19.515 111.136,11.651 109.047,6.534 C 115.69,7.172 123.548,9.143 126.466,11.069 C 127.238,11.579 127.586,12.104 127.528,12.475 C 126.914,16.26 117.919,21.883 116.298,23.286 C 114.425,24.905 111.321,30.451 106.922,32.228 C 101.322,34.489 96.991,33.896 93.414,31.46 C 91.887,30.418 90.742,29.109 90.05,27.593 L 89.654,26.626 C 89.558,26.342 88.581,26.529 88.645,26.698 C 88.436,26.704 88.232,26.718 88.014,26.718 C 87.558,26.752 46.211,29.264 13.38,20.351 C 4.911,18.053 3.672,18.5 3.878,14.787 C 3.974,13.054 4.715,11.059 5.941,10.275 C 7.427,9.325 9.957,9.489 12.337,9.959 C 45.963,16.587 69.436,14.456 91.405,11.368 C 90.703,12.703 91.534,13.254 92.281,11.667 C 92.356,11.517 92.437,11.371 92.513,11.222 C 92.534,11.219 92.834,10.617 92.834,10.617 C 94.874,6.887 98.053,3.704 102.567,2.98 C 104.069,2.738 105.327,3.309 106.349,4.221 z"
- id="path7"
- style="fill:#534741" />
- <path
- d="M 109.672,16.708 C 112.999,16.003 113.687,17.167 114.319,17.608 C 114.632,17.826 115.493,17.327 114.772,16.757 C 113.543,15.782 112.191,15.302 109.818,15.649 C 109.818,15.648 109.543,16.736 109.672,16.708 z"
- id="path9"
- style="fill:#534741" />
- <path
- d="M 103.416,17.996 C 103.416,17.996 98.376,19.599 97.113,23.244 C 96.207,25.856 96.077,26.784 96.034,28.692 C 96.022,29.13 95.033,29.624 95.054,28.686 C 95.075,27.748 95.715,23.173 97.029,21.33 C 98.313,19.529 101.109,17.672 102.686,17.166 C 103.781,16.813 103.416,17.996 103.416,17.996 z"
- id="path11"
- style="fill:#534741" />
- <path
- d="M 102.902,13.834 C 102.902,13.834 103.563,16.602 105.257,17.822 C 106.953,19.043 107.945,19.165 108.297,15.01 C 108.65,10.858 107.184,5.131 103.628,4.012 C 100.074,2.894 94.053,12.05 93.081,13.105 C 92.111,14.161 90.677,13.425 88.908,12.918 C 87.851,12.616 82.874,13.799 81.547,14.014 C 79.489,14.345 62.844,15.75 45.36,15.276 C 25.688,14.745 18.796,12.787 9.555,10.793 C 6.136,10.052 5.265,13.528 5.181,14.189 C 5.099,14.853 4.612,17.395 8.823,18.007 C 14.265,18.796 17.4,21.935 42.783,23.769 C 68.308,25.615 89.75,24.95 89.75,24.95 C 89.75,24.95 91.942,30.263 97.813,31.671 C 103.686,33.076 111.006,27.954 114.931,22.392 C 116.565,20.078 125.66,15.843 126.201,12.889 C 126.74,9.93 110.552,7.737 110.552,7.737"
- id="path13"
- style="fill:none;stroke:#d5c6b2;stroke-dasharray:3" />
-</g>
-</svg>
\ No newline at end of file
--- a/screensaverapp/snsrapplication/themes/icons/theme1/analog-clock-minute-hand.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- version="1.0"
- baseProfile="tiny"
- id="Layer_1"
- x="0px"
- y="0px"
- width="40"
- height="285"
- xml:space="preserve"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="analog-clock-minute-hand.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
- id="metadata18"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
- id="defs16"><inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 18 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="153 : 18 : 1"
- inkscape:persp3d-origin="76.5 : 12 : 1"
- id="perspective20" /></defs><sodipodi:namedview
- inkscape:window-height="844"
- inkscape:window-width="1440"
- inkscape:pageshadow="2"
- inkscape:pageopacity="0.0"
- guidetolerance="10.0"
- gridtolerance="10.0"
- objecttolerance="10.0"
- borderopacity="1.0"
- bordercolor="#666666"
- pagecolor="#ffffff"
- id="base"
- showgrid="true"
- inkscape:zoom="2.25"
- inkscape:cx="17"
- inkscape:cy="142"
- inkscape:window-x="22"
- inkscape:window-y="29"
- inkscape:current-layer="Layer_1"
- showguides="true"
- inkscape:guide-bbox="true"><inkscape:grid
- type="xygrid"
- id="grid2408"
- visible="true"
- enabled="true" /><sodipodi:guide
- orientation="1,0"
- position="20,126.22222"
- id="guide2410" /><sodipodi:guide
- orientation="0,1"
- position="-229.33333,142.66667"
- id="guide2412" /></sodipodi:namedview>
-<g
- id="g3"
- transform="matrix(0,0.9666667,-1,0,35.2145,2.6649299)">
-
- <image
- width="150"
- height="34"
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAiCAYAAAC9WiCBAAAACXBIWXMAAAsSAAALEgHS3X78AAAA GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtZJREFUeNrsmo9Lk0EYx73Nfyoz CQokIn9RSUSESDmdis7N6RyO5n64dJtiOgdWRGU/FGtFREQURfVnPTVjlnNbd+/dvXf33vOFwRjv vc9tz+f5vs/djrRJViwUgPrPMoVt0obytKQleGFmFP53TTpfQsAQLHolZoPAcv2du5sImMfkk3FT v9/H9ErOTwCmwnLHysSnfkPgnANoMXQhvY7OZQtYuUToLwpcvkI3OJosIlxeBCufDAOtw4iCqV7h RB7hMlzttTdrqVlhfQ4cAUXcYhGlo2NtZOe40wkglojJWA5dSzMVU5GmSZ6OrxzLF9nKxTgfdsAz mErBuSxC5pIamQyLadQMgZRX48xkiHYnHgUiaYSOUiwmwmMYwWiWHCZlp7AIMgOp7J3qw96eWTIe RCdm4KZhVIv9sHn3+0mLYNQ7E9qo1Q90v7gI+s5bVfGJX2z9AcvnE2suIOJLcq9JXJyzMhQFQSze NI7u+GRzCdRVqpl7DCr2+BTWPNPgY6g+K6XAjEpV6TBg4Jzd1wkPfFHO6NuDmNjAuOgSQh+VMpqR /Z1lEB0JdFkWWtU7qdHgSIw07doOHuTASA+21dk0WWxduTVPqJYDlYcrLvddippaIwtIHzseGI4S 5nXm20er4M1KBfPmrElr0DcUIcw9ViO9e1wArboQ2x7Rit3p0s0w02YX08XvnxbB3Gqzca/MuS7e CHHtmjIP/rC7Bva4hHlEsEa9cH1ayn91jm768fk6eBYmQ5unVo7cfW3K9T96HQf89HIDdKt02w6f nh+c1PZkANfEPu/dAzHVZm5TKyr0uasTnjpX1s5FJSHS6T57Ocgc5Ms+JfCkFmMcDwvq5FhVfT3Y klr3XQNjmHQbwarq26uSFLjO9I8iVDaDVdX31yfh4qGtsw+hQrD+Bayyze1ep3sDCBWC1Vg/KmVm wDp6RxAoBIteP980h+xUD8LkRf0SYAB1yg1o6fi76wAAAABJRU5ErkJggg=="
- transform="translate(1.7949,0.8145)"
- id="image5">
- </image>
- <path
- d="M 22.749,4.884 C 14.146,5.218 3.113,7.81 2.728,10.614 C 2.107,15.133 11.566,20.688 13.88,23.04 C 15.985,25.176 18.573,30.242 23.306,32.407 C 32.255,36.495 38.963,32.432 41.626,27.511 C 41.948,27.538 42.277,27.56 42.616,27.566 C 42.616,27.566 106.848,29.618 140.496,21.58 C 150.479,19.19 151.108,18.526 150.848,15.365 C 150.411,10.14 147.545,8.752 141.598,9.74 C 114.583,14.215 65.398,14.963 39.424,10.373 C 37.355,6.334 34.096,2.452 29.036,1.604 C 26.044,1.106 24.027,2.583 22.749,4.884 z M 28.869,2.428 C 33.391,3.182 36.471,6.541 38.399,10.328 C 38.399,10.328 38.681,10.938 38.703,10.944 C 38.774,11.096 38.851,11.243 38.918,11.397 C 39.618,13.004 40.547,12.626 39.886,11.272 C 61.749,15.026 107.885,16.116 141.701,10.514 C 144.093,10.118 146.689,9.996 148.024,11.15 C 149.253,12.212 149.793,12.879 149.991,15.464 C 150.175,17.851 149.543,18.737 140.338,20.844 C 107.177,28.435 43.178,26.621 42.725,26.572 C 42.508,26.568 42.302,26.55 42.094,26.534 C 42.165,26.368 41.197,26.151 41.088,26.427 L 40.663,27.384 C 39.925,28.884 38.695,30.171 37.139,31.163 C 33.486,33.489 28.466,33.736 23.705,31.539 C 19.745,29.714 15.234,22.715 14.589,22.06 C 13.951,21.413 12.823,20.677 11.576,19.722 C 8.408,17.289 3.678,13.813 3.7,11.03 C 3.7,10.937 3.701,10.846 3.718,10.753 C 3.738,10.613 3.982,10.242 4.77,9.757 C 7.745,7.922 15.66,6.192 22.318,5.752 C 20.07,10.802 20.763,18.695 22.473,19.802 C 25.992,22.082 29.516,14.766 29.516,14.766 C 29.516,14.766 29.75,14.281 29.917,13.85 C 30.085,13.42 29.371,12.76 29.033,13.459 C 28.966,13.601 28.731,14.413 28.731,14.413 C 28.164,15.584 26.665,18.613 24.784,19.253 C 24.323,19.409 23.306,19.589 22.806,19.024 C 22.345,18.502 21.587,16.668 21.615,13.164 C 21.635,10.733 22.233,7.851 23.409,5.696 C 23.539,5.444 23.651,5.226 23.927,4.851 C 24.274,4.349 24.654,3.886 25.083,3.522 C 26.132,2.648 27.371,2.173 28.869,2.428 z"
- id="path7"
- style="fill:#534741" />
- <path
- d="M 21.346,15.69 C 17.543,14.596 17.311,15.712 16.6,15.9 C 15.889,16.088 15.436,15.466 16.307,14.912 C 17.45,14.183 18.904,13.871 21.272,14.724 C 21.271,14.724 21.473,15.73 21.346,15.69 z"
- id="path9"
- style="fill:#534741" />
- <path
- d="M 27.671,17.255 C 27.671,17.255 31.934,19.105 33.395,21.474 C 34.878,23.879 34.735,27.889 34.731,28.328 C 34.729,28.764 35.619,29.263 35.628,28.322 C 35.634,27.388 35.684,23.03 34.25,20.999 C 32.944,19.149 30.197,17.04 28.389,16.503 C 27.542,16.253 27.671,17.255 27.671,17.255 z"
- id="path11"
- style="fill:#534741" />
- <path
- d="M 28.233,13.238 C 28.233,13.238 27.491,15.984 25.759,17.154 C 24.027,18.322 23.033,18.413 22.806,14.252 C 22.579,10.086 24.181,4.258 27.807,3.399 C 32.389,2.313 37.131,11.728 38.071,12.809 C 39.009,13.893 40.409,12.823 42.25,12.753 C 43.484,12.706 47.135,13.441 48.467,13.611 C 50.334,13.854 69.743,15.963 87.237,16.023 C 106.913,16.088 135.151,13.116 144.449,11.403 C 147.89,10.769 148.653,14.27 148.718,14.935 C 148.779,15.599 149.039,17.423 144.968,18.637 C 138.241,20.644 113.452,23.946 88.021,25.007 C 62.453,26.071 41.041,24.751 41.041,24.751 C 41.041,24.751 38.688,29.994 32.777,31.223 C 26.867,32.452 19.705,27.106 15.95,21.429 C 14.386,19.064 5.425,14.549 4.975,11.581 C 4.527,8.609 20.773,6.911 20.773,6.911"
- id="path13"
- style="fill:none;stroke:#d5c6b2;stroke-dasharray:3" />
-</g>
-</svg>
\ No newline at end of file
--- a/screensaverapp/snsrapplication/themes/icons/theme2/analog-clock-background.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,241 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="354.33069"
- height="354.33069"
- id="svg2493"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="mouse-clock-face.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2495">
- <linearGradient
- id="linearGradient4099">
- <stop
- style="stop-color:#000d38;stop-opacity:1;"
- offset="0"
- id="stop4101" />
- <stop
- style="stop-color:#001e81;stop-opacity:0;"
- offset="1"
- id="stop4103" />
- </linearGradient>
- <linearGradient
- id="linearGradient4081">
- <stop
- style="stop-color:#25137b;stop-opacity:1;"
- offset="0"
- id="stop4083" />
- <stop
- style="stop-color:#f2f2f2;stop-opacity:0;"
- offset="1"
- id="stop4085" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2501" />
- <inkscape:perspective
- id="perspective2510"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3455"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3468"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3566"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3917"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3968"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3981"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.4142136"
- inkscape:cx="197.15386"
- inkscape:cy="125.15219"
- inkscape:document-units="px"
- inkscape:current-layer="g2477"
- showgrid="false"
- units="cm"
- inkscape:window-width="1067"
- inkscape:window-height="789"
- inkscape:window-x="411"
- inkscape:window-y="48" />
- <metadata
- id="metadata2498">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3906"
- sodipodi:cx="207.18228"
- sodipodi:cy="122.04612"
- sodipodi:rx="4.9497476"
- sodipodi:ry="9.5459414"
- d="M 212.13203,122.04612 A 4.9497476,9.5459414 0 1 1 202.23253,122.04612 A 4.9497476,9.5459414 0 1 1 212.13203,122.04612 z" />
- <g
- id="g4010"
- transform="matrix(1.0938885,0,0,1.0938885,-404.21086,-53.859896)">
- <path
- style="fill:#fcf200"
- d="M 522.98504,368.31402 C 521.0279,368.07255 517.52437,367.84618 515.19941,367.81099 C 507.88469,367.70027 494.99055,364.80597 480.76889,360.08252 C 468.04701,355.85719 460.86704,352.4847 448.88692,345.1073 C 428.02463,332.26023 409.85592,314.13244 396.68189,293.01985 C 390.00125,282.3135 382.85,266.15449 380.08588,255.51941 C 379.42069,252.96007 378.44327,249.38795 377.91384,247.58136 C 377.3844,245.77477 376.56738,241.95629 376.09824,239.09586 C 375.6291,236.23542 374.93549,232.04742 374.55689,229.78918 C 373.62734,224.24471 373.62734,197.01202 374.55689,191.46756 C 374.93549,189.20932 375.6291,185.02132 376.09824,182.16088 C 376.56738,179.30045 377.3844,175.48197 377.91384,173.67538 C 378.44327,171.86879 379.42069,168.29667 380.08588,165.73733 C 381.67704,159.61524 386.02819,148.39711 389.85347,140.55455 C 399.33144,121.12288 416.33142,100.25535 433.832,86.570814 C 441.72729,80.397103 454.11508,72.590859 463.25044,68.032592 C 466.83624,66.243385 474.27696,63.330385 480.76889,61.174213 C 500.10895,54.750782 512.49744,52.703037 532.01799,52.703037 C 551.53855,52.703037 563.92704,54.750782 583.2671,61.174213 C 595.98898,65.399545 603.16895,68.772033 615.14907,76.149436 C 636.01135,88.996504 654.18006,107.12429 667.35409,128.23689 C 674.03474,138.94323 681.18599,155.10224 683.95011,165.73733 C 684.61529,168.29667 685.59271,171.86879 686.12215,173.67538 C 686.65159,175.48197 687.46861,179.30045 687.93775,182.16088 C 688.40688,185.02132 689.10049,189.20932 689.4791,191.46756 C 690.40865,197.01202 690.40865,224.24471 689.4791,229.78918 C 689.10049,232.04742 688.40688,236.23542 687.93775,239.09586 C 687.46861,241.95629 686.65159,245.77477 686.12215,247.58136 C 685.59271,249.38795 684.61529,252.96007 683.95011,255.51941 C 682.35894,261.6415 678.00779,272.85963 674.18252,280.70218 C 664.70455,300.13386 647.70456,321.00138 630.20399,334.68592 C 622.3087,340.85963 609.92091,348.66587 600.78555,353.22414 C 593.79677,356.71133 574.85926,363.22646 566.78117,364.92277 C 563.92074,365.52343 560.22544,366.30871 558.5694,366.66784 C 552.63637,367.95446 528.95144,369.05016 522.98504,368.31402 z"
- id="path3999" />
- <path
- style="fill:#0091db"
- d="M 522.98504,368.31402 C 521.0279,368.07255 517.52437,367.84618 515.19941,367.81099 C 507.88469,367.70027 494.99055,364.80597 480.76889,360.08252 C 468.04701,355.85719 460.86704,352.4847 448.88692,345.1073 C 428.02463,332.26023 409.85592,314.13244 396.68189,293.01985 C 390.00125,282.3135 382.85,266.15449 380.08588,255.51941 C 379.42069,252.96007 378.44327,249.38795 377.91384,247.58136 C 377.3844,245.77477 376.56738,241.95629 376.09824,239.09586 C 375.6291,236.23542 374.93549,232.04742 374.55689,229.78918 C 373.62734,224.24471 373.62734,197.01202 374.55689,191.46756 C 374.93549,189.20932 375.6291,185.02132 376.09824,182.16088 C 376.56738,179.30045 377.3844,175.48197 377.91384,173.67538 C 378.44327,171.86879 379.42069,168.29667 380.08588,165.73733 C 381.67704,159.61524 386.02819,148.39711 389.85347,140.55455 C 399.33144,121.12288 416.33142,100.25535 433.832,86.570814 C 441.72729,80.397103 454.11508,72.590859 463.25044,68.032592 C 466.83624,66.243385 474.27696,63.330385 480.76889,61.174213 C 500.10895,54.750782 512.49744,52.703037 532.01799,52.703037 C 551.53855,52.703037 563.92704,54.750782 583.2671,61.174213 C 595.98898,65.399545 603.16895,68.772033 615.14907,76.149436 C 636.01135,88.996504 654.18006,107.12429 667.35409,128.23689 C 674.03474,138.94323 681.18599,155.10224 683.95011,165.73733 C 684.61529,168.29667 685.59271,171.86879 686.12215,173.67538 C 686.65159,175.48197 687.46861,179.30045 687.93775,182.16088 C 688.40688,185.02132 689.10049,189.20932 689.4791,191.46756 C 690.40865,197.01202 690.40865,224.24471 689.4791,229.78918 C 689.10049,232.04742 688.40688,236.23542 687.93775,239.09586 C 687.46861,241.95629 686.65159,245.77477 686.12215,247.58136 C 685.59271,249.38795 684.61529,252.96007 683.95011,255.51941 C 682.35894,261.6415 678.00779,272.85963 674.18252,280.70218 C 664.70455,300.13386 647.70456,321.00138 630.20399,334.68592 C 622.3087,340.85963 609.92091,348.66587 600.78555,353.22414 C 593.79677,356.71133 574.85926,363.22646 566.78117,364.92277 C 563.92074,365.52343 560.22544,366.30871 558.5694,366.66784 C 552.63637,367.95446 528.95144,369.05016 522.98504,368.31402 z M 544.93293,306.9247 C 551.95382,306.00565 564.68926,302.31826 571.70824,299.17223 C 584.28263,293.53617 598.92524,282.45781 607.2204,272.30429 C 610.6997,268.04553 617.20027,258.10037 619.57904,253.39694 C 621.5367,249.52616 624.61346,241.42728 625.94793,236.63232 C 632.14719,214.3574 629.69313,187.85794 619.57904,167.8598 C 617.20027,163.15636 610.6997,153.2112 607.2204,148.95245 C 598.92524,138.79893 584.28263,127.72057 571.70824,122.08451 C 564.68926,118.93848 551.95382,115.25108 544.93293,114.33203 C 539.01284,113.55708 525.02314,113.55708 519.10306,114.33203 C 512.08216,115.25108 499.34672,118.93848 492.32775,122.08451 C 479.75336,127.72057 465.11075,138.79893 456.81559,148.95245 C 453.33629,153.2112 446.83571,163.15636 444.45695,167.8598 C 434.34286,187.85794 431.88879,214.3574 438.08806,236.63232 C 439.42252,241.42728 442.49929,249.52616 444.45695,253.39694 C 446.83571,258.10037 453.33629,268.04553 456.81559,272.30429 C 465.10737,282.45367 479.74616,293.53026 492.32775,299.17492 C 499.25611,302.2833 510.29235,305.57664 517.51052,306.68976 C 523.34444,307.58941 538.84079,307.72218 544.93293,306.9247 z"
- id="path3997" />
- <path
- style="fill:#0e5fa6"
- d="M 522.98504,368.31402 C 521.0279,368.07255 517.52437,367.84618 515.19941,367.81099 C 507.88469,367.70027 494.99055,364.80597 480.76889,360.08252 C 468.04701,355.85719 460.86704,352.4847 448.88692,345.1073 C 428.02463,332.26023 409.85592,314.13244 396.68189,293.01985 C 390.00125,282.3135 382.85,266.15449 380.08588,255.51941 C 379.42069,252.96007 378.44327,249.38795 377.91384,247.58136 C 377.3844,245.77477 376.56738,241.95629 376.09824,239.09586 C 375.6291,236.23542 374.93549,232.04742 374.55689,229.78918 C 373.62734,224.24471 373.62734,197.01202 374.55689,191.46756 C 374.93549,189.20932 375.6291,185.02132 376.09824,182.16088 C 376.56738,179.30045 377.3844,175.48197 377.91384,173.67538 C 378.44327,171.86879 379.42069,168.29667 380.08588,165.73733 C 381.67704,159.61524 386.02819,148.39711 389.85347,140.55455 C 399.33144,121.12288 416.33142,100.25535 433.832,86.570814 C 441.72729,80.397103 454.11508,72.590859 463.25044,68.032592 C 466.83624,66.243385 474.27696,63.330385 480.76889,61.174213 C 500.10895,54.750782 512.49744,52.703037 532.01799,52.703037 C 551.53855,52.703037 563.92704,54.750782 583.2671,61.174213 C 595.98898,65.399545 603.16895,68.772033 615.14907,76.149436 C 636.01135,88.996504 654.18006,107.12429 667.35409,128.23689 C 674.03474,138.94323 681.18599,155.10224 683.95011,165.73733 C 684.61529,168.29667 685.59271,171.86879 686.12215,173.67538 C 686.65159,175.48197 687.46861,179.30045 687.93775,182.16088 C 688.40688,185.02132 689.10049,189.20932 689.4791,191.46756 C 690.40865,197.01202 690.40865,224.24471 689.4791,229.78918 C 689.10049,232.04742 688.40688,236.23542 687.93775,239.09586 C 687.46861,241.95629 686.65159,245.77477 686.12215,247.58136 C 685.59271,249.38795 684.61529,252.96007 683.95011,255.51941 C 682.35894,261.6415 678.00779,272.85963 674.18252,280.70218 C 664.70455,300.13386 647.70456,321.00138 630.20399,334.68592 C 622.3087,340.85963 609.92091,348.66587 600.78555,353.22414 C 593.79677,356.71133 574.85926,363.22646 566.78117,364.92277 C 563.92074,365.52343 560.22544,366.30871 558.5694,366.66784 C 552.63637,367.95446 528.95144,369.05016 522.98504,368.31402 z M 554.18979,363.65422 C 575.90409,360.74803 593.76823,354.19214 613.84397,341.76195 C 633.7532,329.43487 652.45896,310.85936 663.9919,291.96324 C 674.98273,273.95532 682.61921,253.06264 685.61658,232.80016 C 687.36497,220.98091 687.36497,200.27583 685.61658,188.45658 C 682.61921,168.1941 674.98273,147.30141 663.9919,129.2935 C 652.45896,110.39737 633.7532,91.821869 613.84397,79.494782 C 587.43328,63.142222 563.164,56.247024 532.01799,56.247024 C 500.87199,56.247024 476.60271,63.142222 450.19202,79.494782 C 430.28279,91.821869 411.57702,110.39737 400.04409,129.2935 C 389.05326,147.30141 381.41677,168.1941 378.4194,188.45658 C 376.67101,200.27583 376.67101,220.98091 378.4194,232.80016 C 381.41677,253.06264 389.05326,273.95532 400.04409,291.96324 C 411.57702,310.85936 430.28279,329.43487 450.19202,341.76195 C 464.91897,350.88035 478.10545,356.63334 493.42265,360.62259 C 510.64002,365.10671 534.45852,366.29501 554.18979,363.65422 z M 530.90732,350.65858 C 530.74992,350.2484 530.68907,345.85742 530.77211,340.90085 C 530.91613,332.30421 530.97355,331.88892 532.01799,331.88892 C 533.07115,331.88892 533.1129,332.25389 533.1129,341.46182 C 533.1129,350.14992 533.02419,351.05181 532.1532,351.21955 C 531.62537,351.3212 531.06472,351.06877 530.90732,350.65858 z M 516.62304,347.24218 C 516.11414,345.916 516.67497,339.89609 517.37239,339.19867 C 517.70898,338.86208 518.37047,338.73483 518.84235,338.91591 C 519.74717,339.26312 519.93253,342.78996 519.22075,346.11598 C 518.83442,347.92128 517.16189,348.64639 516.62304,347.24218 z M 545.1761,347.52246 C 544.98,347.20516 544.67543,345.22648 544.49928,343.12541 C 544.22409,339.84289 544.31078,339.2547 545.11531,338.94597 C 546.7263,338.32777 547.34664,339.6802 547.34664,343.81056 C 547.34664,347.03214 547.18312,347.77301 546.43964,347.92002 C 545.9408,348.01866 545.3722,347.83975 545.1761,347.52246 z M 502.38422,345.03913 C 501.89865,343.77377 503.13285,338.09393 504.1045,337.12228 C 504.82571,336.40105 505.01275,336.40124 505.73541,337.12391 C 506.45881,337.8473 506.44323,338.37415 505.59855,341.75424 C 504.91688,344.482 504.37208,345.61978 503.68572,345.74907 C 503.15788,345.8485 502.57221,345.52903 502.38422,345.03913 z M 559.43227,345.36894 C 559.26911,345.10494 558.76959,343.31995 558.32224,341.40229 C 557.60695,338.33615 557.60582,337.81867 558.31285,337.11163 C 559.01988,336.4046 559.2151,336.40589 559.93149,337.12228 C 560.88733,338.07811 562.14065,343.76515 561.6673,344.99867 C 561.31484,345.91717 559.91448,346.14917 559.43227,345.36894 z M 488.68338,341.16909 C 488.32097,340.22465 489.81556,334.45585 490.63495,333.63646 C 491.43156,332.83985 492.8752,333.6297 492.8752,334.86218 C 492.8752,335.46253 492.36479,337.31792 491.74096,338.98525 C 490.61927,341.98324 489.34505,342.89334 488.68338,341.16909 z M 572.28018,338.94559 C 570.89547,335.24459 570.97433,333.53127 572.52942,333.53127 C 573.37384,333.53127 573.84659,334.2201 574.59589,336.54226 C 575.71762,340.01855 575.64522,341.65976 574.35933,341.90469 C 573.6976,342.03074 573.1348,341.22975 572.28018,338.94559 z M 475.49361,336.72714 C 475.11724,336.57527 474.82363,336.04042 474.84116,335.5386 C 474.89989,333.85692 477.80782,328.60651 478.77997,328.42688 C 480.52692,328.1041 480.50901,329.99271 478.73093,333.59848 C 477.02376,337.06043 476.81635,337.26088 475.49361,336.72714 z M 585.33016,333.64938 C 583.52846,329.99572 583.50159,328.10272 585.25601,328.42688 C 586.6612,328.68652 590.28322,336.54226 588.99774,336.54226 C 588.87182,336.54226 588.38811,336.68834 587.92283,336.86688 C 587.29828,337.10655 586.6197,336.26444 585.33016,333.64938 z M 460.90114,331.82665 C 460.59976,331.04128 465.7628,321.30472 468.92392,316.69713 C 470.07949,315.01279 472.07204,314.65306 472.07204,316.12877 C 472.07204,317.11129 464.89696,330.09635 463.43918,331.75205 C 462.38498,332.94937 461.34371,332.97998 460.90114,331.82665 z M 600.59681,331.75205 C 599.13903,330.09635 591.96395,317.11129 591.96395,316.12877 C 591.96395,314.65306 593.9565,315.01279 595.11207,316.69713 C 598.27319,321.30472 603.43623,331.04128 603.13485,331.82665 C 602.69228,332.97998 601.651,332.94937 600.59681,331.75205 z M 450.38181,321.51304 C 450.08168,320.73091 450.98154,319.11605 453.70236,315.55412 C 454.57839,314.40727 456.38335,314.52617 456.60572,315.74538 C 456.80244,316.82389 452.8568,321.97756 451.65755,322.20851 C 451.14086,322.30802 450.56677,321.99506 450.38181,321.51304 z M 610.77962,321.09517 C 607.35646,317.26752 606.53715,314.62819 608.78091,314.65649 C 609.90938,314.67072 613.58829,319.54144 613.58829,321.02127 C 613.58829,322.49006 612.06299,322.5302 610.77962,321.09517 z M 439.23711,312.74277 C 438.68628,312.07907 439.02547,311.40052 441.15266,308.91061 C 443.83156,305.77492 444.67508,305.35749 445.7399,306.64052 C 446.23406,307.23595 445.83581,308.04812 443.86077,310.47268 C 441.25709,313.66898 440.36805,314.10547 439.23711,312.74277 z M 620.17521,310.47268 C 618.20018,308.04812 617.80193,307.23595 618.29609,306.64052 C 619.36091,305.35749 620.20443,305.77492 622.88333,308.91061 C 625.01052,311.40052 625.3497,312.07907 624.79888,312.74277 C 623.66794,314.10547 622.7789,313.66898 620.17521,310.47268 z M 517.78425,310.27541 C 485.43316,305.47942 456.23687,284.48701 441.7218,255.58577 C 427.69694,227.66061 427.69694,193.59613 441.7218,165.67096 C 449.62855,149.92769 461.51001,136.77254 476.94667,126.67002 C 497.35251,113.31541 521.40298,107.6666 544.6979,110.75706 C 577.61014,115.12342 607.57517,136.32382 622.31419,165.67096 C 636.33905,193.59613 636.33905,227.66061 622.31419,255.58577 C 614.40744,271.32905 602.52597,284.48419 587.08932,294.58672 C 566.26291,308.21656 541.58264,313.80347 517.78425,310.27541 z M 544.93293,306.9247 C 551.95382,306.00565 564.68926,302.31826 571.70824,299.17223 C 584.28263,293.53617 598.92524,282.45781 607.2204,272.30429 C 610.6997,268.04553 617.20027,258.10037 619.57904,253.39694 C 621.5367,249.52616 624.61346,241.42728 625.94793,236.63232 C 632.14719,214.3574 629.69313,187.85794 619.57904,167.8598 C 617.20027,163.15636 610.6997,153.2112 607.2204,148.95245 C 598.92524,138.79893 584.28263,127.72057 571.70824,122.08451 C 564.68926,118.93848 551.95382,115.25108 544.93293,114.33203 C 539.01284,113.55708 525.02314,113.55708 519.10306,114.33203 C 512.08216,115.25108 499.34672,118.93848 492.32775,122.08451 C 479.75336,127.72057 465.11075,138.79893 456.81559,148.95245 C 453.33629,153.2112 446.83571,163.15636 444.45695,167.8598 C 434.34286,187.85794 431.88879,214.3574 438.08806,236.63232 C 439.42252,241.42728 442.49929,249.52616 444.45695,253.39694 C 446.83571,258.10037 453.33629,268.04553 456.81559,272.30429 C 465.10737,282.45367 479.74616,293.53026 492.32775,299.17492 C 499.25611,302.2833 510.29235,305.57664 517.51052,306.68976 C 523.34444,307.58941 538.84079,307.72218 544.93293,306.9247 z M 428.98266,302.22576 C 428.72802,301.56217 429.46154,300.56681 431.60024,298.67378 C 434.70286,295.92755 435.21195,295.77312 436.16769,297.28828 C 436.64309,298.04196 436.25704,298.64589 434.017,300.65274 C 431.1215,303.24681 429.56152,303.73424 428.98266,302.22576 z M 630.1487,300.77942 C 627.355,298.26085 627.09153,297.63889 628.36917,296.57855 C 629.05187,296.01195 629.70148,296.33423 632.2288,298.49339 C 635.32637,301.13972 635.90588,302.76185 633.83841,302.99884 C 633.20218,303.07177 631.66752,302.14865 630.1487,300.77942 z M 419.88657,291.4307 C 419.5016,290.42747 420.32231,289.47371 423.45463,287.28422 C 426.02571,285.48704 427.72845,285.35905 427.72845,286.96296 C 427.72845,287.92904 422.26679,292.19867 421.03099,292.19867 C 420.56365,292.19867 420.04866,291.85309 419.88657,291.4307 z M 639.18166,289.975 C 637.60089,288.76182 636.30754,287.40317 636.30754,286.95577 C 636.30754,285.35876 638.01442,285.48994 640.58135,287.28422 C 643.71368,289.47371 644.53439,290.42747 644.14941,291.4307 C 643.65627,292.71581 642.19495,292.2876 639.18166,289.975 z M 409.85751,280.96807 C 409.34928,279.64365 410.75109,278.52834 418.4109,274.16278 C 425.32102,270.22448 426.90727,269.74993 426.90727,271.62092 C 426.90727,272.36175 424.90133,273.84387 419.7904,276.87931 C 411.56575,281.76403 410.35431,282.26271 409.85751,280.96807 z M 650.48595,280.49842 C 642.71057,276.30543 637.12871,272.59748 637.12871,271.62541 C 637.12871,269.74962 638.71077,270.22209 645.62509,274.16278 C 653.21493,278.48846 654.68455,279.64928 654.19296,280.93032 C 653.75169,282.08026 653.32767,282.03086 650.48595,280.49842 z M 405.47823,266.7352 C 405.00914,265.51276 405.97169,264.64845 409.37136,263.23936 C 414.75361,261.00855 415.96623,263.44601 410.75172,266.01397 C 407.29171,267.7179 405.92696,267.90455 405.47823,266.7352 z M 653.27854,266.02192 C 651.14686,264.96463 650.26755,264.21224 650.26755,263.44553 C 650.26755,261.85054 652.00308,261.90726 655.46834,263.61551 C 657.61959,264.67599 658.47933,265.41244 658.47933,266.19471 C 658.47933,267.80305 656.75402,267.74572 653.27854,266.02192 z M 400.93147,253.89445 C 400.55564,253.66217 400.33469,253.02267 400.44049,252.47333 C 400.66309,251.31742 406.78097,249.11484 408.22735,249.66987 C 409.39973,250.11975 409.36019,251.51864 408.15706,252.15719 C 406.2026,253.19448 401.5924,254.30293 400.93147,253.89445 z M 658.71249,253.13861 C 655.95213,252.21456 655.19462,251.7252 655.19462,250.86607 C 655.19462,249.36395 656.75703,249.25038 660.39541,250.48802 C 662.57411,251.22914 663.45223,251.81983 663.5722,252.62497 C 663.82272,254.30617 662.58962,254.4365 658.71249,253.13861 z M 396.70756,239.33278 C 396.2099,238.0359 397.17841,237.40964 400.87451,236.63833 C 403.76821,236.03448 404.34913,236.05045 405.0519,236.75322 C 406.2449,237.94622 405.19587,238.90639 401.93553,239.60561 C 398.2247,240.40144 397.09502,240.34249 396.70756,239.33278 z M 661.67538,239.56199 C 658.82232,238.92149 657.8405,237.89681 658.98409,236.75322 C 659.68686,236.05045 660.26778,236.03448 663.16148,236.63833 C 666.85758,237.40964 667.82609,238.0359 667.32843,239.33278 C 666.9617,240.28846 665.22503,240.35888 661.67538,239.56199 z M 394.54569,225.17183 C 393.98016,223.69809 394.98037,223.19365 399.16335,222.84296 C 402.52869,222.56082 403.11696,222.64486 403.42667,223.45196 C 404.00443,224.95756 402.87602,225.53212 398.76346,225.82637 C 395.47544,226.06163 394.84988,225.96455 394.54569,225.17183 z M 662.03776,225.46718 C 661.17445,225.22703 660.66913,224.69133 660.66913,224.01626 C 660.66913,223.04439 661.03852,222.95317 664.68845,223.0237 C 668.85433,223.1042 670.08139,223.63146 669.51824,225.09904 C 669.27276,225.73872 668.45336,225.94313 666.29769,225.90245 C 664.70748,225.87243 662.79051,225.67656 662.03776,225.46718 z M 392.69155,211.8103 C 390.72339,211.22053 391.00702,209.95936 393.239,209.37601 C 395.97931,208.6598 409.46893,209.12087 410.30746,209.9594 C 410.83446,210.48639 410.83268,210.77212 410.29911,211.30569 C 409.52574,212.07906 394.9796,212.49593 392.69155,211.8103 z M 655.19462,211.81503 C 652.82498,211.27219 653.1232,209.9485 655.74207,209.38511 C 658.9952,208.68527 671.68651,209.10802 672.52194,209.94405 C 673.06861,210.49111 673.06867,210.76563 672.52221,211.31268 C 671.76061,212.07511 658.06337,212.47221 655.19462,211.81503 z M 396.24998,198.10369 C 395.09294,197.85628 394.60763,197.43055 394.60763,196.66297 C 394.60763,195.67198 394.9673,195.57664 398.58461,195.60877 C 402.67919,195.64514 404.03009,196.23231 403.45673,197.72645 C 403.10928,198.63188 399.58321,198.81646 396.24998,198.10369 z M 660.60931,197.80478 C 660.03156,196.29918 661.15996,195.72462 665.27252,195.43037 C 668.56055,195.19511 669.18611,195.29219 669.4903,196.08491 C 670.05583,197.55864 669.05562,198.06309 664.87264,198.41377 C 661.50729,198.69591 660.91903,198.61188 660.60931,197.80478 z M 400.72477,184.59904 C 397.19973,183.86939 396.21313,183.2124 396.70756,181.92396 C 397.08729,180.93439 398.52879,180.86094 401.97667,181.65548 C 404.82084,182.31089 405.87849,183.04087 405.48179,184.07466 C 405.04341,185.21705 404.17363,185.31293 400.72477,184.59904 z M 658.98409,184.50351 C 657.79109,183.31052 658.84012,182.35034 662.10046,181.65113 C 665.81129,180.8553 666.94097,180.91425 667.32843,181.92396 C 667.82609,183.22084 666.85758,183.8471 663.16148,184.6184 C 660.26778,185.22226 659.68686,185.20628 658.98409,184.50351 z M 403.36685,170.72627 C 401.43828,170.04142 400.58061,169.42407 400.46379,168.63665 C 400.21362,166.95047 401.44342,166.81925 405.3235,168.11813 C 408.08386,169.04218 408.84137,169.53154 408.84137,170.39067 C 408.84137,171.85774 406.88997,171.97737 403.36685,170.72627 z M 655.10474,170.90132 C 654.6349,169.67694 655.43665,169.08274 659.07934,167.95568 C 662.6926,166.83771 663.81388,167.00766 663.5722,168.63665 C 663.45506,169.42623 662.603,170.03604 660.66913,170.71435 C 657.19736,171.93207 655.52188,171.98837 655.10474,170.90132 z M 408.56764,157.64123 C 406.42673,156.58584 405.55666,155.84271 405.55666,155.06952 C 405.55666,153.43869 406.97097,153.4717 410.54682,155.18602 C 412.86945,156.29952 413.76843,157.03239 413.76843,157.81234 C 413.76843,159.40612 412.03191,159.34899 408.56764,157.64123 z M 650.17551,158.30428 C 649.75223,157.20124 650.67036,156.40531 654.19549,154.81933 C 659.41006,152.47325 660.60655,155.11583 655.46834,157.63056 C 651.97619,159.33968 650.63818,159.50999 650.17551,158.30428 z M 418.4109,147.09396 C 410.75109,142.7284 409.34928,141.61308 409.85751,140.28867 C 410.35431,138.99403 411.56575,139.4927 419.7904,144.37742 C 424.90133,147.41287 426.90727,148.89499 426.90727,149.63582 C 426.90727,151.50681 425.32102,151.03225 418.4109,147.09396 z M 637.03667,150.09251 C 636.8544,149.61751 637.0469,148.92283 637.46444,148.54877 C 638.65201,147.48488 651.21876,140.19055 652.59692,139.76518 C 654.29258,139.2418 654.88294,140.84642 653.49147,142.19661 C 652.13412,143.51369 639.06383,150.95614 638.10816,150.95614 C 637.70111,150.95614 637.21894,150.5675 637.03667,150.09251 z M 423.101,133.70969 C 420.05302,131.53431 419.4937,130.84984 419.89963,129.79203 C 420.37743,128.54689 421.75869,128.96593 424.83665,131.28982 C 426.70376,132.6995 427.72804,133.8567 427.61737,134.43138 C 427.32338,135.95792 425.9417,135.73713 423.101,133.70969 z M 636.67251,135.26252 C 635.80866,134.39868 636.48884,133.33627 639.2314,131.26561 C 642.27929,128.96444 643.65965,128.54974 644.13636,129.79203 C 644.54262,130.85072 643.98144,131.53631 640.93674,133.70102 C 638.2258,135.62842 637.35667,135.94669 636.67251,135.26252 z M 431.60024,122.58296 C 429.46154,120.68992 428.72802,119.69456 428.98266,119.03098 C 429.56152,117.5225 431.1215,118.00993 434.017,120.604 C 436.25704,122.61085 436.64309,123.21478 436.16769,123.96845 C 435.21195,125.48361 434.70286,125.32919 431.60024,122.58296 z M 628.20525,124.56896 C 627.12024,123.48395 627.42418,122.86973 630.25057,120.4357 C 633.14056,117.94691 634.48629,117.55331 635.05332,119.03098 C 635.30796,119.69455 634.5744,120.69008 632.43575,122.58337 C 629.14798,125.49393 629.13589,125.4996 628.20525,124.56896 z M 441.15266,112.34612 C 439.02547,109.85622 438.68628,109.17766 439.23711,108.51396 C 440.36805,107.15126 441.25709,107.58775 443.86077,110.78405 C 445.83581,113.20862 446.23406,114.02078 445.7399,114.61622 C 444.67508,115.89925 443.83156,115.48181 441.15266,112.34612 z M 618.29609,114.61622 C 617.80193,114.02078 618.20018,113.20862 620.17521,110.78405 C 622.7789,107.58775 623.66794,107.15126 624.79888,108.51396 C 625.3497,109.17766 625.01052,109.85622 622.88333,112.34612 C 620.20443,115.48181 619.36091,115.89925 618.29609,114.61622 z M 452.36378,103.92572 C 450.19407,100.87769 449.89693,99.221947 451.51963,99.221947 C 452.76376,99.221947 456.83325,104.25857 456.60642,105.51764 C 456.27151,107.37666 454.29142,106.6337 452.36378,103.92572 z M 607.50212,105.82148 C 607.19719,105.02683 609.73816,100.87362 611.34531,99.539802 C 612.33381,98.71942 613.86202,99.113575 613.86202,100.18891 C 613.86202,100.58909 612.93819,102.19087 611.80907,103.7484 C 609.78077,106.54631 608.09216,107.35909 607.50212,105.82148 z M 468.92392,104.5596 C 465.7628,99.952011 460.59976,90.215454 460.90114,89.430081 C 461.34371,88.276753 462.38498,88.307359 463.43918,89.50468 C 464.89696,91.160384 472.07204,104.14545 472.07204,105.12796 C 472.07204,106.60367 470.07949,106.24394 468.92392,104.5596 z M 591.96395,105.12796 C 591.96395,104.14545 599.13903,91.160384 600.59681,89.50468 C 601.651,88.307359 602.69228,88.276753 603.13485,89.430081 C 603.43623,90.215454 598.27319,99.952011 595.11207,104.5596 C 593.9565,106.24394 591.96395,106.60367 591.96395,105.12796 z M 477.68333,92.241938 C 476.91415,91.275691 474.8093,86.35613 474.8093,85.524635 C 474.8093,84.79114 476.29007,84.002545 476.92756,84.396538 C 477.78865,84.92872 480.41232,91.254292 480.10458,92.056232 C 479.70529,93.096769 478.441,93.193738 477.68333,92.241938 z M 583.94693,92.096692 C 583.6259,91.260084 586.21794,84.94689 587.10843,84.396538 C 587.83349,83.948423 589.22642,84.839397 589.19483,85.731089 C 589.1773,86.225797 588.49983,87.985501 587.68934,89.641543 C 586.19323,92.69846 584.58317,93.754712 583.94693,92.096692 z M 530.90732,88.976672 C 530.74992,88.566488 530.68907,84.17551 530.77211,79.218945 C 530.91613,70.622302 530.97355,70.207008 532.01799,70.207008 C 533.07115,70.207008 533.1129,70.571976 533.1129,79.779915 C 533.1129,88.468007 533.02419,89.369905 532.1532,89.537643 C 531.62537,89.639294 531.06472,89.386858 530.90732,88.976672 z M 490.25904,87.074175 C 489.33035,85.234194 488.36161,80.926184 488.68629,80.080086 C 488.8636,79.618017 489.36824,79.239961 489.8077,79.239961 C 490.74073,79.239961 493.0097,84.871426 492.76454,86.578681 C 492.55502,88.037756 490.90963,88.363153 490.25904,87.074175 z M 571.35155,87.159231 C 571.0081,86.264211 572.30548,81.383033 573.29574,79.844502 C 574.01101,78.733225 575.54784,79.541519 575.49651,81.001997 C 575.47237,81.688918 575.04125,83.480433 574.53847,84.98314 C 573.59123,87.814227 572.01572,88.890019 571.35155,87.159231 z M 503.8678,83.945801 C 502.83401,82.700154 501.87073,76.594873 502.59388,75.871713 C 503.79891,74.666693 504.81783,75.902965 505.659,79.59063 C 506.2667,82.254829 506.34001,83.500527 505.91896,84.007867 C 505.1658,84.915373 504.65977,84.90006 503.8678,83.945801 z M 558.11575,84.006324 C 557.65176,83.447255 557.73361,82.317261 558.44418,79.471615 C 559.22067,76.36196 559.58714,75.681525 560.48548,75.681525 C 561.45819,75.681525 561.56676,76.005798 561.4583,78.587134 C 561.2717,83.028258 559.58012,85.77078 558.11575,84.006324 z M 516.96467,81.160237 C 516.06618,78.797022 516.2656,73.788648 517.2736,73.401845 C 518.73993,72.839159 519.26841,74.064776 519.34894,78.214842 C 519.41507,81.622646 519.28449,82.246125 518.47016,82.410857 C 517.84171,82.537989 517.32543,82.109119 516.96467,81.160237 z M 544.51837,81.663726 C 544.07504,80.508431 544.75886,74.218167 545.39717,73.579855 C 545.67615,73.300869 546.2905,73.220764 546.76239,73.401845 C 547.7624,73.785582 547.97251,78.789929 547.08646,81.120402 C 546.49242,82.682853 545.02831,82.992609 544.51837,81.663726 z"
- id="path3995" />
- <path
- style="fill:#0b4c6d"
- d="M 524.07994,368.2955 C 522.12281,368.06421 518.6192,367.84618 516.29416,367.81099 C 512.44235,367.75268 509.95781,367.3443 497.25481,364.68146 C 489.36568,363.02772 471.39079,356.86431 464.10175,353.31361 C 454.19961,348.48999 440.573,339.81301 432.28297,333.05245 C 424.24853,326.50033 413.30304,315.62684 409.02417,309.94663 C 407.41814,307.81462 404.90952,304.53743 403.44947,302.66399 C 399.85034,298.0458 392.61592,286.01899 389.41565,279.33355 C 386.52271,273.29014 382.03263,262.19012 381.44345,259.62529 C 381.23594,258.722 380.24497,255.1379 379.24128,251.66063 C 377.45921,245.48662 375.94635,238.07647 374.55248,228.69427 C 373.63861,222.54296 373.63861,198.71377 374.55248,192.56246 C 375.94635,183.18026 377.45921,175.77012 379.24128,169.59611 C 380.24497,166.11884 381.23594,162.53474 381.44345,161.63144 C 382.03263,159.06662 386.52271,147.96659 389.41565,141.92318 C 392.61592,135.23775 399.85034,123.21093 403.44947,118.59275 C 404.90952,116.71931 407.41814,113.44211 409.02417,111.3101 C 413.30304,105.6299 424.24853,94.756406 432.28297,88.204285 C 440.573,81.443721 454.19961,72.766743 464.10175,67.943125 C 471.38416,64.395655 489.34821,58.234748 497.25481,56.573035 C 515.09499,52.823603 524.6958,52.133007 544.33566,53.186459 C 551.13,53.550898 555.63742,54.230976 566.78117,56.573035 C 574.68778,58.234748 592.65183,64.395655 599.93423,67.943125 C 609.83638,72.766743 623.46298,81.443721 631.75302,88.204285 C 639.78746,94.756406 650.73295,105.6299 655.01182,111.3101 C 656.61785,113.44211 659.12647,116.71931 660.58651,118.59275 C 664.18565,123.21093 671.42007,135.23775 674.62034,141.92318 C 677.51328,147.96659 682.00336,159.06662 682.59254,161.63144 C 682.80004,162.53474 683.79102,166.11884 684.79471,169.59611 C 686.57678,175.77012 688.08964,183.18026 689.4835,192.56246 C 690.39737,198.71377 690.39737,222.54296 689.4835,228.69427 C 688.08964,238.07647 686.57678,245.48662 684.79471,251.66063 C 683.79102,255.1379 682.80004,258.722 682.59254,259.62529 C 682.00336,262.19012 677.51328,273.29014 674.62034,279.33355 C 671.42007,286.01899 664.18565,298.0458 660.58651,302.66399 C 659.12647,304.53743 656.61785,307.81462 655.01182,309.94663 C 650.73295,315.62684 639.78746,326.50033 631.75302,333.05245 C 623.46298,339.81301 609.83638,348.48999 599.93423,353.31361 C 595.50686,355.47031 588.73081,358.08801 581.86833,360.29276 C 571.15275,363.73541 568.47413,364.42129 557.20077,366.60902 C 549.67578,368.06934 530.45003,369.04829 524.07994,368.2955 z M 553.95586,364.19525 C 575.93618,361.30618 594.26198,354.58693 614.40947,342.02965 C 634.08307,329.76773 653.11879,310.76397 664.57315,291.95017 C 675.54451,273.92971 683.25252,252.72653 686.17549,232.52644 C 687.93306,220.38016 687.93306,200.87658 686.17549,188.7303 C 683.25252,168.53021 675.54451,147.32702 664.57315,129.30657 C 653.11879,110.49277 634.08307,91.489 614.40947,79.227079 C 588.08622,62.820645 563.1487,55.699538 532.01799,55.699538 C 500.88729,55.699538 475.94977,62.820645 449.62652,79.227079 C 429.95292,91.489 410.9172,110.49277 399.46283,129.30657 C 388.49147,147.32702 380.78347,168.53021 377.8605,188.7303 C 376.10292,200.87658 376.10292,220.38016 377.8605,232.52644 C 379.5214,244.00463 383.26719,257.52417 388.03234,269.2393 C 395.38266,287.31009 404.83241,301.98331 418.2973,316.23363 C 438.97984,338.1226 465.32002,353.8753 493.42265,361.1622 C 510.65223,365.62976 534.10255,366.80476 553.95586,364.19525 z M 531.56179,349.86358 C 531.36105,349.66285 531.19682,345.7212 531.19682,341.10435 C 531.19682,334.00776 531.32376,332.71009 532.01799,332.71009 C 532.71371,332.71009 532.83917,334.04831 532.83917,341.46932 C 532.83917,349.47137 532.61866,350.92046 531.56179,349.86358 z M 517.16239,344.4039 C 517.35386,343.00693 517.51052,341.40563 517.51052,340.84546 C 517.51052,340.28529 517.88854,339.82697 518.35056,339.82697 C 519.04173,339.82697 519.13092,340.33631 518.85386,342.70109 C 518.42372,346.37237 518.23508,346.94384 517.45329,346.94384 C 517.008,346.94384 516.9198,346.17375 517.16239,344.4039 z M 545.73126,346.25952 C 545.61444,345.88315 545.36733,344.28185 545.18213,342.70109 C 544.90507,340.33631 544.99426,339.82697 545.68543,339.82697 C 546.14745,339.82697 546.52546,340.28529 546.52546,340.84546 C 546.52546,341.40563 546.68213,343.00693 546.8736,344.4039 C 547.11619,346.17375 547.02799,346.94384 546.58269,346.94384 C 546.23122,346.94384 545.84807,346.6359 545.73126,346.25952 z M 503.15808,344.45285 C 502.65772,343.95249 504.11803,337.99543 504.7965,337.76928 C 505.61753,337.4956 505.62683,337.93101 504.87483,341.43745 C 504.31093,344.06679 503.75264,345.04741 503.15808,344.45285 z M 559.73184,343.5552 C 559.46902,342.85962 559.07333,341.21409 558.85253,339.89849 C 558.2275,336.17431 559.76811,337.28644 560.53459,341.11274 C 561.16435,344.25645 560.62121,345.90901 559.73184,343.5552 z M 489.23939,340.10491 C 489.44335,339.57341 489.88138,338.06167 490.2128,336.7455 C 490.57721,335.29829 491.12883,334.35245 491.60845,334.35245 C 492.18114,334.35245 492.29348,334.69474 492.01271,335.58422 C 490.81045,339.39292 490.24905,340.61111 489.5957,340.82889 C 489.09403,340.99611 488.98355,340.77163 489.23939,340.10491 z M 573.61627,340.23755 C 572.79041,337.95339 571.70824,334.73175 571.70824,334.55734 C 571.70824,334.44465 572.04852,334.35245 572.46443,334.35245 C 572.90048,334.35245 573.47571,335.36555 573.82319,336.7455 C 574.1546,338.06167 574.57974,339.53979 574.76793,340.03021 C 574.96061,340.53232 574.83782,340.92187 574.48689,340.92187 C 574.14413,340.92187 573.75235,340.61393 573.61627,340.23755 z M 475.9042,335.18827 C 475.9042,334.0869 478.20657,329.42538 478.75055,329.42538 C 479.45212,329.42538 479.26861,330.40577 478.02659,333.29292 C 476.8933,335.92733 475.9042,336.81062 475.9042,335.18827 z M 586.0094,333.29292 C 584.76738,330.40577 584.58386,329.42538 585.28544,329.42538 C 585.82942,329.42538 588.13179,334.0869 588.13179,335.18827 C 588.13179,336.81062 587.14269,335.92733 586.0094,333.29292 z M 461.67046,331.19792 C 461.67046,330.32009 469.96482,316.28654 470.48366,316.28654 C 471.49914,316.28654 470.82865,317.83435 466.93941,324.46836 C 463.37612,330.54638 461.67046,332.72487 461.67046,331.19792 z M 599.46829,328.46734 C 593.33172,318.20116 592.40182,316.28654 593.55233,316.28654 C 594.05429,316.28654 602.36553,330.30562 602.36553,331.1523 C 602.36553,332.41472 601.16004,331.29755 599.46829,328.46734 z M 451.26887,321.02202 C 451.26887,320.05427 454.40185,315.73909 455.10447,315.73909 C 456.05138,315.73909 455.70437,316.60335 453.70733,319.2188 C 451.64328,321.92201 451.26887,322.19888 451.26887,321.02202 z M 610.40648,319.32071 C 609.29604,317.86642 608.3875,316.44509 608.3875,316.1622 C 608.3875,315.12075 609.79932,316.16074 611.32593,318.32673 C 613.63202,321.59867 612.81786,322.47881 610.40648,319.32071 z M 439.77239,312.14806 C 439.77239,311.44569 443.89351,306.97986 444.54166,306.97986 C 445.60239,306.97986 445.4317,307.37144 443.2149,310.02344 C 441.46654,312.11504 439.77239,313.16062 439.77239,312.14806 z M 620.82109,310.02344 C 618.60428,307.37144 618.43359,306.97986 619.49433,306.97986 C 620.14248,306.97986 624.2636,311.44569 624.2636,312.14806 C 624.2636,313.16062 622.56945,312.11504 620.82109,310.02344 z M 517.78425,309.72924 C 493.68639,306.16151 469.92262,292.83628 454.87465,274.4535 C 443.92132,261.07278 437.94675,249.12205 434.31421,233.32716 C 428.25276,206.97092 433.29659,177.77471 447.59715,156.439 C 455.55546,144.56561 464.6602,135.48281 476.5819,127.52411 C 510.54015,104.85423 553.49584,104.85423 587.45409,127.52411 C 596.39915,133.49567 603.24496,139.57573 609.16134,146.80324 C 620.11467,160.18395 626.08924,172.13469 629.72178,187.92958 C 635.78323,214.28582 630.73939,243.48203 616.43883,264.81774 C 608.48053,276.69113 599.37579,285.77392 587.45409,293.73262 C 566.74309,307.55889 541.80306,313.28528 517.78425,309.72924 z M 544.93293,306.9247 C 551.95382,306.00565 564.68926,302.31826 571.70824,299.17223 C 584.28263,293.53617 598.92524,282.45781 607.2204,272.30429 C 610.6997,268.04553 617.20027,258.10037 619.57904,253.39694 C 621.5367,249.52616 624.61346,241.42728 625.94793,236.63232 C 632.14719,214.3574 629.69313,187.85794 619.57904,167.8598 C 617.20027,163.15636 610.6997,153.2112 607.2204,148.95245 C 598.92524,138.79893 584.28263,127.72057 571.70824,122.08451 C 564.68926,118.93848 551.95382,115.25108 544.93293,114.33203 C 539.01284,113.55708 525.02314,113.55708 519.10306,114.33203 C 512.08216,115.25108 499.34672,118.93848 492.32775,122.08451 C 479.75336,127.72057 465.11075,138.79893 456.81559,148.95245 C 453.33629,153.2112 446.83571,163.15636 444.45695,167.8598 C 434.34286,187.85794 431.88879,214.3574 438.08806,236.63232 C 439.42252,241.42728 442.49929,249.52616 444.45695,253.39694 C 446.83571,258.10037 453.33629,268.04553 456.81559,272.30429 C 465.10737,282.45367 479.74616,293.53026 492.32775,299.17492 C 499.25611,302.2833 510.29235,305.57664 517.51052,306.68976 C 523.34444,307.58941 538.84079,307.72218 544.93293,306.9247 z M 429.91826,301.84804 C 429.91826,301.09732 434.22458,297.12573 435.03857,297.12573 C 436.01822,297.12573 435.14578,298.68091 433.32996,300.17142 C 430.4411,302.54273 429.91826,302.79967 429.91826,301.84804 z M 631.23266,300.58648 C 629.81078,299.43582 628.64648,298.18642 628.64532,297.81005 C 628.64193,296.70848 629.31432,296.99929 631.8736,299.20624 C 635.19786,302.07286 634.61647,303.32485 631.23266,300.58648 z M 422.80139,288.8921 C 425.18895,286.79388 426.63355,286.17309 426.63355,287.2453 C 426.63355,287.92297 422.00101,291.11081 421.06039,291.08042 C 420.663,291.06759 421.44644,290.08284 422.80139,288.8921 z M 639.72911,289.40701 C 638.44944,288.50064 637.40244,287.52621 637.40244,287.24161 C 637.40244,286.173 638.84995,286.79644 641.2346,288.8921 C 644.12822,291.43505 643.09255,291.78927 639.72911,289.40701 z M 410.86333,280.11082 C 411.13919,279.28324 424.2733,271.41717 425.40178,271.40368 C 427.07637,271.38367 425.63849,272.52295 419.37981,276.17508 C 411.65642,280.68192 410.49388,281.21916 410.86333,280.11082 z M 645.19967,276.48805 C 638.45693,272.56865 636.92625,271.38328 638.63421,271.40368 C 639.69081,271.41631 652.88792,279.2566 653.14358,280.02358 C 653.53878,281.20918 652.61225,280.79682 645.19967,276.48805 z M 406.37784,266.03008 C 406.37784,265.4861 411.03935,263.18373 412.14072,263.18373 C 413.65379,263.18373 412.95082,264.05873 410.46908,265.26445 C 407.91095,266.50729 406.37784,266.79419 406.37784,266.03008 z M 653.4154,265.23172 C 651.06163,264.04931 650.41915,263.18373 651.89526,263.18373 C 652.99664,263.18373 657.65815,265.4861 657.65815,266.03008 C 657.65815,266.78851 655.82942,266.4444 653.4154,265.23172 z M 401.54707,252.76697 C 401.76188,252.12254 402.98716,251.55984 406.78843,250.35993 C 408.7537,249.73957 408.26184,251.09469 406.21066,251.95174 C 403.07866,253.26037 401.27766,253.5752 401.54707,252.76697 z M 659.04001,252.4557 C 656.75436,251.61903 655.62345,250.80221 656.09618,250.32947 C 656.54798,249.87768 662.22674,251.98045 662.46216,252.68671 C 662.73821,253.51485 661.75145,253.44824 659.04001,252.4557 z M 397.61861,238.95706 C 397.61861,238.41629 398.64176,237.94663 400.73604,237.52604 C 404.40397,236.78941 406.1127,237.59641 402.75217,238.47822 C 397.81122,239.77475 397.61861,239.79271 397.61861,238.95706 z M 664.5013,239.35585 C 664.2002,239.24529 662.87551,238.87728 661.55754,238.53804 C 660.07516,238.15649 659.35598,237.72649 659.67187,237.41061 C 660.43156,236.65092 666.41738,237.97054 666.41738,238.89771 C 666.41738,239.61054 665.67703,239.78756 664.5013,239.35585 z M 395.55615,224.75131 C 395.83874,223.90058 401.50593,223.08139 402.22663,223.78709 C 402.85321,224.40062 402.04086,224.67235 398.24862,225.11775 C 395.97941,225.38426 395.37331,225.30177 395.55615,224.75131 z M 664.77502,225.02713 C 662.08709,224.73645 661.21305,224.37098 661.80936,223.78709 C 662.51556,223.09558 668.19556,223.89549 668.47115,224.72525 C 668.69942,225.41258 668.49424,225.42934 664.77502,225.02713 z M 392.69155,210.62837 C 392.69155,210.28773 395.79377,210.08092 400.90332,210.08092 C 406.01287,210.08092 409.1151,210.28773 409.1151,210.62837 C 409.1151,210.969 406.01287,211.17582 400.90332,211.17582 C 395.79377,211.17582 392.69155,210.969 392.69155,210.62837 z M 654.92089,210.62837 C 654.92089,210.28773 658.02312,210.08092 663.13267,210.08092 C 668.24221,210.08092 671.34444,210.28773 671.34444,210.62837 C 671.34444,210.969 668.24221,211.17582 663.13267,211.17582 C 658.02312,211.17582 654.92089,210.969 654.92089,210.62837 z M 398.20857,197.54417 C 396.87701,197.36357 395.68239,196.89613 395.55387,196.50543 C 395.37284,195.95511 395.97999,195.87255 398.24862,196.13899 C 399.85925,196.32816 401.5006,196.5845 401.89606,196.70864 C 402.7555,196.97842 402.21597,198.07259 401.2816,197.95476 C 400.923,197.90953 399.54013,197.72477 398.20857,197.54417 z M 661.75316,197.47192 C 661.34511,196.81169 662.04619,196.57815 665.73306,196.1462 C 667.61314,195.92592 668.60718,196.01127 668.60718,196.39295 C 668.60718,197.10238 667.99087,197.30704 664.66198,197.70301 C 663.21227,197.87546 661.94009,197.77439 661.75316,197.47192 z M 400.21901,183.67929 C 398.51317,183.32378 397.61861,182.8548 397.61861,182.31603 C 397.61861,181.46311 397.7975,181.47889 402.69906,182.76421 C 403.83726,183.06268 404.62337,183.54174 404.44597,183.82879 C 404.07535,184.42846 403.76012,184.41731 400.21901,183.67929 z M 659.61744,183.87315 C 659.41611,183.54738 660.14639,183.07641 661.33693,182.76421 C 666.23664,181.47937 666.41738,181.46337 666.41738,182.31433 C 666.41738,182.83032 665.65688,183.27175 664.36443,183.50596 C 663.23531,183.71058 661.78407,184.00431 661.13944,184.1587 C 660.49483,184.31309 659.80992,184.18459 659.61744,183.87315 z M 404.49538,170.17537 C 401.50112,169.12146 400.16989,167.48696 402.85458,168.16077 C 405.49272,168.82291 408.02019,170.03423 408.02019,170.63646 C 408.02019,171.36407 407.78528,171.33334 404.49538,170.17537 z M 656.0158,170.67335 C 656.0158,170.03925 658.48792,168.83679 661.18141,168.16077 C 663.45029,167.59132 662.7567,169.03203 660.36459,169.85745 C 656.4437,171.21041 656.0158,171.29069 656.0158,170.67335 z M 408.70451,156.83629 C 406.35074,155.65388 405.70825,154.7883 407.18437,154.7883 C 408.28574,154.7883 412.94726,157.09067 412.94726,157.63465 C 412.94726,158.39307 411.11852,158.04896 408.70451,156.83629 z M 651.08873,157.63465 C 651.08873,157.09067 655.75024,154.7883 656.85162,154.7883 C 658.36469,154.7883 657.66171,155.66329 655.17997,156.86901 C 652.62184,158.11185 651.08873,158.39876 651.08873,157.63465 z M 417.91804,145.87831 C 414.17835,143.69671 411.00373,141.56713 410.86333,141.14592 C 410.67806,140.59011 410.89128,140.48817 411.64079,140.77421 C 413.61858,141.52899 426.0861,148.99804 426.0861,149.4281 C 426.0861,150.39338 424.40627,149.66334 417.91804,145.87831 z M 637.94989,149.4281 C 637.94989,148.99804 650.41741,141.52899 652.3952,140.77421 C 653.14471,140.48817 653.35793,140.59011 653.17266,141.14592 C 652.8968,141.9735 639.76269,149.83957 638.63421,149.85305 C 638.25783,149.85755 637.94989,149.66632 637.94989,149.4281 z M 422.80139,132.36464 C 421.44644,131.1739 420.663,130.18915 421.06039,130.17631 C 422.00101,130.14593 426.63355,133.33377 426.63355,134.01143 C 426.63355,135.08365 425.18895,134.46286 422.80139,132.36464 z M 637.40244,134.01143 C 637.40244,133.33377 642.03497,130.14593 642.9756,130.17631 C 643.37299,130.18915 642.58954,131.1739 641.2346,132.36464 C 638.84704,134.46286 637.40244,135.08365 637.40244,134.01143 z M 432.16238,122.05049 C 428.83813,119.18388 429.41952,117.93189 432.80333,120.67026 C 434.2252,121.82092 435.38951,123.07032 435.39067,123.44669 C 435.39406,124.54825 434.72167,124.25745 432.16238,122.05049 z M 628.64532,123.44669 C 628.64648,123.07032 629.81078,121.82092 631.23266,120.67026 C 634.61647,117.93189 635.19786,119.18388 631.8736,122.05049 C 629.31432,124.25745 628.64193,124.54825 628.64532,123.44669 z M 441.8044,111.84593 C 439.58759,109.19392 439.4169,108.80235 440.47764,108.80235 C 441.12579,108.80235 445.24691,113.26818 445.24691,113.97055 C 445.24691,114.98311 443.55276,113.93753 441.8044,111.84593 z M 618.78908,113.97055 C 618.78908,113.26818 622.9102,108.80235 623.55835,108.80235 C 624.61909,108.80235 624.4484,109.19392 622.23159,111.84593 C 620.48323,113.93753 618.78908,114.98311 618.78908,113.97055 z M 452.91466,103.2457 C 451.45482,101.23044 450.8085,99.495673 451.51752,99.495673 C 451.90733,99.495673 455.64849,104.5249 455.64849,105.04891 C 455.64849,106.15148 454.44416,105.35711 452.91466,103.2457 z M 608.3875,105.09454 C 608.3875,104.81164 609.29604,103.39031 610.40648,101.93602 C 612.81786,98.777921 613.63202,99.658062 611.32593,102.93 C 609.79932,105.09599 608.3875,106.13599 608.3875,105.09454 z M 465.83032,97.768759 C 461.64255,90.51901 461.13828,89.372908 462.30779,89.762745 C 463.0377,90.006051 470.92248,103.24802 470.95542,104.28588 C 471.01331,106.11027 469.63995,104.36388 465.83032,97.768759 z M 593.08057,104.28588 C 593.11351,103.24802 600.99828,90.006051 601.7282,89.762745 C 602.89771,89.372908 602.39344,90.51901 598.20567,97.768759 C 594.39604,104.36388 593.02267,106.11027 593.08057,104.28588 z M 477.10819,89.353172 C 475.84285,86.748716 475.57976,85.261929 476.38424,85.261929 C 476.87603,85.261929 479.18891,90.198776 479.18891,91.248522 C 479.18891,92.550361 478.2428,91.68854 477.10819,89.353172 z M 584.84708,91.248522 C 584.84708,90.198776 587.15995,85.261929 587.65175,85.261929 C 588.45623,85.261929 588.19314,86.748716 586.9278,89.353172 C 585.79319,91.68854 584.84708,92.550361 584.84708,91.248522 z M 531.31978,79.969291 C 531.4299,73.704342 531.65503,71.330611 532.15486,71.164443 C 532.68337,70.988738 532.83917,72.941548 532.83917,79.741792 C 532.83917,87.268498 532.71795,88.546639 532.00409,88.546639 C 531.28474,88.546639 531.18991,87.357984 531.31978,79.969291 z M 490.2128,84.511238 C 489.88138,83.195062 489.44335,81.683327 489.23939,81.151828 C 488.98355,80.485103 489.09403,80.260618 489.5957,80.427841 C 490.24905,80.645624 490.81045,81.863808 492.01271,85.672518 C 492.29348,86.561989 492.18114,86.904284 491.60845,86.904284 C 491.12883,86.904284 490.57721,85.958439 490.2128,84.511238 z M 572.02328,85.672518 C 573.22554,81.863808 573.78694,80.645624 574.44029,80.427841 C 574.94196,80.260618 575.05244,80.485103 574.79659,81.151828 C 574.59264,81.683327 574.1546,83.195062 573.82319,84.511238 C 573.45878,85.958439 572.90715,86.904284 572.42754,86.904284 C 571.85485,86.904284 571.7425,86.561989 572.02328,85.672518 z M 504.11636,82.93526 C 502.84615,79.001416 503.01519,74.290164 504.30415,77.701526 C 505.21635,80.115767 505.59878,83.619574 504.95007,83.619574 C 504.61306,83.619574 504.23789,83.311633 504.11636,82.93526 z M 558.85253,81.358245 C 559.38616,78.178628 560.10206,76.370292 560.68466,76.730356 C 561.382,77.161334 560.0367,83.221716 559.18033,83.507174 C 558.60828,83.697854 558.53762,83.234606 558.85253,81.358245 z M 517.27382,78.087511 C 517.06584,76.249269 517.03813,74.602808 517.21223,74.428708 C 517.86803,73.772909 518.47715,75.238172 518.81403,78.28192 C 519.08846,80.761275 519.00206,81.429767 518.4072,81.429767 C 517.88893,81.429767 517.5333,80.381034 517.27382,78.087511 z M 545.22195,78.28192 C 545.55884,75.238172 546.16796,73.772909 546.82376,74.428708 C 546.99786,74.602808 546.97015,76.249269 546.76217,78.087511 C 546.50269,80.381034 546.14706,81.429767 545.62879,81.429767 C 545.03393,81.429767 544.94753,80.761275 545.22195,78.28192 z"
- id="path3993" />
- <path
- style="fill:#162f60"
- d="M 524.6274,368.27427 C 522.36916,368.04218 518.30433,367.71565 515.59444,367.54867 C 512.88456,367.38169 508.94291,366.88471 506.83522,366.44426 C 504.72753,366.00382 500.78588,365.21487 498.07599,364.69105 C 490.4989,363.22638 470.46671,356.27892 462.93659,352.50419 C 454.45235,348.25117 442.06331,340.48282 435.12383,335.06465 C 421.15039,324.15452 405.75853,306.98593 396.69393,292.19867 C 390.79529,282.57609 382.81477,264.78244 380.95673,257.11042 C 380.48958,255.18152 379.59989,251.87885 378.97962,249.77116 C 377.74365,245.57131 375.60718,234.89843 374.54132,227.59937 C 374.15827,224.97628 373.8618,217.57185 373.8618,210.62837 C 373.8618,203.68489 374.15827,196.28046 374.54132,193.65737 C 375.60718,186.3583 377.74365,175.68543 378.97962,171.48557 C 379.59989,169.37788 380.48958,166.07522 380.95673,164.14632 C 382.05464,159.61298 386.99096,147.40611 390.82908,139.73338 C 395.7453,129.90539 399.1386,124.65639 408.39091,112.56748 C 413.18271,106.3066 427.67584,92.007304 435.12383,86.192087 C 442.06331,80.773914 454.45235,73.005561 462.93659,68.752543 C 470.4612,64.980572 490.49044,58.033033 498.07599,56.563747 C 500.78588,56.038855 504.78397,55.24449 506.96064,54.798493 C 509.13732,54.352495 512.95579,53.867576 515.44614,53.720894 C 517.9365,53.574213 522.29059,53.23228 525.12191,52.961044 C 528.25067,52.661315 533.29665,52.67203 537.98703,52.988363 C 542.23152,53.274623 547.41228,53.625446 549.49982,53.767969 C 551.58737,53.910492 555.03632,54.383118 557.16415,54.818249 C 559.29198,55.253381 563.25011,56.038855 565.96,56.563747 C 573.54555,58.033033 593.57479,64.980572 601.0994,68.752543 C 609.58363,73.005561 621.97268,80.773914 628.91215,86.192087 C 642.88559,97.102215 658.27746,114.27081 667.34206,129.05807 C 673.2407,138.68064 681.22121,156.4743 683.07925,164.14632 C 683.54641,166.07522 684.4361,169.37788 685.05637,171.48557 C 686.29234,175.68543 688.4288,186.3583 689.49467,193.65737 C 689.87772,196.28046 690.17419,203.68489 690.17419,210.62837 C 690.17419,217.57185 689.87772,224.97628 689.49467,227.59937 C 688.4288,234.89843 686.29234,245.57131 685.05637,249.77116 C 684.4361,251.87885 683.54641,255.18152 683.07925,257.11042 C 681.98135,261.64376 677.04502,273.85062 673.20691,281.52336 C 668.29069,291.35135 664.89739,296.60035 655.64508,308.68925 C 650.85328,314.95014 636.36015,329.24943 628.91215,335.06465 C 621.97268,340.48282 609.58363,348.25117 601.0994,352.50419 C 593.57479,356.27616 573.54555,363.2237 565.96,364.69299 C 563.25011,365.21788 559.29198,366.00335 557.16415,366.43848 C 555.03632,366.87361 551.58737,367.34624 549.49982,367.48876 C 547.41228,367.63129 542.13216,367.99161 537.76624,368.28949 C 533.40031,368.58736 529.58183,368.80074 529.28074,368.76367 C 528.97964,368.7266 526.88563,368.50637 524.6274,368.27427 z M 552.87929,364.75009 C 568.98048,362.64895 584.15472,358.22544 598.53337,351.44127 C 607.89864,347.02252 622.97036,337.27275 631.62452,330.03488 C 647.41808,316.82602 659.57204,302.05187 670.03663,283.34177 C 673.72406,276.74886 680.05424,260.47703 682.67055,250.86607 C 686.45361,236.96912 687.84313,226.15997 687.84313,210.62837 C 687.84313,199.62538 687.63988,196.39166 686.44907,188.44864 C 683.29759,167.4275 675.76117,146.74415 664.81835,129.08417 C 656.42261,115.53476 644.68032,102.141 631.62452,91.22185 C 622.97036,83.983977 607.89864,74.234209 598.53337,69.815466 C 557.00015,50.219154 507.03584,50.219154 465.50262,69.815466 C 456.13735,74.234209 441.06563,83.983977 432.41146,91.22185 C 416.6179,104.43071 404.46395,119.20486 393.99935,137.91497 C 390.31193,144.50788 383.98174,160.77971 381.36543,170.39067 C 377.58238,184.28762 376.19286,195.09676 376.19286,210.62837 C 376.19286,221.63136 376.39611,224.86508 377.58692,232.8081 C 380.73839,253.82924 388.27482,274.51259 399.21763,292.17257 C 411.55117,312.07694 429.3261,329.75124 449.94054,342.60831 C 460.91479,349.45286 467.83964,352.9013 478.47926,356.82004 C 501.5396,365.31351 527.42168,368.07219 552.87929,364.75009 z M 531.76104,341.46932 C 531.76104,335.43783 531.93737,332.70923 532.29172,333.25755 C 532.5836,333.70919 532.8224,337.40449 532.8224,341.46932 C 532.8224,345.53415 532.5836,349.22945 532.29172,349.6811 C 531.93737,350.22941 531.76104,347.50082 531.76104,341.46932 z M 517.41758,346.66841 C 516.97626,346.22709 517.56921,340.7232 518.12219,340.12806 C 518.73178,339.472 518.75733,345.30949 518.14906,346.26775 C 517.90728,346.64865 517.57812,346.82894 517.41758,346.66841 z M 545.76165,346.07474 C 545.236,344.70491 545.36812,339.54079 545.9138,340.12806 C 546.54123,340.80334 547.04081,346.35161 546.50404,346.68335 C 546.27782,346.82316 545.94375,346.54928 545.76165,346.07474 z M 503.50951,342.04577 C 503.91309,338.88749 504.56965,337.17624 505.06828,337.98303 C 505.44755,338.59671 504.26277,343.96028 503.61284,344.57192 C 503.33281,344.83544 503.28922,343.76969 503.50951,342.04577 z M 559.9705,344.06972 C 558.71382,339.91317 558.54493,336.20384 559.70689,338.28016 C 560.29753,339.33557 560.99384,344.75403 560.53883,344.75403 C 560.34004,344.75403 560.08429,344.44609 559.9705,344.06972 z M 489.63515,340.04552 C 489.58072,338.64393 490.63265,335.37667 491.37996,334.62617 C 492.11327,333.88974 491.53214,336.95095 490.48166,339.35814 C 489.85952,340.78378 489.6698,340.93784 489.63515,340.04552 z M 573.1715,338.48751 C 572.1621,335.52509 572.00405,334.13231 572.72805,334.57976 C 573.37296,334.97834 574.6215,339.57269 574.3259,340.45949 C 574.19467,340.85316 573.67519,339.96577 573.1715,338.48751 z M 475.99544,335.0342 C 476.09581,334.80697 476.64251,333.45202 477.21034,332.02322 C 478.1421,329.67865 479.18891,328.5861 479.18891,329.95819 C 479.18891,330.90582 476.7962,335.44735 476.29694,335.44735 C 476.03075,335.44735 475.89507,335.26143 475.99544,335.0342 z M 586.05107,332.96918 C 584.75518,330.30184 584.57441,329.42538 585.32015,329.42538 C 585.58035,329.42538 586.25782,330.59441 586.82565,332.02322 C 587.39347,333.45202 587.94018,334.80697 588.04055,335.0342 C 588.14092,335.26143 588.00524,335.44735 587.73905,335.44735 C 587.47285,335.44735 586.71327,334.33217 586.05107,332.96918 z M 462.03915,331.2046 C 461.84659,330.87976 465.29476,324.54881 469.86366,316.83856 C 470.1298,316.38942 470.51493,316.18931 470.71948,316.39386 C 471.05352,316.7279 463.01052,331.61519 462.49602,331.61519 C 462.37859,331.61519 462.173,331.43043 462.03915,331.2046 z M 597.14183,324.20164 C 594.83334,320.11192 593.09347,316.61689 593.27545,316.43492 C 593.73083,315.97953 593.6733,315.89708 597.18245,322.03479 C 598.90395,325.04577 600.78242,328.29045 601.35685,329.24517 C 601.97257,330.26855 602.18326,331.11577 601.87017,331.30927 C 601.57806,331.4898 599.45031,328.29137 597.14183,324.20164 z M 451.26887,320.89252 C 451.26887,320.29243 454.7368,315.73909 455.19384,315.73909 C 455.91374,315.73909 455.75871,316.09815 453.90075,318.73407 C 452.34687,320.93857 451.26887,321.82266 451.26887,320.89252 z M 610.13524,318.73407 C 608.27728,316.09815 608.12225,315.73909 608.84215,315.73909 C 609.29919,315.73909 612.76711,320.29243 612.76711,320.89252 C 612.76711,321.82266 611.68912,320.93857 610.13524,318.73407 z M 440.31984,311.85541 C 440.31984,311.40377 441.30525,310.072 442.50965,308.89595 C 443.87076,307.56685 444.69945,307.06842 444.69945,307.57883 C 444.69945,308.03048 443.71404,309.36224 442.50965,310.5383 C 441.14853,311.86739 440.31984,312.36583 440.31984,311.85541 z M 621.32064,310.33424 C 620.16086,309.14652 619.30453,307.89705 619.41767,307.55765 C 619.5308,307.21823 620.57227,307.9123 621.73205,309.10001 C 622.89182,310.28773 623.74815,311.53719 623.63501,311.8766 C 623.52188,312.21602 622.48041,311.52195 621.32064,310.33424 z M 516.96307,309.19259 C 502.98694,307.03342 489.64077,301.82433 477.12428,293.6433 C 446.14179,273.39251 429.72882,239.8837 432.50753,202.55346 C 434.79805,171.78174 450.88478,144.76212 477.12428,127.6142 C 511.1873,105.35348 552.84869,105.35348 586.91171,127.6142 C 613.15121,144.76212 629.23794,171.78174 631.52846,202.55346 C 634.30717,239.88378 617.89227,273.39626 586.91171,293.64254 C 574.14195,301.98777 559.7413,307.48086 545.5486,309.42037 C 537.42919,310.52992 524.97726,310.43071 516.96307,309.19259 z M 544.93293,306.9247 C 551.95382,306.00565 564.68926,302.31826 571.70824,299.17223 C 584.28263,293.53617 598.92524,282.45781 607.2204,272.30429 C 610.6997,268.04553 617.20027,258.10037 619.57904,253.39694 C 621.5367,249.52616 624.61346,241.42728 625.94793,236.63232 C 632.14719,214.3574 629.69313,187.85794 619.57904,167.8598 C 617.20027,163.15636 610.6997,153.2112 607.2204,148.95245 C 598.92524,138.79893 584.28263,127.72057 571.70824,122.08451 C 564.68926,118.93848 551.95382,115.25108 544.93293,114.33203 C 539.01284,113.55708 525.02314,113.55708 519.10306,114.33203 C 512.08216,115.25108 499.34672,118.93848 492.32775,122.08451 C 479.75336,127.72057 465.11075,138.79893 456.81559,148.95245 C 453.33629,153.2112 446.83571,163.15636 444.45695,167.8598 C 434.34286,187.85794 431.88879,214.3574 438.08806,236.63232 C 439.42252,241.42728 442.49929,249.52616 444.45695,253.39694 C 446.83571,258.10037 453.33629,268.04553 456.81559,272.30429 C 465.10737,282.45367 479.74616,293.53026 492.32775,299.17492 C 499.25611,302.2833 510.29235,305.57664 517.51052,306.68976 C 523.34444,307.58941 538.84079,307.72218 544.93293,306.9247 z M 429.92813,301.64221 C 429.94507,300.9372 434.29131,297.57976 434.91702,297.78833 C 435.24375,297.89724 434.49834,298.9013 433.26054,300.01958 C 431.12104,301.95249 429.90646,302.5439 429.92813,301.64221 z M 630.77544,300.01958 C 629.53764,298.9013 628.79223,297.89724 629.11897,297.78833 C 629.74467,297.57976 634.09091,300.9372 634.10786,301.64221 C 634.12953,302.5439 632.91495,301.95249 630.77544,300.01958 z M 421.15903,290.58261 C 421.15903,290.08853 425.66052,286.72415 426.3216,286.72415 C 427.24285,286.72415 426.35018,287.80802 424.15401,289.35603 C 421.47112,291.2471 421.15903,291.37492 421.15903,290.58261 z M 639.86597,289.38902 C 637.79441,287.8378 636.8762,286.72415 637.66877,286.72415 C 638.36273,286.72415 642.87696,290.0685 642.87696,290.58261 C 642.87696,291.40909 642.2112,291.14517 639.86597,289.38902 z M 410.75745,280.18775 C 410.75745,279.69118 424.88806,271.39551 425.73392,271.39551 C 426.83392,271.39551 424.96478,272.72139 418.4787,276.54206 C 411.15737,280.85472 410.75745,281.04355 410.75745,280.18775 z M 646.43539,277.08932 C 638.45453,272.3441 637.80246,271.9079 638.1581,271.55227 C 638.57013,271.14023 653.27854,279.5404 653.27854,280.18775 C 653.27854,281.06675 652.63444,280.77512 646.43539,277.08932 z M 406.64193,265.93657 C 406.99224,265.36977 411.64549,263.18373 412.50171,263.18373 C 413.59889,263.18373 412.2329,264.30123 409.84401,265.35795 C 407.08507,266.57836 406.13971,266.74919 406.64193,265.93657 z M 654.20508,265.40722 C 651.91386,264.33814 650.48714,263.18373 651.4571,263.18373 C 652.37177,263.18373 657.02665,265.34211 657.39406,265.93657 C 657.88173,266.72565 656.56076,266.50637 654.20508,265.40722 z M 401.45077,252.7686 C 401.45077,252.09977 403.28109,251.35199 406.18253,250.83544 C 409.00733,250.33253 408.02401,251.26836 404.5011,252.43566 C 401.31197,253.49236 401.45077,253.47721 401.45077,252.7686 z M 659.20236,252.32913 C 655.86187,251.13516 655.14609,250.33923 657.85346,250.82921 C 660.76598,251.35633 662.58522,252.10197 662.58522,252.7686 C 662.58522,253.47881 662.32394,253.44487 659.20236,252.32913 z M 397.84789,238.62031 C 398.00954,238.35877 399.11113,237.98977 400.29588,237.80032 C 401.48062,237.61087 402.84103,237.3058 403.31899,237.12239 C 403.79696,236.93897 404.18803,237.05004 404.18803,237.3692 C 404.18803,238.00647 400.81856,239.08797 398.81807,239.0928 C 398.12282,239.09448 397.68625,238.88186 397.84789,238.62031 z M 661.62717,238.48338 C 660.64861,238.20083 659.84796,237.70398 659.84796,237.37928 C 659.84796,237.05457 660.23902,236.93897 660.71699,237.12239 C 661.19496,237.3058 662.55536,237.61087 663.74011,237.80032 C 664.92485,237.98977 666.02645,238.35877 666.18809,238.62031 C 666.56408,239.22867 663.935,239.14974 661.62717,238.48338 z M 395.67643,224.81989 C 395.54701,224.61048 395.99264,224.29132 396.66673,224.11065 C 398.37562,223.65263 402.8112,223.68417 402.34434,224.15103 C 401.80138,224.69399 395.96072,225.27987 395.67643,224.81989 z M 664.94548,224.87538 C 663.38318,224.7043 661.92559,224.38498 661.70639,224.16576 C 661.18349,223.64287 666.38119,223.7228 667.74967,224.2587 C 669.42091,224.91317 668.04788,225.21511 664.94548,224.87538 z M 394.3339,210.62837 C 394.3339,210.29382 396.88868,210.08092 400.90332,210.08092 C 404.91796,210.08092 407.47274,210.29382 407.47274,210.62837 C 407.47274,210.96292 404.91796,211.17582 400.90332,211.17582 C 396.88868,211.17582 394.3339,210.96292 394.3339,210.62837 z M 656.56325,210.62837 C 656.56325,210.29382 659.11802,210.08092 663.13267,210.08092 C 667.14731,210.08092 669.70209,210.29382 669.70209,210.62837 C 669.70209,210.96292 667.14731,211.17582 663.13267,211.17582 C 659.11802,211.17582 656.56325,210.96292 656.56325,210.62837 z M 396.24998,196.94208 C 395.64778,196.6833 395.40143,196.43142 395.70253,196.38233 C 397.10823,196.15317 401.26324,196.54434 401.99822,196.97503 C 403.0888,197.6141 397.74253,197.58345 396.24998,196.94208 z M 662.03776,196.97503 C 662.77274,196.54434 666.92776,196.15317 668.33346,196.38233 C 668.63456,196.43142 668.3882,196.6833 667.78601,196.94208 C 666.29346,197.58345 660.94719,197.6141 662.03776,196.97503 z M 400.8086,183.60134 C 397.86589,182.889 396.82573,182.15947 398.75913,182.16394 C 400.72464,182.16847 404.18803,183.23069 404.18803,183.82897 C 404.18803,184.42584 404.22485,184.42832 400.8086,183.60134 z M 659.84796,183.88754 C 659.84796,183.25027 663.21742,182.16876 665.21792,182.16394 C 667.18498,182.15918 666.14064,183.07256 663.74011,183.45642 C 662.55536,183.64587 661.19496,183.95093 660.71699,184.13435 C 660.23902,184.31776 659.84796,184.2067 659.84796,183.88754 z M 404.18803,170.02471 C 402.18161,169.45828 401.05409,168.68879 401.53129,168.21158 C 401.86639,167.87649 406.97342,169.50911 407.71909,170.18971 C 408.39387,170.80559 406.66845,170.72497 404.18803,170.02471 z M 656.28952,170.25611 C 656.72784,169.82289 661.70901,167.92714 662.40901,167.92714 C 662.50592,167.92714 662.58522,168.17959 662.58522,168.48814 C 662.58522,169.15697 660.7549,169.90475 657.85346,170.4213 C 656.46082,170.66924 655.92843,170.613 656.28952,170.25611 z M 409.49419,157.01178 C 407.20296,155.9427 405.77624,154.7883 406.74621,154.7883 C 407.66087,154.7883 412.31576,156.94667 412.68317,157.54114 C 413.17084,158.33022 411.84987,158.11094 409.49419,157.01178 z M 651.35282,157.54114 C 651.70313,156.97433 656.35638,154.7883 657.2126,154.7883 C 658.30979,154.7883 656.94379,155.9058 654.5549,156.96252 C 651.79596,158.18292 650.8506,158.35376 651.35282,157.54114 z M 418.01119,145.71552 C 411.82755,142.18779 409.63629,140.55455 411.08689,140.55455 C 411.64256,140.55455 425.52085,148.8421 425.8459,149.36802 C 426.48301,150.3989 425.04718,149.72951 418.01119,145.71552 z M 638.19009,149.36802 C 638.51513,148.8421 652.39343,140.55455 652.9491,140.55455 C 654.40842,140.55455 652.19971,142.19678 645.99871,145.72233 C 638.90467,149.7556 637.56359,150.38172 638.19009,149.36802 z M 423.4857,132.83582 C 421.4977,131.42776 420.51462,130.15297 421.41675,130.15297 C 421.96911,130.15297 426.63355,133.67361 426.63355,134.09052 C 426.63355,134.83961 425.90449,134.54901 423.4857,132.83582 z M 637.40244,134.09052 C 637.40244,133.67361 642.06687,130.15297 642.61924,130.15297 C 643.54743,130.15297 642.51482,131.44443 640.45165,132.86393 C 637.90724,134.61453 637.40244,134.81759 637.40244,134.09052 z M 431.87998,121.64467 C 430.70068,120.60335 429.87894,119.60823 430.05387,119.43329 C 430.52818,118.95899 432.17802,119.99051 433.98971,121.89408 C 436.21789,124.23528 434.59681,124.04363 431.87998,121.64467 z M 630.04628,121.89408 C 631.85797,119.99051 633.50781,118.95899 633.98212,119.43329 C 634.41969,119.87087 630.19951,123.53254 629.2251,123.56076 C 628.7288,123.57514 629.03194,122.95987 630.04628,121.89408 z M 442.30394,112.15672 C 441.14417,110.96901 440.28784,109.71954 440.40097,109.38013 C 440.51411,109.04072 441.55558,109.73478 442.71535,110.92249 C 443.87512,112.11021 444.73146,113.35968 444.61832,113.69909 C 444.50518,114.0385 443.46371,113.34444 442.30394,112.15672 z M 619.33653,113.6779 C 619.33653,113.22625 620.32195,111.89449 621.52634,110.71843 C 622.88745,109.38934 623.71615,108.8909 623.71615,109.40132 C 623.71615,109.85297 622.73073,111.18473 621.52634,112.36079 C 620.16523,113.68988 619.33653,114.18832 619.33653,113.6779 z M 453.00403,103.10147 C 451.19837,100.58714 450.96836,100.04313 451.71094,100.04313 C 452.12785,100.04313 455.64849,104.70756 455.64849,105.25992 C 455.64849,106.12469 454.50469,105.1911 453.00403,103.10147 z M 608.3875,105.25992 C 608.3875,104.70756 611.90814,100.04313 612.32505,100.04313 C 613.06763,100.04313 612.83761,100.58714 611.03196,103.10147 C 609.5313,105.1911 608.3875,106.12469 608.3875,105.25992 z M 466.61192,98.811358 C 464.69038,95.424001 462.77908,92.121044 462.36459,91.471454 C 461.89106,90.729349 461.81277,90.165658 462.15394,89.954803 C 462.60814,89.67409 470.97713,103.59322 470.97713,104.62935 C 470.97713,105.93069 469.63807,104.14598 466.61192,98.811358 z M 593.05885,104.62935 C 593.05885,103.59322 601.42785,89.67409 601.88205,89.954803 C 602.22322,90.165658 602.14493,90.729349 601.6714,91.471454 C 601.2569,92.121044 599.3456,95.424001 597.42407,98.811358 C 594.39792,104.14598 593.05885,105.93069 593.05885,104.62935 z M 477.21034,89.233517 C 476.64251,87.804709 476.09581,86.449766 475.99544,86.222533 C 475.89507,85.995299 476.03075,85.809381 476.29694,85.809381 C 476.7962,85.809381 479.18891,90.35091 479.18891,91.298543 C 479.18891,92.670631 478.1421,91.578087 477.21034,89.233517 z M 584.84708,91.298543 C 584.84708,90.35091 587.23979,85.809381 587.73905,85.809381 C 588.00524,85.809381 588.14092,85.995299 588.04055,86.222533 C 587.94018,86.449766 587.39347,87.804709 586.82565,89.233517 C 585.89388,91.578087 584.84708,92.670631 584.84708,91.298543 z M 531.76104,79.787412 C 531.76104,73.755917 531.93737,71.027319 532.29172,71.575637 C 532.5836,72.027285 532.8224,75.722584 532.8224,79.787412 C 532.8224,83.852241 532.5836,87.54754 532.29172,87.999188 C 531.93737,88.547505 531.76104,85.818908 531.76104,79.787412 z M 490.7026,85.535655 C 489.91777,83.584904 489.32159,80.334864 489.74859,80.334864 C 489.91434,80.334864 490.45944,81.567729 490.95993,83.074563 C 491.96544,86.101868 491.75193,88.14384 490.7026,85.535655 z M 572.25569,86.212938 C 572.25569,85.797158 572.66781,84.247486 573.1715,82.769223 C 574.27216,79.538947 574.84912,80.496394 573.88244,83.949023 C 573.20902,86.354246 572.25569,87.680977 572.25569,86.212938 z M 504.19039,82.841863 C 503.58943,81.275772 503.11481,76.216138 503.61284,76.684817 C 504.35148,77.379938 505.44439,82.737569 504.95122,83.245783 C 504.71244,83.491847 504.37006,83.310082 504.19039,82.841863 z M 558.96771,83.273702 C 558.58843,82.660026 559.77321,77.296457 560.42315,76.684817 C 560.70317,76.42129 560.74677,77.48704 560.52648,79.21097 C 560.1229,82.369243 559.46633,84.080494 558.96771,83.273702 z M 517.94611,80.882316 C 517.75403,80.430668 517.48409,78.887068 517.34625,77.452093 C 517.08185,74.699776 517.79737,73.357667 518.35167,75.566184 C 518.77038,77.234439 518.40905,81.970817 517.94611,80.882316 z M 545.43056,78.846774 C 545.43056,75.824687 545.84691,74.167252 546.50404,74.573381 C 547.04081,74.905122 546.54123,80.453397 545.9138,81.128669 C 545.62965,81.434481 545.43056,80.494364 545.43056,78.846774 z"
- id="path3991" />
- <path
- style="fill:#191f1f"
- d="M 524.07994,367.75466 C 522.12281,367.51974 518.55068,367.30043 516.1419,367.26732 C 513.73311,367.23421 509.5451,366.73237 506.83522,366.1521 C 504.12533,365.57183 499.81415,364.69293 497.25481,364.19899 C 489.85737,362.77131 470.65448,356.09762 463.15843,352.34928 C 454.19258,347.86597 440.43236,339.1439 433.28252,333.4121 C 425.72093,327.35021 414.30977,316.09348 410.0949,310.5383 C 408.2673,308.12951 405.97434,305.17327 404.99944,303.96888 C 395.73525,292.52384 384.54471,270.02119 380.63333,254.97196 C 379.96814,252.41262 378.99072,248.8405 378.46129,247.03391 C 377.54859,243.91954 376.68923,239.23068 375.10001,228.69427 C 374.16751,222.51183 374.16751,198.74491 375.10001,192.56246 C 376.68923,182.02605 377.54859,177.3372 378.46129,174.22283 C 378.99072,172.41624 379.96814,168.84412 380.63333,166.28478 C 384.54471,151.23555 395.73525,128.7329 404.99944,117.28786 C 405.97434,116.08346 408.2673,113.12722 410.0949,110.71843 C 414.30977,105.16325 425.72093,93.90652 433.28252,87.844635 C 440.43236,82.112833 454.19258,73.390767 463.15843,68.907458 C 470.65448,65.159117 489.85737,58.48542 497.25481,57.05774 C 499.81415,56.563798 504.12533,55.705684 506.83522,55.150821 C 518.51198,52.759943 545.524,52.759943 557.20077,55.150821 C 559.91066,55.705684 564.22184,56.563798 566.78117,57.05774 C 574.17861,58.48542 593.38151,65.159117 600.87755,68.907458 C 609.8434,73.390767 623.60362,82.112833 630.75347,87.844635 C 638.31506,93.90652 649.72622,105.16325 653.94108,110.71843 C 655.76869,113.12722 658.06165,116.08346 659.03655,117.28786 C 668.30074,128.7329 679.49128,151.23555 683.40266,166.28478 C 684.06784,168.84412 685.04526,172.41624 685.5747,174.22283 C 686.48739,177.3372 687.34676,182.02605 688.93597,192.56246 C 689.36111,195.38108 689.63784,202.50412 689.63784,210.62837 C 689.63784,218.75262 689.36111,225.87566 688.93597,228.69427 C 687.34676,239.23068 686.48739,243.91954 685.5747,247.03391 C 685.04526,248.8405 684.06784,252.41262 683.40266,254.97196 C 679.49128,270.02119 668.30074,292.52384 659.03655,303.96888 C 658.06165,305.17327 655.76869,308.12951 653.94108,310.5383 C 649.72622,316.09348 638.31506,327.35021 630.75347,333.4121 C 623.60362,339.1439 609.8434,347.86597 600.87755,352.34928 C 593.38151,356.09762 574.17861,362.77131 566.78117,364.19899 C 564.22184,364.69293 559.91066,365.55098 557.20077,366.10575 C 550.41347,367.49527 530.27256,368.49797 524.07994,367.75466 z M 553.59519,364.958 C 564.03286,363.63993 575.68544,360.77975 585.64328,357.09167 C 607.87769,348.8567 629.76443,334.27759 646.20609,316.7498 C 663.9537,297.8298 675.98989,276.19465 683.0112,250.59234 C 686.95743,236.20288 687.98698,227.93389 687.98698,210.62837 C 687.98698,198.28735 687.80042,194.89461 686.73771,187.90912 C 683.66429,167.70675 675.70798,146.09665 664.96665,128.77682 C 647.10119,99.96972 617.73723,76.051714 585.64328,64.16507 C 568.51484,57.821209 552.63415,55.152087 532.01799,55.152087 C 511.40183,55.152087 495.52114,57.821209 478.39271,64.16507 C 456.1583,72.400035 434.27156,86.979144 417.8299,104.50694 C 400.08229,123.42694 388.0461,145.06209 381.02479,170.6644 C 377.07855,185.05386 376.049,193.32285 376.049,210.62837 C 376.049,227.93389 377.07855,236.20288 381.02479,250.59234 C 383.85614,260.91649 389.90933,276.54058 393.74121,283.41512 C 407.83185,308.69428 426.03502,328.03142 449.5553,342.7062 C 469.10102,354.90116 487.64249,361.80018 508.7513,364.7322 C 521.45188,366.49631 540.64815,366.59297 553.59519,364.958 z M 516.6638,308.8762 C 494.14953,305.58821 469.81372,291.71156 455.18707,273.82123 C 449.66786,267.0705 447.73776,264.23158 443.97466,257.32922 C 432.8532,236.92997 429.56808,210.85634 435.14989,187.28779 C 440.97321,162.69949 455.79378,141.88316 477.58547,127.68463 C 489.8698,119.68069 503.93338,114.22935 517.14295,112.35133 C 524.31993,111.33097 539.71606,111.33097 546.89304,112.35133 C 569.80557,115.60883 594.0552,129.34084 608.84892,147.43551 C 614.36813,154.18624 616.29823,157.02516 620.06133,163.92752 C 627.53216,177.63069 631.52999,193.90999 631.52999,210.62837 C 631.52999,244.82608 615.22708,274.82253 586.45052,293.57211 C 574.16619,301.57605 560.1026,307.02738 546.89304,308.90541 C 539.98842,309.88704 523.47624,309.87109 516.6638,308.8762 z M 544.93293,306.9247 C 551.95382,306.00565 564.68926,302.31826 571.70824,299.17223 C 584.28263,293.53617 598.92524,282.45781 607.2204,272.30429 C 610.6997,268.04553 617.20027,258.10037 619.57904,253.39694 C 621.5367,249.52616 624.61346,241.42728 625.94793,236.63232 C 632.14719,214.3574 629.69313,187.85794 619.57904,167.8598 C 617.20027,163.15636 610.6997,153.2112 607.2204,148.95245 C 598.92524,138.79893 584.28263,127.72057 571.70824,122.08451 C 564.68926,118.93848 551.95382,115.25108 544.93293,114.33203 C 539.01284,113.55708 525.02314,113.55708 519.10306,114.33203 C 512.08216,115.25108 499.34672,118.93848 492.32775,122.08451 C 479.75336,127.72057 465.11075,138.79893 456.81559,148.95245 C 453.33629,153.2112 446.83571,163.15636 444.45695,167.8598 C 434.34286,187.85794 431.88879,214.3574 438.08806,236.63232 C 439.42252,241.42728 442.49929,249.52616 444.45695,253.39694 C 446.83571,258.10037 453.33629,268.04553 456.81559,272.30429 C 465.10737,282.45367 479.74616,293.53026 492.32775,299.17492 C 499.25611,302.2833 510.29235,305.57664 517.51052,306.68976 C 523.34444,307.58941 538.84079,307.72218 544.93293,306.9247 z"
- id="path3989" />
- </g>
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3904"
- sodipodi:cx="176.06958"
- sodipodi:cy="116.38926"
- sodipodi:rx="19.091883"
- sodipodi:ry="19.445436"
- d="M 195.16146,116.38926 A 19.091883,19.445436 0 1 1 156.9777,116.38926 A 19.091883,19.445436 0 1 1 195.16146,116.38926 z" />
- <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.50000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path3899"
- sodipodi:cx="209.65715"
- sodipodi:cy="209.02025"
- sodipodi:rx="19.445436"
- sodipodi:ry="18.738329"
- d="M 229.10259,209.02025 A 19.445436,18.738329 0 1 1 190.21171,209.02025 A 19.445436,18.738329 0 1 1 229.10259,209.02025 z"
- transform="translate(-0.7071068,-0.7071068)" />
- <g
- id="g2477"
- transform="matrix(0.7800864,0,0,0.7800864,25.182028,-182.99659)">
- <g
- id="g3474"
- transform="translate(527.55697,229.25933)">
- <path
- style="fill:#f2d3b0"
- d="M -421.57354,441.79688 C -425.7559,441.09099 -431.10732,439.52909 -433.46557,438.326 C -439.79953,435.09466 -447.08923,427.80019 -450.06713,421.71358 C -455.90139,409.78878 -450.93598,392.52662 -438.30885,380.83612 C -434.92345,377.70184 -431.08881,374.65229 -429.78743,374.05934 C -428.48605,373.46639 -427.13589,371.8209 -426.78708,370.40269 C -426.43826,368.98448 -425.51136,366.8331 -424.72731,365.62185 C -423.21113,363.27957 -414.18445,358.32413 -411.43401,358.32413 C -410.5306,358.32413 -404.88146,352.38269 -398.88035,345.12094 C -383.92249,327.02091 -380.47437,322.30416 -380.43814,319.89352 C -380.42103,318.75536 -376.93353,313.91362 -372.68814,309.1341 C -364.48085,299.89424 -360.63119,294.32413 -362.45254,294.32413 C -364.61355,294.32413 -372.08762,298.68902 -378.69983,303.81262 C -382.40166,306.68105 -393.09724,316.16194 -402.46778,324.88127 C -427.37327,348.05593 -440.87542,357.45444 -455.40074,361.72662 C -465.63205,364.73585 -477.59298,362.69847 -480.39126,357.46983 C -481.97995,354.50134 -480.45208,354.20008 -475.42498,356.4906 C -469.26241,359.29848 -460.629,359.23123 -453.02839,356.31614 C -439.52487,351.13708 -430.43367,344.21775 -403.86031,318.89421 C -384.77643,300.70791 -377.35958,294.66608 -366.85094,288.74604 L -360.73264,285.2993 L -359.64164,276.84765 C -359.04159,272.19924 -357.63233,266.4953 -356.50994,264.17223 C -355.38756,261.84916 -354.46924,259.33565 -354.46924,258.58664 C -354.46924,256.06071 -357.57774,251.18873 -362.84495,245.45933 C -365.72572,242.32576 -370.05246,237.07593 -372.45992,233.79303 C -380.29313,223.11139 -388.43574,214.62908 -394.37625,210.96239 C -402.9387,205.67734 -411.96221,195.52138 -416.58034,185.97167 C -418.71923,181.54871 -420.46924,177.34362 -420.46924,176.62703 C -420.46924,174.64825 -421.22238,175.0106 -425.036,178.82422 C -426.96105,180.74927 -430.88355,183.55961 -433.75266,185.06942 C -438.37911,187.50398 -440.04393,187.81459 -448.46924,187.81513 C -456.93401,187.81568 -458.61759,187.49833 -463.91894,184.90284 C -471.54048,181.17143 -477.81027,174.71315 -480.28469,168.04511 C -483.12053,160.4031 -483.9659,145.36433 -481.97938,137.89745 C -477.9087,122.59672 -463.01283,112.28424 -446.85571,113.58118 C -443.41383,113.85746 -438.63826,115.03207 -436.24334,116.19144 C -430.97828,118.74021 -424.16591,125.29404 -420.77354,131.07413 C -419.40165,133.41163 -417.97429,135.32413 -417.60162,135.32413 C -417.22896,135.32413 -416.03422,133.64097 -414.94664,131.58378 C -413.85907,129.52659 -409.68388,124.39016 -405.66845,120.16949 L -398.36765,112.49555 L -404.48938,109.23271 C -418.50501,101.76246 -425.00491,86.785003 -421.0097,71.165607 C -416.99605,55.474106 -406.3164,48.276589 -387.17045,48.359749 C -371.2558,48.428873 -360.97071,53.091612 -354.67736,63.090471 C -350.38607,69.908458 -349.20553,74.499665 -349.64608,82.657558 C -350.00037,89.218029 -350.69942,91.47413 -355.54946,101.71006 C -355.78034,102.19732 -353.49424,103.21444 -350.46924,103.97033 C -329.24491,109.27385 -310.94566,127.54166 -307.28483,147.08054 C -305.60317,156.05602 -305.50028,156.19822 -303.49164,152.32308 C -301.12401,147.75538 -298.52355,145.47653 -294.90362,144.79719 C -291.11462,144.08613 -286.1466,147.11503 -283.86061,151.52991 C -281.65993,155.78004 -281.72231,164.65488 -283.98939,169.85048 C -285.13874,172.4845 -285.76474,176.68973 -285.84626,182.32413 C -285.95442,189.7996 -286.32241,191.42503 -288.89933,195.8095 C -290.51088,198.55146 -293.85021,202.95526 -296.32006,205.59574 C -300.23709,209.78335 -300.86703,211.07578 -301.25164,215.7137 C -302.02022,224.98179 -299.52642,228.8204 -287.33152,237.14041 C -266.65771,251.24519 -259.56415,262.17024 -259.49369,280.01453 C -259.46935,286.17747 -262.9917,298.328 -266.09806,302.79664 C -267.03863,304.14969 -267.46924,307.9367 -267.46924,314.85551 C -267.46924,321.6257 -267.90273,325.53471 -268.78774,326.74503 C -269.51292,327.73677 -272.99694,329.77523 -276.53001,331.27495 L -282.95377,334.00171 L -287.64571,343.41292 C -290.22627,348.58909 -292.36725,353.54189 -292.40344,354.41914 C -292.43963,355.2964 -291.56796,356.8298 -290.46641,357.8267 C -288.52929,359.57976 -288.12733,359.56161 -278.21641,357.27342 C -258.7562,352.78054 -245.09864,354.42644 -238.38429,362.07367 C -233.28374,367.88287 -231.516,372.84282 -231.4912,381.41441 C -231.47236,387.92684 -231.90933,389.88538 -234.56839,395.20664 C -240.3451,406.76685 -251.73074,415.2557 -268.46924,420.48227 C -274.93702,422.50182 -278.03368,422.82356 -290.96924,422.82001 C -303.4263,422.8166 -307.37231,422.43284 -314.24553,420.55633 C -331.14558,415.94233 -344.25673,407.34937 -346.45123,399.44892 C -348.94444,390.47309 -346.56482,381.7803 -339.49524,374.03863 C -336.87626,371.17065 -334.41592,367.37379 -334.02782,365.60116 C -333.22079,361.91498 -328.82619,357.83471 -322.95035,355.31603 C -319.38724,353.7887 -318.33596,352.46648 -313.94284,343.98695 L -308.96924,334.387 L -311.33024,332.72112 C -313.43714,331.23451 -313.62283,330.5396 -313.05564,326.2639 C -312.70606,323.62867 -312.80686,321.2335 -313.27964,320.94131 C -315.4005,319.63054 -321.77579,322.84948 -323.98263,326.34533 C -325.2376,328.33334 -327.45662,330.74107 -328.91378,331.69584 C -332.39127,333.97437 -347.48402,337.27509 -354.55059,337.30249 L -360.13193,337.32413 L -366.62884,344.57413 C -370.20214,348.56163 -374.56571,353.47297 -376.32566,355.48822 L -379.52557,359.15231 L -376.90195,362.98822 C -374.71614,366.18403 -374.36614,367.58551 -374.80449,371.38683 L -375.33064,375.94953 L -368.37253,380.24319 C -354.62519,388.7263 -349.46924,396.38549 -349.46924,408.32413 C -349.46924,420.7557 -356.32859,430.53425 -369.64887,437.0918 C -381.44245,442.89776 -403.31043,444.8793 -421.57354,441.79688 z M -301.86894,279.55882 C -298.54156,277.33706 -297.1059,267.03505 -299.31459,261.22931 C -300.53118,258.03139 -303.14455,255.32413 -305.01499,255.32413 C -308.20475,255.32413 -310.99395,265.34475 -309.54438,271.5967 C -307.96687,278.40047 -304.89952,281.58239 -301.86894,279.55882 z M -272.95585,275.28196 C -271.57791,270.94042 -275.44712,257.32413 -278.05877,257.32413 C -281.16661,257.32413 -280.48526,267.5249 -276.91644,274.42623 C -275.1543,277.83385 -273.8549,278.1146 -272.95585,275.28196 z M -294.99492,163.37379 C -292.45372,158.45965 -293.22746,153.04866 -296.12723,155.45525 C -297.3579,156.47662 -298.14405,166.32413 -296.99492,166.32413 C -296.73404,166.32413 -295.83404,164.99648 -294.99492,163.37379 z M -333.68598,150.53903 C -334.57907,138.0569 -339.78899,132.05847 -343.02027,139.79201 C -343.8172,141.69934 -344.46924,145.57313 -344.46924,148.40042 C -344.46924,153.35041 -344.37881,153.51825 -342.02955,152.92862 C -340.2683,152.48658 -338.80837,153.00381 -336.77955,154.78861 C -335.23388,156.14839 -333.79627,157.27515 -333.58487,157.29253 C -333.37347,157.30991 -333.41897,154.27084 -333.68598,150.53903 z M -315.46924,151.29201 C -315.46924,148.01749 -318.30673,142.10566 -319.51884,142.85478 C -320.52021,143.47366 -319.99324,150.54833 -318.79487,152.57413 C -317.86115,154.15255 -315.46924,153.2304 -315.46924,151.29201 z"
- id="path3488" />
- <path
- style="fill:#a39f9c"
- d="M -420.74766,441.74164 C -430.16669,439.86703 -435.56052,437.25428 -441.52066,431.67926 C -450.93687,422.8715 -453.91716,414.61887 -451.45508,404.17012 C -448.91528,393.39148 -441.33833,382.66341 -431.40228,375.77772 C -429.03602,374.1379 -426.68143,371.33158 -425.577,368.83485 C -423.54958,364.25152 -419.54445,361.27755 -412.66252,359.24533 C -410.19816,358.51761 -407.56959,356.87214 -406.51792,355.39885 C -405.50709,353.98275 -399.45254,346.52413 -393.06337,338.82413 C -386.32607,330.70457 -380.97499,323.28264 -380.32367,321.15418 C -379.70014,319.11658 -375.94387,313.77913 -371.87857,309.15418 C -367.85144,304.57265 -363.60808,299.13663 -362.44889,297.07413 C -360.53555,293.6698 -360.50038,293.32413 -362.0674,293.32413 C -366.8435,293.32413 -380.06555,303.2361 -399.46924,321.36258 C -425.91059,346.06349 -436.3468,353.80225 -450.76069,359.3967 C -460.3424,363.11565 -469.84706,363.73147 -475.17111,360.9783 C -481.57258,357.66797 -480.78988,355.45694 -474.02911,357.75228 C -465.52377,360.63992 -456.14411,359.28021 -444.86086,353.52392 C -437.12599,349.57788 -424.8151,339.49282 -407.46924,322.89277 C -386.82519,303.13633 -378.72637,296.42373 -367.81898,290.02917 L -359.75627,285.30233 L -359.19413,277.86961 C -358.82239,272.95437 -357.72985,268.42664 -355.96845,264.50173 L -353.30491,258.56656 L -355.34002,254.57742 C -356.45933,252.38339 -359.56712,248.16634 -362.24623,245.2062 C -364.92533,242.24606 -369.06888,237.12413 -371.45411,233.82413 C -379.68362,222.4385 -386.48572,215.49758 -394.9023,209.89738 C -406.54589,202.15001 -415.29271,190.79238 -419.41027,178.07413 C -420.07801,176.01163 -420.92695,174.32414 -421.29679,174.32416 C -421.66664,174.32418 -423.20128,175.86829 -424.70711,177.75552 C -426.23232,179.66705 -430.37155,182.62761 -434.05244,184.4397 C -439.80497,187.27167 -441.67428,187.69255 -448.49955,187.69255 C -455.52647,187.69255 -457.11651,187.30838 -463.83723,183.98682 C -472.01322,179.94603 -476.05702,175.77092 -479.64006,167.67087 C -481.43284,163.61798 -481.78457,160.80446 -481.869,149.84137 C -481.96355,137.56323 -481.81751,136.53663 -479.29692,131.76067 C -476.24515,125.97822 -470.51313,120.42171 -464.2643,117.18832 C -457.8355,113.86181 -444.45656,113.35145 -438.04382,116.18811 C -431.02704,119.29197 -425.94918,123.74511 -421.84551,130.39358 C -419.83221,133.65538 -417.91143,136.3152 -417.5771,136.30428 C -417.24278,136.29337 -415.61924,133.96886 -413.96924,131.1387 C -412.31924,128.30855 -407.88648,122.88773 -404.11867,119.09245 C -400.35085,115.29717 -397.42585,112.10918 -397.61867,112.00804 C -397.81148,111.90689 -400.57166,110.52365 -403.7524,108.93417 C -416.10958,102.75906 -422.30702,91.277322 -421.25083,76.515613 C -420.36268,64.102597 -411.96272,53.063042 -400.97548,49.868965 C -394.45188,47.972503 -381.93016,47.926749 -374.21225,49.771174 C -363.30877,52.376882 -354.236,61.438885 -350.84206,73.113624 C -348.72668,80.390252 -349.60654,87.994901 -353.48385,95.946842 C -355.12581,99.314335 -356.46924,102.30695 -356.46924,102.5971 C -356.46924,102.88725 -354.10674,103.66869 -351.21924,104.33363 C -336.05793,107.825 -320.08198,119.92052 -313.11157,133.18523 C -309.12903,140.76401 -306.46924,149.73687 -306.46924,155.59325 C -306.46924,160.0363 -305.01974,159.82662 -304.10465,155.25119 C -303.2234,150.84495 -297.43925,145.32413 -293.7041,145.32413 C -284.91534,145.32413 -279.78709,157.96874 -284.17323,168.82413 C -285.09042,171.0941 -285.88585,176.28938 -286.01235,180.83614 C -286.29128,190.8619 -288.55998,196.01567 -296.59957,204.88704 C -302.19845,211.06519 -302.46823,211.60527 -302.44728,216.59406 C -302.40831,225.8731 -300.06416,229.20933 -287.80344,237.43534 C -269.43341,249.76022 -262.79688,258.65368 -260.41968,274.13165 C -259.09347,282.76663 -260.09306,288.31428 -264.77873,298.32413 C -267.39531,303.91386 -267.90178,306.36458 -268.39533,315.82413 L -268.96924,326.82413 L -274.02425,329.32413 C -276.80451,330.69913 -280.1443,332.27413 -281.44601,332.82413 C -283.1297,333.53552 -285.24768,336.92457 -288.78462,344.56687 L -293.75648,355.30961 L -291.13183,357.93426 L -288.50718,360.55891 L -279.73821,358.27861 C -268.77238,355.42704 -255.12416,354.60086 -248.69929,356.39971 C -245.44577,357.31064 -242.51516,359.18297 -239.28151,362.41662 C -227.8489,373.84923 -229.42997,392.5871 -242.94416,405.82413 C -249.2715,412.0217 -257.33786,416.38846 -268.99613,419.92749 C -276.85041,422.31176 -279.59017,422.64498 -290.96924,422.59994 C -301.52251,422.55816 -305.77038,422.07628 -313.53907,420.03961 C -325.18894,416.98543 -336.19792,411.59545 -341.38908,406.40429 C -349.82911,397.96426 -348.63316,384.56861 -338.48036,373.82413 C -336.4015,371.62413 -334.16853,368.15136 -333.51818,366.10686 C -332.17559,361.88611 -328.7691,358.66279 -322.815,355.97915 C -319.28826,354.38958 -318.01197,352.83814 -313.59542,344.77194 C -310.77602,339.62271 -308.46924,335.14387 -308.46924,334.81895 C -308.46924,334.49404 -309.70063,333.169 -311.20566,331.87443 C -313.82958,329.61742 -313.88711,329.36864 -312.60501,325.82305 C -311.69107,323.29561 -311.59262,321.80075 -312.29389,321.09948 C -313.7627,319.63067 -320.27967,321.07606 -322.12502,323.27991 C -330.42445,333.19169 -334.51293,335.033 -350.46921,336.04518 C -361.19614,336.72564 -358.71334,335.08969 -373.14639,350.98742 L -380.67974,359.28525 L -378.00858,362.45975 C -375.75185,365.14172 -375.38261,366.42471 -375.62866,370.72918 L -375.9199,375.82413 L -369.52626,380.04202 C -358.48789,387.32405 -355.36203,390.31878 -352.64096,396.21902 C -347.2218,407.96963 -350.04314,421.44484 -359.67926,429.83521 C -365.77113,435.13954 -377.15371,440.32066 -386.22992,441.92055 C -395.82469,443.61184 -411.76591,443.52922 -420.74766,441.74164 z M -300.52064,279.14893 C -294.72515,272.9282 -297.63929,256.37027 -304.67905,255.52113 C -311.15981,254.73942 -312.72501,272.96408 -306.74465,279.5723 C -304.64254,281.8951 -302.97331,281.78156 -300.52064,279.14893 z M -272.34009,275.94001 C -270.26532,271.3864 -275.06234,255.91214 -278.35552,256.53537 C -281.57823,257.14526 -280.58064,270.36438 -276.88102,276.07413 C -275.01072,278.96062 -273.69871,278.92187 -272.34009,275.94001 z M -350.61471,220.9125 C -344.45482,217.17056 -342.47565,214.60048 -346.71924,215.85397 C -347.95674,216.21951 -350.72579,217.65192 -352.87269,219.0371 C -358.51635,222.67839 -363.17287,223.03692 -367.41517,220.1568 C -373.94382,215.72447 -374.90272,212.73013 -375.52766,194.82413 C -376.1654,176.5515 -376.99088,173.77846 -381.52268,174.68482 C -383.18289,175.01686 -384.68595,174.78251 -385.09009,174.12859 C -386.10489,172.48661 -379.89403,167.32413 -376.9038,167.32413 C -371.44611,167.32413 -364.1777,173.50755 -367.93885,174.95084 C -368.79457,175.27921 -370.16398,174.99244 -370.98197,174.31356 C -373.3128,172.37915 -372.89778,176.30739 -370.11225,182.54562 C -362.36427,199.8973 -344.23823,213.32413 -328.56165,213.32413 C -311.95909,213.32413 -294.65816,200.81671 -291.39178,186.45279 C -290.38444,182.02303 -291.14235,180.32413 -294.12589,180.32413 C -296.7518,180.32413 -302.46604,177.73976 -302.47421,176.54845 C -302.47694,176.15007 -303.48944,174.57055 -304.72421,173.0384 C -306.96378,170.25946 -306.98092,170.25621 -311.7697,171.70572 C -314.40995,172.50489 -318.95151,174.99597 -321.86207,177.24145 C -330.31056,183.75941 -331.89385,182.57109 -325.51427,174.50031 C -321.90594,169.93544 -321.643,169.20506 -322.51427,166.16712 C -323.0395,164.33574 -323.46924,157.60196 -323.46924,151.20318 C -323.46924,138.76542 -322.64475,136.52196 -318.47457,137.61248 C -315.97535,138.26604 -315.97593,137.85838 -318.48003,133.80668 C -320.86751,129.94365 -325.1127,128.62541 -326.01459,131.46701 C -326.98282,134.51764 -328.80005,133.56952 -331.85684,128.41888 C -335.20763,122.77288 -340.8703,116.32413 -342.47727,116.32413 C -343.08777,116.32413 -343.30916,116.77413 -342.96924,117.32413 C -342.62614,117.87928 -343.37837,118.33094 -344.66022,118.33944 C -347.82005,118.3604 -349.5688,119.63128 -351.05108,122.98392 C -352.10013,125.35667 -352.33912,125.49496 -352.50318,123.82413 C -353.04141,118.34236 -351.04344,114.73 -347.11481,114.08191 C -345.33135,113.7877 -345.62273,113.44074 -348.84136,112.02605 C -356.37838,108.71329 -361.42429,110.79998 -365.05531,118.73116 C -369.8635,129.23362 -368.91942,143.35411 -362.49053,157.09234 C -357.37136,168.03173 -358.63486,169.30867 -367.67378,162.33072 C -371.21353,159.59807 -376.10309,156.63963 -378.53946,155.7564 C -384.39742,153.63279 -393.88773,153.66752 -399.24208,155.83216 C -406.94075,158.94455 -412.46924,167.68878 -412.46924,176.7531 C -412.46924,185.06258 -402.26247,199.06004 -390.99093,206.20824 C -385.04188,209.98101 -383.46924,210.10979 -383.46924,206.82413 C -383.46924,202.11243 -380.95551,204.32839 -376.96341,212.55929 C -370.21687,226.46928 -363.34727,228.64712 -350.61471,220.9125 z M -343.85569,170.27671 C -351.42593,161.27999 -351.1299,140.4236 -343.33892,133.86793 C -339.70663,130.81156 -337.10352,131.16084 -333.70705,135.16031 C -330.53437,138.89625 -329.16133,144.52266 -329.15243,153.82413 C -329.13705,169.89034 -336.88535,178.56049 -343.85569,170.27671 z M -333.30962,148.03412 C -334.37361,140.86544 -336.83701,136.08868 -339.76738,135.51194 C -342.22387,135.02847 -344.61757,140.8011 -344.80358,147.65716 L -344.96924,153.76332 L -341.23881,153.79373 C -338.46826,153.81631 -337.08082,154.43443 -335.84675,156.19598 C -333.11875,160.09003 -332.03684,156.60958 -333.30962,148.03412 z M -293.61718,160.99953 C -293.05183,158.89601 -292.8354,156.53351 -293.13624,155.74953 C -293.91662,153.7159 -296.21926,153.98853 -297.43406,156.25839 C -298.59895,158.43501 -298.83668,165.62335 -297.77876,166.68127 C -296.67197,167.78807 -294.72861,165.13484 -293.61718,160.99953 z M -314.93784,150.57413 C -316.45009,142.36945 -319.70958,139.10597 -320.29292,145.2125 C -320.89202,151.48408 -319.67657,153.59281 -315.10795,154.20813 C -314.63424,154.27193 -314.55769,152.63663 -314.93784,150.57413 z"
- id="path3486" />
- <path
- style="fill:#edb814"
- d="M -418.96924,441.67998 C -432.52676,438.8114 -442.48363,432.25796 -448.28989,422.38165 C -450.56434,418.51285 -450.96454,416.69075 -450.93811,410.32413 C -450.91202,404.03678 -450.39705,401.73706 -447.75313,396.1008 C -444.23991,388.61137 -437.44665,380.75878 -430.89512,376.61397 C -427.79226,374.65096 -426.10831,372.66756 -424.93411,369.59297 C -423.18387,365.01004 -417.98024,361.14663 -411.83603,359.86837 C -409.35932,359.3531 -406.42591,356.45857 -397.83603,346.05392 C -382.55374,327.54295 -380.38725,324.60316 -379.37449,321.00274 C -378.88274,319.2545 -375.47164,314.44913 -371.79427,310.32413 C -365.43655,303.19249 -359.46924,294.86696 -359.46924,293.12835 C -359.46924,291.5747 -363.21948,292.34971 -367.99923,294.89113 C -375.33569,298.79197 -385.0681,306.71787 -403.10664,323.48197 C -418.40548,337.69993 -430.66438,347.81531 -435.78567,350.44691 C -438.78922,351.99029 -437.22023,350.46891 -429.46924,344.32214 C -425.89424,341.48706 -414.64424,331.20038 -404.46924,321.46285 C -384.68547,302.52967 -378.50738,297.44667 -366.55476,290.26885 L -358.96924,285.71357 L -358.26439,277.99451 C -357.81636,273.08795 -356.60227,268.14235 -354.93223,264.42101 L -352.30491,258.56656 L -354.36462,254.5292 C -355.49746,252.30865 -358.73327,247.8666 -361.55531,244.65798 C -364.37734,241.44936 -368.13606,236.57413 -369.908,233.82413 C -376.15747,224.12517 -385.41149,214.44714 -392.3216,210.38354 C -403.88965,203.58078 -414.09279,191.12048 -418.06477,178.94543 C -418.98369,176.12872 -419.95608,173.43987 -420.22563,172.97022 C -420.49518,172.50056 -422.7557,174.24521 -425.24901,176.8472 C -435.18,187.21109 -449.67039,189.84326 -462.46924,183.60823 C -469.9401,179.96877 -470.95411,179.18337 -474.75798,174.09007 C -479.59802,167.60934 -480.73432,162.99528 -480.85703,149.32413 C -480.96536,137.256 -480.86744,136.64036 -478.02284,131.50527 C -472.1026,120.81805 -462.14082,115.06097 -449.56837,115.06097 C -443.36353,115.06097 -440.98393,115.53829 -436.94565,117.59294 C -430.71031,120.76544 -425.11696,126.28616 -421.26079,133.07413 C -419.62043,135.96163 -418.11808,138.32413 -417.92223,138.32413 C -417.72638,138.32413 -415.5733,135.28663 -413.13762,131.57413 C -410.70193,127.86163 -405.95513,122.13821 -402.58917,118.85543 C -399.22321,115.57265 -396.46924,112.59692 -396.46924,112.24271 C -396.46924,111.88849 -399.37055,110.17037 -402.9166,108.42466 C -411.60287,104.14842 -416.73352,98.221606 -419.00122,89.844058 C -425.13723,67.1758 -411.06048,48.324127 -387.99784,48.324127 C -371.34204,48.324127 -358.02652,56.553183 -352.39942,70.324127 C -351.58192,72.324735 -350.98021,77.068401 -350.99485,81.397166 C -351.01676,87.877779 -351.48558,89.91501 -354.24485,95.519881 C -356.01826,99.122203 -357.46924,102.48394 -357.46924,102.99041 C -357.46924,103.49687 -354.96607,104.4363 -351.90665,105.07802 C -326.85928,110.33176 -307.46924,133.69347 -307.46924,158.61756 C -307.46924,167.12117 -305.62477,167.31535 -303.96174,158.98682 C -303.33407,155.84345 -301.90802,152.04593 -300.79274,150.54787 C -296.53704,144.8316 -289.85996,145.1367 -285.75018,151.23521 C -282.81816,155.58603 -282.67995,163.98855 -285.44038,170.06981 C -286.86046,173.19828 -287.31721,176.2244 -287.17616,181.56981 C -286.93312,190.77986 -289.52566,196.47191 -297.66095,204.58966 C -303.93812,210.8533 -305.05439,213.39146 -304.00113,219.00582 C -302.31669,227.98469 -300.78604,229.96711 -290.16435,236.92653 C -270.86366,249.57251 -263.53405,259.04687 -261.27464,274.26978 C -260.05099,282.51425 -261.2399,289.21727 -265.53779,298.30516 C -268.13286,303.79243 -268.60206,306.09571 -268.98765,315.24017 C -269.48518,327.03971 -269.50889,327.08128 -277.38256,329.96098 C -283.64609,332.2518 -284.53713,333.32045 -290.02932,345.12847 L -294.8221,355.4328 L -291.74113,358.51378 L -288.66016,361.59475 L -280.3147,359.32435 C -269.80969,356.46645 -255.24072,355.56822 -248.77114,357.37959 C -242.00462,359.2741 -236.05911,365.48724 -233.89757,372.92267 C -227.76715,394.01056 -245.20573,414.29884 -274.69197,420.38345 C -285.09631,422.53043 -291.71388,422.74921 -301.96924,421.28527 C -325.56589,417.91685 -342.51451,408.61636 -345.46907,397.4149 C -347.47427,389.81274 -344.08388,380.12317 -337.05853,373.37796 C -335.08442,371.48257 -333.46756,369.23257 -333.4655,368.37796 C -333.4571,364.88495 -329.37867,360.3072 -323.73843,357.46002 C -318.27363,354.7014 -317.63865,353.98269 -312.70459,344.97133 C -309.82515,339.71244 -307.46924,335.06986 -307.46924,334.65448 C -307.46924,334.23911 -308.70156,332.91664 -310.20773,331.71567 C -312.84287,329.61447 -312.89554,329.39193 -311.60328,325.81826 C -310.44337,322.6106 -310.46719,321.8976 -311.77807,320.58673 C -313.82446,318.54034 -320.03934,319.72271 -322.56194,322.63835 C -329.25545,330.37475 -330.40821,331.25087 -336.07141,332.90581 C -339.31521,333.85374 -346.18991,334.90572 -351.34851,335.24356 L -360.72777,335.8578 L -364.34851,339.92491 C -366.33991,342.16182 -371.07326,347.45443 -374.86705,351.68628 L -381.76487,359.38054 L -379.68367,361.60234 C -376.49816,365.00303 -375.42734,368.69123 -376.51967,372.49998 C -377.04193,374.321 -377.46924,375.89443 -377.46924,375.99649 C -377.46924,376.09855 -374.11176,378.27468 -370.00817,380.83233 C -355.29968,389.99973 -351.07224,396.12667 -351.03951,408.32413 C -351.004,421.5532 -356.39001,428.76814 -371.96924,436.36099 C -385.63414,443.02086 -403.22385,445.01148 -418.96924,441.67998 z M -299.99006,279.93586 C -297.15972,277.10552 -296.04449,272.09643 -296.70777,265.19346 C -297.35323,258.47604 -300.12471,254.82413 -304.57716,254.82413 C -307.45412,254.82413 -308.23476,255.35564 -309.71769,258.32413 C -311.68424,262.26073 -312.03113,270.71093 -310.40263,275.00903 C -309.08787,278.47906 -305.59074,282.32413 -303.74947,282.32413 C -302.99534,282.32413 -301.30361,281.24941 -299.99006,279.93586 z M -271.3333,276.57413 C -270.53921,274.56412 -270.56803,272.22067 -271.4404,267.86521 C -273.35564,258.30318 -276.98894,252.8507 -279.8585,255.23222 C -282.89327,257.75086 -282.31753,266.35733 -278.54354,274.88906 C -276.19136,280.20655 -273.05769,280.93891 -271.3333,276.57413 z M -348.48519,220.77238 C -340.51613,216.06662 -340.32809,215.87118 -342.93396,215.00256 C -345.14218,214.26648 -346.88068,214.75803 -352.52309,217.71381 C -360.49776,221.89134 -362.48249,222.09709 -367.12545,219.22759 C -372.98195,215.60807 -373.85497,212.71017 -374.47723,194.82413 C -375.11669,176.44335 -376.21988,172.63003 -380.75851,173.11198 C -384.156,173.47276 -384.24951,171.88149 -380.95756,169.72452 C -379.26338,168.61445 -377.4229,168.2834 -375.30287,168.7074 C -370.13182,169.74161 -366.98695,173.56335 -371.71924,173.06234 C -374.87882,172.72783 -374.37383,175.95728 -369.80911,185.2778 C -364.92469,195.25107 -354.54419,205.73042 -344.90952,210.41447 C -338.52134,213.5202 -337.20939,213.79002 -328.41738,213.80637 C -319.36183,213.82321 -318.47851,213.6298 -311.41738,210.08425 C -299.64371,204.17242 -292.57697,196.38325 -290.50444,187.03337 C -289.11726,180.77535 -290.24072,178.49021 -294.40415,179.10127 C -296.86509,179.46246 -298.06834,178.90135 -300.70747,176.16188 C -302.50144,174.29969 -304.43517,171.93939 -305.00464,170.91676 C -305.99124,169.14508 -306.30063,169.1332 -311.56844,170.66459 C -314.60906,171.54852 -319.02249,173.66667 -321.37606,175.37159 C -326.74096,179.2579 -327.91113,178.40699 -323.48366,173.839 C -320.26455,170.51773 -320.18001,170.23287 -321.30201,166.48796 C -321.94399,164.34523 -322.43878,159.7193 -322.40156,156.20811 C -322.34501,150.87429 -322.15538,150.19425 -321.24875,152.07413 C -320.65192,153.31163 -319.55127,154.32413 -318.80286,154.32413 C -318.05444,154.32413 -316.56867,154.8696 -315.50115,155.53628 C -312.71533,157.27605 -312.17663,156.12452 -313.49167,151.24084 C -314.1263,148.88399 -314.3868,145.66192 -314.07055,144.08068 C -313.35584,140.50713 -316.99543,132.9474 -321.2498,129.16877 C -322.89412,127.70833 -324.43023,125.94116 -324.66337,125.24172 C -325.4052,123.01625 -327.46924,125.32713 -327.46924,128.38314 C -327.46924,132.33174 -328.60658,132.08704 -330.99184,127.62525 C -335.67374,118.86739 -347.83833,109.39816 -354.46924,109.34983 C -358.81764,109.31813 -363.40025,112.97662 -365.97604,118.53621 C -371.46024,130.37328 -370.01924,143.05936 -360.80344,164.07413 C -359.81437,166.32949 -362.0206,165.39041 -367.53863,161.20729 C -375.61983,155.08109 -380.60545,153.13693 -388.33105,153.09924 C -396.08937,153.06138 -401.48337,155.01576 -406.34135,159.62481 C -413.79131,166.69302 -415.49955,176.85714 -410.81684,186.25412 C -407.23017,193.45163 -398.05982,203.02198 -390.42609,207.53431 C -383.86609,211.41193 -382.46924,211.52987 -382.46924,208.2061 C -382.46924,205.00072 -380.57165,207.03554 -377.87547,213.13208 C -375.06311,219.49133 -373.27533,221.77786 -368.96924,224.52298 C -364.1355,227.60447 -358.22133,226.52159 -348.48519,220.77238 z M -342.77611,170.53753 C -346.90321,165.97714 -349.56344,152.91486 -347.60552,146.82413 C -346.74519,144.14778 -346.63187,144.45646 -346.55519,149.68542 L -346.46924,155.54671 L -342.86886,154.87128 C -339.11244,154.16657 -335.46924,156.16001 -335.46924,158.9201 C -335.46924,159.6274 -334.96893,160.51531 -334.35744,160.89323 C -329.81318,163.70174 -330.8844,143.48144 -335.62587,136.9503 C -336.96542,135.10515 -337.2213,134.22977 -336.34073,134.50476 C -331.84686,135.90811 -328.90815,153.03993 -331.43268,163.1173 C -333.44953,171.16815 -338.94949,174.76591 -342.77611,170.53753 z M -320.66924,139.12413 C -319.73591,138.19079 -319.20257,138.19079 -318.26924,139.12413 C -317.33591,140.05746 -317.60257,140.32413 -319.46924,140.32413 C -321.33591,140.32413 -321.60257,140.05746 -320.66924,139.12413 z M -349.47838,116.83514 C -348.79871,116.01619 -347.79557,115.62244 -347.24917,115.96014 C -346.64571,116.3331 -346.78833,116.91161 -347.61248,117.43381 C -349.76951,118.80058 -350.82776,118.46104 -349.47838,116.83514 z M -292.70485,159.4244 C -292.30735,155.2875 -292.53054,154.23784 -293.92117,153.7042 C -294.89875,153.32907 -296.2777,153.70402 -297.158,154.58432 C -299.25424,156.68056 -300.10127,164.85765 -298.43069,166.87058 C -296.28905,169.4511 -293.29404,165.55623 -292.70485,159.4244 z"
- id="path3484" />
- <path
- style="fill:#625e5b"
- d="M -418.96924,441.67998 C -432.52676,438.8114 -442.48363,432.25796 -448.28989,422.38165 C -450.56434,418.51285 -450.96454,416.69075 -450.93811,410.32413 C -450.91202,404.03678 -450.39705,401.73706 -447.75313,396.1008 C -444.23991,388.61137 -437.44665,380.75878 -430.89512,376.61397 C -427.79226,374.65096 -426.10831,372.66756 -424.93411,369.59297 C -423.18387,365.01004 -417.98024,361.14663 -411.83603,359.86837 C -409.35932,359.3531 -406.42591,356.45857 -397.83603,346.05392 C -382.55374,327.54295 -380.38725,324.60316 -379.37449,321.00274 C -378.88274,319.2545 -375.47164,314.44913 -371.79427,310.32413 C -365.43655,303.19249 -359.46924,294.86696 -359.46924,293.12835 C -359.46924,291.5747 -363.21948,292.34971 -367.99923,294.89113 C -375.33569,298.79197 -385.0681,306.71787 -403.10664,323.48197 C -418.40548,337.69993 -430.66438,347.81531 -435.78567,350.44691 C -438.78922,351.99029 -437.22023,350.46891 -429.46924,344.32214 C -425.89424,341.48706 -414.64424,331.20038 -404.46924,321.46285 C -384.68547,302.52967 -378.50738,297.44667 -366.55476,290.26885 L -358.96924,285.71357 L -358.26439,277.99451 C -357.81636,273.08795 -356.60227,268.14235 -354.93223,264.42101 L -352.30491,258.56656 L -354.36462,254.5292 C -355.49746,252.30865 -358.73327,247.8666 -361.55531,244.65798 C -364.37734,241.44936 -368.13606,236.57413 -369.908,233.82413 C -376.15747,224.12517 -385.41149,214.44714 -392.3216,210.38354 C -403.88965,203.58078 -414.09279,191.12048 -418.06477,178.94543 C -418.98369,176.12872 -419.95608,173.43987 -420.22563,172.97022 C -420.49518,172.50056 -422.7557,174.24521 -425.24901,176.8472 C -435.18,187.21109 -449.67039,189.84326 -462.46924,183.60823 C -469.9401,179.96877 -470.95411,179.18337 -474.75798,174.09007 C -479.59802,167.60934 -480.73432,162.99528 -480.85703,149.32413 C -480.96536,137.256 -480.86744,136.64036 -478.02284,131.50527 C -472.1026,120.81805 -462.14082,115.06097 -449.56837,115.06097 C -443.36353,115.06097 -440.98393,115.53829 -436.94565,117.59294 C -430.71031,120.76544 -425.11696,126.28616 -421.26079,133.07413 C -419.62043,135.96163 -418.11808,138.32413 -417.92223,138.32413 C -417.72638,138.32413 -415.5733,135.28663 -413.13762,131.57413 C -410.70193,127.86163 -405.95513,122.13821 -402.58917,118.85543 C -399.22321,115.57265 -396.46924,112.59692 -396.46924,112.24271 C -396.46924,111.88849 -399.37055,110.17037 -402.9166,108.42466 C -411.60287,104.14842 -416.73352,98.221606 -419.00122,89.844058 C -425.13723,67.1758 -411.06048,48.324127 -387.99784,48.324127 C -371.34204,48.324127 -358.02652,56.553183 -352.39942,70.324127 C -351.58192,72.324735 -350.98021,77.068401 -350.99485,81.397166 C -351.01676,87.877779 -351.48558,89.91501 -354.24485,95.519881 C -356.01826,99.122203 -357.46924,102.48394 -357.46924,102.99041 C -357.46924,103.49687 -354.96607,104.4363 -351.90665,105.07802 C -326.85928,110.33176 -307.46924,133.69347 -307.46924,158.61756 C -307.46924,167.12117 -305.62477,167.31535 -303.96174,158.98682 C -303.33407,155.84345 -301.90802,152.04593 -300.79274,150.54787 C -296.53704,144.8316 -289.85996,145.1367 -285.75018,151.23521 C -282.81816,155.58603 -282.67995,163.98855 -285.44038,170.06981 C -286.86046,173.19828 -287.31721,176.2244 -287.17616,181.56981 C -286.93312,190.77986 -289.52566,196.47191 -297.66095,204.58966 C -303.93812,210.8533 -305.05439,213.39146 -304.00113,219.00582 C -302.31669,227.98469 -300.78604,229.96711 -290.16435,236.92653 C -270.86366,249.57251 -263.53405,259.04687 -261.27464,274.26978 C -260.05099,282.51425 -261.2399,289.21727 -265.53779,298.30516 C -268.13286,303.79243 -268.60206,306.09571 -268.98765,315.24017 C -269.48518,327.03971 -269.50889,327.08128 -277.38256,329.96098 C -283.64609,332.2518 -284.53713,333.32045 -290.02932,345.12847 L -294.8221,355.4328 L -291.74113,358.51378 L -288.66016,361.59475 L -280.3147,359.32435 C -269.80969,356.46645 -255.24072,355.56822 -248.77114,357.37959 C -242.00462,359.2741 -236.05911,365.48724 -233.89757,372.92267 C -227.76715,394.01056 -245.20573,414.29884 -274.69197,420.38345 C -285.09631,422.53043 -291.71388,422.74921 -301.96924,421.28527 C -325.56589,417.91685 -342.51451,408.61636 -345.46907,397.4149 C -347.47427,389.81274 -344.08388,380.12317 -337.05853,373.37796 C -335.08442,371.48257 -333.46756,369.23257 -333.4655,368.37796 C -333.4571,364.88495 -329.37867,360.3072 -323.73843,357.46002 C -318.27363,354.7014 -317.63865,353.98269 -312.70459,344.97133 C -309.82515,339.71244 -307.46924,335.06986 -307.46924,334.65448 C -307.46924,334.23911 -308.70156,332.91664 -310.20773,331.71567 C -312.84287,329.61447 -312.89554,329.39193 -311.60328,325.81826 C -310.44337,322.6106 -310.46719,321.8976 -311.77807,320.58673 C -313.82446,318.54034 -320.03934,319.72271 -322.56194,322.63835 C -329.25545,330.37475 -330.40821,331.25087 -336.07141,332.90581 C -339.31521,333.85374 -346.18991,334.90572 -351.34851,335.24356 L -360.72777,335.8578 L -364.34851,339.92491 C -366.33991,342.16182 -371.07326,347.45443 -374.86705,351.68628 L -381.76487,359.38054 L -379.68367,361.60234 C -376.49816,365.00303 -375.42734,368.69123 -376.51967,372.49998 C -377.04193,374.321 -377.46924,375.89443 -377.46924,375.99649 C -377.46924,376.09855 -374.11176,378.27468 -370.00817,380.83233 C -355.29968,389.99973 -351.07224,396.12667 -351.03951,408.32413 C -351.004,421.5532 -356.39001,428.76814 -371.96924,436.36099 C -385.63414,443.02086 -403.22385,445.01148 -418.96924,441.67998 z M -385.30485,436.31484 C -364.37646,431.26016 -354.46924,421.71501 -354.46924,406.60615 C -354.46924,396.88991 -360.74722,389.03528 -373.81428,382.40278 C -379.76093,379.38442 -380.59452,379.21037 -383.89192,380.29861 C -388.76243,381.90603 -390.72151,381.03702 -386.80754,379.00531 C -380.07608,375.51106 -377.41213,368.49576 -381.43442,364.85564 C -383.33377,363.13675 -383.43941,363.16456 -384.58821,365.6859 C -386.53365,369.95568 -393.67347,372.7734 -402.22904,372.64785 C -410.93715,372.52005 -414.93604,370.54637 -414.2076,366.73576 C -413.61219,363.62108 -415.50874,363.59388 -419.08014,366.66587 C -424.84385,371.6236 -421.55061,378.73469 -412.20329,381.51505 L -407.96924,382.77447 L -411.84788,383.11733 C -416.2568,383.50707 -420.52203,382.02827 -423.05193,379.23275 C -425.48469,376.54459 -426.62407,376.79802 -432.3092,381.29186 C -443.99152,390.5262 -450.37355,407.43737 -446.06641,417.74581 C -444.17248,422.27863 -438.04348,428.9033 -433.02012,431.84718 C -420.80779,439.00408 -403.24714,440.64832 -385.30485,436.31484 z M -419.46924,392.84445 C -419.46924,390.50023 -401.12861,385.32413 -392.82225,385.32413 C -387.33375,385.32413 -389.80083,386.96935 -396.30945,387.64964 C -399.55571,387.98894 -405.75717,389.39876 -410.09048,390.78257 C -418.24606,393.387 -419.46924,393.65591 -419.46924,392.84445 z M -269.47636,415.30496 C -258.85369,412.29595 -251.21338,407.89521 -245.04525,401.23288 C -230.24437,385.24617 -234.93614,363.27539 -253.99587,359.3186 C -258.28917,358.42732 -261.15354,358.51616 -268.17275,359.75833 C -282.36003,362.26903 -287.46536,364.09013 -287.4912,366.64935 C -287.52602,370.09715 -291.07699,377.02101 -293.68772,378.73163 C -296.53817,380.59932 -302.48231,381.93591 -302.43763,380.69913 C -302.42025,380.21788 -300.42383,378.62174 -298.00115,377.15215 C -292.57104,373.85827 -290.36877,368.39511 -292.44779,363.37592 C -294.24304,359.04181 -296.74882,359.49086 -299.04805,364.55873 C -300.10471,366.88776 -302.09424,369.35613 -303.46924,370.04399 C -311.11388,373.86832 -326.01429,368.62906 -322.67955,363.28929 C -320.82045,360.3124 -322.97213,360.09975 -325.84849,362.97611 C -329.97801,367.10563 -329.40353,370.8143 -323.8304,376.00424 C -319.49551,380.04109 -319.35532,380.32413 -321.69086,380.32413 C -323.06547,380.32413 -325.84793,379.19913 -327.8741,377.82413 C -332.71314,374.54027 -333.67164,374.65168 -337.43264,378.93522 C -341.30256,383.34282 -342.46924,386.23918 -342.46924,391.43889 C -342.46924,396.43095 -340.57988,400.14179 -335.98341,404.17755 C -321.92269,416.52302 -291.65455,421.58724 -269.47636,415.30496 z M -299.99006,279.93586 C -297.15972,277.10552 -296.04449,272.09643 -296.70777,265.19346 C -297.35323,258.47604 -300.12471,254.82413 -304.57716,254.82413 C -307.45412,254.82413 -308.23476,255.35564 -309.71769,258.32413 C -311.68424,262.26073 -312.03113,270.71093 -310.40263,275.00903 C -309.08787,278.47906 -305.59074,282.32413 -303.74947,282.32413 C -302.99534,282.32413 -301.30361,281.24941 -299.99006,279.93586 z M -271.3333,276.57413 C -270.53921,274.56412 -270.56803,272.22067 -271.4404,267.86521 C -273.35564,258.30318 -276.98894,252.8507 -279.8585,255.23222 C -282.89327,257.75086 -282.31753,266.35733 -278.54354,274.88906 C -276.19136,280.20655 -273.05769,280.93891 -271.3333,276.57413 z M -348.48519,220.77238 C -340.51613,216.06662 -340.32809,215.87118 -342.93396,215.00256 C -345.14218,214.26648 -346.88068,214.75803 -352.52309,217.71381 C -360.49776,221.89134 -362.48249,222.09709 -367.12545,219.22759 C -372.98195,215.60807 -373.85497,212.71017 -374.47723,194.82413 C -375.11669,176.44335 -376.21988,172.63003 -380.75851,173.11198 C -384.156,173.47276 -384.24951,171.88149 -380.95756,169.72452 C -379.26338,168.61445 -377.4229,168.2834 -375.30287,168.7074 C -370.13182,169.74161 -366.98695,173.56335 -371.71924,173.06234 C -374.87882,172.72783 -374.37383,175.95728 -369.80911,185.2778 C -364.92469,195.25107 -354.54419,205.73042 -344.90952,210.41447 C -338.52134,213.5202 -337.20939,213.79002 -328.41738,213.80637 C -319.36183,213.82321 -318.47851,213.6298 -311.41738,210.08425 C -299.64371,204.17242 -292.57697,196.38325 -290.50444,187.03337 C -289.11726,180.77535 -290.24072,178.49021 -294.40415,179.10127 C -296.86509,179.46246 -298.06834,178.90135 -300.70747,176.16188 C -302.50144,174.29969 -304.43517,171.93939 -305.00464,170.91676 C -305.99124,169.14508 -306.30063,169.1332 -311.56844,170.66459 C -314.60906,171.54852 -319.02249,173.66667 -321.37606,175.37159 C -326.74096,179.2579 -327.91113,178.40699 -323.48366,173.839 C -320.26455,170.51773 -320.18001,170.23287 -321.30201,166.48796 C -321.94399,164.34523 -322.43878,159.7193 -322.40156,156.20811 C -322.34501,150.87429 -322.15538,150.19425 -321.24875,152.07413 C -320.65192,153.31163 -319.55127,154.32413 -318.80286,154.32413 C -318.05444,154.32413 -316.56867,154.8696 -315.50115,155.53628 C -312.71533,157.27605 -312.17663,156.12452 -313.49167,151.24084 C -314.1263,148.88399 -314.3868,145.66192 -314.07055,144.08068 C -313.35584,140.50713 -316.99543,132.9474 -321.2498,129.16877 C -322.89412,127.70833 -324.43023,125.94116 -324.66337,125.24172 C -325.4052,123.01625 -327.46924,125.32713 -327.46924,128.38314 C -327.46924,132.33174 -328.60658,132.08704 -330.99184,127.62525 C -335.67374,118.86739 -347.83833,109.39816 -354.46924,109.34983 C -358.81764,109.31813 -363.40025,112.97662 -365.97604,118.53621 C -371.46024,130.37328 -370.01924,143.05936 -360.80344,164.07413 C -359.81437,166.32949 -362.0206,165.39041 -367.53863,161.20729 C -375.61983,155.08109 -380.60545,153.13693 -388.33105,153.09924 C -396.08937,153.06138 -401.48337,155.01576 -406.34135,159.62481 C -413.79131,166.69302 -415.49955,176.85714 -410.81684,186.25412 C -407.23017,193.45163 -398.05982,203.02198 -390.42609,207.53431 C -383.86609,211.41193 -382.46924,211.52987 -382.46924,208.2061 C -382.46924,205.00072 -380.57165,207.03554 -377.87547,213.13208 C -375.06311,219.49133 -373.27533,221.77786 -368.96924,224.52298 C -364.1355,227.60447 -358.22133,226.52159 -348.48519,220.77238 z M -342.77611,170.53753 C -346.90321,165.97714 -349.56344,152.91486 -347.60552,146.82413 C -346.74519,144.14778 -346.63187,144.45646 -346.55519,149.68542 L -346.46924,155.54671 L -342.86886,154.87128 C -339.11244,154.16657 -335.46924,156.16001 -335.46924,158.9201 C -335.46924,159.6274 -334.96893,160.51531 -334.35744,160.89323 C -329.81318,163.70174 -330.8844,143.48144 -335.62587,136.9503 C -336.96542,135.10515 -337.2213,134.22977 -336.34073,134.50476 C -331.84686,135.90811 -328.90815,153.03993 -331.43268,163.1173 C -333.44953,171.16815 -338.94949,174.76591 -342.77611,170.53753 z M -320.66924,139.12413 C -319.73591,138.19079 -319.20257,138.19079 -318.26924,139.12413 C -317.33591,140.05746 -317.60257,140.32413 -319.46924,140.32413 C -321.33591,140.32413 -321.60257,140.05746 -320.66924,139.12413 z M -349.47838,116.83514 C -348.79871,116.01619 -347.79557,115.62244 -347.24917,115.96014 C -346.64571,116.3331 -346.78833,116.91161 -347.61248,117.43381 C -349.76951,118.80058 -350.82776,118.46104 -349.47838,116.83514 z M -292.70485,159.4244 C -292.30735,155.2875 -292.53054,154.23784 -293.92117,153.7042 C -294.89875,153.32907 -296.2777,153.70402 -297.158,154.58432 C -299.25424,156.68056 -300.10127,164.85765 -298.43069,166.87058 C -296.28905,169.4511 -293.29404,165.55623 -292.70485,159.4244 z"
- id="path3482" />
- <path
- style="fill:#e41e12"
- d="M -412.46924,442.70017 C -414.39424,442.4597 -416.86924,441.87626 -417.96924,441.40365 C -419.06924,440.93103 -421.99424,439.99466 -424.46924,439.32282 C -434.97301,436.47158 -443.74584,429.54598 -448.08293,420.68129 C -450.35842,416.03035 -450.66559,414.35899 -450.2337,408.97858 C -449.31409,397.52218 -442.08426,385.64764 -431.47199,378.16367 C -427.46014,375.33443 -425.15915,372.91458 -424.45662,370.78589 C -422.99864,366.36816 -419.753,363.63735 -413.40841,361.49019 C -407.60339,359.52562 -408.51916,360.47955 -386.36903,333.32413 C -382.55573,328.64913 -379.02114,323.33112 -378.51438,321.50633 C -378.00763,319.68154 -374.70107,314.95654 -371.16648,311.00633 C -364.28682,303.31772 -358.46924,294.83741 -358.46924,292.49751 C -358.46924,290.21044 -364.91929,291.74913 -371.19333,295.5329 C -374.19486,297.34308 -379.64734,301.26544 -383.30995,304.24926 C -386.97256,307.23309 -389.06924,308.62594 -387.96924,307.34449 C -385.16635,304.07924 -371.70565,294.16799 -364.77349,290.26523 C -361.58115,288.46796 -358.75873,286.82295 -358.50144,286.60966 C -358.24415,286.39637 -357.73083,282.69823 -357.36073,278.39156 C -356.91614,273.21819 -355.77456,268.52628 -353.99636,264.56391 L -351.30491,258.56656 L -353.36523,254.528 C -354.49841,252.30679 -357.80441,247.63975 -360.7119,244.15679 C -363.6194,240.67383 -367.62532,235.32474 -369.61396,232.26993 C -371.60259,229.21512 -375.9364,223.57862 -379.24464,219.74437 L -385.25962,212.773 L -382.8377,211.63003 C -380.53596,210.54378 -380.26873,210.77838 -377.45229,216.35772 C -375.18484,220.8495 -373.41779,222.85601 -369.92888,224.90065 C -363.7582,228.51691 -358.76479,227.91582 -349.56284,222.44904 C -345.74405,220.18034 -341.93311,218.32413 -341.0941,218.32413 C -340.25509,218.32413 -339.15537,217.58569 -338.65029,216.68316 C -337.90944,215.35934 -335.91887,215.01762 -328.3506,214.91503 C -319.99486,214.80176 -318.21497,214.43264 -312.06991,211.53865 C -308.27528,209.75159 -305.00019,208.45984 -304.79193,208.6681 C -304.58368,208.87636 -304.87507,210.26135 -305.43948,211.74586 C -306.57428,214.7306 -304.37687,226.56437 -302.17264,229.33887 C -301.51077,230.17197 -295.79236,234.28204 -289.46507,238.47235 C -271.16228,250.59354 -264.51784,259.3336 -262.19446,274.34397 C -260.93372,282.48903 -262.04291,288.79671 -266.33329,297.88038 C -268.65231,302.79024 -269.25658,305.72752 -269.80719,314.76651 C -270.52988,326.63035 -270.37632,326.3457 -277.46924,328.96993 C -283.81176,331.31652 -285.60043,333.44775 -291.03205,345.13021 L -295.82374,355.43629 L -292.26798,358.99205 L -288.71223,362.54781 L -279.34073,360.32821 C -267.10615,357.43049 -254.95236,356.64896 -248.82086,358.36567 C -236.37065,361.85152 -230.18095,377.46036 -235.55403,391.8212 C -239.97284,403.63154 -252.79508,413.55877 -270.01431,418.50103 C -280.95288,421.64062 -301.11601,421.60961 -312.96924,418.43497 C -323.54476,415.60253 -335.09063,410.06085 -339.65257,405.62775 C -344.15382,401.25361 -346.03624,394.80283 -344.63339,388.55918 C -343.39526,383.0487 -339.16156,375.9533 -335.59733,373.41533 C -333.60748,371.99844 -332.54484,370.19837 -332.11634,367.51869 C -331.40245,363.05426 -329.91146,361.52524 -322.79512,357.95974 C -318.16929,355.64205 -317.09792,354.43783 -312.68476,346.59574 C -305.97624,334.67481 -305.81331,333.98525 -309.09513,331.40377 C -311.5938,329.43831 -311.71149,329.0201 -310.69657,325.71319 C -310.09409,323.75011 -309.8461,321.50562 -310.14549,320.72541 C -311.04845,318.37235 -315.26977,317.97624 -320.03776,319.79715 C -323.41843,321.08824 -324.86254,322.32966 -325.91561,324.85003 C -326.68345,326.68772 -328.67482,328.8962 -330.34088,329.75775 C -334.76761,332.0469 -345.1504,334.29033 -351.46924,334.323 C -354.49424,334.33864 -357.98266,334.62302 -359.22129,334.95495 C -361.57677,335.58618 -382.46924,357.99126 -382.46924,359.88605 C -382.46924,360.48525 -381.30985,362.06469 -379.89283,363.39592 C -377.62674,365.5248 -377.35573,366.47677 -377.64283,371.29954 L -377.96924,376.78275 L -370.17219,381.90288 C -355.68334,391.41734 -351.9452,397.05805 -351.99994,409.32413 C -352.03455,417.07953 -354.17092,422.06638 -359.79832,427.52758 C -364.20624,431.80533 -377.65544,438.90743 -383.25965,439.91679 C -385.29992,440.28426 -387.4567,440.96906 -388.05249,441.43857 C -389.30072,442.42225 -407.26404,443.3504 -412.46924,442.70017 z M -384.17689,436.37724 C -363.97197,431.20969 -354.46924,421.95452 -354.46924,407.44351 C -354.46924,395.96958 -358.85841,390.04576 -372.78037,382.72998 C -379.56246,379.16609 -381.19062,378.94896 -386.96924,380.8378 C -388.6288,381.38026 -388.54369,381.13129 -386.46924,379.37522 C -380.39052,374.22941 -379.46924,373.01571 -379.46924,370.15343 C -379.46924,364.14065 -383.04874,361.16732 -384.98211,365.57413 C -386.65911,369.39659 -393.93016,372.32413 -401.74687,372.32413 C -410.77816,372.32413 -415.12677,370.0839 -413.87902,366.07413 C -413.0094,363.2795 -416.24906,363.9501 -419.54616,367.24721 C -421.15386,368.8549 -422.46924,371.07037 -422.46924,372.17048 C -422.46924,375.10624 -417.86578,380.07813 -414.45368,380.82755 C -410.6604,381.66069 -409.58865,383.32413 -412.84512,383.32413 C -416.28091,383.32413 -420.54264,381.59051 -423.18009,379.11998 C -425.13196,377.29165 -425.74112,377.19411 -428.38025,378.28727 C -432.83305,380.13168 -441.21449,389.53311 -444.23499,396.07149 C -447.85292,403.90309 -448.45271,413.47605 -445.66752,418.93547 C -443.00212,424.16008 -434.53324,431.96593 -428.75915,434.52009 C -417.47993,439.50942 -399.37283,440.2637 -384.17689,436.37724 z M -269.96924,415.81541 C -249.17563,410.06966 -236.17959,396.63829 -236.24475,380.96122 C -236.25878,377.58582 -236.72076,373.67376 -237.27138,372.26776 C -238.85852,368.215 -243.36748,363.42503 -247.84503,361.03512 C -253.57444,357.97703 -265.64951,358.16406 -277.96924,361.50172 L -286.96924,363.94 L -288.10898,368.49897 C -289.70927,374.90019 -291.9659,377.90557 -296.54893,379.73934 C -301.19589,381.59869 -301.46924,381.6326 -301.46924,380.34981 C -301.46924,379.81393 -300.09934,378.66709 -298.42502,377.80126 C -292.19423,374.5792 -289.54673,365.9199 -293.35462,361.21735 C -294.94341,359.25528 -295.48597,359.09312 -296.80347,360.18655 C -297.66338,360.90021 -298.87744,363.03094 -299.50138,364.92151 C -301.08541,369.72116 -305.27911,371.72677 -312.23083,371.00929 C -315.19716,370.70314 -318.766,369.70448 -320.16158,368.79006 C -322.296,367.39154 -322.61134,366.58719 -322.147,363.7258 C -321.4909,359.68278 -322.63792,359.4019 -326.01469,362.77868 C -330.00967,366.77365 -329.40015,371.37146 -324.29642,375.74006 C -322.00138,377.70453 -320.40542,379.59364 -320.74985,379.93808 C -321.84125,381.02947 -326.20492,379.41742 -329.37129,376.7531 C -332.22281,374.3537 -332.57646,374.28582 -334.65198,375.73958 C -342.20848,381.03235 -344.96044,392.47866 -340.44602,399.83888 C -336.3652,406.49216 -322.49623,413.65526 -307.46924,416.87085 C -299.02936,418.67688 -278.20355,418.09073 -269.96924,415.81541 z M -301.31848,282.24345 C -298.47016,280.71907 -295.51714,273.64604 -295.4912,268.28602 C -295.44914,259.59381 -301.9998,250.93216 -306.70942,253.45267 C -312.36212,256.4779 -314.33915,268.6093 -310.5422,276.97132 C -307.95325,282.67297 -305.13306,284.28495 -301.31848,282.24345 z M -271.35093,277.57413 C -269.83304,273.66866 -270.94422,264.94931 -273.65621,259.48478 C -277.65726,251.42285 -282.50801,253.23749 -282.42535,262.76526 C -282.31915,275.00514 -274.44488,285.53473 -271.35093,277.57413 z M -366.57136,218.06093 C -372.4913,214.11789 -373.56853,210.43435 -373.24903,195.22694 L -372.96924,181.9097 L -369.1204,188.49603 C -364.45222,196.48444 -356.03726,204.97047 -348.02807,209.76648 C -344.00959,212.17279 -342.76913,213.32413 -344.19502,213.32413 C -345.35448,213.32413 -349.27197,214.89913 -352.90055,216.82413 C -360.66038,220.9408 -362.05781,221.06723 -366.57136,218.06093 z M -395.52346,207.49815 C -404.96137,201.49889 -416.19376,185.63996 -418.06334,175.67424 C -418.42548,173.74386 -419.29355,171.94504 -419.99238,171.67688 C -420.69121,171.40871 -423.35069,173.42124 -425.90235,176.14916 C -433.90251,184.70198 -444.84379,187.88095 -456.23573,184.96246 C -473.20101,180.61616 -481.01809,167.72959 -480.58393,144.82413 C -480.44675,137.58645 -476.13886,127.91437 -471.18697,123.72603 C -461.66988,115.67641 -446.92752,113.45692 -436.92909,118.56845 C -430.86449,121.66887 -424.0111,128.84492 -421.33334,134.89846 C -420.25661,137.33257 -418.76467,139.32413 -418.0179,139.32413 C -417.27114,139.32413 -415.20211,136.73663 -413.42004,133.57413 C -411.63798,130.41163 -406.87002,124.51082 -402.82458,120.46122 C -398.77914,116.41163 -395.46924,112.55693 -395.46924,111.89524 C -395.46924,111.23354 -397.96892,109.6561 -401.02408,108.3898 C -408.99409,105.08642 -415.59992,98.281158 -417.86688,91.038531 C -420.14438,83.762205 -419.75681,71.586572 -417.07242,66.080336 C -414.62272,61.0555 -408.91227,55.32142 -402.90298,51.85226 C -398.46134,49.288098 -397.01199,48.995039 -388.37191,48.914068 C -382.94429,48.863204 -377.7307,49.328082 -376.37191,49.984069 C -375.05044,50.622037 -371.84692,52.11733 -369.25298,53.306942 C -366.64499,54.502996 -362.36256,57.848753 -359.67306,60.791499 C -350.40695,70.930093 -349.05166,83.377508 -355.78494,96.501115 C -359.73865,104.20714 -359.66139,104.3821 -351.51071,106.18067 C -343.16615,108.02202 -332.62014,113.57488 -325.96924,119.62918 C -320.4452,124.6577 -314.48644,132.96752 -312.92211,137.82413 C -312.56779,138.92413 -313.43227,137.88978 -314.84316,135.52559 C -317.32475,131.36726 -326.22767,121.69396 -326.87619,122.45132 C -327.05177,122.65636 -327.6242,124.15061 -328.14825,125.77186 L -329.10106,128.7196 L -332.20054,124.21467 C -338.46631,115.10769 -348.20456,108.39351 -355.21636,108.34609 C -359.77595,108.31525 -365.87955,114.00115 -367.87308,120.13664 C -371.49405,131.28087 -370.78535,141.41384 -365.41578,155.27124 C -363.82867,159.36714 -362.67087,162.8591 -362.84291,163.03113 C -363.01495,163.20317 -365.26585,161.73271 -367.84492,159.76344 C -374.91064,154.36837 -380.47919,152.25758 -387.79451,152.20143 C -396.57088,152.13407 -402.18096,154.03585 -406.78376,158.63865 C -420.83923,172.69412 -414.793,192.3235 -391.41882,208.52168 C -387.2949,211.37954 -390.7874,210.50865 -395.52346,207.49815 z M -297.96924,202.32413 C -296.97375,201.22413 -295.93426,200.32413 -295.65926,200.32413 C -295.38426,200.32413 -295.97375,201.22413 -296.96924,202.32413 C -297.96473,203.42413 -299.00422,204.32413 -299.27922,204.32413 C -299.55422,204.32413 -298.96473,203.42413 -297.96924,202.32413 z M -291.84331,194.0806 C -290.9208,192.29667 -289.82292,189.70917 -289.40358,188.3306 C -288.89045,186.64371 -288.61304,186.40938 -288.55519,187.61397 C -288.4678,189.43372 -292.09201,197.32413 -293.01524,197.32413 C -293.29319,197.32413 -292.76582,195.86454 -291.84331,194.0806 z M -298.2313,177.63597 C -298.92543,177.36837 -300.86951,175.14926 -302.55146,172.70463 C -305.46362,168.47194 -305.78517,168.29168 -309.2894,168.92718 C -311.31331,169.29423 -314.57668,170.402 -316.54133,171.38889 L -320.11342,173.18325 L -320.20902,170.00369 C -320.26161,168.25493 -320.62239,164.23663 -321.01076,161.07413 C -321.70581,155.41443 -321.6775,155.32413 -319.20808,155.32413 C -316.33357,155.32413 -313.80437,158.54087 -313.30112,162.83687 C -312.87486,166.47558 -310.72878,167.20639 -309.92099,163.98792 C -309.29645,161.49954 -310.93903,144.96837 -312.14394,141.61587 C -312.49812,140.63041 -312.43695,140.14088 -312.008,140.52803 C -310.57362,141.82264 -308.50066,152.75335 -308.48486,159.10551 C -308.47286,163.93258 -308.09858,165.52913 -306.86832,166.00123 C -304.848,166.7765 -303.50431,164.70553 -303.48455,160.78602 C -303.46168,156.24833 -299.43667,148.98654 -296.35967,147.93155 C -286.84734,144.6701 -280.94911,157.96965 -286.4912,170.18333 C -287.57912,172.5809 -288.46924,175.33633 -288.46924,176.30651 C -288.46924,177.71103 -289.33529,178.07578 -292.71924,178.0965 C -295.05674,178.1108 -297.53717,177.90356 -298.2313,177.63597 z M -294.95692,167.66895 C -292.74733,165.45937 -291.46924,161.90107 -291.46924,157.95903 C -291.46924,151.61326 -296.65273,150.12569 -299.02027,155.79201 C -300.72002,159.8601 -300.89151,164.66659 -299.43406,167.38987 C -298.16687,169.75764 -297.11139,169.82343 -294.95692,167.66895 z M -378.7037,171.94345 C -380.73587,170.4003 -380.02325,169.32413 -376.96924,169.32413 C -374.11649,169.32413 -373.22479,170.32466 -374.60036,171.98212 C -375.96482,173.6262 -376.49425,173.62121 -378.7037,171.94345 z M -342.1564,169.07413 C -344.12604,166.89725 -346.46924,161.31317 -346.46924,158.79623 C -346.46924,157.20528 -340.96391,154.92033 -338.97219,155.68462 C -338.12906,156.00816 -336.98669,157.52191 -336.4336,159.0485 C -335.8805,160.5751 -334.92213,162.81623 -334.30389,164.02879 C -333.41188,165.7783 -333.52412,166.75894 -334.84758,168.77879 C -336.90753,171.92268 -339.48482,172.02682 -342.1564,169.07413 z"
- id="path3480" />
- <path
- style="fill:#552113"
- d="M -412.46924,442.70017 C -414.39424,442.4597 -416.86924,441.87626 -417.96924,441.40365 C -419.06924,440.93103 -421.99424,439.99466 -424.46924,439.32282 C -434.97301,436.47158 -443.74584,429.54598 -448.08293,420.68129 C -450.35842,416.03035 -450.66559,414.35899 -450.2337,408.97858 C -449.31409,397.52218 -442.08426,385.64764 -431.47199,378.16367 C -427.46014,375.33443 -425.15915,372.91458 -424.45662,370.78589 C -422.99864,366.36816 -419.753,363.63735 -413.40841,361.49019 C -407.60339,359.52562 -408.51916,360.47955 -386.36903,333.32413 C -382.55573,328.64913 -379.02114,323.33112 -378.51438,321.50633 C -378.00763,319.68154 -374.70107,314.95654 -371.16648,311.00633 C -364.28682,303.31772 -358.46924,294.83741 -358.46924,292.49751 C -358.46924,290.21044 -364.91929,291.74913 -371.19333,295.5329 C -374.19486,297.34308 -379.64734,301.26544 -383.30995,304.24926 C -386.97256,307.23309 -389.06924,308.62594 -387.96924,307.34449 C -385.16635,304.07924 -371.70565,294.16799 -364.77349,290.26523 C -361.58115,288.46796 -358.75873,286.82295 -358.50144,286.60966 C -358.24415,286.39637 -357.73083,282.69823 -357.36073,278.39156 C -356.91614,273.21819 -355.77456,268.52628 -353.99636,264.56391 L -351.30491,258.56656 L -353.36523,254.528 C -354.49841,252.30679 -357.80441,247.63975 -360.7119,244.15679 C -363.6194,240.67383 -367.62532,235.32474 -369.61396,232.26993 C -371.60259,229.21512 -375.9364,223.57862 -379.24464,219.74437 L -385.25962,212.773 L -382.8377,211.63003 C -380.53596,210.54378 -380.26873,210.77838 -377.45229,216.35772 C -375.18484,220.8495 -373.41779,222.85601 -369.92888,224.90065 C -363.7582,228.51691 -358.76479,227.91582 -349.56284,222.44904 C -345.74405,220.18034 -341.93311,218.32413 -341.0941,218.32413 C -340.25509,218.32413 -339.15537,217.58569 -338.65029,216.68316 C -337.90944,215.35934 -335.91887,215.01762 -328.3506,214.91503 C -319.99486,214.80176 -318.21497,214.43264 -312.06991,211.53865 C -308.27528,209.75159 -305.00019,208.45984 -304.79193,208.6681 C -304.58368,208.87636 -304.87507,210.26135 -305.43948,211.74586 C -306.57428,214.7306 -304.37687,226.56437 -302.17264,229.33887 C -301.51077,230.17197 -295.79236,234.28204 -289.46507,238.47235 C -271.16228,250.59354 -264.51784,259.3336 -262.19446,274.34397 C -260.93372,282.48903 -262.04291,288.79671 -266.33329,297.88038 C -268.65231,302.79024 -269.25658,305.72752 -269.80719,314.76651 C -270.52988,326.63035 -270.37632,326.3457 -277.46924,328.96993 C -283.81176,331.31652 -285.60043,333.44775 -291.03205,345.13021 L -295.82374,355.43629 L -292.26798,358.99205 L -288.71223,362.54781 L -279.34073,360.32821 C -267.10615,357.43049 -254.95236,356.64896 -248.82086,358.36567 C -236.37065,361.85152 -230.18095,377.46036 -235.55403,391.8212 C -239.97284,403.63154 -252.79508,413.55877 -270.01431,418.50103 C -280.95288,421.64062 -301.11601,421.60961 -312.96924,418.43497 C -323.54476,415.60253 -335.09063,410.06085 -339.65257,405.62775 C -344.15382,401.25361 -346.03624,394.80283 -344.63339,388.55918 C -343.39526,383.0487 -339.16156,375.9533 -335.59733,373.41533 C -333.60748,371.99844 -332.54484,370.19837 -332.11634,367.51869 C -331.40245,363.05426 -329.91146,361.52524 -322.79512,357.95974 C -318.16929,355.64205 -317.09792,354.43783 -312.68476,346.59574 C -305.97624,334.67481 -305.81331,333.98525 -309.09513,331.40377 C -311.5938,329.43831 -311.71149,329.0201 -310.69657,325.71319 C -310.09409,323.75011 -309.8461,321.50562 -310.14549,320.72541 C -311.04845,318.37235 -315.26977,317.97624 -320.03776,319.79715 C -323.41843,321.08824 -324.86254,322.32966 -325.91561,324.85003 C -326.68345,326.68772 -328.67482,328.8962 -330.34088,329.75775 C -334.76761,332.0469 -345.1504,334.29033 -351.46924,334.323 C -354.49424,334.33864 -357.98266,334.62302 -359.22129,334.95495 C -361.57677,335.58618 -382.46924,357.99126 -382.46924,359.88605 C -382.46924,360.48525 -381.30985,362.06469 -379.89283,363.39592 C -377.62674,365.5248 -377.35573,366.47677 -377.64283,371.29954 L -377.96924,376.78275 L -370.17219,381.90288 C -355.68334,391.41734 -351.9452,397.05805 -351.99994,409.32413 C -352.03455,417.07953 -354.17092,422.06638 -359.79832,427.52758 C -364.20624,431.80533 -377.65544,438.90743 -383.25965,439.91679 C -385.29992,440.28426 -387.4567,440.96906 -388.05249,441.43857 C -389.30072,442.42225 -407.26404,443.3504 -412.46924,442.70017 z M -384.17689,436.37724 C -363.97197,431.20969 -354.46924,421.95452 -354.46924,407.44351 C -354.46924,395.96958 -358.85841,390.04576 -372.78037,382.72998 C -379.56246,379.16609 -381.19062,378.94896 -386.96924,380.8378 C -388.6288,381.38026 -388.54369,381.13129 -386.46924,379.37522 C -380.39052,374.22941 -379.46924,373.01571 -379.46924,370.15343 C -379.46924,364.14065 -383.04874,361.16732 -384.98211,365.57413 C -386.65911,369.39659 -393.93016,372.32413 -401.74687,372.32413 C -410.77816,372.32413 -415.12677,370.0839 -413.87902,366.07413 C -413.0094,363.2795 -416.24906,363.9501 -419.54616,367.24721 C -421.15386,368.8549 -422.46924,371.07037 -422.46924,372.17048 C -422.46924,375.10624 -417.86578,380.07813 -414.45368,380.82755 C -410.6604,381.66069 -409.58865,383.32413 -412.84512,383.32413 C -416.28091,383.32413 -420.54264,381.59051 -423.18009,379.11998 C -425.13196,377.29165 -425.74112,377.19411 -428.38025,378.28727 C -432.83305,380.13168 -441.21449,389.53311 -444.23499,396.07149 C -447.85292,403.90309 -448.45271,413.47605 -445.66752,418.93547 C -443.00212,424.16008 -434.53324,431.96593 -428.75915,434.52009 C -417.47993,439.50942 -399.37283,440.2637 -384.17689,436.37724 z M -269.96924,415.81541 C -249.17563,410.06966 -236.17959,396.63829 -236.24475,380.96122 C -236.25878,377.58582 -236.72076,373.67376 -237.27138,372.26776 C -238.85852,368.215 -243.36748,363.42503 -247.84503,361.03512 C -253.57444,357.97703 -265.64951,358.16406 -277.96924,361.50172 L -286.96924,363.94 L -288.10898,368.49897 C -289.70927,374.90019 -291.9659,377.90557 -296.54893,379.73934 C -301.19589,381.59869 -301.46924,381.6326 -301.46924,380.34981 C -301.46924,379.81393 -300.09934,378.66709 -298.42502,377.80126 C -292.19423,374.5792 -289.54673,365.9199 -293.35462,361.21735 C -294.94341,359.25528 -295.48597,359.09312 -296.80347,360.18655 C -297.66338,360.90021 -298.87744,363.03094 -299.50138,364.92151 C -301.08541,369.72116 -305.27911,371.72677 -312.23083,371.00929 C -315.19716,370.70314 -318.766,369.70448 -320.16158,368.79006 C -322.296,367.39154 -322.61134,366.58719 -322.147,363.7258 C -321.4909,359.68278 -322.63792,359.4019 -326.01469,362.77868 C -330.00967,366.77365 -329.40015,371.37146 -324.29642,375.74006 C -322.00138,377.70453 -320.40542,379.59364 -320.74985,379.93808 C -321.84125,381.02947 -326.20492,379.41742 -329.37129,376.7531 C -332.22281,374.3537 -332.57646,374.28582 -334.65198,375.73958 C -342.20848,381.03235 -344.96044,392.47866 -340.44602,399.83888 C -336.3652,406.49216 -322.49623,413.65526 -307.46924,416.87085 C -299.02936,418.67688 -278.20355,418.09073 -269.96924,415.81541 z M -335.46924,329.69614 C -331.25778,328.26271 -329.89516,327.30299 -329.65304,325.59969 C -329.26103,322.84198 -333.74357,319.86548 -339.79305,318.86651 C -343.93279,318.1829 -344.01943,318.23189 -349.71924,324.47909 C -352.88174,327.9453 -355.46924,331.18761 -355.46924,331.68422 C -355.46924,333.13348 -341.48373,331.74327 -335.46924,329.69614 z M -279.34249,327.61596 C -273.17874,324.77475 -272.68623,324.30851 -272.29329,320.94273 C -272.06094,318.9525 -272.05885,315.71374 -272.28863,313.74549 C -272.66877,310.48931 -272.93282,310.22366 -275.21892,310.79744 L -277.73143,311.42804 L -275.52959,308.12609 C -274.31858,306.31001 -271.67209,301.44913 -269.6485,297.32413 C -266.15015,290.1929 -265.96988,289.33244 -265.98232,279.82413 C -266.00006,266.27186 -268.29681,260.51244 -277.33925,251.34519 C -285.65832,242.91128 -291.77477,240.32413 -303.39489,240.32413 C -318.47223,240.32413 -338.05794,247.73608 -345.83361,256.38451 C -351.73579,262.94914 -354.44127,270.3409 -355.38495,282.48004 C -356.27977,293.99078 -358.80916,299.78875 -367.06631,309.25654 C -372.4596,315.44058 -373.7838,318.04255 -370.99261,316.97147 C -370.18046,316.65982 -365.58849,315.88218 -360.78823,315.24339 C -349.00433,313.67524 -341.42877,314.57937 -333.70793,318.47535 C -330.26421,320.21307 -327.23145,321.41967 -326.96846,321.15668 C -326.70547,320.8937 -325.45309,318.71713 -324.18539,316.31987 C -321.35742,310.9721 -319.22432,309.84951 -320.08702,314.16301 L -320.68694,317.16261 L -316.82809,316.26722 C -311.41887,315.01211 -294.18609,315.05697 -294.96924,316.32413 C -295.30916,316.87413 -296.63076,317.32413 -297.90613,317.32413 C -302.83013,317.32413 -307.03784,320.01187 -308.23854,323.92411 C -308.86817,325.97562 -309.1316,328.06142 -308.82395,328.55921 C -307.57311,330.58311 -303.51181,331.2961 -294.96924,330.9915 C -287.46415,330.72389 -284.86853,330.16321 -279.34249,327.61596 z M -312.49617,275.07413 C -313.5572,272.73663 -314.41545,269.24913 -314.40339,267.32413 C -314.3605,260.47921 -310.11353,252.32413 -306.59175,252.32413 C -305.45061,252.32413 -305.63033,252.74866 -307.25245,253.88483 C -308.47796,254.74322 -310.15309,256.74587 -310.97495,258.33517 C -312.87717,262.01366 -312.90133,271.35424 -311.02027,275.85625 C -308.94941,280.8125 -310.18979,280.1552 -312.49617,275.07413 z M -280.51508,275.23848 C -281.12899,274.09138 -281.44292,272.96448 -281.2127,272.73426 C -280.98248,272.50404 -280.28067,273.44258 -279.65312,274.8199 C -278.27505,277.84444 -278.94603,278.17028 -280.51508,275.23848 z M -282.39029,269.90746 C -282.43371,268.8533 -282.19737,268.26267 -281.86507,268.59496 C -281.53278,268.92726 -281.49726,269.78975 -281.78613,270.51163 C -282.10535,271.30936 -282.34231,271.07241 -282.39029,269.90746 z M -366.57136,218.06093 C -372.4913,214.11789 -373.56853,210.43435 -373.24903,195.22694 L -372.96924,181.9097 L -369.1204,188.49603 C -364.45222,196.48444 -356.03726,204.97047 -348.02807,209.76648 C -344.00959,212.17279 -342.76913,213.32413 -344.19502,213.32413 C -345.35448,213.32413 -349.27197,214.89913 -352.90055,216.82413 C -360.66038,220.9408 -362.05781,221.06723 -366.57136,218.06093 z M -358.66924,218.12413 C -355.68047,215.13536 -359.6434,207.56393 -362.81766,210.19833 C -363.9446,211.13361 -364.31386,210.66905 -364.79367,207.71231 C -365.74102,201.87449 -370.3924,198.07554 -371.87196,201.93122 C -372.63297,203.91439 -370.84857,210.81556 -368.74445,214.02686 C -367.21074,216.3676 -362.987,219.20525 -360.91924,219.28409 C -360.34174,219.30611 -359.32924,218.78413 -358.66924,218.12413 z M -395.52346,207.49815 C -404.96137,201.49889 -416.19376,185.63996 -418.06334,175.67424 C -418.42548,173.74386 -419.29355,171.94504 -419.99238,171.67688 C -420.69121,171.40871 -423.35069,173.42124 -425.90235,176.14916 C -433.90251,184.70198 -444.84379,187.88095 -456.23573,184.96246 C -473.20101,180.61616 -481.01809,167.72959 -480.58393,144.82413 C -480.44675,137.58645 -476.13886,127.91437 -471.18697,123.72603 C -461.66988,115.67641 -446.92752,113.45692 -436.92909,118.56845 C -430.86449,121.66887 -424.0111,128.84492 -421.33334,134.89846 C -420.25661,137.33257 -418.76467,139.32413 -418.0179,139.32413 C -417.27114,139.32413 -415.20211,136.73663 -413.42004,133.57413 C -411.63798,130.41163 -406.87002,124.51082 -402.82458,120.46122 C -398.77914,116.41163 -395.46924,112.55693 -395.46924,111.89524 C -395.46924,111.23354 -397.96892,109.6561 -401.02408,108.3898 C -408.99409,105.08642 -415.59992,98.281158 -417.86688,91.038531 C -420.14438,83.762205 -419.75681,71.586572 -417.07242,66.080336 C -414.62272,61.0555 -408.91227,55.32142 -402.90298,51.85226 C -398.46134,49.288098 -397.01199,48.995039 -388.37191,48.914068 C -382.94429,48.863204 -377.7307,49.328082 -376.37191,49.984069 C -375.05044,50.622037 -371.84692,52.11733 -369.25298,53.306942 C -366.64499,54.502996 -362.36256,57.848753 -359.67306,60.791499 C -350.40695,70.930093 -349.05166,83.377508 -355.78494,96.501115 C -359.73865,104.20714 -359.66139,104.3821 -351.51071,106.18067 C -343.16615,108.02202 -332.62014,113.57488 -325.96924,119.62918 C -320.4452,124.6577 -314.48644,132.96752 -312.92211,137.82413 C -312.56779,138.92413 -313.43227,137.88978 -314.84316,135.52559 C -317.32475,131.36726 -326.22767,121.69396 -326.87619,122.45132 C -327.05177,122.65636 -327.6242,124.15061 -328.14825,125.77186 L -329.10106,128.7196 L -332.20054,124.21467 C -338.46631,115.10769 -348.20456,108.39351 -355.21636,108.34609 C -359.77595,108.31525 -365.87955,114.00115 -367.87308,120.13664 C -371.49405,131.28087 -370.78535,141.41384 -365.41578,155.27124 C -363.82867,159.36714 -362.67087,162.8591 -362.84291,163.03113 C -363.01495,163.20317 -365.26585,161.73271 -367.84492,159.76344 C -374.91064,154.36837 -380.47919,152.25758 -387.79451,152.20143 C -396.57088,152.13407 -402.18096,154.03585 -406.78376,158.63865 C -420.83923,172.69412 -414.793,192.3235 -391.41882,208.52168 C -387.2949,211.37954 -390.7874,210.50865 -395.52346,207.49815 z M -297.96924,202.32413 C -296.97375,201.22413 -295.93426,200.32413 -295.65926,200.32413 C -295.38426,200.32413 -295.97375,201.22413 -296.96924,202.32413 C -297.96473,203.42413 -299.00422,204.32413 -299.27922,204.32413 C -299.55422,204.32413 -298.96473,203.42413 -297.96924,202.32413 z M -291.84331,194.0806 C -290.9208,192.29667 -289.82292,189.70917 -289.40358,188.3306 C -288.89045,186.64371 -288.61304,186.40938 -288.55519,187.61397 C -288.4678,189.43372 -292.09201,197.32413 -293.01524,197.32413 C -293.29319,197.32413 -292.76582,195.86454 -291.84331,194.0806 z M -298.2313,177.63597 C -298.92543,177.36837 -300.86951,175.14926 -302.55146,172.70463 C -305.46362,168.47194 -305.78517,168.29168 -309.2894,168.92718 C -311.31331,169.29423 -314.57668,170.402 -316.54133,171.38889 L -320.11342,173.18325 L -320.20902,170.00369 C -320.26161,168.25493 -320.62239,164.23663 -321.01076,161.07413 C -321.70581,155.41443 -321.6775,155.32413 -319.20808,155.32413 C -316.33357,155.32413 -313.80437,158.54087 -313.30112,162.83687 C -312.87486,166.47558 -310.72878,167.20639 -309.92099,163.98792 C -309.29645,161.49954 -310.93903,144.96837 -312.14394,141.61587 C -312.49812,140.63041 -312.43695,140.14088 -312.008,140.52803 C -310.57362,141.82264 -308.50066,152.75335 -308.48486,159.10551 C -308.47286,163.93258 -308.09858,165.52913 -306.86832,166.00123 C -304.848,166.7765 -303.50431,164.70553 -303.48455,160.78602 C -303.46168,156.24833 -299.43667,148.98654 -296.35967,147.93155 C -286.84734,144.6701 -280.94911,157.96965 -286.4912,170.18333 C -287.57912,172.5809 -288.46924,175.33633 -288.46924,176.30651 C -288.46924,177.71103 -289.33529,178.07578 -292.71924,178.0965 C -295.05674,178.1108 -297.53717,177.90356 -298.2313,177.63597 z M -294.95692,167.66895 C -292.74733,165.45937 -291.46924,161.90107 -291.46924,157.95903 C -291.46924,151.61326 -296.65273,150.12569 -299.02027,155.79201 C -300.72002,159.8601 -300.89151,164.66659 -299.43406,167.38987 C -298.16687,169.75764 -297.11139,169.82343 -294.95692,167.66895 z M -378.7037,171.94345 C -380.73587,170.4003 -380.02325,169.32413 -376.96924,169.32413 C -374.11649,169.32413 -373.22479,170.32466 -374.60036,171.98212 C -375.96482,173.6262 -376.49425,173.62121 -378.7037,171.94345 z M -342.1564,169.07413 C -344.12604,166.89725 -346.46924,161.31317 -346.46924,158.79623 C -346.46924,157.20528 -340.96391,154.92033 -338.97219,155.68462 C -338.12906,156.00816 -336.98669,157.52191 -336.4336,159.0485 C -335.8805,160.5751 -334.92213,162.81623 -334.30389,164.02879 C -333.41188,165.7783 -333.52412,166.75894 -334.84758,168.77879 C -336.90753,171.92268 -339.48482,172.02682 -342.1564,169.07413 z"
- id="path3478" />
- <path
- style="fill:#070605"
- d="M -412.21924,442.65363 C -414.55674,442.40916 -416.46924,441.84389 -416.46924,441.39747 C -416.46924,440.95106 -417.93174,440.34338 -419.71924,440.04707 C -432.69675,437.89582 -446.29811,427.30119 -448.89088,417.32413 C -449.26618,415.87997 -448.6663,416.51348 -447.47051,418.82413 C -444.69468,424.18789 -437.2805,431.57103 -431.59881,434.62937 C -415.96311,443.04574 -389.1084,441.99045 -368.96924,432.16825 C -365.66924,430.55879 -363.86924,429.98654 -364.96924,430.89658 C -367.96856,433.37795 -378.30682,438.06652 -383.96924,439.51337 C -386.71924,440.21605 -389.20611,441.11217 -389.49562,441.50474 C -390.16408,442.41117 -406.59463,443.24189 -412.21924,442.65363 z M -360.46924,427.06902 C -360.46924,426.79402 -359.79424,426.00882 -358.96924,425.32413 C -358.14424,424.63944 -357.46924,424.30424 -357.46924,424.57924 C -357.46924,424.85424 -358.14424,425.63944 -358.96924,426.32413 C -359.79424,427.00882 -360.46924,427.34402 -360.46924,427.06902 z M -283.19841,419.71996 C -282.86611,419.38767 -282.00362,419.35215 -281.28174,419.64102 C -280.48401,419.96024 -280.72096,420.1972 -281.88591,420.24518 C -282.94007,420.2886 -283.5307,420.05225 -283.19841,419.71996 z M -328.31525,412.3204 C -331.80556,410.66921 -335.84573,408.38654 -337.2934,407.2478 C -340.12535,405.02019 -343.46249,400.45108 -343.4458,398.82413 C -343.44016,398.27413 -342.51469,399.26175 -341.3892,401.01884 C -339.17497,404.47564 -331.15918,410.21361 -324.27131,413.27238 C -321.90517,414.32314 -320.41924,415.21429 -320.96924,415.2527 C -321.51924,415.29112 -324.82495,413.97158 -328.31525,412.3204 z M -379.80257,377.65746 C -380.75827,376.70177 -380.62463,375.32413 -379.57623,375.32413 C -379.08507,375.32413 -378.4242,375.99913 -378.10761,376.82413 C -377.52269,378.34841 -378.58791,378.87212 -379.80257,377.65746 z M -424.88629,375.45834 C -425.31706,374.76134 -425.39945,373.92101 -425.06938,373.59093 C -424.17442,372.69597 -423.19861,374.01223 -423.68199,375.46238 C -424.02071,376.47855 -424.25626,376.47776 -424.88629,375.45834 z M -329.46924,374.82413 C -330.15393,373.99913 -331.29494,373.32413 -332.00482,373.32413 C -333.29998,373.32413 -332.93733,371.44274 -330.29331,364.4449 C -328.9798,360.96849 -328.26946,362.45258 -329.52417,366.05184 C -330.34585,368.40893 -330.24464,369.9259 -329.0797,372.714 C -327.44254,376.63229 -327.53826,377.15082 -329.46924,374.82413 z M -409.25734,370.19548 C -412.39875,369.28951 -412.51557,369.08163 -411.876,365.53567 C -411.04864,360.94859 -410.70335,360.32413 -408.99425,360.32413 C -408.24793,360.32413 -406.14668,358.41163 -404.32481,356.07413 C -402.50295,353.73663 -396.92176,346.87413 -391.92218,340.82413 C -381.05708,327.67627 -378.49768,324.07722 -377.58437,320.66221 C -376.97588,318.38698 -376.30971,318.04838 -371.93191,317.78919 C -369.20244,317.62759 -361.81377,317.17021 -355.51263,316.77279 L -344.05602,316.0502 L -350.75156,323.43717 C -354.4341,327.5 -357.45208,331.56285 -357.45817,332.46572 C -357.46426,333.3686 -358.48174,334.36843 -359.71924,334.68757 C -362.09228,335.29956 -381.61306,356.37749 -382.46924,359.25231 C -382.97053,360.93552 -384.13805,362.51056 -388.09151,366.83706 C -391.76748,370.85988 -401.56377,372.41428 -409.25734,370.19548 z M -315.13118,369.1756 C -320.45277,367.98092 -322.32824,365.92926 -320.61154,363.18038 C -319.93099,362.09064 -319.63397,360.38047 -319.95151,359.38001 C -320.29715,358.29099 -319.95271,357.3399 -319.09324,357.01009 C -317.289,356.31774 -306.46925,337.17441 -306.4692,334.67444 C -306.46916,332.99628 -305.50569,332.81961 -296.11329,332.7755 L -285.75741,332.72688 L -288.12976,338.09119 C -289.43456,341.04156 -291.61972,345.66098 -292.98568,348.35657 C -294.35164,351.05216 -295.46924,354.34946 -295.46924,355.6839 C -295.46924,357.01834 -296.16719,358.37798 -297.02025,358.70533 C -297.8733,359.03268 -299.45017,361.28745 -300.52441,363.71594 C -301.95239,366.94412 -303.32324,368.42619 -305.62263,369.22776 C -309.17207,370.4651 -309.39264,370.46389 -315.13118,369.1756 z M -290.46924,363.32413 C -290.46924,362.77413 -290.2708,362.32413 -290.02826,362.32413 C -289.78572,362.32413 -289.30916,362.77413 -288.96924,363.32413 C -288.62932,363.87413 -288.82776,364.32413 -289.41022,364.32413 C -289.99268,364.32413 -290.46924,363.87413 -290.46924,363.32413 z M -323.96924,319.32413 C -323.62932,318.77413 -322.92776,318.32413 -322.41022,318.32413 C -321.89268,318.32413 -321.46924,318.77413 -321.46924,319.32413 C -321.46924,319.87413 -322.1708,320.32413 -323.02826,320.32413 C -323.88572,320.32413 -324.30916,319.87413 -323.96924,319.32413 z M -312.35238,318.41752 C -313.36701,317.77492 -312.88171,317.354 -310.53087,316.83767 C -307.08293,316.08037 -305.87641,316.55589 -306.92812,318.2576 C -307.72216,319.54238 -310.44933,319.62278 -312.35238,318.41752 z M -272.31353,309.01175 C -273.45624,307.63487 -273.33386,306.94274 -271.48977,304.35296 C -263.55305,293.20687 -261.6168,276.67774 -266.8013,264.3292 C -268.30108,260.75698 -270.94037,256.03198 -272.66639,253.8292 L -275.80459,249.82413 L -272.58119,252.81461 C -270.80832,254.45937 -267.94994,258.66483 -266.22924,262.16008 C -260.66476,273.46315 -261.22069,286.94925 -267.78185,299.82413 C -268.90299,302.02413 -270.0793,305.3552 -270.39586,307.22651 C -270.90481,310.23508 -271.12677,310.44171 -272.31353,309.01175 z M -364.46924,291.02989 C -364.46924,290.75038 -362.89424,289.59241 -360.96924,288.45663 C -357.52274,286.42315 -357.46924,286.42164 -357.46924,288.35786 C -357.46924,289.62952 -358.14687,290.32413 -359.38745,290.32413 C -360.44247,290.32413 -362.01747,290.59727 -362.88745,290.93112 C -363.75744,291.26496 -364.46924,291.30941 -364.46924,291.02989 z M -352.72447,255.04723 C -353.68985,252.69905 -356.42161,248.53824 -358.79505,245.80097 C -362.31962,241.73613 -367.33929,234.62039 -373.76744,224.57657 C -374.20659,223.89041 -372.45212,224.45291 -369.86862,225.82657 C -367.28513,227.20023 -364.00088,228.31973 -362.5703,228.31436 C -359.58151,228.30314 -351.30412,224.64306 -345.78314,220.89146 C -343.70515,219.47943 -341.02193,218.32413 -339.82044,218.32413 C -338.61895,218.32413 -337.44846,217.76163 -337.21936,217.07413 C -336.93761,216.22866 -334.24074,215.78546 -328.88602,215.70465 C -321.68198,215.59592 -317.29689,214.55698 -308.0585,210.77003 C -306.41293,210.09549 -306.2349,210.32001 -306.77566,212.38787 C -307.4026,214.78529 -305.40427,224.17785 -303.27125,228.85932 C -302.65109,230.22043 -299.40444,232.89627 -296.05646,234.80564 C -292.70849,236.71501 -288.84424,239.18854 -287.46924,240.30237 L -284.96924,242.32752 L -289.37064,240.81676 C -299.87626,237.21078 -310.21012,237.9082 -326.03705,243.29136 C -336.61685,246.88982 -342.07486,250.03832 -346.80028,255.26879 C -348.81535,257.49923 -350.57771,259.32244 -350.71664,259.32038 C -350.85557,259.31832 -351.75909,257.3954 -352.72447,255.04723 z M -379.88517,217.84546 C -382.33205,214.63744 -382.61559,212.32413 -380.56191,212.32413 C -379.72012,212.32413 -376.25086,220.43908 -376.84054,221.02877 C -377.03293,221.22116 -378.40302,219.78867 -379.88517,217.84546 z M -356.05168,213.93909 C -356.58042,212.1492 -358.33012,209.98359 -360.18072,208.82855 C -361.94703,207.72612 -363.40953,206.22701 -363.43072,205.49721 C -363.49199,203.38658 -369.11095,198.32413 -371.39232,198.32413 C -373.28186,198.32413 -373.46924,197.73771 -373.46924,191.82413 C -373.46924,188.24913 -373.0832,185.32413 -372.61138,185.32413 C -372.13955,185.32413 -370.12002,187.97059 -368.12353,191.20516 C -364.09116,197.73812 -353.97258,207.63959 -348.81566,210.09876 C -346.97513,210.97645 -345.47985,211.94871 -345.49281,212.25934 C -345.50577,212.56998 -347.68037,213.77387 -350.32525,214.93467 L -355.13413,217.04521 L -356.05168,213.93909 z M -457.46924,184.389 C -472.27825,179.86798 -479.80696,167.43696 -479.91718,147.32413 C -479.96159,139.22018 -479.62275,137.16284 -477.61144,133.32413 C -472.04185,122.69422 -463.51035,117.26899 -451.20326,116.53099 C -444.01468,116.09993 -442.95714,116.30168 -436.97941,119.2445 C -429.83955,122.75945 -424.78327,128.09931 -421.44157,135.65379 C -420.30531,138.22247 -418.78102,140.32413 -418.05425,140.32413 C -417.32748,140.32413 -414.98604,137.31062 -412.85104,133.62745 C -410.71605,129.94427 -405.70674,123.70743 -401.71924,119.76778 C -397.73174,115.82814 -394.46924,112.17445 -394.46924,111.64848 C -394.46924,111.1225 -397.05674,109.6221 -400.21924,108.31425 C -408.0885,105.05993 -415.60696,97.46119 -417.5246,90.824127 C -419.73547,83.17214 -419.28416,71.817228 -416.54206,66.103448 C -413.97831,60.761315 -408.16559,55.074493 -402.67521,52.536953 C -400.63693,51.594899 -398.66282,50.397863 -398.28831,49.876873 C -397.38543,48.620854 -377.4582,48.743372 -376.62111,50.010089 C -376.26258,50.552629 -374.51202,51.494988 -372.73096,52.10422 C -365.24782,54.663928 -356.65543,62.821495 -354.06655,69.824127 C -350.959,78.229691 -351.94144,88.936436 -356.57463,97.157433 C -358.22778,100.09075 -359.42446,102.95846 -359.23391,103.53013 C -359.04335,104.10179 -355.09636,105.66401 -350.46281,107.00171 C -341.24005,109.66434 -334.64747,112.90426 -329.02933,117.53521 C -325.95693,120.06774 -325.61484,120.72036 -326.85546,121.68241 C -327.66522,122.31035 -328.47209,123.81441 -328.6485,125.02476 C -328.92467,126.9196 -329.597,126.43326 -333.48697,121.52476 C -341.56938,111.32607 -352.17482,105.92079 -358.72937,108.65945 C -371.07866,113.81932 -374.32476,137.03765 -365.48936,157.01154 C -364.44015,159.38346 -363.85142,161.32413 -364.18108,161.32413 C -364.51074,161.32413 -366.17293,160.26406 -367.87485,158.96842 C -380.64505,149.24665 -397.47081,148.79649 -406.87026,157.92512 C -412.62313,163.51224 -414.8894,168.75458 -414.93225,176.57413 C -414.9526,180.28663 -415.06917,183.32413 -415.19131,183.32413 C -415.31344,183.32413 -416.15076,180.73663 -417.05202,177.57413 C -417.95327,174.41163 -419.09196,171.39552 -419.58243,170.87166 C -420.12985,170.28696 -422.30733,171.90166 -425.22171,175.05343 C -431.80977,182.17813 -438.85093,185.32765 -447.96924,185.22841 C -451.81924,185.18651 -456.09424,184.80877 -457.46924,184.389 z M -299.57997,175.57413 C -303.27363,171.02435 -305.37015,167.38092 -304.57671,166.89055 C -304.09617,166.59356 -303.39585,163.89232 -303.02046,160.88781 C -301.77634,150.93021 -295.51206,145.10037 -289.96321,148.73612 C -284.01019,152.63669 -283.16329,161.44644 -287.72132,172.05706 C -289.90635,177.1436 -290.0838,177.29047 -294.06425,177.30706 C -296.77219,177.31835 -298.64049,176.73136 -299.57997,175.57413 z M -294.1838,167.56122 C -292.18212,165.34938 -289.93385,157.16173 -290.74659,155.04375 C -291.08191,154.16991 -292.2847,152.95808 -293.41944,152.35078 C -295.1348,151.43275 -295.90295,151.66693 -297.97593,153.73991 C -299.96393,155.72791 -300.46924,157.23919 -300.46924,161.19689 C -300.46924,163.9269 -300.1961,166.87236 -299.86225,167.74234 C -299.05579,169.84394 -296.16622,169.75177 -294.1838,167.56122 z M -377.96924,171.32413 C -378.30916,170.77413 -377.63416,170.32413 -376.46924,170.32413 C -375.30432,170.32413 -374.62932,170.77413 -374.96924,171.32413 C -375.30916,171.87413 -375.98416,172.32413 -376.46924,172.32413 C -376.95432,172.32413 -377.62932,171.87413 -377.96924,171.32413 z M -319.9975,164.85781 C -322.09509,157.10866 -321.29418,153.68521 -317.94614,156.08944 C -315.91897,157.54515 -313.46924,162.30547 -313.46924,164.78895 C -313.46924,167.34282 -311.2045,168.32282 -309.95916,166.30782 C -309.25321,165.16558 -307.46924,165.93603 -307.46924,167.38315 C -307.46924,167.90069 -308.31428,168.32413 -309.34712,168.32413 C -310.37995,168.32413 -312.80859,168.9858 -314.74409,169.7945 L -318.26318,171.26487 L -319.9975,164.85781 z M -342.32752,167.77717 C -345.38806,163.88633 -346.10431,159.26167 -343.89642,157.64722 C -341.00337,155.53177 -338.52871,156.06898 -337.32329,159.07413 C -336.7166,160.58663 -335.78031,162.78038 -335.24265,163.94913 C -333.99014,166.67177 -335.81729,170.32413 -338.43184,170.32413 C -339.47257,170.32413 -341.22563,169.178 -342.32752,167.77717 z M -322.50503,125.15977 C -323.65015,122.92692 -323.62333,122.90009 -321.89558,124.55032 C -320.90157,125.49972 -320.36254,126.55076 -320.69774,126.88596 C -321.03294,127.22116 -321.84623,126.44438 -322.50503,125.15977 z"
- id="path3476" />
- </g>
- <path
- id="path5785"
- d="M 106.46675,670.8859 C 102.28439,670.18001 96.932967,668.61811 94.574717,667.41502 C 88.240757,664.18368 80.951057,656.88921 77.973157,650.8026 C 72.138897,638.8778 77.104307,621.61564 89.731437,609.92514 C 93.116837,606.79086 96.951477,603.74131 98.252857,603.14836 C 99.554237,602.55541 100.9044,600.90992 101.25321,599.49171 C 101.60203,598.0735 102.52893,595.92212 103.31298,594.71087 C 104.82916,592.36859 113.85584,587.41315 116.60628,587.41315 C 117.50969,587.41315 123.15883,581.47171 129.15994,574.20996 C 144.1178,556.10993 147.56592,551.39318 147.60215,548.98254 C 147.61926,547.84438 151.10676,543.00264 155.35215,538.22312 C 163.55944,528.98326 167.4091,523.41315 165.58775,523.41315 C 163.42674,523.41315 155.95267,527.77804 149.34046,532.90164 C 145.63863,535.77007 134.94305,545.25096 125.57251,553.97029 C 100.66702,577.14495 87.164867,586.54346 72.639547,590.81564 C 62.408237,593.82487 50.447307,591.78749 47.649027,586.55885 C 46.060337,583.59036 47.588207,583.2891 52.615307,585.57962 C 58.777877,588.3875 67.411287,588.32025 75.011897,585.40516 C 88.515417,580.2261 97.606617,573.30677 124.17998,547.98323 C 143.26386,529.79693 150.68071,523.7551 161.18935,517.83506 L 167.30765,514.38832 L 168.39865,505.93667 C 168.9987,501.28826 170.40796,495.58432 171.53035,493.26125 C 172.65273,490.93818 173.57105,488.42467 173.57105,487.67566 C 173.57105,485.14973 170.46255,480.27775 165.19534,474.54835 C 162.31457,471.41478 157.98783,466.16495 155.58037,462.88205 C 147.74716,452.20041 139.60455,443.7181 133.66404,440.05141 C 125.10159,434.76636 116.07808,424.6104 111.45995,415.06069 C 109.32106,410.63773 107.57105,406.43264 107.57105,405.71605 C 107.57105,403.73727 106.81791,404.09962 103.00429,407.91324 C 101.07924,409.83829 97.156737,412.64863 94.287627,414.15844 C 89.661177,416.593 87.996357,416.90361 79.571047,416.90415 C 71.106277,416.9047 69.422697,416.58735 64.121347,413.99186 C 56.499807,410.26045 50.230017,403.80217 47.755597,397.13413 C 44.919757,389.49212 44.074387,374.45335 46.060907,366.98647 C 50.131587,351.68574 65.027457,341.37326 81.184577,342.6702 C 84.626457,342.94648 89.402027,344.12109 91.796947,345.28046 C 97.062007,347.82923 103.87438,354.38306 107.26675,360.16315 C 108.63864,362.50065 110.066,364.41315 110.43867,364.41315 C 110.81133,364.41315 112.00607,362.72999 113.09365,360.6728 C 114.18122,358.61561 118.35641,353.47918 122.37184,349.25851 L 129.67264,341.58457 L 123.55091,338.32173 C 109.53528,330.85148 103.03538,315.87402 107.03059,300.25463 C 111.04424,284.56313 121.72389,277.36561 140.86984,277.44877 C 156.78449,277.51789 167.06958,282.18063 173.36293,292.17949 C 177.65422,298.99748 178.83476,303.58869 178.39421,311.74658 C 178.03992,318.30705 177.34087,320.56315 172.49083,330.79908 C 172.25995,331.28634 174.54605,332.30346 177.57105,333.05935 C 198.79538,338.36287 217.09463,356.63068 220.75546,376.16956 C 222.43712,385.14504 222.54001,385.28724 224.54865,381.4121 C 226.91628,376.8444 229.51674,374.56555 233.13667,373.88621 C 236.92567,373.17515 241.89369,376.20405 244.17968,380.61893 C 246.38036,384.86906 246.31798,393.7439 244.0509,398.9395 C 242.90155,401.57352 242.27555,405.77875 242.19403,411.41315 C 242.08587,418.88862 241.71788,420.51405 239.14096,424.89852 C 237.52941,427.64048 234.19008,432.04428 231.72023,434.68476 C 227.8032,438.87237 227.17326,440.1648 226.78865,444.80272 C 226.02007,454.07081 228.51387,457.90942 240.70877,466.22943 C 261.38258,480.33421 268.47614,491.25926 268.5466,509.10355 C 268.57094,515.26649 265.04859,527.41702 261.94223,531.88566 C 261.00166,533.23871 260.57105,537.02572 260.57105,543.94453 C 260.57105,550.71472 260.13756,554.62373 259.25255,555.83405 C 258.52737,556.82579 255.04335,558.86425 251.51028,560.36397 L 245.08652,563.09073 L 240.39458,572.50194 C 237.81402,577.67811 235.67304,582.63091 235.63685,583.50816 C 235.60066,584.38542 236.47233,585.91882 237.57388,586.91572 C 239.511,588.66878 239.91296,588.65063 249.82388,586.36244 C 269.28409,581.86956 282.94165,583.51546 289.656,591.16269 C 294.75655,596.97189 296.52429,601.93184 296.54909,610.50343 C 296.56793,617.01586 296.13096,618.9744 293.4719,624.29566 C 287.69519,635.85587 276.30955,644.34472 259.57105,649.57129 C 253.10327,651.59084 250.00661,651.91258 237.07105,651.90903 C 224.61399,651.90562 220.66798,651.52186 213.79476,649.64535 C 196.89471,645.03135 183.78356,636.43839 181.58906,628.53794 C 179.09585,619.56211 181.47547,610.86932 188.54505,603.12765 C 191.16403,600.25967 193.62437,596.46281 194.01247,594.69018 C 194.8195,591.004 199.2141,586.92373 205.08994,584.40505 C 208.65305,582.87772 209.70433,581.5555 214.09745,573.07597 L 219.07105,563.47602 L 216.71005,561.81014 C 214.60315,560.32353 214.41746,559.62862 214.98465,555.35292 C 215.33423,552.71769 215.23343,550.32252 214.76065,550.03033 C 212.63979,548.71956 206.2645,551.9385 204.05766,555.43435 C 202.80269,557.42236 200.58367,559.83009 199.12651,560.78486 C 195.64902,563.06339 180.55627,566.36411 173.4897,566.39151 L 167.90836,566.41315 L 161.41145,573.66315 C 157.83815,577.65065 153.47458,582.56199 151.71463,584.57724 L 148.51472,588.24133 L 151.13834,592.07724 C 153.32415,595.27305 153.67415,596.67453 153.2358,600.47585 L 152.70965,605.03855 L 159.66776,609.33221 C 173.4151,617.81532 178.57105,625.47451 178.57105,637.41315 C 178.57105,649.84472 171.7117,659.62327 158.39142,666.18082 C 146.59784,671.98678 124.72986,673.96832 106.46675,670.8859 z M 226.17135,508.64784 C 229.49873,506.42608 230.93439,496.12407 228.7257,490.31833 C 227.50911,487.12041 224.89574,484.41315 223.0253,484.41315 C 219.83554,484.41315 217.04634,494.43377 218.49591,500.68572 C 220.07342,507.48949 223.14077,510.67141 226.17135,508.64784 z M 255.08444,504.37098 C 256.46238,500.02944 252.59317,486.41315 249.98152,486.41315 C 246.87368,486.41315 247.55503,496.61392 251.12385,503.51525 C 252.88599,506.92287 254.18539,507.20362 255.08444,504.37098 z M 233.04537,392.46281 C 235.58657,387.54867 234.81283,382.13768 231.91306,384.54427 C 230.68239,385.56564 229.89624,395.41315 231.04537,395.41315 C 231.30625,395.41315 232.20625,394.0855 233.04537,392.46281 z M 194.35431,379.62805 C 193.46122,367.14592 188.2513,361.14749 185.02002,368.88103 C 184.22309,370.78836 183.57105,374.66215 183.57105,377.48944 C 183.57105,382.43943 183.66148,382.60727 186.01074,382.01764 C 187.77199,381.5756 189.23192,382.09283 191.26074,383.87763 C 192.80641,385.23741 194.24402,386.36417 194.45542,386.38155 C 194.66682,386.39893 194.62132,383.35986 194.35431,379.62805 z M 212.57105,380.38103 C 212.57105,377.10651 209.73356,371.19468 208.52145,371.9438 C 207.52008,372.56268 208.04705,379.63735 209.24542,381.66315 C 210.17914,383.24157 212.57105,382.31942 212.57105,380.38103 z"
- style="fill:#ffffff;fill-opacity:0.19900498" />
- </g>
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3.53553390999999980;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 149.04328,169.78066 C 147.81001,169.02867 145.93228,166.88202 144.87055,165.01033 C 139.36428,155.30354 137.49703,153.28841 137.49703,157.0528 C 137.49703,162.67494 122.18044,150.31338 117.58801,140.98483 C 115.87286,137.50081 115.35727,135.54851 115.42041,132.77667 C 115.534,127.79006 118.54991,122.01315 122.48265,119.24911 C 125.14186,117.38015 126.19317,117.10725 131.75917,116.84113 C 139.47646,116.47216 141.66017,117.1403 148.94133,122.0982 C 154.30351,125.74943 156.58891,126.67927 156.58891,125.20967 C 156.58891,124.83089 155.59737,122.04665 154.38548,119.02249 C 150.18568,108.54217 149.13935,102.64197 150.24892,95.696271 C 151.78318,86.092397 156.31047,81.142395 162.09485,82.744381 C 165.87669,83.791761 166.96102,84.597644 165.20599,85.056598 C 163.12687,85.6003 161.40719,88.672933 161.66866,91.376874 L 161.89571,93.725013 L 163.14424,91.437169 C 163.90099,90.050519 165.15372,88.967599 166.32449,88.688009 C 167.38691,88.434299 168.66325,87.905687 169.16079,87.513321 C 170.37091,86.559016 172.69223,88.786841 176.8914,94.932539 C 180.24524,99.841041 181.47729,100.62385 182.62398,98.574825 C 183.57291,96.879183 186.39981,97.830659 187.88552,100.34575 C 189.48029,103.04547 189.46021,103.13654 187.21214,103.40077 C 184.46898,103.72316 183.91851,106.69218 184.40849,118.52229 L 184.82053,128.47033 L 182.37198,132.10621 C 178.35998,138.06368 179.21364,138.70716 185.48192,134.45045 C 189.78577,131.52775 194.20423,129.4339 196.06784,129.4339 C 196.68517,129.4339 198.48253,130.84141 200.06193,132.56171 C 201.70449,134.35078 203.83527,135.88205 205.0403,136.13936 C 209.89974,137.17699 210.30429,138.16365 208.18864,143.81823 C 205.3405,151.43062 196.81482,158.48192 187.44112,160.97785 C 176.9811,163.76303 167.04551,160.3627 157.25528,150.64711 C 153.44155,146.86246 151.16357,143.84857 149.30033,140.12228 C 146.18011,133.8822 145.99775,132.26233 148.41545,132.26233 C 151.5847,132.26233 151.06678,130.2121 147.27404,127.74403 C 144.45664,125.91064 141.4719,126.10253 138.58762,128.30247 C 135.3523,130.77017 135.30842,132.26233 138.47111,132.26233 C 139.78467,132.26233 141.23862,132.71926 141.70211,133.27774 C 142.19511,133.87178 142.95508,139.74923 143.53346,147.44132 C 144.62629,161.97519 145.21606,163.9825 149.30563,167.08734 C 152.87809,169.7996 156.08851,169.65776 162.33589,166.51163 C 165.0884,165.12549 167.50169,164.15261 167.69876,164.34968 C 168.09925,164.75015 161.56555,168.97621 158.50019,170.29944 C 155.59114,171.55519 151.59394,171.33592 149.04329,169.78066 L 149.04328,169.78066 z M 174.57642,130.73938 C 175.56898,130.28714 177.08077,128.47503 177.96846,126.67351 C 179.36277,123.84383 179.56988,122.32605 179.56988,114.93822 C 179.56988,107.18584 179.41619,106.17844 177.79051,103.27492 C 174.47117,97.346468 169.93517,97.24388 166.73445,103.02485 C 164.77185,106.56961 164.15017,109.64869 164.25012,115.32942 C 164.39689,123.67183 167.65434,129.95251 172.64232,131.5104 C 172.72126,131.53506 173.5916,131.18809 174.57643,130.73937 L 174.57642,130.73938 z"
- id="path5266" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 204.95502,121.83261 C 204.95502,118.66468 206.55782,115.74906 207.27373,117.61469 C 207.77475,118.92034 206.61624,123.54093 205.63594,124.14678 C 205.24429,124.38884 204.95502,123.40578 204.95502,121.83261 z"
- id="path5777" />
- </g>
-</svg>
--- a/screensaverapp/snsrapplication/themes/icons/theme2/analog-clock-hour-hand.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="354.33069"
- height="354.33069"
- id="svg2493"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="mouse-clock-hour-hand.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2495">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2501" />
- <inkscape:perspective
- id="perspective2510"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4078"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.4"
- inkscape:cx="103.27881"
- inkscape:cy="122.61408"
- inkscape:document-units="px"
- inkscape:current-layer="g4084"
- showgrid="false"
- units="cm"
- inkscape:window-width="1680"
- inkscape:window-height="990"
- inkscape:window-x="-4"
- inkscape:window-y="-4" />
- <metadata
- id="metadata2498">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g4084"
- transform="matrix(-0.1729112,0.6174197,-0.6174197,-0.1729112,161.54732,181.34073)"
- style="fill:#000000">
- <path
- style="fill:#000000;fill-opacity:1"
- d="M -184.9402,-14.123469 C -185.4383,-11.653333 -185.25159,-8.6857426 -184.46026,-6.4952357 C -183.74788,-4.5233312 -183.44956,-2.5371694 -183.79728,-2.081539 C -184.14501,-1.6259169 -185.16855,-0.43278806 -186.07179,0.5698477 C -187.82563,2.516692 -187.80057,7.5721204 -186.02111,10.798854 C -185.19115,12.303847 -185.35191,12.783061 -186.8459,13.257433 C -195.23789,15.922091 -198.28499,19.473431 -197.64037,25.838191 C -196.99997,32.161169 -192.77446,35.110907 -184.96055,34.689681 C -178.25706,34.328307 -164.92369,31.142901 -160.62362,28.875467 C -158.03558,27.510787 -153.95802,26.529199 -149.9588,26.308141 C -142.54482,25.898331 -138.98091,23.959461 -135.08697,18.217452 C -132.6217,14.582157 -132.43263,14.456928 -130.94792,15.475862 C -128.32662,17.274822 -125.29908,16.201145 -123.1113,12.696734 C -121.24033,9.6997643 -120.53612,9.3690514 -105.61469,4.4799411 C -97.063742,1.6781737 -81.07556,-2.4981774 -70.085396,-4.8008329 C -59.095232,-7.1034884 -48.049618,-9.4853717 -45.539584,-10.09392 C -39.473775,-11.564546 -26.201356,-12.63258 -19.970115,-12.15149 C -15.910127,-11.838032 -14.229086,-12.258259 -11.11753,-14.364417 C -7.6857213,-16.687349 -7.2243973,-17.405907 -6.7864072,-21.110499 C -5.8776346,-28.797102 -8.7677052,-33.647799 -14.632325,-34.27911 C -16.607367,-34.491716 -22.770515,-33.616735 -28.32821,-32.3347 C -33.885911,-31.052674 -40.670536,-29.711286 -43.405161,-29.353847 C -46.139782,-28.996399 -52.82847,-27.680884 -58.268908,-26.43047 C -63.709343,-25.180057 -70.225288,-23.946722 -72.748779,-23.689717 C -80.366347,-22.913897 -92.156488,-20.233777 -108.62135,-15.535209 L -124.24174,-11.077626 L -127.14533,-14.382267 C -131.30541,-19.116964 -134.38124,-19.899931 -137.49602,-17.017079 C -139.91021,-14.782645 -140.04974,-14.794767 -142.4513,-17.447567 C -146.29638,-21.694907 -153.6037,-23.10945 -157.62802,-20.385462 C -158.33801,-19.904883 -160.44506,-19.950748 -162.31033,-20.487385 C -167.0063,-21.838408 -177.26245,-21.360662 -181.00998,-19.616324 C -183.70247,-18.363066 -184.23551,-17.618077 -184.9402,-14.123469 z M -173.08739,-18.100647 C -167.40573,-18.764556 -162.4179,-17.835778 -159.27924,-15.529432 C -156.90499,-13.784792 -156.74161,-13.456372 -157.03878,-11.025557 C -157.31201,-8.7904275 -157.99623,-8.0635647 -161.67602,-6.0993306 C -165.55233,-4.0302005 -174.65174,-2.7753793 -179.22555,-3.679227 C -181.32522,-4.0941493 -183.22831,-8.3343208 -182.99494,-12.0776 C -182.81494,-14.96471 -182.39114,-15.611559 -180.07932,-16.527721 C -178.59157,-17.117311 -175.4452,-17.825124 -173.08739,-18.100647 z M -148.21315,-19.006947 C -145.79329,-18.212505 -144.66847,-17.093295 -142.3386,-13.161719 C -140.75372,-10.487259 -139.35185,-8.1430853 -139.22336,-7.9524526 C -139.09485,-7.7618117 -138.71786,-8.8922533 -138.38558,-10.464535 C -137.3652,-15.29284 -135.65145,-16.75315 -132.29771,-15.652124 C -129.14102,-14.615785 -126.23532,-10.705969 -127.82309,-9.631235 C -130.26811,-7.9762393 -129.45266,0.86427064 -126.26358,7.2756834 C -124.60931,10.601461 -124.53452,11.397839 -125.76704,12.562261 C -127.46955,14.170714 -129.94796,13.814572 -132.34221,11.617426 C -134.25929,9.8581831 -135.88241,10.330598 -134.78127,12.327318 C -134.38717,13.041948 -134.4923,13.916063 -135.0149,14.269799 C -135.53749,14.623534 -136.64915,16.244481 -137.48523,17.871889 C -140.35483,23.457448 -151.0093,26.06884 -156.25987,22.47353 C -158.25315,21.108631 -158.82723,20.136146 -160.02286,16.098906 C -162.11856,9.0225273 -163.02576,-0.61086403 -161.72326,-1.9570895 C -157.90276,-5.9058005 -153.56207,-3.4279293 -151.6283,3.8055793 C -150.69073,7.312684 -150.31609,7.973008 -149.55578,7.4583699 C -149.04534,7.112865 -149.03894,5.592587 -149.54155,4.0799711 C -150.4232,1.4267048 -150.30173,1.2239578 -146.09504,-1.6725985 C -143.69686,-3.3239075 -141.94085,-5.0039662 -142.19281,-5.4060555 C -142.87713,-6.4981017 -147.11338,-4.5683685 -148.92651,-2.3386442 C -150.27097,-0.68529243 -150.66099,-0.65089726 -151.46813,-2.114512 C -151.99253,-3.0654116 -153.14592,-4.3604369 -154.03121,-4.9923373 C -155.30486,-5.9014381 -155.5215,-6.8445315 -155.06913,-9.5105523 C -154.7547,-11.363666 -155.00879,-13.807098 -155.63377,-14.940397 C -156.25877,-16.073697 -156.71109,-17.348849 -156.63894,-17.774063 C -156.39171,-19.231103 -151.20683,-19.989776 -148.21315,-19.006947 z M -177.39426,-0.01085863 C -175.89498,0.21953122 -172.56615,0.16567231 -169.99685,-0.13055662 L -165.32538,-0.66915866 L -164.73177,4.1664136 C -164.40529,6.825977 -164.62961,9.3372169 -165.23027,9.7469461 C -167.54172,11.32365 -179.07813,12.775103 -181.69296,11.818191 C -183.95947,10.988749 -184.54794,10.322901 -185.06207,8.0061015 C -186.23269,2.7310049 -182.81368,-0.84367298 -177.39426,-0.01085863 z M -183.98489,15.369869 C -181.90259,15.27943 -178.68019,15.191388 -176.824,15.17422 C -174.9678,15.157059 -171.21627,14.584413 -168.48724,13.901673 C -163.85946,12.743914 -163.4726,12.827892 -162.74173,15.148982 C -162.31073,16.517733 -161.223,19.449728 -160.32456,21.664518 L -158.69101,25.691414 L -161.75685,26.983146 C -165.65498,28.625549 -182.03423,32.391494 -185.78958,32.508783 C -192.38285,32.714731 -196.31822,29.01621 -195.54057,23.344649 C -195.01649,19.522425 -189.33611,15.602289 -183.98489,15.369869 z"
- id="path4092" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -158.51076,-14.741593 C -162.46585,-18.153258 -168.77614,-19.024725 -176.50359,-17.226447 C -180.81045,-16.224189 -181.63064,-15.861353 -182.30431,-14.660368 C -183.41576,-12.678906 -182.68342,-7.3217365 -181.01607,-5.2365003 C -179.9866,-3.9490258 -179.22589,-3.6663598 -176.55034,-3.5770856 C -170.71583,-3.3824242 -163.41659,-4.9513254 -160.19698,-7.0920994 C -159.30695,-7.6839121 -158.32594,-8.4726271 -158.01697,-8.8448107 C -157.41158,-9.5740704 -156.87285,-12.157376 -157.12873,-13.104077 C -157.21507,-13.423524 -157.83698,-14.160407 -158.51075,-14.741597 L -158.51076,-14.741593 z"
- id="path4659" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -165.89843,-0.43856362 C -166.13559,-0.45089521 -166.9083,-0.38144149 -167.61555,-0.2842283 C -170.33139,0.089094265 -174.4825,0.27403217 -176.95745,0.13196729 C -181.91619,-0.15266267 -184.59409,1.4739286 -185.06857,5.0587391 C -185.25696,6.4820865 -184.78089,9.149255 -184.17707,10.053297 C -183.59542,10.924156 -181.69976,11.794048 -180.12444,11.912978 C -176.66076,12.174489 -167.49998,10.87895 -165.85737,9.8952983 C -165.12034,9.4539438 -165.00382,9.2100944 -164.83411,7.753931 C -164.72851,6.8479017 -164.80364,4.7284232 -165.00158,3.0297466 C -165.43153,-0.66008357 -165.36711,-0.41093601 -165.89843,-0.43856362 L -165.89843,-0.43856362 z"
- id="path4661" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -161.04636,19.853843 C -163.35356,13.8313 -163.38417,13.766906 -164.07473,13.483378 C -164.49042,13.312697 -165.93464,13.491137 -168.69881,14.054701 C -173.70386,15.07514 -175.21474,15.243417 -180.35417,15.352785 C -183.75951,15.425264 -184.89754,15.564404 -187.04504,16.170862 C -192.95616,17.840163 -196.15068,21.702411 -195.33859,26.197993 C -195.02887,27.912602 -194.18136,29.307466 -192.79265,30.388219 C -190.65805,32.049461 -187.61655,32.636046 -183.79126,32.124231 C -178.48318,31.414055 -164.967,28.101611 -161.01328,26.542002 C -158.88657,25.703089 -158.88199,25.69936 -159.11335,24.997642 C -159.24091,24.610752 -160.11075,22.296047 -161.04636,19.853843 z"
- id="path4663" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -128.51606,-12.733022 C -130.2038,-14.882679 -133.06581,-16.181401 -134.95153,-15.653298 C -136.61998,-15.18604 -137.31554,-14.040497 -138.38998,-9.9904754 C -138.69771,-8.8305686 -139.01919,-7.8620263 -139.10438,-7.8381693 C -139.18958,-7.8143067 -140.24992,-9.4370551 -141.46069,-11.444284 C -143.97563,-15.613587 -144.98649,-16.95945 -146.27043,-17.847971 C -148.31802,-19.264997 -151.68548,-19.643535 -154.70952,-18.796641 C -156.50708,-18.293224 -156.82941,-17.766605 -156.17262,-16.406217 C -155.13828,-14.263862 -154.76347,-12.105329 -154.9716,-9.4895212 C -155.08068,-8.1186224 -155.10437,-6.7628414 -155.02422,-6.4766968 C -154.94409,-6.1905481 -154.36139,-5.4790479 -153.72933,-4.8955865 C -153.09728,-4.3121251 -152.1397,-3.22882 -151.60137,-2.4882427 C -151.06306,-1.7476762 -150.53139,-1.1673139 -150.4199,-1.1985352 C -150.30841,-1.2297576 -149.65331,-1.8148935 -148.96412,-2.4988334 C -146.29304,-5.1495759 -142.44786,-6.6536181 -142.04252,-5.2062353 C -141.94185,-4.846798 -143.75587,-3.2422599 -146.6789,-1.1052281 C -148.15321,-0.02736369 -149.49024,1.1433135 -149.65012,1.4962389 C -149.8676,1.9763884 -149.83524,2.5271402 -149.52162,3.6835883 C -148.91265,5.929178 -148.9723,7.1954874 -149.70196,7.5122192 C -150.41333,7.8210244 -150.48418,7.6934945 -151.7826,3.7661537 C -153.27256,-0.74056983 -154.65456,-2.6763974 -156.92485,-3.4368513 C -157.75888,-3.7162209 -158.20743,-3.6870044 -159.30941,-3.2815323 C -161.78551,-2.3704739 -162.35721,-1.1939129 -162.16188,2.5889204 C -161.92702,7.1375311 -161.45116,9.9349425 -160.05925,14.949834 C -158.82273,19.404848 -158.65698,19.854071 -157.92709,20.728604 C -155.38634,23.772881 -150.87963,24.711982 -145.72175,23.271981 C -141.36916,22.056794 -139.23675,20.525617 -137.14985,17.116914 C -136.59117,16.204368 -135.79998,15.01425 -135.39168,14.472187 C -134.71023,13.567517 -134.67306,13.37997 -134.93892,12.187361 C -135.20556,10.991263 -135.18054,10.867303 -134.62379,10.626026 C -134.12417,10.40951 -133.66896,10.603105 -132.00524,11.739712 C -130.89766,12.496405 -129.59631,13.19318 -129.11336,13.288126 C -127.28393,13.647788 -125.23411,12.467802 -125.09601,10.975512 C -125.04934,10.47117 -125.39286,9.4782462 -126.42577,7.1318693 C -128.08436,3.3642209 -128.64989,1.4485793 -129.07035,-1.826288 C -129.57991,-5.7950812 -129.22104,-8.2987773 -127.94237,-9.6958785 C -127.34031,-10.353703 -127.55963,-11.514835 -128.51605,-12.733025 L -128.51606,-12.733022 z"
- id="path4665" />
- </g>
- </g>
-</svg>
--- a/screensaverapp/snsrapplication/themes/icons/theme2/analog-clock-minute-hand.svg Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="354.33069"
- height="354.33069"
- id="svg2493"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- version="1.0"
- sodipodi:docname="mouse-clock-minute-hand.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs2495">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective2501" />
- <inkscape:perspective
- id="perspective2510"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4078"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="10"
- objecttolerance="10"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.4"
- inkscape:cx="103.27881"
- inkscape:cy="122.61408"
- inkscape:document-units="px"
- inkscape:current-layer="g4084"
- showgrid="false"
- units="cm"
- inkscape:window-width="1680"
- inkscape:window-height="990"
- inkscape:window-x="-4"
- inkscape:window-y="-4" />
- <metadata
- id="metadata2498">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g4084"
- transform="matrix(-0.1729112,0.6174197,-0.6174197,-0.1729112,161.54732,181.34073)"
- style="fill:#000000">
- <path
- style="fill:#000000;fill-opacity:1"
- d="M -196.95918,66.959164 C -198.87867,65.166084 -200.37463,62.565154 -200.80456,60.273434 C -201.19158,58.210414 -202.01392,56.371004 -202.63197,56.185844 C -203.25002,56.000694 -204.98502,55.580104 -206.48751,55.251204 C -209.40492,54.612564 -212.2557,50.348494 -212.2557,46.623414 C -212.2557,44.885984 -212.69426,44.574614 -214.5057,45.025944 C -224.68087,47.561104 -229.84567,46.309544 -232.8022,40.592244 C -235.73932,34.912474 -233.05785,30.028404 -224.7557,25.936254 C -217.63336,22.425643 -202.06331,17.516513 -196.33625,16.975803 C -192.88936,16.650373 -188.12355,15.155333 -183.87134,13.065543 C -175.98834,9.1913634 -171.20781,8.7933334 -163.92271,11.404603 C -159.31048,13.057813 -159.04414,13.055503 -158.09199,11.354113 C -156.41095,8.3502634 -152.67617,7.5301234 -148.42473,9.2312034 C -144.78892,10.685973 -143.87412,10.563273 -125.69607,6.1827234 C -115.27887,3.6723734 -96.4057,-1.9143566 -83.7557,-6.2322366 C -71.1057,-10.550117 -58.353404,-14.832947 -55.417254,-15.749627 C -48.321686,-17.964904 -34.019356,-24.619304 -27.863656,-28.569414 C -23.852886,-31.143124 -21.879256,-31.746404 -17.470286,-31.746404 C -12.607526,-31.746404 -11.722656,-31.404854 -9.1627563,-28.539834 C -3.8512663,-22.595244 -4.0731363,-16.873034 -9.7650763,-13.005257 C -11.681966,-11.702697 -18.539036,-8.9313066 -25.003016,-6.8466166 C -31.466996,-4.7619166 -39.230706,-2.0289766 -42.255706,-0.77340661 C -45.280706,0.48215339 -52.930704,3.1822534 -59.255704,5.2268034 C -65.5807,7.2713534 -73.0057,9.9422434 -75.7557,11.162103 C -84.05703,14.844443 -97.74724,19.300213 -117.4094,24.719183 L -136.0631,29.860214 L -137.17865,34.290434 C -138.77693,40.637784 -141.50508,43.046184 -146.35933,42.395094 C -150.12174,41.890444 -150.25882,41.980034 -151.22728,45.576624 C -152.77786,51.335044 -159.51272,56.682164 -165.21504,56.682164 C -166.22107,56.682164 -168.36904,57.919664 -169.9883,59.432164 C -174.06489,63.239984 -184.91912,68.674294 -189.77841,69.340334 C -193.26967,69.818864 -194.24358,69.495904 -196.95918,66.959164 z M -182.46625,63.558094 C -176.22609,60.883244 -171.6081,57.264314 -169.68195,53.539544 C -168.22491,50.721934 -168.24321,50.352884 -169.933,48.478524 C -171.48676,46.755054 -172.60634,46.533354 -177.52086,46.975994 C -182.69785,47.442284 -192.80071,51.565144 -197.0057,54.927534 C -198.93606,56.471084 -198.48696,61.118454 -196.11617,64.132424 C -194.28763,66.457034 -193.48228,66.759654 -190.57561,66.214354 C -188.70505,65.863434 -185.05584,64.668114 -182.46625,63.558094 z M -156.2851,50.166104 C -154.24031,48.121314 -153.71656,46.540414 -153.54972,41.909624 C -153.43623,38.759524 -153.32365,35.991224 -153.29954,35.757854 C -153.27543,35.524474 -152.2432,36.260254 -151.0057,37.392914 C -147.20547,40.871184 -144.60627,41.123634 -141.77235,38.289724 C -139.10495,35.622324 -138.33157,30.682164 -140.58139,30.682164 C -144.04591,30.682164 -148.23492,22.786433 -148.5926,15.582073 C -148.77814,11.844973 -149.15412,11.132943 -151.08842,10.855403 C -153.76032,10.472023 -156.11492,12.181673 -157.33512,15.391063 C -158.31214,17.960813 -160.2557,18.487263 -160.2557,16.182163 C -160.2557,15.357163 -160.86156,14.682163 -161.60206,14.682163 C -162.34256,14.682163 -164.41192,13.952073 -166.20063,13.059753 C -172.33978,9.9971334 -184.81909,13.864463 -188.19088,19.874503 C -189.47092,22.156113 -189.50989,23.300283 -188.4463,27.374504 C -186.58207,34.515704 -182.03657,43.130174 -179.92661,43.520724 C -173.7377,44.666254 -170.66888,40.113314 -172.7896,32.932164 C -173.81781,29.450444 -173.80698,28.682164 -172.72965,28.682164 C -172.00638,28.682164 -171.13471,29.956534 -170.79261,31.514104 C -170.19254,34.246224 -169.95184,34.347544 -163.96316,34.388844 C -160.54906,34.412394 -157.78121,34.825524 -157.8124,35.306914 C -157.89709,36.614324 -163.36614,37.402604 -166.5057,36.559904 C -168.83371,35.935044 -169.2557,36.128054 -169.2557,37.817714 C -169.2557,38.915474 -169.70888,40.660424 -170.26277,41.695374 C -171.05964,43.184334 -170.74654,44.100414 -168.76277,46.084184 C -167.38388,47.463074 -166.2557,49.661714 -166.2557,50.970044 C -166.2557,52.278374 -165.99683,53.607704 -165.68043,53.924104 C -164.59625,55.008274 -158.81475,52.695764 -156.2851,50.166104 z M -197.20352,50.801704 C -195.78765,49.754914 -192.32228,47.906024 -189.5027,46.693074 L -184.37617,44.487704 L -186.5152,40.084934 C -187.69167,37.663414 -189.35206,35.679994 -190.20497,35.677344 C -193.48712,35.667154 -206.21639,41.011414 -208.3699,43.303724 C -210.23654,45.290674 -210.46485,46.185264 -209.67703,48.425414 C -207.88326,53.525994 -202.32145,54.585554 -197.20352,50.801704 z M -212.7557,41.622174 C -210.5557,40.513334 -207.1807,38.753744 -205.2557,37.711974 C -203.3307,36.670194 -199.13398,35.016894 -195.92966,34.037974 C -190.49588,32.377944 -190.14451,32.087224 -190.71113,29.720134 C -191.04526,28.324254 -191.59129,25.240554 -191.92452,22.867473 L -192.53039,18.552773 L -196.42877,19.211403 C -201.38544,20.048823 -220.42859,26.203084 -224.37013,28.241344 C -231.29032,31.819904 -233.24634,37.168334 -229.21674,41.493604 C -226.50108,44.408524 -218.40938,44.471724 -212.7557,41.622174 z"
- id="path4092" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -169.33731,52.439968 C -171.47692,57.558485 -177.49205,61.881741 -186.48856,64.767085 C -191.50271,66.375215 -192.55546,66.536908 -193.93393,65.910631 C -196.20822,64.877362 -198.50092,59.957182 -197.96706,57.255484 C -197.63744,55.58739 -197.01337,54.916909 -194.30352,53.319431 C -188.39419,49.835855 -179.97003,47.001345 -175.42987,46.96896 C -174.17478,46.960022 -172.71377,47.064838 -172.18319,47.201901 C -171.14358,47.47047 -169.11777,49.335565 -168.84311,50.27701 C -168.75042,50.594677 -168.97281,51.568009 -169.3373,52.439966 L -169.33731,52.439968 z"
- id="path4659" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -185.09866,44.619931 C -185.33634,44.765242 -186.17315,45.146542 -186.95822,45.467262 C -189.97286,46.698782 -194.36125,48.905371 -196.83409,50.433088 C -201.78861,53.493973 -205.47725,53.650361 -208.00664,50.906798 C -209.01093,49.817465 -210.03738,47.304432 -209.92877,46.200872 C -209.82415,45.137818 -208.36317,43.327883 -206.80542,42.331524 C -203.38037,40.140794 -193.19101,36.017237 -190.93643,35.909462 C -189.92482,35.861103 -189.66584,35.999792 -188.66215,37.127339 C -188.03764,37.828896 -186.90915,39.653379 -186.1468,41.193988 C -184.49086,44.540477 -184.56615,44.29437 -185.09866,44.619931 L -185.09866,44.619931 z"
- id="path4661" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -191.63897,24.800321 C -190.59264,31.175979 -190.58758,31.247528 -191.13877,31.878813 C -191.47056,32.258829 -193.06226,32.930613 -196.23503,34.029715 C -201.97993,36.019848 -203.63462,36.738103 -208.99977,39.570593 C -212.55467,41.44736 -213.80807,41.97795 -216.36897,42.690103 C -223.41798,44.650346 -228.9118,43.221306 -230.63194,38.980028 C -231.288,37.36241 -231.20724,35.707581 -230.38933,34.008856 C -229.1321,31.397715 -226.32763,29.173939 -222.08943,27.427538 C -216.2084,25.004152 -200.37745,20.097799 -195.41052,19.159138 C -192.73881,18.654233 -192.73196,18.65476 -192.57139,19.376304 C -192.48286,19.774124 -192.06327,22.214926 -191.63897,24.800321 z"
- id="path4663" />
- <path
- style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M -139.53143,33.683974 C -140.04966,36.451422 -142.26372,39.171723 -144.50992,39.800782 C -146.49732,40.357362 -147.86684,39.790155 -151.27999,36.996903 C -152.25751,36.196935 -153.14033,35.565661 -153.24181,35.594083 C -153.3433,35.622504 -153.51399,37.590007 -153.62113,39.966324 C -153.84366,44.902267 -154.12085,46.608853 -154.94005,48.08637 C -156.24646,50.442699 -159.50565,52.677063 -163.10777,53.685853 C -165.24897,54.285505 -165.88121,54.026219 -165.9776,52.508884 C -166.1294,50.119371 -166.97091,48.091539 -168.67411,46.011011 C -169.56672,44.920638 -170.36262,43.794386 -170.44275,43.508238 C -170.52289,43.22209 -170.32651,42.292405 -170.00635,41.442272 C -169.68619,40.592138 -169.31457,39.136585 -169.18052,38.207705 C -169.04648,37.278843 -168.82813,36.488433 -168.69533,36.45124 C -168.56253,36.414049 -167.55364,36.533177 -166.45336,36.715969 C -162.18899,37.424405 -157.36567,36.500794 -157.77102,35.053413 C -157.87168,34.693975 -160.65641,34.377337 -164.88843,34.24411 C -167.02296,34.176918 -169.06866,33.953592 -169.43444,33.747877 C -169.93205,33.467992 -170.21205,32.986594 -170.5465,31.835982 C -171.19593,29.601721 -171.97803,28.571147 -172.91113,28.72008 C -173.82084,28.865264 -173.82137,29.012783 -172.92637,33.053104 C -171.89932,37.689468 -172.22376,40.103191 -174.13356,42.0343 C -174.83515,42.743726 -175.31459,42.974396 -176.68235,43.260588 C -179.75562,43.903656 -181.01498,43.239889 -182.96594,39.94873 C -185.31185,35.991329 -186.41263,33.36893 -187.83,28.361167 C -189.08913,23.912486 -189.17372,23.440533 -188.91824,22.290043 C -188.02892,18.28516 -183.91322,14.931313 -177.77189,13.20692 C -172.58939,11.751763 -169.51788,11.825557 -165.42498,13.503577 C -164.32927,13.952801 -162.83573,14.503075 -162.10599,14.726423 C -160.88809,15.09917 -160.74303,15.235686 -160.33873,16.389524 C -159.93325,17.546738 -159.8369,17.636709 -159.12515,17.522737 C -158.48643,17.420453 -158.1269,16.998688 -157.05701,15.09652 C -156.34477,13.830178 -155.3985,12.503947 -154.95421,12.149322 C -153.27125,10.806001 -150.48479,10.631564 -149.49316,11.807469 C -149.15802,12.204881 -148.94748,13.235047 -148.67812,15.795261 C -148.24561,19.906278 -147.73909,21.838444 -146.30947,24.830692 C -144.57693,28.456985 -142.782,30.3575 -140.66768,30.804378 C -139.67215,31.014789 -139.23775,32.115689 -139.53142,33.683972 L -139.53143,33.683974 z"
- id="path4665" />
- </g>
- </g>
-</svg>
--- a/screensaverapp/snsrapplication/themes/style/defaulttheme/hbcolorgroup.css Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-/* Colors for different states for different parts of UI */
-
-/* Each CSS variable here referes to a color group having colors for enabled, disabled, focused and non-focused states in that order */
-
-@variables
-{
-snsrforeground:#FFFFFF,#FFFFFF,#FFFFFF,#FFFFFF;
-snsrbackground:#000000,#000000,#000000,#000000;
-}
-
-SnsrLabel
-{
-background:var(snsrbackground);
-foreground:var(snsrforeground);
-text:var(snsrforeground);
-}
--- a/screensaverapp/snsrapplication/themes/style/theme1/hbcolorgroup.css Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-/* Colors for different states for different parts of UI */
-
-/* Each CSS variable here referes to a color group having colors for enabled, disabled, focused and non-focused states in that order */
-
-@variables
-{
-snsrforeground:#BB0000,#BB0000,#BB0000,#BB0000;
-snsrbackground:#FFE100,#FFE100,#FFE100,#FFE100;
-}
-
-SnsrLabel
-{
-background:var(snsrbackground);
-foreground:var(snsrforeground);
-text:var(snsrforeground);
-}
\ No newline at end of file
--- a/screensaverapp/snsrapplication/themes/style/theme2/hbcolorgroup.css Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-/* Colors for different states for different parts of UI */
-
-/* Each CSS variable here referes to a color group having colors for enabled, disabled, focused and non-focused states in that order */
-
-@variables
-{
-snsrforeground:#0000BB,#0000BB,#0000BB,#0000BB;
-snsrbackground:#880088,#880088,#880088,#880088;
-}
-
-SnsrLabel
-{
-background:var(snsrbackground);
-foreground:var(snsrforeground);
-text:var(snsrforeground);
-}
--- a/screensaverapp/snsrutils/inc/snsrlabel.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Screensaver label.
-*
-*/
-
-#ifndef SNSRLABEL_H
-#define SNSRLABEL_H
-
-#include <hblabel.h>
-
-#include "snsrutils_global.h"
-#include "snsrtest_global.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrUtils)
-
-class SNSRUTILS_EXPORT SnsrLabel : public HbLabel
-{
-
- Q_OBJECT
-
-public:
-
- SnsrLabel(QGraphicsItem *parent = 0);
- SnsrLabel(const QString &displayText, QGraphicsItem *parent = 0);
- ~SnsrLabel();
-
-protected:
-
- virtual void changeEvent(QEvent *event);
-
-private:
-
- void setThemedTextColor();
-
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrUtils)
-
-};
-
-#endif // SNSRLABEL_H
--- a/screensaverapp/snsrutils/inc/snsrutils_global.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: snsrutils_global.h
-*
-*/
-
-#ifndef SNSRUTILS_GLOBAL_H
-#define SNSRUTILS_GLOBAL_H
-
-#include <qglobal.h>
-
-#ifdef SNSRUTILS_LIB
- #define SNSRUTILS_EXPORT Q_DECL_EXPORT
-#else
- #ifdef SNSRUTILS_TEST
- #define SNSRUTILS_EXPORT
- #else
- #define SNSRUTILS_EXPORT Q_DECL_IMPORT
- #endif
-#endif
-
-#endif // SNSRUTILS_GLOBAL_H
--- a/screensaverapp/snsrutils/snsrutils.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-HEADERS += ./inc/*.h
-
-SOURCES += ./src/*.cpp
-
-DEPENDPATH += . \
- inc \
- src
-
-INCLUDEPATH += . \
- inc
--- a/screensaverapp/snsrutils/snsrutils.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-#
-# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = lib
-
-include (../common.pri)
-
-CONFIG += hb
-
-DEFINES += SNSRUTILS_LIB
-
-symbian: {
- TARGET.UID3 = 0x20027056
-}
-
-include(snsrutils.pri)
--- a/screensaverapp/snsrutils/src/snsrlabel.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Screensaver label.
-*
-*/
-
-#include "snsrlabel.h"
-
-#include <hbevent.h>
-#include <hbcolorscheme.h>
-
-const QString snsrForegroundColorRole("snsrforeground");
-
-/*!
- \class SnsrLabel
- \ingroup group_snsrutils
- \brief Screensaver label.
- */
-
-/*!
- Constructs a new SnsrLabel.
- \param parent Graphics parent item.
- */
-SnsrLabel::SnsrLabel(QGraphicsItem *parent)
- : HbLabel(parent)
-{
- setThemedTextColor();
-}
-
-/*!
- Constructs a new SnsrLabel.
- \param displayText Text the label should display.
- \param parent Graphics parent item.
- */
-SnsrLabel::SnsrLabel(const QString &displayText, QGraphicsItem *parent)
- : HbLabel(displayText, parent)
-{
- setThemedTextColor();
-}
-
-/*!
- Destructs the class.
- */
-SnsrLabel::~SnsrLabel()
-{
-}
-
-/*!
- \reimp
- */
-void SnsrLabel::changeEvent(QEvent * event)
-{
- if (event->type() == HbEvent::ThemeChanged) {
- setThemedTextColor();
- }
- return HbLabel::changeEvent(event);
-}
-
-/*!
- Sets the label's color to follow the theme.
- */
-void SnsrLabel::setThemedTextColor()
-{
- QColor textColor(HbColorScheme::color(snsrForegroundColorRole));
- if (textColor.isValid()) {
- setTextColor(textColor);
- } else {
- // fallback mechanism when color definition is missing in default theme
- setTextColor(Qt::white);
- }
-}
--- a/screensaverapp/stateproviders/snsrdefaultstateprovider/inc/snsrdefaultstateprovider.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Default Screensaver provider.
-*
-*/
-
-#ifndef SNSRDEFAULTSTATEPROVIDER_H
-#define SNSRDEFAULTSTATEPROVIDER_H
-
-#include <hsistateprovider.h>
-
-class QState;
-
-class SnsrDefaultStateProvider : public QObject,
- public IHsStateProvider
-{
-
- Q_OBJECT
- Q_INTERFACES(IHsStateProvider)
-
-public:
-
- SnsrDefaultStateProvider();
- virtual ~SnsrDefaultStateProvider();
-
- QList<HsStateToken> states();
- QState *createState(const HsStateToken &token);
-
-private:
-
- HsStateToken mSnsrRootStateToken;
-
-};
-
-#endif // SNSRDEFAULTSTATEPROVIDER_H
--- a/screensaverapp/stateproviders/snsrdefaultstateprovider/inc/snsrrootstate.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Root Screensaver state.
-*
-*/
-
-#ifndef SNSRROOTSTATE_H
-#define SNSRROOTSTATE_H
-
-#include <screensaver.h>
-
-#include <QState>
-#include "snsrtest_global.h"
-
-SCREENSAVER_TEST_CLASS(T_SnsrDefaultStateProvider)
-
-class QGraphicsWidget;
-class HbMainWindow;
-class SnsrUserActivityServiceInterface;
-
-class SnsrRootState : public QState
-{
- Q_OBJECT
-
-public:
-
- SnsrRootState(QState *parent = 0);
- virtual ~SnsrRootState();
-
-protected:
-
- void onEntry(QEvent *event);
- void onExit(QEvent *event);
-
-private slots:
-
- void changeView(QGraphicsWidget *widget);
- void screensaverFaulted();
-
-private:
-
- Screensaver *mScreensaver;
- QGraphicsWidget *mCurrentView;
- HbMainWindow *mMainWindow;
- SnsrUserActivityServiceInterface *mUserActivity;
- SCREENSAVER_TEST_FRIEND_CLASS(T_SnsrDefaultStateProvider)
-
-};
-
-#endif // SNSRROOTSTATE_H
--- a/screensaverapp/stateproviders/snsrdefaultstateprovider/resource/snsrdefaultstateprovider.manifest Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<stateprovider>
- <state library="snsrdefaultstateprovider.dll" uri="screensaver.nokia.com/state/foreground"/>
- <state library="snsrdefaultstateprovider.dll" uri="screensaver.nokia.com/state/background"/>
-</stateprovider>
--- a/screensaverapp/stateproviders/snsrdefaultstateprovider/snsrdefaultstateprovider.pri Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsrdefaultstateprovider.pri
-#
-
-HEADERS += ./inc/*.h
-
-SOURCES += ./src/*.cpp
-
-DEPENDPATH += ./inc \
- ./src
-
-INCLUDEPATH += ./inc
-INCLUDEPATH += ../../serviceproviders/snsruseractivityservice/inc
--- a/screensaverapp/stateproviders/snsrdefaultstateprovider/snsrdefaultstateprovider.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsrdefaultstateprovider.pro
-#
-
-TEMPLATE = lib
-CONFIG += plugin
-PLUGIN_SUBDIR = /snsrresources/plugins/stateproviders
-
-include(../../common.pri)
-
-LIBS += -lstatemodel \
- -lscreensavermodel \
- -lsnsruseractivityservice
-CONFIG += hb
-
-symbian: {
-TARGET.UID3 = 0x20027050
-# TODO: temporary until screensavermodel goes to platform API
-INCLUDEPATH += ../../../../homescreensrv/screensavermodel/inc
-}
-
-include(snsrdefaultstateprovider.pri)
--- a/screensaverapp/stateproviders/snsrdefaultstateprovider/src/snsrdefaultstateprovider.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Default Screensaver provider.
-*
-*/
-
-#include "snsrdefaultstateprovider.h"
-
-#include <QState>
-
-#include "snsrrootstate.h"
-
-/*!
- \class SnsrDefaultStateProvider
- \ingroup group_snsrdefaultstateprovider
- \brief Provides a default implementation for each screensaver state.
-
- States are described in the snsrdefaultstateprovider.manifest file.
-*/
-
-/*!
- Constructs a new SnsrDefaultStateProvider.
-*/
-SnsrDefaultStateProvider::SnsrDefaultStateProvider()
-{
- mSnsrRootStateToken.mLibrary = "snsrdefaultstateprovider.dll";
- mSnsrRootStateToken.mUri = "screensaver.nokia.com/state/root";
-}
-
-/*!
- Destructs the class.
-*/
-SnsrDefaultStateProvider::~SnsrDefaultStateProvider()
-{
-}
-
-/*!
- Returns contained states as a list of tokens.
-*/
-QList<HsStateToken> SnsrDefaultStateProvider::states()
-{
- return QList<HsStateToken>() << mSnsrRootStateToken;
-}
-
-/*!
- Creates a state based on the given token.
- \param token - Identifies the state to be created.
-*/
-QState *SnsrDefaultStateProvider::createState(const HsStateToken& token)
-{
- if ((token.mLibrary == mSnsrRootStateToken.mLibrary) &&
- (token.mUri == mSnsrRootStateToken.mUri)) {
- return new SnsrRootState();
- }
- return 0;
-}
-
-#ifndef COVERAGE_MEASUREMENT
-Q_EXPORT_PLUGIN2(snsrdefaultstateprovider, SnsrDefaultStateProvider)
-#endif // COVERAGE_MEASUREMENT
--- a/screensaverapp/stateproviders/snsrdefaultstateprovider/src/snsrrootstate.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Root Screensaver state.
-*
-*/
-
-#include "snsrrootstate.h"
-
-#include <QDebug>
-#include <QEventTransition>
-
-#include <hbinstance.h>
-#include <hbmainwindow.h>
-#include <hbview.h>
-
-#include <screensaverfactory.h>
-
-#include "snsrtest_global.h"
-#include "snsruseractivityservice.h"
-
-/*!
- \class SnsrRootState
- \ingroup group_snsrdefaultstateprovider
- \brief Root Screensaver state.
- */
-
-/*!
- Constructs a new SnsrRootState with parent.
-*/
-SnsrRootState::SnsrRootState(QState *parent) :
- QState(parent), mScreensaver(0), mCurrentView(0), mMainWindow(0)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrRootState::SnsrRootState")
-
- mMainWindow = HbInstance::instance()->allMainWindows().at(0);
- // TODO: consider if this should be Screensaver's responsibility
- mMainWindow->hideItems(Hb::AllItems);
- // load screensaver plugin
- mUserActivity = new SnsrUserActivityService();
- mUserActivity->setInactivityPeriod(5); // 5 seconds inactivity period
-
- ScreensaverFactory factory(QString("snsrresources/plugins/screensaverproviders"));
- ScreensaverToken bigClockToken;
- bigClockToken.mLibrary = QString("snsrbigclockscreensaverprovider.dll");
- bigClockToken.mUri = QString("screensaver.nokia.com/screensaver/bigclock");
- mScreensaver = factory.createScreensaver(bigClockToken);
- if (mScreensaver) {
- mScreensaver->setParent(this);
- } else {
- // TODO: error state
- }
- connect(mScreensaver, SIGNAL(viewChanged(QGraphicsWidget*)), SLOT(changeView(QGraphicsWidget*)));
- connect(mScreensaver, SIGNAL(faulted()), SLOT(screensaverFaulted()));
-
- // foreground state
- QState *foregroundState = new QState(this);
- connect(foregroundState, SIGNAL(entered()), mScreensaver, SLOT(foreground()));
-
- // background state
- QState *backgroundState = new QState(this);
- connect(backgroundState, SIGNAL(entered()), mScreensaver, SLOT(background()));
-
- // partial foreground state
- QState *partialForegroundState = new QState(this);
- connect(partialForegroundState, SIGNAL(entered()), mScreensaver, SLOT(partialForeground()));
-
- //setup user inactivity behaviour
- partialForegroundState->addTransition(mUserActivity, SIGNAL(active()), foregroundState);
- foregroundState->addTransition(mUserActivity, SIGNAL(notActive()), partialForegroundState);
-
- // power save state
-
- // set up transitions
- QEventTransition *toPartialForegroundTransition =
- new QEventTransition(qApp, QEvent::ApplicationActivate);
- toPartialForegroundTransition->setTargetState(partialForegroundState);
- backgroundState->addTransition(toPartialForegroundTransition);
-
- QEventTransition *toBackgroundTransition =
- new QEventTransition(qApp, QEvent::ApplicationDeactivate);
- toBackgroundTransition->setTargetState(backgroundState);
- partialForegroundState->addTransition(toBackgroundTransition);
-
- QEventTransition *toBackgroundTransition2 =
- new QEventTransition(qApp, QEvent::ApplicationDeactivate);
- toBackgroundTransition2->setTargetState(backgroundState);
- foregroundState->addTransition(toBackgroundTransition2);
-
- setInitialState(partialForegroundState);
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrRootState::SnsrRootState")
-}
-
-/*!
- Destructs the class.
-*/
-SnsrRootState::~SnsrRootState()
-{
- // mScreensaver deleted by parent
-}
-
-/*!
- This function is called when the state is entered.
-*/
-void SnsrRootState::onEntry(QEvent *event)
-{
- QState::onEntry(event);
- qDebug() << objectName() << "- onEntry()";
-
- mScreensaver->initialize();
-}
-
-/*!
- This function is called when the state is exited.
-*/
-void SnsrRootState::onExit(QEvent *event)
-{
- if (mCurrentView) {
- mMainWindow->removeView(mCurrentView);
- }
-
- mScreensaver->close();
-
- qDebug() << objectName() << "- onExit()";
- QState::onExit(event);
-}
-
-/*!
- Changes view in main window on widget.
- \param widget Widget with new view.
-*/
-void SnsrRootState::changeView(QGraphicsWidget *widget)
-{
- SCREENSAVER_TEST_FUNC_ENTRY("SnsrRootState::changeView")
-
- qDebug("SnsrRootState::changeView() - widget: 0x%X", (int)widget);
-
- if (mCurrentView) {
- mCurrentView->hide();
- mMainWindow->removeView(mCurrentView);
- }
- mCurrentView = widget;
- if (mCurrentView) {
- mCurrentView->show();
- mMainWindow->addView(mCurrentView);
- mMainWindow->currentView()->setContentFullScreen(true);
- }
-
- SCREENSAVER_TEST_FUNC_EXIT("SnsrRootState::changeView")
-}
-
-/*!
- Invoked when screensaver faulted.
-*/
-void SnsrRootState::screensaverFaulted()
-{
- qWarning() << "SnsrRootState::screensaverFaulted()";
- // TODO: some error handling
-}
--- a/screensaverapp/stateproviders/stateproviders.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: stateproviders.pro
-#
-
-TEMPLATE = subdirs
-
-SUBDIRS = snsrdefaultstateprovider
--- a/taskswitcherapp/common.pri Fri Apr 16 14:54:01 2010 +0300
+++ b/taskswitcherapp/common.pri Mon May 03 12:24:59 2010 +0300
@@ -55,11 +55,7 @@
coverage {
DEFINES += COVERAGE_MEASUREMENT
DEFINES += QT_NO_DEBUG # omit ASSERTS in coverage measurements
- }
-
- symbian {
- TARGET.SID = 0x2002677D
- }
+ }
}
# Add the output dirs to the link path too
--- a/taskswitcherapp/rom/tsapplication_core.iby Fri Apr 16 14:54:01 2010 +0300
+++ b/taskswitcherapp/rom/tsapplication_core.iby Mon May 03 12:24:59 2010 +0300
@@ -17,19 +17,10 @@
#ifndef __TSAPP_CORE_IBY__
#define __TSAPP_CORE_IBY__
-file=ABI_DIR\BUILD_DIR\tsapplication.exe PROGRAMS_DIR\tsapplication.exe
-data=ZPRIVATE\10003a3f\import\apps\tsapplication_reg.rsc private\10003a3f\import\apps\tsapplication_reg.rsc
-data=\epoc32\data\z\resource\apps\tsapplication.rsc resource\apps\tsapplication.rsc
-
-ECOM_PLUGIN( tsappecom.dll, tsappecom.rsc )
+data=\epoc32\data\z\resource\qt\crml\tsexternalactivation.qcrml resource\qt\crml\tsexternalactivation.qcrml
-file=ABI_DIR\BUILD_DIR\tsserviceplugin.dll SHARED_LIB_DIR\tsserviceplugin.dll
-data=\epoc32\data\z\resource\qt\plugins\tsserviceplugin.qtplugin resource\qt\plugins\tsserviceplugin.qtplugin
-
-file=ABI_DIR\BUILD_DIR\tsdefaultruntimeplugin.dll SHARED_LIB_DIR\tsdefaultruntimeplugin.dll
-data=\epoc32\data\z\resource\qt\plugins\tsdefaultruntimeplugin.qtplugin resource\qt\plugins\tsdefaultruntimeplugin.qtplugin
-
-data=\epoc32\data\z\resource\qt\crml\tsexternalactivation.qcrml resource\qt\crml\tsexternalactivation.qcrml
+file=ABI_DIR\BUILD_DIR\tsdevicedialogplugin.dll SHARED_LIB_DIR\tsdevicedialogplugin.dll
+data=\epoc32\data\z\resource\plugins\devicedialogs\tsdevicedialogplugin.qtplugin resource\plugins\devicedialogs\tsdevicedialogplugin.qtplugin
// stub sis
data=ZSYSTEM/install/taskswitcher_stub.sis system/install/taskswitcher_stub.sis
--- a/taskswitcherapp/runtimeplugins/runtimeplugins.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: runtimeplugins.pro
-#
-
-TEMPLATE = subdirs
-
-SUBDIRS = tsdefaultruntimeplugin
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/inc/tsdefaultruntime.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Default Screensaver runtime.
-*
-*/
-
-#ifndef TSDEFAULTRUNTIME_H
-#define TSDEFAULTRUNTIME_H
-
-#include <QStateMachine>
-#include <qservicemanager.h>
-
-QTM_USE_NAMESPACE
-
-class TsDefaultRuntime : public QStateMachine
-{
- Q_OBJECT
-
-public:
- TsDefaultRuntime(QObject *parent = 0);
-
-signals:
- void event_exit();
-
-private:
- Q_DISABLE_COPY(TsDefaultRuntime)
- QObject *createCriticalInterface(QServiceManager *serviceManager, const QString &name);
-
-};
-
-#endif // TSDEFAULTRUNTIME_H
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/inc/tsdefaultruntimeplugin.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Default runtime provider.
-*
-*/
-
-#ifndef TSDEFAULTRUNTIMEPLUGIN_H
-#define TSDEFAULTRUNTIMEPLUGIN_H
-
-#include <QObject>
-#include <qserviceplugininterface.h>
-
-QTM_USE_NAMESPACE
-
-class TsDefaultRuntimePlugin : public QObject, public QServicePluginInterface
-{
- Q_OBJECT
- Q_INTERFACES(QtMobility::QServicePluginInterface)
-
-public:
- QObject *createInstance(const QServiceInterfaceDescriptor &descriptor, QServiceContext *context, QAbstractSecuritySession *session);
-
-};
-
-#endif // TSDEFAULTRUNTIMEPLUGIN_H
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/serviceinstaller/serviceinstaller.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = subdirs
-SUBDIRS = tsdefaultruntimeinstaller
-
-symbian {
- load(data_caging_paths)
-
- plugin.sources = tsdefaultruntimeplugin.dll
- plugin.path = $$QT_PLUGINS_BASE_DIR
-
- installer.pkg_postrules += "\"$${EPOCROOT}epoc32/release/$(PLATFORM)/$(TARGET)/tsdefaultruntimeinstaller.exe\" \
- - \"!:\sys\bin\tsdefaultruntimeinstaller.exe\",FR,RI,RW"
-
- DEPLOYMENT += plugin installer
-} else {
- message("You might need to run tsdefaultruntimeinstaller.exe before running any application that uses task switcher service")
-}
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/serviceinstaller/tsdefaultruntimeinstaller/bld.inf Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-// ============================================================================
-// * Makefile for building: tsdefaultruntimeinstaller
-// * Generated by qmake (2.01a) (Qt 4.6.1) on: 2010-02-08T12:01:04
-// * This file is generated by qmake and should not be modified by the
-// * user.
-// * Project: tsdefaultruntimeinstaller.pro
-// * Template: app
-// ============================================================================
-
-#define BLD_INF_TSDEFAULTRUNTIMEINSTALLER_0DCA8979
-
-
-prj_platforms
-
-WINSCW GCCE ARMV5 ARMV6
-
-
-prj_mmpfiles
-
-tsdefaultruntimeinstaller_0xE2e19c9c.mmp
-
-prj_extensions
-
-START EXTENSION qt/qmake_extra_pre_targetdep
-OPTION PREDEP_TARGET X:/HS/homescreen/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/serviceinstaller/tsdefaultruntimeinstaller/qrc_tsdefaultruntimeinstaller.cpp
-OPTION DEPS X:/HS/homescreen/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/serviceinstaller/tsdefaultruntimeinstaller/tsdefaultruntimeinstaller.qrc
-OPTION COMMAND /epoc32/tools/qt/rcc -name tsdefaultruntimeinstaller x:/HS/homescreen/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/serviceinstaller/tsdefaultruntimeinstaller/tsdefaultruntimeinstaller.qrc -o x:/HS/homescreen/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/serviceinstaller/tsdefaultruntimeinstaller/qrc_tsdefaultruntimeinstaller.cpp
-END
-
-#if defined(WINSCW)
-#else
-#endif
-
-
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/serviceinstaller/tsdefaultruntimeinstaller/tsdefaultruntimeinstaller.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include <qservicemanager.h>
-#include <QCoreApplication>
-
-QTM_USE_NAMESPACE
-
-int main(int argc, char *argv[])
-{
- QCoreApplication app(argc, argv);
-
- QServiceManager manager;
- bool success = manager.addService(":/tsdefaultruntimeplugin.xml");
- if (!success) {
- qDebug("Service adding failed: %d", manager.error());
- }
-}
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/serviceinstaller/tsdefaultruntimeinstaller/tsdefaultruntimeinstaller.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = app
-
-QT = core
-#TODO - temporarily disabled, until the installer issues on HW are resolved
-#CONFIG += no_icon
-
-CONFIG += console
-CONFIG += mobility
-MOBILITY = serviceframework
-
-SOURCES += tsdefaultruntimeinstaller.cpp
-
-RESOURCES += tsdefaultruntimeinstaller.qrc
-
-symbian {
- TARGET.CAPABILITY = ALL -TCB
-}
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/serviceinstaller/tsdefaultruntimeinstaller/tsdefaultruntimeinstaller.qrc Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<RCC>
- <qresource prefix="/" >
- <file alias="tsdefaultruntimeplugin.xml">../../tsdefaultruntimeplugin.xml</file>
- </qresource>
-</RCC>
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/src/tsdefaultruntime.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Default TaskSwitcher runtime.
-*
-*/
-
-#include <QAbstractItemModel>
-#include <QState>
-#include <QFinalState>
-#include <qservicemanager.h>
-
-#include "tsdefaultruntime.h"
-
-QTM_USE_NAMESPACE
-
-/*!
- \class TsDefaultRuntime
- \ingroup group_tsdefaultruntimeplugin
- \brief Default implementation of the taskswitcher runtime.
-*/
-
-/*!
- Constructs a new TsDefaultRuntime with parent.
-*/
-TsDefaultRuntime::TsDefaultRuntime(QObject *parent) : QStateMachine(parent)
-{
- // load services
- // FIXME: workaround for bug in QtSF - can't destroy QServiceManager
- QServiceManager *serviceManager = new QServiceManager;
- QObject *itemProvider = createCriticalInterface(serviceManager, "com.nokia.taskswitcher.itemprovider");
- QObject *activation = createCriticalInterface(serviceManager, "com.nokia.taskswitcher.activation");
- QObject *deactivation = createCriticalInterface(serviceManager, "com.nokia.taskswitcher.deactivation");
- QObject *presentation = createCriticalInterface(serviceManager, "com.nokia.taskswitcher.presentation");
-
- // create states
- QState *taskSwitcherStates = new QState(this);
- QState *backgroundState = new QState(taskSwitcherStates);
- QState *activeState = new QState(taskSwitcherStates);
- QFinalState *finalState = new QFinalState(this);
- setInitialState(taskSwitcherStates);
- taskSwitcherStates->setInitialState(backgroundState);
-
- // Forward signals emited by statemachine.
- backgroundState->addTransition(activation, SIGNAL(activated()), activeState);
- activeState->addTransition(deactivation, SIGNAL(deactivated()), backgroundState);
- taskSwitcherStates->addTransition(this, SIGNAL(event_exit()), finalState);
-
- // exchange model between itemprovider and presentation service
- QAbstractItemModel *model;
- QMetaObject::invokeMethod(itemProvider, "model", Q_RETURN_ARG(QAbstractItemModel*, model));
- QMetaObject::invokeMethod(presentation, "setModel", Q_ARG(QAbstractItemModel*, model));
-
- // connect all services
- connect(presentation, SIGNAL(openApplication(QModelIndex)), itemProvider, SLOT(openApplication(QModelIndex)));
- connect(presentation, SIGNAL(closeApplication(QModelIndex)), itemProvider, SLOT(closeApplication(QModelIndex)));
- connect(presentation, SIGNAL(closeAllApplications()), itemProvider, SLOT(closeAllApplications()));
-
- connect(presentation, SIGNAL(hideTaskSwitcher()), deactivation, SIGNAL(deactivated()));
-
- connect(activeState, SIGNAL(exited()), presentation, SLOT(hide()));
- connect(activeState, SIGNAL(entered()), presentation, SLOT(show()));
-
- connect(activeState, SIGNAL(exited()), itemProvider, SLOT(clearClosedApplicationList()));
-}
-
-/*!
- Creates critical interface with /a name using passed /a serviceManager.
-*/
-QObject *TsDefaultRuntime::createCriticalInterface(QServiceManager *serviceManager, const QString &name)
-{
- QObject *interface = serviceManager->loadInterface(name);
- Q_ASSERT_X(interface, "TsDefaultRuntime::createCriticalInterface", qPrintable(QString("Cannot initialize critical %1 interafce").arg(name)));
- interface->setParent(this);
- return interface;
-}
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/src/tsdefaultruntimeplugin.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Default runtime provider.
-*
-*/
-
-#include <qserviceinterfacedescriptor.h>
-#include <qabstractsecuritysession.h>
-#include <qservicecontext.h>
-
-#include "tsdefaultruntimeplugin.h"
-#include "tsdefaultruntime.h"
-
-/*!
- \class TsDefaultRuntimePlugin
- \ingroup group_tsdefaultruntimeplugin
- \brief Provides a default implementation of the taskswitcher runtime.
-
- This provider includes a default implementation of the taskswitcher runtime.
-*/
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-
-/*!
- Creates a runtime based on the given descriptor.
-*/
-QObject *TsDefaultRuntimePlugin::createInstance(const QServiceInterfaceDescriptor &descriptor, QServiceContext *context, QAbstractSecuritySession *session)
-{
- Q_UNUSED(context);
- Q_UNUSED(session);
-
- if (descriptor.interfaceName() == "com.nokia.taskswitcher.runtime.defaultruntime") {
- return new TsDefaultRuntime(this);
- } else {
- return NULL;
- }
-}
-
-Q_EXPORT_PLUGIN2(tsdefaultruntimeplugin, TsDefaultRuntimePlugin)
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/tsdefaultruntimeplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: snsrdefaultruntimeplugin.pro
-#
-
-TEMPLATE = lib
-CONFIG += plugin mobility
-MOBILITY = serviceframework
-
-INCLUDEPATH += inc
-
-HEADERS += inc/tsdefaultruntime.h \
- inc/tsdefaultruntimeplugin.h \
-
-SOURCES += src/tsdefaultruntime.cpp \
- src/tsdefaultruntimeplugin.cpp \
-
-symbian {
- load(data_caging_paths)
-
- plugin.sources = tsdefaultruntimeplugin.dll
- plugin.path = $$QT_PLUGINS_BASE_DIR
- DEPLOYMENT += plugin
-}
-
-include(../../common.pri)
--- a/taskswitcherapp/runtimeplugins/tsdefaultruntimeplugin/tsdefaultruntimeplugin.xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>TaskSwitcher</name>
- <filepath>tsdefaultruntimeplugin</filepath>
- <description>TaskSwitcher Runtime Plugin</description>
- <interface>
- <name>com.nokia.taskswitcher.runtime.defaultruntime</name>
- <version>1.0</version>
- <description>Default implementation for taskswitcher runtime</description>
- </interface>
-</service>
--- a/taskswitcherapp/sis/stubs/taskswitcher_stub.pkg Fri Apr 16 14:54:01 2010 +0300
+++ b/taskswitcherapp/sis/stubs/taskswitcher_stub.pkg Mon May 03 12:24:59 2010 +0300
@@ -24,7 +24,7 @@
&EN
; standard SIS file header
-#{"taskswitcher"},(0x2002677D),1,0,0,TYPE=SA
+#{"taskswitcher"},(0x2002677F),1,0,0,TYPE=SA
;Localized Vendor Name
%{"Nokia"}
@@ -32,18 +32,8 @@
;Unique Vendor name
:"Nokia"
-""-"Z:\sys\bin\tsapplication.exe"
-""-"Z:\resource\apps\tsapplication.r??"
-""-"Z:\private\10003a3f\import\apps\tsapplication_reg.rsc"
-
-""-"Z:\sys\bin\tsappecom.dll"
-""-"Z:\resource\plugins\tsappecom.rsc"
-
-""-"Z:\sys\bin\tsserviceplugin.dll"
-""-"Z:\resource\qt\plugins\tsserviceplugin.qtplugin"
-
-""-"Z:\sys\bin\tsdefaultruntimeplugin.dll"
-""-"Z:\resource\qt\plugins\tsdefaultruntimeplugin.qtplugin"
-
""-"Z:\resource\qt\translations\taskswitcher.qm"
""-"Z:\resource\qt\crml\tsexternalactivation.qcrml"
+
+""-"Z:\sys\bin\tsdevicedialogplugin.dll"
+""-"Z:\resource\plugins\devicedialogs\tsdevicedialogplugin.qtplugin"
Binary file taskswitcherapp/sis/stubs/taskswitcher_stub.sis has changed
--- a/taskswitcherapp/sis/taskswitcher.pkg Fri Apr 16 14:54:01 2010 +0300
+++ b/taskswitcherapp/sis/taskswitcher.pkg Mon May 03 12:24:59 2010 +0300
@@ -18,7 +18,7 @@
&EN
; standard SIS file header
-#{"taskswitcher"},(0x2002677D),1,0,0,TYPE=SA, RU
+#{"taskswitcher"},(0x2002677F),1,0,0,TYPE=SA, RU
;Localized Vendor Name
%{"Nokia"}
@@ -26,18 +26,8 @@
;Unique Vendor name
:"Nokia"
-"/epoc32/release/armv5/urel/tsapplication.exe"-"!:\sys\bin\tsapplication.exe"
-"/epoc32/data/z/resource/apps/tsapplication.rsc" -"!:\resource\apps\tsapplication.rsc"
-"/epoc32/data/z/private/10003a3f/import/apps/tsapplication_reg.rsc"-"!:\private\10003a3f\import\apps\tsapplication_reg.rsc"
-
-"/epoc32/release/armv5/urel/tsappecom.dll"-"!:\sys\bin\tsappecom.dll"
-"/epoc32/data/z/resource/plugins/tsappecom.rsc"-"!:\resource\plugins\tsappecom.rsc"
-
-"/epoc32/release/armv5/urel/tsserviceplugin.dll"-"!:\sys\bin\tsserviceplugin.dll"
-"/epoc32/data/z/resource/qt/plugins/tsserviceplugin.qtplugin"-"!:\resource\qt\plugins\tsserviceplugin.qtplugin"
-
-"/epoc32/release/armv5/urel/tsdefaultruntimeplugin.dll"-"!:\sys\bin\tsdefaultruntimeplugin.dll"
-"/epoc32/data/z/resource/qt/plugins/tsdefaultruntimeplugin.qtplugin"-"!:\resource\qt\plugins\tsdefaultruntimeplugin.qtplugin"
-
"/epoc32/data/z/resource/qt/translations/taskswitcher.qm"-"!:\resource\qt\translations\taskswitcher.qm"
"/epoc32/data/z/resource/qt/crml/tsexternalactivation.qcrml"-"!:\resource\qt\crml\tsexternalactivation.qcrml"
+
+"/epoc32/release/armv5/urel/tsdevicedialogplugin.dll"-"!:\sys\bin\tsdevicedialogplugin.dll"
+"/epoc32/data/z/resource/plugins/devicedialogs/tsdevicedialogplugin.qtplugin"-"!:\resource\plugins\devicedialogs\tsdevicedialogplugin.qtplugin"
\ No newline at end of file
--- a/taskswitcherapp/taskswitcherapp.pro Fri Apr 16 14:54:01 2010 +0300
+++ b/taskswitcherapp/taskswitcherapp.pro Mon May 03 12:24:59 2010 +0300
@@ -16,17 +16,20 @@
TEMPLATE = subdirs
-symbian:SUBDIRS += taskswitcherappecom
-SUBDIRS += tsserviceplugin
-SUBDIRS += runtimeplugins
-SUBDIRS += tsapplication
+SUBDIRS += tsdevicedialogplugin
tests {
- symbian:SUBDIRS += taskswitcherappecom\tsrc
- SUBDIRS += tsserviceplugin\tsrc
- SUBDIRS += runtimeplugins\tsdefaultruntimeplugin\tsrc
- SUBDIRS += tsapplication\tsrc
SUBDIRS += internal\tstestrunner
+ SUBDIRS += tsdevicedialogplugin\tsrc
+ SUBDIRS += ..\..\homescreensrv\activityfw\activityserviceplugin\unittests
+ SUBDIRS += ..\..\homescreensrv\activityfw\activitydatabase\hsactivitydbclient\t_hsactivitydbclient
+ SUBDIRS += ..\..\homescreensrv\hsappkeyhandler\tsrc\t_hsappkeyhandler
+ SUBDIRS += ..\..\homescreensrv\activityfw\activityserviceplugin\s60\tsrc
+}
+
+coverage {
+ SUBDIRS += ..\..\homescreensrv\activityfw
+ SUBDIRS += ..\..\homescreensrv\hsappkeyhandler
}
symbian:include(rom.pri)
--- a/taskswitcherapp/taskswitcherappecom/data/tsappecom.rss Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Ecom registration file for alternate fast swap plugin
-*
-*/
-
-
-#include <ecom/registryinfo.rh>
-#include "tsappecomconst.hrh"
-#include "akncapserveralternatefspluginconst.hrh"
-
-RESOURCE REGISTRY_INFO theInfo
- {
- // UID for the DLL
- dll_uid = KTsAppPluginDllUid;
- // Declare array of interface info
- interfaces =
- {
- INTERFACE_INFO
- {
- // UID of interface that is implemented
- interface_uid = KAknCapServerAlternateFsPluginInterfaceUid;
- implementations =
- {
- IMPLEMENTATION_INFO
- {
- implementation_uid = KTsAppPluginImplementationUid;
- version_no = 1;
- display_name = "";
- default_data = "";
- opaque_data = "";
- }
- };
- }
- };
- }
--- a/taskswitcherapp/taskswitcherappecom/group/tsappecom.mmp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Taskswitcher application ecom plugin
-*
-*/
-
-
-#include <platform_paths.hrh>
-#include <data_caging_paths.hrh>
-#include "../inc/tsappecomconst.hrh"
-
-TARGET tsappecom.dll
-TARGETTYPE PLUGIN
-UID 0x10009D8D KTsAppPluginDllUid
-CAPABILITY CAP_ECOM_PLUGIN
-
-SOURCEPATH ../src
-SOURCE proxy.cpp
-SOURCE tsappecom.cpp
-
-USERINCLUDE ../inc
-USERINCLUDE ../../trace
-
-APP_LAYER_SYSTEMINCLUDE
-
-SOURCEPATH ../data
-START RESOURCE tsappecom.rss
- TARGET tsappecom.rsc
- TARGETPATH /resource/plugins
-END
-
-LIBRARY euser.lib
-LIBRARY ecom.lib
-LIBRARY apgrfx.lib
-LIBRARY cone.lib
-
-DEBUGLIBRARY flogger.lib
-
--- a/taskswitcherapp/taskswitcherappecom/inc/tsappecom.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Taskswitcher application ecom plugin
-*
-*/
-
-
-#ifndef TSAPPECOM_H
-#define TSAPPECOM_H
-
-#include <e32base.h>
-#include <akncapserveralternatefsplugin.h>
-
-/**
- * Taskswitcher ecom plugin which is loaded by AknCapServer as an alternate Fast
- * Swap. Uses P&S to show/dismiss the Taskswitcher application.
- */
-class CTsEcomPlugin : public CAknCapAppServerAlternateFs
- {
-public:
-
- /**
- * Symbian two phased constructors.
- *
- * @return CTsEcomPlugin pointer.
- */
- static CTsEcomPlugin* NewL();
-
- /**
- * Destructor.
- */
- ~CTsEcomPlugin();
-
-public:
-
- // From CAknCapAppServerAlternateFs
- /**
- * Shows the alternate fast swap.
- */
- virtual void Show();
-
- /**
- * Dismisses the alternate fast swap.
- */
- virtual void Dismiss();
-
- /**
- * Checks if alternate fast swap is currently visible.
- *
- * @return ETrue If alternate FS is visible.
- */
- virtual TBool IsVisible();
-
- /**
- * Checks if alternate fast swap is ready to be shown.
- *
- * @return ETrue If alternate FS is ready.
- */
- virtual TBool IsReady();
-
- /**
- * Forward long app key to the alternate fast swap.
- */
- virtual void HandleLongAppKeyPress();
-
- /**
- * Forward short app key to the alternate fast swap.
- */
- virtual void HandleShortAppKeyPress();
-
-private:
-
- /**
- * Default constructor, implicitly called by NewL().
- */
- CTsEcomPlugin();
-
- /**
- * 2nd phase construction, called by NewL().
- */
- void ConstructL();
-
- /**
- * Sets the P&S property to given value.
- *
- * @param aValue Value
- */
- void SetTaskswitcherStateProperty( TInt aValue );
-
- /**
- * Defines the P&S property.
- */
- void DefineTaskswitcherStateProperty();
-
- };
-
-#endif // TSAPPECOM_H
--- a/taskswitcherapp/taskswitcherappecom/inc/tsappecomconst.hrh Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Taskswitcher application ecom plugin UIDs
-*
-*/
-
-
-#ifndef TSAPPECOMCONST_HRH
-#define TSAPPECOMCONST_HRH
-
-#define KTsAppPluginDllUid 0x2001FD72
-#define KTsAppPluginImplementationUid 0x2001FD72
-
-#endif // TSAPPECOMCONST_HRH
--- a/taskswitcherapp/taskswitcherappecom/src/proxy.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Taskswitcher application ecom plugin
-*
-*/
-
-
-// INCLUDE FILES
-#include <e32std.h>
-#include <ecom/implementationproxy.h>
-
-#include "tsappecom.h"
-#include "tsappecomconst.hrh"
-
-// Provides a key value pair table, this is used to identify
-// the correct construction function for the requested interface.
-const TImplementationProxy ImplementationTable[] =
- {
- IMPLEMENTATION_PROXY_ENTRY(
- KTsAppPluginImplementationUid,
- CTsEcomPlugin::NewL )
- };
-
-// Function used to return an instance of the proxy table.
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
- TInt& aTableCount )
- {
- aTableCount
- = sizeof ( ImplementationTable ) / sizeof( TImplementationProxy );
- return ImplementationTable;
- }
-
-// End of file
--- a/taskswitcherapp/taskswitcherappecom/src/tsappecom.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Taskswitcher application ecom plugin
- *
-*/
-
-
-#include <e32property.h>
-#include <apgtask.h>
-#include <eikenv.h>
-
-#include "tsappecomconst.hrh"
-#include "tsappecom.h"
-
-// AknCapServer UID, used for P&S category
-const TUid KTaskswitcherStateCategory = { 0x10207218 };
-
-// Taskswitcher UI, used as P&S key
-const TUint KTaskswitcherStateKey = 0x2002677D;
-
-// Values for Taskswitcher launching P&S
-const TInt KTaskswitcherBackgroundValue = 1;
-const TInt KTaskswitcherForegroundValue = KTaskswitcherBackgroundValue << 1;
-const TInt KTaskswitcherLongAppKeyPressed = KTaskswitcherForegroundValue << 1;
-
-// Taskswitcher application UID, for checking if taskswitcher is running
-const TUid KTaskswitcherAppUidValue = { 0x2002677D };
-
-// ---------------------------------------------------------------------------
-// CTsEcomPlugin::CTsEcomPlugin()
-// Default constructor for first phase construction.
-// ---------------------------------------------------------------------------
-//
-CTsEcomPlugin::CTsEcomPlugin()
- {
- }
-
-// ---------------------------------------------------------------------------
-// CTsEcomPlugin::NewL()
-// Standard NewL.
-// ---------------------------------------------------------------------------
-//
-CTsEcomPlugin* CTsEcomPlugin::NewL()
- {
- CTsEcomPlugin* self = new ( ELeave ) CTsEcomPlugin;
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CTsEcomPlugin::ConstructL()
-// 2nd phase construction.
-// ---------------------------------------------------------------------------
-//
-void CTsEcomPlugin::ConstructL()
- {
- DefineTaskswitcherStateProperty();
- }
-
-// ---------------------------------------------------------------------------
-// CTsEcomPlugin::~CTsEcomPlugin()
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CTsEcomPlugin::~CTsEcomPlugin()
- {
- }
-
-// ---------------------------------------------------------------------------
-// CTsEcomPlugin::Show
-// ---------------------------------------------------------------------------
-//
-void CTsEcomPlugin::Show()
- {
- TInt value( 0 );
- RProperty::Get( KTaskswitcherStateCategory, KTaskswitcherStateKey, value );
- value &= ~KTaskswitcherBackgroundValue;
- value |= KTaskswitcherForegroundValue;
- value |= KTaskswitcherLongAppKeyPressed;
- SetTaskswitcherStateProperty( value );
- }
-
-// ---------------------------------------------------------------------------
-// CTsEcomPlugin::Dismiss
-// ---------------------------------------------------------------------------
-//
-void CTsEcomPlugin::Dismiss()
- {
- TInt value( 0 );
- RProperty::Get( KTaskswitcherStateCategory, KTaskswitcherStateKey, value );
- value &= ~KTaskswitcherForegroundValue;
- value |= KTaskswitcherBackgroundValue;
- SetTaskswitcherStateProperty( value );
- }
-
-// ---------------------------------------------------------------------------
-// CTsEcomPlugin::HandleLongAppKeyPress
-// ---------------------------------------------------------------------------
-//
-void CTsEcomPlugin::HandleLongAppKeyPress()
- {
- TInt value( 0 );
- RProperty::Get( KTaskswitcherStateCategory, KTaskswitcherStateKey, value );
- value |= KTaskswitcherLongAppKeyPressed;
- SetTaskswitcherStateProperty( value );
- }
-
-// ---------------------------------------------------------------------------
-// CTsEcomPlugin::HandleShortAppKeyPress
-// ---------------------------------------------------------------------------
-//
-void CTsEcomPlugin::HandleShortAppKeyPress()
- {
- }
-
-// ---------------------------------------------------------------------------
-// CTsEcomPlugin::IsVisible
-// ---------------------------------------------------------------------------
-//
-TBool CTsEcomPlugin::IsVisible()
- {
- TInt value( 0 );
- RProperty::Get( KTaskswitcherStateCategory, KTaskswitcherStateKey, value );
- if ( value & KTaskswitcherForegroundValue )
- {
- return ETrue;
- }
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CTsEcomPlugin::IsReady
-// ---------------------------------------------------------------------------
-//
-TBool CTsEcomPlugin::IsReady()
- {
- TBool ret = EFalse;
- CEikonEnv* eikonEnv = CEikonEnv::Static();
-
- if ( eikonEnv )
- {
- TApaTaskList taskList( eikonEnv->WsSession() );
- TApaTask task = taskList.FindApp( KTaskswitcherAppUidValue );
-
- if ( task.Exists() )
- {
- ret = ETrue;
- }
- }
-
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CTsEcomPlugin::SetTaskswitcherStateProperty
-// -----------------------------------------------------------------------------
-//
-void CTsEcomPlugin::SetTaskswitcherStateProperty( TInt aValue )
- {
- if ( RProperty::Set(
- KTaskswitcherStateCategory, KTaskswitcherStateKey, aValue ) != KErrNone )
- {
- DefineTaskswitcherStateProperty();
- RProperty::Set( KTaskswitcherStateCategory, KTaskswitcherStateKey, aValue );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CTsEcomPlugin::DefineTaskswitcherStateProperty
-// -----------------------------------------------------------------------------
-//
-void CTsEcomPlugin::DefineTaskswitcherStateProperty()
- {
- RProperty::Define(
- KTaskswitcherStateCategory, KTaskswitcherStateKey, RProperty::EInt );
-
- }
-
-// End of file
--- a/taskswitcherapp/taskswitcherappecom/taskswitcherappecom.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = subdirs
-BLD_INF_RULES.prj_mmpfiles = "./group/tsappecom.mmp"
-
-load(data_caging_paths)
-
-ecomplugindll.sources = tsappecom.dll
-ecomplugindll.path = $$SHARED_LIB_DIR
-
-ecompluginresource.sources = /epoc32/data/z/resource/plugins/tsappecom.rsc
-ecompluginresource.path = $$ECOM_RESOURCE_DIR
-
-DEPLOYMENT += ecomplugindll ecompluginresource
--- a/taskswitcherapp/tsapplication/inc/tstaskswitcher.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef TSTASKSWITCHER_H
-#define TSTASKSWITCHER_H
-
-#include <QObject>
-
-class T_TsTaskSwitcher;
-
-class QStateMachine;
-
-/**
- * @ingroup group_tsapplication
- * @brief TaskSwitcher application main class.
- *
- * Loads a runtime from a runtime provider plugin. Manages
- * the runtime execution.
- *
- * @lib ?library
- * @since S60 ?S60_version
- */
-
-class TsTaskSwitcher : public QObject
-{
- Q_OBJECT
-
-public:
- /**
- * Constructor.
- * @since S60 ?S60_version.
- * @param aParent Parent object.
- */
- TsTaskSwitcher(QObject* parent = 0);
-
-private:
-
- Q_DISABLE_COPY(TsTaskSwitcher)
-
-signals:
- /**
- * Emitted when the teleport application needs to exit.
- * @since S60 ?S60_version.
- */
- void exit();
-
-public slots:
- /**
- * Starts the runtime.
- * @since S60 ?S60_version.
- */
- void start();
-
- /**
- * Stops the runtime.
- * @since S60 ?S60_version.
- */
- void stop();
-
-private:
- /**
- * Runtime.
- */
- QStateMachine* mRuntime;
-
- friend class T_TsTaskSwitcher;
-};
-
-#endif // TSTASKSWITCHER_H
--- a/taskswitcherapp/tsapplication/src/main.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include <QTranslator>
-#include <QLocale>
-
-#include <hbapplication.h>
-#include <hbmainwindow.h>
-
-#include "tstaskswitcher.h"
-
-int main(int argc, char *argv[])
-{
- HbApplication tsApp(argc, argv);
- tsApp.setApplicationName("Task Switcher");
-
- HbMainWindow mainWindow(NULL, Hb::WindowFlagTransparent);
- mainWindow.hideItems(Hb::AllItems);
-
- QString locale = QLocale::system().name();
- QTranslator translator;
-
- QString path = "resource/qt/translations/";
- QString tsTrFile = QString("taskswitcher_") + locale;
-#ifdef Q_OS_SYMBIAN
- // TRAP is must here, otherwise it crashes
- TRAP_IGNORE(
- bool tsLoaded(false);
- tsLoaded = translator.load(tsTrFile, QString("z:/") + path);
- if (!tsLoaded)
- translator.load(tsTrFile, QString("c:/") + path);
- );
-#else
- translator.load(tsTrFile, QString(path));
-#endif //Q_OS_SYMBIAN
- tsApp.installTranslator(&translator);
-
- TsTaskSwitcher ts;
- QObject::connect(&tsApp, SIGNAL(aboutToQuit()), &ts, SLOT(stop()));
- QObject::connect(&ts, SIGNAL(exit()), &tsApp, SLOT(quit()), Qt::QueuedConnection);
- ts.start();
-
- return tsApp.exec();
-}
--- a/taskswitcherapp/tsapplication/src/tstaskswitcher.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "tstaskswitcher.h"
-
-#include <QStateMachine>
-#include <QEventLoop>
-
-#include <qservicemanager.h>
-
-QTM_USE_NAMESPACE
-
-TsTaskSwitcher::TsTaskSwitcher(QObject* aParent) : QObject(aParent)
-{
- // FIXME: we're leaking service manager to prevent crash caused by QServiceManager deletion
- QServiceManager *serviceManager = new QServiceManager;
-
- // FIXME: temporary workaround for bug in QtSF database - this process have to add services
- QList<QServiceInterfaceDescriptor> tsServiceInterfaces = serviceManager->findInterfaces("TaskSwitcher");
- QStringList requiredInterfaces;
- requiredInterfaces << "com.nokia.taskswitcher.itemprovider";
- requiredInterfaces << "com.nokia.taskswitcher.activation";
- requiredInterfaces << "com.nokia.taskswitcher.deactivation";
- requiredInterfaces << "com.nokia.taskswitcher.presentation";
- requiredInterfaces << "com.nokia.taskswitcher.runtime.defaultruntime";
-
- foreach (const QServiceInterfaceDescriptor &interface, tsServiceInterfaces) {
- QString interfaceName = interface.interfaceName();
- if (requiredInterfaces.contains(interfaceName)) {
- requiredInterfaces.removeAll(interfaceName);
- }
- }
-
- if (!requiredInterfaces.isEmpty()) {
- // clean old entries
- serviceManager->removeService("TaskSwitcher");
-
- bool servicesAdded = serviceManager->addService(":/tsserviceplugin.xml");
- Q_ASSERT_X(servicesAdded, "Adding Ts Services", qPrintable(QString("addService returned false, error %1").arg(serviceManager->error())));
-
- bool runtimeAdded = serviceManager->addService(":/tsdefaultruntimeplugin.xml");
- Q_ASSERT_X(runtimeAdded, "Adding Ts Runtime", qPrintable(QString("addService returned false, error %1").arg(serviceManager->error())));
- }
- // FIXME
-
- mRuntime = serviceManager->loadLocalTypedInterface<QStateMachine>("com.nokia.taskswitcher.runtime.defaultruntime");
- if (mRuntime) {
- mRuntime->setParent(this);
- connect(mRuntime, SIGNAL(stopped()), this, SIGNAL(exit()));
- } else {
- qCritical("Failed to create runtime");
- }
-}
-
-void TsTaskSwitcher::start()
-{
- if (mRuntime) {
- mRuntime->start();
- } else {
- emit exit();
- }
-}
-
-void TsTaskSwitcher::stop()
-{
- if (mRuntime) {
- if (mRuntime->isRunning()) {
- QEventLoop eventLoop;
- connect(mRuntime, SIGNAL(finished()), &eventLoop, SLOT(quit()));
- QMetaObject::invokeMethod(mRuntime, "event_exit", Qt::QueuedConnection);
- eventLoop.exec();
- }
- }
-}
--- a/taskswitcherapp/tsapplication/tsapplication.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = app
-CONFIG += hb console mobility
-MOBILITY = serviceframework
-
-INCLUDEPATH += inc
-
-SOURCES += src/main.cpp \
- src/tstaskswitcher.cpp \
-
-HEADERS += inc/tstaskswitcher.h \
-
-#temporary workaround for epoc bug in QtSF
-RESOURCES += tsapplication.qrc
-
-symbian {
- TARGET.EPOCHEAPSIZE = 0x700000 0xF00000
- TARGET.UID3 = 0x2002677D
-}
-
-include(../common.pri)
--- a/taskswitcherapp/tsapplication/tsapplication.qrc Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<RCC>
- <qresource prefix="/" >
- <file alias="tsserviceplugin.xml">../tsserviceplugin/tsserviceplugin.xml</file>
- <file alias="tsdefaultruntimeplugin.xml">../runtimeplugins/tsdefaultruntimeplugin/tsdefaultruntimeplugin.xml</file>
- </qresource>
-</RCC>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsactivitymodelitem.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: tsactivitymodelitem.h
+*
+*/
+
+#ifndef TSACTIVITYMODELITEM_H
+#define TSACTIVITYMODELITEM_H
+#include "tsmodelitem.h"
+#include <qvariant.h>
+#include <qicon.h>
+/*!
+ Implements model item which represents Activity entry
+*/
+class TsActivityModelItem : public TsModelItem
+{
+ Q_OBJECT
+public:
+ TsActivityModelItem(QAbstractListModel &model, QObject &service, const QVariantHash &activity);
+ ~TsActivityModelItem();
+ QVariant data(int role) const;
+ void close();
+ void open();
+ static QString applicationKeyword();
+ static QString visibilityKeyword();
+ static QString screenshotKeyword();
+
+private:
+ QVariant decorationRole() const;
+ QVariant displayRole() const;
+ QVariant visibilityRole() const;
+
+private slots:
+ void thumbnailReady(QPixmap, void *);
+signals:
+ void entryChanged(TsModelItem *);
+
+private:
+ QObject &mService;
+ const QVariantHash mActivity;
+ QIcon mIcon;
+ bool mRequetPending;
+};
+
+#endif // TSACTIVITYMODELITEM_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsdataroles.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef TSDATAROLES_H
+#define TSDATAROLES_H
+
+namespace TsDataRoles {
+ enum EntryAttributes {
+ Closable = Qt::UserRole + 1,
+ Visible,
+ };
+}
+
+#endif // TSDATAROLES_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsdevicedialog.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef TSDEVICEDIALOG_H
+#define TSDEVICEDIALOG_H
+
+#include <HbDialog>
+#include <HbDeviceDialogInterface>
+
+class QGraphicsLinearLayout;
+class HbDocumentLoader;
+
+class TsDeviceDialog : public HbDialog, public HbDeviceDialogInterface
+{
+ Q_OBJECT
+
+public:
+ TsDeviceDialog(HbDocumentLoader &loader, QGraphicsItem *parent = 0);
+ ~TsDeviceDialog();
+
+ virtual bool setDeviceDialogParameters(const QVariantMap ¶meters);
+ virtual int deviceDialogError() const;
+ virtual void closeDeviceDialog(bool byClient);
+ virtual HbPopup *deviceDialogWidget() const;
+
+signals:
+ void deviceDialogClosed();
+
+public slots:
+ void changeOrientation(Qt::Orientation orientation);
+
+private:
+ HbDocumentLoader &mLoader;
+
+};
+
+#endif // TSDEVICEDIALOG_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsdevicedialogplugin.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef TSDEVICEDIALOGPLUGIN_H
+#define TSDEVICEDIALOGPLUGIN_H
+
+#include <hbdevicedialogplugin.h>
+
+#include <QObject>
+#include <QVariantMap>
+#include <QSharedPointer>
+#include <qabstractitemmodel.h>
+
+#include "tsdocumentloader.h"
+
+class CaService;
+class TsDeviceDialogPlugin : public HbDeviceDialogPlugin
+{
+ Q_OBJECT
+
+public:
+ TsDeviceDialogPlugin();
+ ~TsDeviceDialogPlugin();
+
+ bool accessAllowed(const QString &deviceDialogType, const QVariantMap ¶meters, const QVariantMap &securityInfo) const;
+ HbDeviceDialogInterface *createDeviceDialog(const QString &deviceDialogType, const QVariantMap ¶meters);
+ bool deviceDialogInfo(const QString &deviceDialogType, const QVariantMap ¶meters, DeviceDialogInfo *info) const;
+ QStringList deviceDialogTypes() const;
+ PluginFlags pluginFlags() const;
+ int error() const;
+
+private slots:
+ void activated(QModelIndex index);
+ void pressed();
+ void longPressed();
+
+signals:
+ void activate(QModelIndex);
+
+private:
+ int mError;
+ TsDocumentLoader mLoader;
+ QAbstractListModel *mModel;
+ QSharedPointer<CaService> mStorage;
+ bool mLongPressed;
+
+ Q_DISABLE_COPY(TsDeviceDialogPlugin)
+};
+
+#endif // TSDEVICEDIALOGPLUGIN_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsdocumentloader.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Screensaver custom document loader.
+*
+*/
+
+#ifndef TSDOCUMENTLOADER_H
+#define TSDOCUMENTLOADER_H
+
+#include <hbdocumentloader.h>
+
+class TsDocumentLoader : public HbDocumentLoader
+{
+
+private:
+ virtual QObject *createObject(const QString &type, const QString &name);
+
+};
+
+#endif // TSDOCUMENTLOADER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsentrymodelitem.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: tsentrymodelitem.h
+*
+*/
+
+#ifndef TSENTRYMODELITEM_H
+#define TSENTRYMODELITEM_H
+#include "tsmodelitem.h"
+#include <caservice.h>
+
+class CaEntry;
+
+/*!
+ Class implements model item which represents Content Arsenal entry
+*/
+class TsEntryModelItem : public TsModelItem
+{
+public:
+ TsEntryModelItem(CaService &service, QSharedPointer<CaEntry> entry, QSize mSize);
+ ~TsEntryModelItem();
+ QVariant data(int role) const;
+ void close();
+ void open();
+
+private:
+ bool closable() const;
+
+private:
+ CaService &mService;
+ const QSharedPointer<CaEntry> mEntry;
+ const QSize mSize;
+};
+
+#endif // TSMODEL_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsmodel.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: tsmodel.h
+*
+*/
+
+#ifndef TSMODEL_H
+#define TSMODEL_H
+
+#include <QAbstractItemModel>
+#include <QList>
+#include <QSize>
+#include <QSharedPointer>
+#include <caquery.h>
+#include <caentry.h>
+
+class CaService;
+class ActivityManager;
+class CaNotifier;
+class TsModelItem;
+
+class TsModel : public QAbstractListModel
+{
+ Q_OBJECT
+
+public:
+ explicit TsModel(CaService &applicationSrv,
+ QObject &activitySrv,
+ QObject *parent = 0);
+ ~TsModel();
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+ int maxRowCount()const;
+
+public slots:
+ void openApplication(const QModelIndex &index);
+ void closeApplication(const QModelIndex &index);
+ void updateModel();
+ void entryChanged(CaEntry, ChangeType);
+ void entryChanged(TsModelItem *);
+private:
+ TsModelItem *entry(const QModelIndex &index) const;
+ void getApplications();
+ void getActivities();
+ void prepareActivityEntry(QVariantHash &activity);
+ QString getApplicationName(int id);
+
+private:
+ /*
+ * List containing result
+ */
+ QList<TsModelItem *> mEntries;
+
+ /*
+ * Query
+ */
+ CaQuery mQuery;
+
+ /*
+ * Content Arsenal Service
+ */
+ CaService &mApplicationService;
+
+ /*
+ * Activity Service
+ */
+ QObject &mActivityService;
+
+ /*
+ * Content Arsenal Notifier
+ */
+ CaNotifier *mNotifier;
+
+ /*
+ * Icon size in model
+ */
+ QSize mSize;
+};
+
+#endif // TSMODEL_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tsmodelitem.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: tsmodelitem.h
+*
+*/
+
+#ifndef TSMODELITEM_H
+#define TSMODELITEM_H
+#include <QVariant>
+#include <QModelIndex>
+/*!
+ Abstract class which define model item for taskswitcher
+*/
+class TsModelItem: public QObject
+{
+ Q_OBJECT
+
+public:
+ virtual QVariant data(int role) const =0;
+ virtual void close() =0;
+ virtual void open() =0;
+};
+
+#endif // TSMODELITEM_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tstasksgrid.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef TSTASKSGRID_H
+#define TSTASKSGRID_H
+
+#include <hbgridview.h>
+
+class TsTasksGrid : public HbGridView
+{
+
+ Q_OBJECT
+
+signals:
+ void deleteButtonClicked(const QModelIndex &index);
+
+};
+
+#endif // TSTASKSGRID_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/inc/tstasksgriditem.h Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,50 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef TSTASKSGRIDITEM_H
+#define TSTASKSGRIDITEM_H
+
+#include <hbabstractviewitem.h>
+
+class HbLabel;
+class HbPushButton;
+
+class TsTasksGridItem : public HbAbstractViewItem
+{
+ Q_OBJECT
+
+public:
+ TsTasksGridItem();
+ TsTasksGridItem(const TsTasksGridItem &item);
+ ~TsTasksGridItem();
+
+ HbAbstractViewItem *createItem();
+ void updateChildItems();
+
+private slots:
+ void handleDeleteClicked();
+
+signals:
+ void deleteClicked(const QModelIndex &index);
+
+private:
+ HbLabel *mScreenshotLabel;
+ HbLabel *mApplicationNameLabel;
+ HbPushButton *mDeleteButton;
+
+};
+
+#endif //TSTASKSGRIDITEM_H
Binary file taskswitcherapp/tsdevicedialogplugin/resource/delete.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsactivitymodelitem.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,185 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: tsactivitymodelitem.cpp
+*
+*/
+#include "tsactivitymodelitem.h"
+#include "tsdataroles.h"
+#include <hsactivitydbclientinterface.h>
+#include <hbicon.h>
+
+/*!
+ \class TsActivityModelItem
+ \ingroup group_tsdevicedialogplugin
+ \brief Item presenting activity in the grid.
+*/
+
+/*!
+ Standard C++ constructor
+ /param model - reference to parent model
+ /param service - reference to initialized ActivityManager instance
+ /param entry - Activity data
+*/
+TsActivityModelItem::TsActivityModelItem(QAbstractListModel &model,
+ QObject& service,
+ const QVariantHash & activity)
+ :
+ mService(service),
+ mActivity(activity),
+ mIcon(),
+ mRequetPending(false)
+{
+ connect(this,
+ SIGNAL(entryChanged(TsModelItem *)),
+ &model,
+ SLOT(entryChanged(TsModelItem *)));
+ connect(&mService,
+ SIGNAL(thumbnailReady(QPixmap, void *)),
+ this,
+ SLOT(thumbnailReady(QPixmap, void *)));
+}
+
+/*!
+ Standard C++ destructor
+ /param service - reference to initialized ActivityManager instance
+ /param entry - Activity data
+*/
+TsActivityModelItem::~TsActivityModelItem()
+{
+}
+
+/*!
+ Returns the data stored under the given role.
+ /param role - requested data role
+ /return data encapulated by QVariant
+*/
+QVariant TsActivityModelItem::data(int role) const
+{
+ switch (role) {
+ case Qt::DisplayRole:
+ return displayRole();
+ case Qt::DecorationRole:
+ return decorationRole();
+ case TsDataRoles::Closable:
+ return QVariant(false);
+ case TsDataRoles::Visible:
+ return visibilityRole();
+ default:
+ return QVariant(QVariant::Invalid);
+ }
+}
+
+/*!
+ Empty interface implementation
+*/
+void TsActivityModelItem::close()
+{
+ //no implementation required
+}
+
+/*!
+ Open or move to foreground activity repesented by entry
+*/
+void TsActivityModelItem::open()
+{
+ QVariantHash::const_iterator
+ app(mActivity.constFind(ActivityApplicationKeyword)),
+ act(mActivity.constFind(ActivityActivityKeyword));
+
+ if (mActivity.end() != app && mActivity.end() != act) {
+ QMetaObject::invokeMethod(&mService,
+ "launchActivity",
+ Q_ARG(int, app.value().toInt()),
+ Q_ARG(QString, act.value().toString()));
+ }
+}
+
+/*!
+ Return application name keyword
+*/
+QString TsActivityModelItem::applicationKeyword()
+{
+ static QString applciationName(":ApplicationName");
+ return applciationName;
+}
+
+/*!
+ Return activity visibility status keyword
+*/
+QString TsActivityModelItem::visibilityKeyword()
+{
+ static QString visibility("visible");
+ return visibility;
+}
+
+/*!
+ Return activity screenshot keyword
+*/
+QString TsActivityModelItem::screenshotKeyword()
+{
+ static QString screenshot("screenshot");
+ return screenshot;
+}
+
+/*!
+ Returns the data stored under decoration role.
+ /return data encapulated by QVariant
+*/
+QVariant TsActivityModelItem::decorationRole() const
+{
+ if (!mRequetPending) {
+ const_cast<TsActivityModelItem *>(this)->mRequetPending = true;
+ QVariantHash::const_iterator node(mActivity.constFind(screenshotKeyword()));
+ if (mActivity.end() != node) {
+ QMetaObject::invokeMethod(&mService,
+ "getThumbnail",
+ Q_ARG(QString, node.value().toString()),
+ Q_ARG(void *, const_cast<TsActivityModelItem *>(this)));
+ }
+ }
+ return QVariant::fromValue<HbIcon>(HbIcon(mIcon));
+}
+
+/*!
+ Returns the data stored under display role.
+ /return data encapulated by QVariant
+*/
+QVariant TsActivityModelItem::displayRole() const
+{
+ QVariantHash::const_iterator node(mActivity.find(applicationKeyword()));
+ return mActivity.end() != node ? node.value() : QVariant(QString::null);
+}
+
+/*!
+ Returns the data stored under visibility role.
+ /return data encapulated by QVariant
+*/
+QVariant TsActivityModelItem::visibilityRole() const
+{
+ QVariantHash::const_iterator node(mActivity.find(visibilityKeyword()));
+ return mActivity.end() != node ? node.value() : QVariant(true);
+}
+
+/*!
+ Slot retrieve thumbnail form TM, update content and notify observers
+ /param pixmap - thumbnail content
+ /ptr - user data provided to request
+*/
+void TsActivityModelItem::thumbnailReady(QPixmap pixmap, void *ptr)
+{
+ if (ptr == this) {
+ mIcon = pixmap;
+ emit entryChanged(this);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsdevicedialog.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,94 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Default Screensaver runtime.
+*
+*/
+
+#include <HbMainWindow>
+#include <HbDocumentLoader>
+
+#include "tsdevicedialog.h"
+
+/*!
+ \class TsDeviceDialog
+ \ingroup group_tsdevicedialogplugin
+ \brief TaskSwitcher Device Dialog.
+ */
+
+/*!
+ Constructor.
+ \param parent Parent.
+ */
+TsDeviceDialog::TsDeviceDialog(HbDocumentLoader &loader, QGraphicsItem *parent) : HbDialog(parent), mLoader(loader)
+{
+ connect(mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(changeOrientation(Qt::Orientation)));
+ connect(this, SIGNAL(aboutToClose()), this, SIGNAL(deviceDialogClosed()));
+}
+
+TsDeviceDialog::~TsDeviceDialog()
+{
+ qDebug("Destruction");
+}
+
+/*!
+ Sets device dialog parameters.
+ \param parameters Device Dialog's parameters to be set.
+ \ret return true if parameters are correct.
+ */
+bool TsDeviceDialog::setDeviceDialogParameters(const QVariantMap ¶meters)
+{
+ Q_UNUSED(parameters);
+ return false;
+}
+
+/*!
+ Returns error code.
+ \ret error code.
+ */
+int TsDeviceDialog::deviceDialogError() const
+{
+ return 0;
+}
+
+/*!
+ Closes device dialog.
+ \param byClient If dialog is close by client.
+ */
+void TsDeviceDialog::closeDeviceDialog(bool byClient)
+{
+ Q_UNUSED(byClient)
+ hide();
+ emit deviceDialogClosed();
+}
+
+/*!
+ Returns device dialog instance.
+ \ret Device dialog instance.
+ */
+HbPopup *TsDeviceDialog::deviceDialogWidget() const
+{
+ return const_cast<TsDeviceDialog *>(this);
+}
+
+void TsDeviceDialog::changeOrientation(Qt::Orientation orientation)
+{
+ qDebug("Loading DOCML data for orientation %d", orientation);
+ bool ok(true);
+ if (orientation == Qt::Horizontal) {
+ mLoader.load(":/xml/resource/layout.docml", "landscape", &ok);
+ } else {
+ mLoader.load(":/xml/resource/layout.docml", "portrait", &ok);
+ }
+ Q_ASSERT(ok);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsdevicedialogplugin.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,177 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QtPlugin>
+#include <hbdevicedialog.h>
+#include <HbMainWindow>
+#include <qservicemanager.h>
+
+#include "tsdevicedialogplugin.h"
+#include "tsdevicedialog.h"
+#include "tstasksgrid.h"
+#include "tstasksgriditem.h"
+#include "tsdocumentloader.h"
+#include "tsmodel.h"
+#include <caservice.h>
+
+/*!
+ \class TsDeviceDialogPlugin
+ \ingroup group_tsdevicedialogplugin
+ \brief TaskSwitcher Device Dialog Plug-in.
+ */
+
+const QString KTsDialogType = "com.nokia.taskswitcher.tsdevicedialogplugin/1.0";
+
+/*!
+ Constructor.
+ */
+TsDeviceDialogPlugin::TsDeviceDialogPlugin() : mError(0), mModel(0), mStorage(CaService::instance()), mLongPressed(false)
+{
+}
+
+TsDeviceDialogPlugin::~TsDeviceDialogPlugin()
+{
+ delete mModel;
+}
+/*!
+ \reimp
+ */
+bool TsDeviceDialogPlugin::accessAllowed(const QString &deviceDialogType, const QVariantMap ¶meters, const QVariantMap &securityInfo) const
+{
+ Q_UNUSED(deviceDialogType)
+ Q_UNUSED(parameters)
+ Q_UNUSED(securityInfo)
+
+ // This plugin doesn't perform operations that may compromise security.
+ // All clients are allowed to use.
+ return true;
+}
+
+/*!
+ \reimp
+ */
+HbDeviceDialogInterface *TsDeviceDialogPlugin::createDeviceDialog(const QString &deviceDialogType, const QVariantMap ¶meters)
+{
+ Q_UNUSED(parameters)
+ TsDeviceDialog *dialog(0);
+ if (deviceDialogType == KTsDialogType) {
+ if (0 == mModel) {
+ QtMobility::QServiceManager serviceManager;
+ QObject *objPtr(serviceManager.loadInterface("com.nokia.qt.activities.ActivityManager"));
+ if (objPtr) {
+ objPtr->setParent(this);//make it autodestucted
+ } else {
+ objPtr = this;//activity plugin is not present. provide invalid instance because its not critical functionality.
+ //QMetaObject::invokeMethod is safe to use in such a case.
+ }
+ mModel = new TsModel(*mStorage, *objPtr);
+ }
+
+ mLoader.reset();
+ bool ok(true);
+ mLoader.load(":/xml/resource/layout.docml", &ok);
+ Q_ASSERT(ok);
+
+ dialog = qobject_cast<TsDeviceDialog *>(mLoader.findWidget("tsdevicedialog"));
+ TsTasksGrid *grid = qobject_cast<TsTasksGrid *>(mLoader.findWidget("taskgrid"));
+ Q_ASSERT(dialog);
+ Q_ASSERT(grid);
+
+ dialog->changeOrientation(dialog->mainWindow()->orientation());
+
+ grid->setItemPrototype(new TsTasksGridItem());
+ grid->setModel(mModel);
+
+ static_cast<TsModel *>(mModel)->updateModel();
+
+ // connect the grid and model
+ qRegisterMetaType<QModelIndex>("QModelIndex");
+
+ disconnect(grid, SIGNAL(activated(QModelIndex)), this, SLOT(activated(QModelIndex)));
+ disconnect(grid, SIGNAL(pressed(QModelIndex)), this, SLOT(pressed()));
+ disconnect(grid, SIGNAL(longPressed(HbAbstractViewItem *, QPointF)), this, SLOT(longPressed()));
+ disconnect(this, SIGNAL(activate(QModelIndex)), mModel, SLOT(openApplication(QModelIndex)));
+ disconnect(this, SIGNAL(activate(QModelIndex)), dialog, SLOT(close()));
+ disconnect(grid, SIGNAL(deleteButtonClicked(QModelIndex)), mModel, SLOT(closeApplication(QModelIndex)));
+
+ connect(grid, SIGNAL(activated(QModelIndex)), this, SLOT(activated(QModelIndex)));
+ connect(grid, SIGNAL(pressed(QModelIndex)), this, SLOT(pressed()));
+ connect(grid, SIGNAL(longPressed(HbAbstractViewItem *, QPointF)), this, SLOT(longPressed()));
+ connect(this, SIGNAL(activate(QModelIndex)), mModel, SLOT(openApplication(QModelIndex)));
+ connect(this, SIGNAL(activate(QModelIndex)), dialog, SLOT(close()));
+ connect(grid, SIGNAL(deleteButtonClicked(QModelIndex)), mModel, SLOT(closeApplication(QModelIndex)), Qt::QueuedConnection);
+ }
+ return dialog;
+}
+
+/*!
+ \reimp
+ */
+bool TsDeviceDialogPlugin::deviceDialogInfo(const QString &deviceDialogType, const QVariantMap ¶meters, DeviceDialogInfo *info) const
+{
+ Q_UNUSED(parameters)
+ Q_UNUSED(deviceDialogType)
+
+ info->group = GenericDeviceDialogGroup;
+ info->flags = NoDeviceDialogFlags;
+ info->priority = DefaultPriority;
+
+ return true;
+}
+
+/*!
+ \reimp
+ */
+QStringList TsDeviceDialogPlugin::deviceDialogTypes() const
+{
+ return QStringList(KTsDialogType);
+}
+
+/*!
+ \reimp
+ */
+HbDeviceDialogPlugin::PluginFlags TsDeviceDialogPlugin::pluginFlags() const
+{
+ return PluginFlags(PreloadPlugin | KeepPluginLoaded);
+}
+
+/*!
+ \reimp
+ */
+int TsDeviceDialogPlugin::error() const
+{
+ return mError;
+}
+
+void TsDeviceDialogPlugin::activated(QModelIndex index)
+{
+ if (!mLongPressed) {
+ emit activate(index);
+ }
+}
+
+void TsDeviceDialogPlugin::pressed()
+{
+ mLongPressed = false;
+}
+
+void TsDeviceDialogPlugin::longPressed()
+{
+ mLongPressed = true;
+}
+
+Q_EXPORT_PLUGIN2(tsdevicedialogplugin, TsDeviceDialogPlugin)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsdocumentloader.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Screensaver custom document loader.
+*
+*/
+
+#include "tsdocumentloader.h"
+#include "tstasksgrid.h"
+#include "tsdevicedialog.h"
+
+/*!
+ \class TsDocumentLoader
+ \ingroup group_tsdevicedialogplugin
+ \brief Document loader.
+
+ TS implementation of document loader. It is creating TS objects used in UI
+*/
+
+QObject *TsDocumentLoader::createObject(const QString &type, const QString &name)
+{
+ if (type == TsTasksGrid::staticMetaObject.className()) {
+ QObject *object = new TsTasksGrid();
+ object->setObjectName(name);
+ return object;
+ } else if (type == TsDeviceDialog::staticMetaObject.className()) {
+ QObject *object = new TsDeviceDialog(*this);
+ object->setObjectName(name);
+ return object;
+ }
+
+ return HbDocumentLoader::createObject(type, name);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsentrymodelitem.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,95 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: tsentrymodelitem.cpp
+*
+*/
+#include "tsentrymodelitem.h"
+#include "tsdataroles.h"
+
+#include <HbIcon>
+
+/*!
+ \class TsEntryModelItem
+ \ingroup group_tsdevicedialogplugin
+ \brief Item presenting running apps in the grid.
+*/
+
+/*!
+ Standard C++ constructor
+ /param service - reference to initialized Content Aresnal client instance
+ /param entry - Content Arsenal data
+ /param size - icon size
+*/
+TsEntryModelItem::TsEntryModelItem(CaService& service, QSharedPointer<CaEntry> entry, QSize size)
+ :
+ mService(service),
+ mEntry(entry),
+ mSize(size)
+{
+ //no implementation required
+}
+
+/*!
+ Standard C++ destructor
+*/
+TsEntryModelItem::~TsEntryModelItem()
+{
+}
+
+/*!
+ Returns the data stored under the given role.
+ /param role - requested data role
+ /return data encapulated by QVariant
+*/
+QVariant TsEntryModelItem::data(int role) const
+{
+ switch (role) {
+ case Qt::DisplayRole:
+ return QVariant(mEntry->text());
+ case Qt::DecorationRole:
+ return QVariant(mEntry->makeIcon(mSize));
+ case TsDataRoles::Closable:
+ return QVariant(closable());
+ case TsDataRoles::Visible:
+ return QVariant(true);
+ default:
+ return QVariant(QVariant::Invalid);
+ }
+}
+
+/*!
+ Close running application repesented by entry
+*/
+void TsEntryModelItem::close()
+{
+ mService.executeCommand(mEntry->id(), QString("close"));
+}
+
+/*!
+ Open or move to foreground application repesented by entry
+*/
+void TsEntryModelItem::open()
+{
+ mService.executeCommand(mEntry->id(), QString("open"));
+}
+
+/*!
+ Check if application represented by entry is running.
+ /return true if application is running, false otherwise
+*/
+bool TsEntryModelItem::closable() const
+{
+ return (mEntry->flags().testFlag(RunningEntryFlag) &&
+ !mEntry->flags().testFlag(SystemEntryFlag));
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tsmodel.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,267 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: tsmodel.cpp
+*
+*/
+#include "tsmodel.h"
+#include "tsmodelitem.h"
+#include "tsentrymodelitem.h"
+#include "tsactivitymodelitem.h"
+#include "tsdataroles.h"
+
+#include <HbIcon>
+#include <qvariant.h>
+#include <qlist.h>
+#include <cadefs.h>
+
+#include <canotifier.h>
+#include <canotifierfilter.h>
+#include <hsactivitydbclientinterface.h>
+
+const char entryTypeKeyword[] = "application";
+const char applicationUidKeyword [] = "application:uid";
+const int maxItems(10);
+/*!
+ \class TsModel
+ \ingroup group_tsdevicedialogplugin
+ \brief Model storing running application and activieties.
+*/
+
+/*!
+ Constructor
+ \param query used to create model
+ \param pointer to parent object
+*/
+TsModel::TsModel(CaService &applicationSrv, QObject &activitySrv, QObject *parent) :
+ QAbstractListModel(parent),
+ mEntries(),
+ mApplicationService(applicationSrv),
+ mActivityService(activitySrv),
+ mNotifier(NULL),
+ mSize(240, 240)
+{
+ // creating query
+ mQuery.setEntryRoles(ItemEntryRole);
+ mQuery.addEntryTypeName(entryTypeKeyword);
+ mQuery.setFlagsOn(VisibleEntryFlag);
+ mQuery.setFlagsOff(MissingEntryFlag);
+ mQuery.setFlagsOn(UsedEntryFlag);
+ mQuery.setSort(LastUsedSortAttribute, Qt::DescendingOrder);
+ // requesting new data
+ updateModel();
+ // creating notyfication filter
+ CaNotifierFilter filter(mQuery);
+ mNotifier = mApplicationService.createNotifier(filter);
+ connect(mNotifier, SIGNAL(entryChanged(CaEntry,ChangeType)), this, SLOT(entryChanged(CaEntry, ChangeType)));
+ connect(mNotifier, SIGNAL(entryTouched(int)), this, SLOT(updateModel()));
+ if (mQuery.parentId() > 0) {
+ connect(mNotifier, SIGNAL(groupContentChanged(int)), this, SLOT(updateModel()));
+ }
+}
+
+/*!
+ Destructor
+*/
+TsModel::~TsModel()
+{
+ qDeleteAll(mEntries);
+ delete mNotifier;
+}
+
+/*!
+ Returns count of rows in model
+ \retval number of rows
+*/
+int TsModel::rowCount(
+ const QModelIndex &parent) const
+{
+ Q_UNUSED(parent);
+ return mEntries.count();
+}
+
+/*!
+ Returns appropiate model's data
+ \param index model index
+ \param role which data role to return
+ \retval models data
+*/
+QVariant TsModel::data(const QModelIndex &index,
+ int role) const
+{
+ return index.isValid() ? entry(index)->data(role) : QVariant();
+}
+
+/*!
+ Returns maximum anount of data allowed for model
+ \retval maximum data count
+*/
+
+int TsModel::maxRowCount()const
+{
+ return maxItems;
+}
+
+/*!
+ Activate one of model entries
+*/
+void TsModel::openApplication(const QModelIndex &index)
+{
+ if (!index.isValid()) {
+ return;
+ }
+ entry(index)->open();
+}
+
+/*!
+ Close one of moder entries
+*/
+void TsModel::closeApplication(const QModelIndex &index)
+{
+ if (!index.isValid() || !entry(index)->data(TsDataRoles::Closable).toBool()) {
+ return;
+ }
+ entry(index)->close();
+}
+
+/*!
+ Updates model with fresh entries
+*/
+void TsModel::updateModel()
+{
+ //clear current data
+ qDeleteAll(mEntries);
+ mEntries.clear();
+
+ beginResetModel();
+ getApplications();
+ getActivities();
+ endResetModel();
+
+}
+
+/*!
+ Read list of running applications
+*/
+void TsModel::getApplications()
+{
+ //get running applications
+ TsModelItem *entry(0);
+ QList< QSharedPointer<CaEntry> > applications(mApplicationService.getEntries(mQuery));
+ foreach(QSharedPointer<CaEntry> application, applications) {
+ //CA entry ownership is transfered to model item
+ entry = new TsEntryModelItem(mApplicationService, application, mSize);
+ if (entry) {
+ //add running application filtering
+ if (entry->data(TsDataRoles::Closable).toBool() && //running application filtering
+ entry->data(TsDataRoles::Visible).toBool() && //visible applications filtering
+ maxRowCount() > mEntries.count()) { //maximum model size check
+ mEntries.append(entry);
+ } else {
+ delete entry;
+ }
+
+ }
+ }
+}
+
+/*!
+ Read current activities
+*/
+void TsModel::getActivities()
+{
+ //get activities
+ TsModelItem *entry(0);
+ QList<QVariantHash> activities;
+ QMetaObject::invokeMethod(&mActivityService, "activitiesList", Q_RETURN_ARG(QList<QVariantHash>, activities));
+ foreach(QVariantHash activity, activities) {
+ prepareActivityEntry(activity);
+ entry = new TsActivityModelItem(*this, mActivityService, activity);
+ if (entry) {
+ if (entry->data(TsDataRoles::Visible).toBool() && //visible activity filtering
+ maxRowCount() > mEntries.count()) { //maximum model size check
+ mEntries.append(entry);
+ } else {
+ delete entry;
+ }
+ }
+ }
+}
+
+/*!
+ Modify activity entry replacing application id with name
+*/
+void TsModel::prepareActivityEntry(QVariantHash &activity)
+{
+ activity.insert(TsActivityModelItem::applicationKeyword(),
+ activity.find(ActivityActivityKeyword) == activity.end() ?
+ QString::null :
+ getApplicationName(activity[ActivityApplicationKeyword].toInt()));
+}
+
+/*!
+ Return application name
+ \param id - reqiested application identyfier
+*/
+QString TsModel::getApplicationName(int id)
+{
+ CaQuery query;
+ QString retVal;
+ query.setEntryRoles(ItemEntryRole);
+ query.addEntryTypeName(entryTypeKeyword);
+ query.setAttribute(applicationUidKeyword, QString::number(id));
+ QList< QSharedPointer<CaEntry> > applications(mApplicationService.getEntries(query));
+ if (applications.begin() != applications.end()) {
+ retVal = (*applications.begin())->text();
+ }
+ return retVal;
+}
+
+/*!
+ Called when some entry was changed
+ \param updatedEntry entry that was changed
+ \param change change type
+*/
+void TsModel::entryChanged(CaEntry updatedEntry,
+ ChangeType change)
+{
+ Q_UNUSED(updatedEntry);
+ Q_UNUSED(change)
+ updateModel();
+}
+
+/*!
+ Called when some item was changed
+ \param itemPtr - address of updated item
+*/
+void TsModel::entryChanged(TsModelItem *itemPtr)
+{
+ QList<TsModelItem *>::const_iterator iter(mEntries.constBegin());
+ for (int offset(0); iter != mEntries.constEnd(); ++iter, ++offset) {
+ if ((*iter) == itemPtr) {
+ emit dataChanged(index(offset, 0), index(offset, 0));
+ break;
+ }
+ }
+}
+
+/*!
+ Returns an entry from model
+ \param index of entry in model
+ \retval pointer to an entry
+*/
+TsModelItem *TsModel::entry(const QModelIndex &index) const
+{
+ return mEntries.at(index.row());
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/src/tstasksgriditem.cpp Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#include "tstasksgriditem.h"
+
+#include <hblabel.h>
+#include <hbpushbutton.h>
+#include <hbabstractitemview.h>
+#include <hbanchorlayout.h>
+#include "tsdataroles.h"
+
+/*!
+ \class TsTasksGridItem
+ \ingroup group_tsdevicedialogplugin
+ \brief Item that should be presented in grid.
+*/
+
+
+TsTasksGridItem::TsTasksGridItem() : HbAbstractViewItem(), mScreenshotLabel(0), mApplicationNameLabel(0), mDeleteButton(0)
+{
+}
+
+TsTasksGridItem::TsTasksGridItem(const TsTasksGridItem &item) : HbAbstractViewItem(item)
+{
+ // add screenshot
+ mScreenshotLabel = new HbLabel();
+ mScreenshotLabel->setAlignment(Qt::AlignHCenter);
+
+ // add application name label
+ mApplicationNameLabel = new HbLabel();
+ mApplicationNameLabel->setAlignment(Qt::AlignCenter);
+
+ // add close app button
+ HbIcon deleteIcon(":/resource/delete.png");
+ mDeleteButton = new HbPushButton();
+ mDeleteButton->setIcon(deleteIcon);
+ mDeleteButton->setPreferredSize(48, 48);
+ mDeleteButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
+ mDeleteButton->setEnabled(true);
+ connect(mDeleteButton, SIGNAL(clicked()), this, SLOT(handleDeleteClicked()));
+ mDeleteButton->hide();
+
+ setContentsMargins(5, 5, 5, 5);
+
+ // add all items to layout
+ HbAnchorLayout *anchorLayout = new HbAnchorLayout();
+ anchorLayout->setAnchor(mApplicationNameLabel, Hb::LeftEdge, anchorLayout, Hb::LeftEdge, 0);
+ anchorLayout->setAnchor(mApplicationNameLabel, Hb::TopEdge, anchorLayout, Hb::TopEdge, 0);
+ anchorLayout->setAnchor(mApplicationNameLabel, Hb::RightEdge, anchorLayout, Hb::RightEdge, 0);
+
+ anchorLayout->setAnchor(mScreenshotLabel, Hb::TopEdge, mApplicationNameLabel, Hb::BottomEdge, 0);
+ anchorLayout->setAnchor(mScreenshotLabel, Hb::LeftEdge, anchorLayout, Hb::LeftEdge, 0);
+ anchorLayout->setAnchor(mScreenshotLabel, Hb::RightEdge, anchorLayout, Hb::RightEdge, 0);
+ anchorLayout->setAnchor(mScreenshotLabel, Hb::BottomEdge, anchorLayout, Hb::BottomEdge, 0);
+
+ anchorLayout->setAnchor(mDeleteButton, Hb::RightEdge, mScreenshotLabel, Hb::RightEdge, 0);
+ anchorLayout->setAnchor(mDeleteButton, Hb::TopEdge, mScreenshotLabel, Hb::TopEdge, 0);
+
+ setLayout(anchorLayout);
+}
+
+TsTasksGridItem::~TsTasksGridItem()
+{
+}
+
+HbAbstractViewItem *TsTasksGridItem::createItem()
+{
+ TsTasksGridItem *newItem = new TsTasksGridItem(*this);
+ connect(newItem, SIGNAL(deleteClicked(QModelIndex)), itemView(), SIGNAL(deleteButtonClicked(QModelIndex)));
+ return newItem;
+}
+
+void TsTasksGridItem::handleDeleteClicked()
+{
+ emit deleteClicked(modelIndex());
+}
+
+void TsTasksGridItem::updateChildItems()
+{
+ mScreenshotLabel->setIcon(modelIndex().data(Qt::DecorationRole).value<HbIcon>());
+ mApplicationNameLabel->setPlainText(modelIndex().data(Qt::DisplayRole).toString());
+ QVariant status(modelIndex().data(TsDataRoles::Closable));
+ const bool isRunning(status.isValid() && status.toBool());
+ if (isRunning) {
+ mDeleteButton->show();
+ } else {
+ mDeleteButton->hide();
+ }
+}
Binary file taskswitcherapp/tsdevicedialogplugin/taskswitcher.qm has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/taskswitcher.ts Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
+<context>
+<message numerus="no" id="txt_tsw_title_task_switcher">
+ <comment>Task switcher popup title text. Application allows user to swap between running and recently used applications and to clear them from the list.</comment>
+ <source>Task switcher</source>
+ <translation variants="no">Task switcher</translation>
+ <extra-loc-layout_id>cell_tport_appsw_pane_t1</extra-loc-layout_id>
+ <extra-loc-viewid>tsw_01</extra-loc-viewid>
+ <extra-loc-positionid>title</extra-loc-positionid>
+ <extra-loc-feature>ts</extra-loc-feature>
+ <extra-loc-blank>False</extra-loc-blank>
+</message>
+</context>
+</TS>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/tsdevicedialogplugin.pro Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,67 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: tsdevicedialogplugin.pro
+#
+
+TEMPLATE = lib
+CONFIG += hb plugin mobility
+MOBILITY = serviceframework
+
+include (../common.pri)
+
+HEADERS += inc/tsdevicedialog.h \
+ inc/tsdevicedialogplugin.h \
+ inc/tsmodel.h \
+ inc/tsmodelitem.h \
+ inc/tsentrymodelitem.h \
+ inc/tsactivitymodelitem.h \
+ inc/tstasksgrid.h \
+ inc/tstasksgriditem.h \
+ inc/tsdocumentloader.h \
+ inc/tsdataroles.h \
+
+SOURCES += src/tsdevicedialog.cpp \
+ src/tsdevicedialogplugin.cpp \
+ src/tsmodel.cpp \
+ src/tsentrymodelitem.cpp \
+ src/tsactivitymodelitem.cpp \
+ src/tstasksgriditem.cpp \
+ src/tsdocumentloader.cpp \
+
+INCLUDEPATH += . \
+ ./inc \
+
+LIBS += -lcaclient
+
+TRANSLATIONS = taskswitcher.ts
+
+RESOURCES += tsdevicedialogplugin.qrc
+
+symbian {
+ TARGET.CAPABILITY = CAP_ECOM_PLUGIN
+ TARGET.UID3 = 0x2002677F
+ pluginstub.sources = tsdevicedialogplugin.dll
+ pluginstub.path = /resource/plugins/devicedialogs
+
+ # ugly hack
+ translation.sources = ./*.qm
+ translation.path = $$QT_PLUGINS_BASE_DIR/../translations
+
+ DEPLOYMENT += pluginstub translation
+}
+
+win32 {
+ include ($$[QMAKE_MKSPECS]/features/hb_install.prf)
+ DESTDIR = $$HB_PLUGINS_DIR/devicedialogs
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcherapp/tsdevicedialogplugin/tsdevicedialogplugin.qrc Mon May 03 12:24:59 2010 +0300
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/xml">
+ <file>resource/layout.docml</file>
+ </qresource>
+ <qresource prefix="/" >
+ <file>resource/delete.png</file>
+ </qresource>
+</RCC>
--- a/taskswitcherapp/tsserviceplugin/inc/s60/tsexternalactivationwatcher_p.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSEXTERNALACTIVATIONWATCHERPRIVATE_H
-#define TSEXTERNALACTIVATIONWATCHERPRIVATE_H
-
-#include <e32base.h>
-#include <e32property.h>
-
-class TsExternalActivationWatcher;
-
-class TsExternalActivationWatcherPrivate : public CActive
-{
-public:
- TsExternalActivationWatcherPrivate(TsExternalActivationWatcher *parent);
- virtual ~TsExternalActivationWatcherPrivate();
-
-public: //From CActive
- /**
- * Implements cancellation of an outstanding request.
- */
- virtual void DoCancel();
-
- /**
- Handles an active object's request completion event.
- */
- void RunL();
-
-private:
- bool CheckActivationFlag();
- void ResetActivationFlag();
-
-private:
- TsExternalActivationWatcher *mParent;
- RProperty mProperty;
-
-};
-
-#endif // TSEXTERNALACTIVATIONWATCHERPRIVATE_H
--- a/taskswitcherapp/tsserviceplugin/inc/s60/tslongpresswatcher_p.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSLONGPRESSWATCHERPRIVATE_H
-#define TSLONGPRESSWATCHERPRIVATE_H
-
-#include <e32base.h>
-#include <e32property.h>
-
-class TsLongPressWatcher;
-
-class TsLongPressWatcherPrivate : public CActive
-{
-public:
- TsLongPressWatcherPrivate(TsLongPressWatcher *parent);
- virtual ~TsLongPressWatcherPrivate();
-
-public: //From CActive
- /**
- * Implements cancellation of an outstanding request.
- */
- virtual void DoCancel();
-
- /**
- Handles an active object's request completion event.
- */
- void RunL();
-
-private:
- bool checkLongPressFlag();
- void setBackgroundState();
-
-private:
- TsLongPressWatcher *mParent;
- RProperty mProperty;
-
-};
-
-#endif // TSLONGPRESSWATCHERPRIVATE_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsactivation.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSACTIVATION_H
-#define TSACTIVATION_H
-
-#include "tsactivationinterface.h"
-
-class TsActivation : public TsActivationInterface
-{
-
- Q_OBJECT
-
-public:
- TsActivation(QObject *parent = 0);
-
-};
-
-#endif // TSACTIVATION_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsactivationinterface.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSACTIVATIONINTERFACE_H
-#define TSACTIVATIONINTERFACE_H
-
-#include <QObject>
-
-class TsActivationInterface : public QObject
-{
-
- Q_OBJECT
-
-public:
- TsActivationInterface(QObject *parent = 0) : QObject(parent) {}
- virtual ~TsActivationInterface() {};
-
-signals:
- void activated();
-
-};
-
-#endif // TSACTIVATIONINTERFACE_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsclosedapplicationsfiltermodel.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#ifndef TSCLOSEDAPPLICATIONSFILTERMODEL_H
-#define TSCLOSEDAPPLICATIONSFILTERMODEL_H
-
-#include <QSortFilterProxyModel>
-
-class TsClosedApplicationsFilterModel : public QSortFilterProxyModel
-{
- Q_OBJECT
-
-public:
- explicit TsClosedApplicationsFilterModel(QObject *parent = 0);
-
-public:
- void addId(int id);
- void clearIds();
-
-protected:
- bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
-
-private:
- /*
- * List containing result
- */
- QList<int> mClosedIds;
-};
-
-#endif // TSCLOSEDAPPLICATIONSFILTERMODEL_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsdataroles.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSDATAROLES_H
-#define TSDATAROLES_H
-
-namespace TsDataRoles {
- enum EntryAttributes {
- Closable = Qt::UserRole + 1,
- EntryId
- };
-}
-
-#endif // TSDATAROLES_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsdeactivation.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSDEACTIVATION_H
-#define TSDEACTIVATION_H
-
-#include "tsdeactivationinterface.h"
-
-class QEvent;
-
-class TsDeactivation : public TsDeactivationInterface
-{
- Q_OBJECT
-
-public:
- TsDeactivation(QObject *parent = 0);
-
-protected:
- bool eventFilter(QObject *obj, QEvent *event);
-
-};
-
-#endif // TSDEACTIVATION_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsdeactivationinterface.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSDEACTIVATIONINTERFACE_H
-#define TSDEACTIVATIONINTERFACE_H
-
-#include <QObject>
-
-class TsDeactivationInterface : public QObject
-{
-
- Q_OBJECT
-
-public:
- TsDeactivationInterface(QObject *parent = 0) : QObject(parent) {}
- virtual ~TsDeactivationInterface() {};
-
-signals:
- void deactivated();
-
-};
-
-#endif // TSDEACTIVATIONINTERFACE_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsdocumentloader.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Screensaver custom document loader.
-*
-*/
-
-#ifndef TSDOCUMENTLOADER_H
-#define TSDOCUMENTLOADER_H
-
-#include <hbdocumentloader.h>
-
-class TsDocumentLoader : public HbDocumentLoader
-{
-
-private:
- virtual QObject *createObject(const QString &type, const QString &name);
-
-};
-
-#endif // TSDOCUMENTLOADER_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsexternalactivationwatcher.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSEXTERNALACTIVATIONWATCHER_H
-#define TSEXTERNALACTIVATIONWATCHER_H
-
-#include <QObject>
-
-class TsExternalActivationWatcherPrivate;
-
-class TsExternalActivationWatcher : public QObject
-{
- Q_OBJECT
-
-public:
- TsExternalActivationWatcher(QObject *parent = 0);
- virtual ~TsExternalActivationWatcher();
-
-signals:
- void activationRequested();
-
-private:
- TsExternalActivationWatcherPrivate *d_ptr;
- friend class TsExternalActivationWatcherPrivate;
-
-};
-
-#endif // TSEXTERNALACTIVATIONWATCHER_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsitemprovider.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSITEMPROVIDER_H
-#define TSITEMPROVIDER_H
-
-#include "tsitemproviderinterface.h"
-
-#include <QSharedPointer>
-
-class TsClosedApplicationsFilterModel;
-class CaService;
-
-class TsItemProvider : public TsItemProviderInterface
-{
-
- Q_OBJECT
-
-public:
- TsItemProvider(QObject *parent = 0);
- virtual ~TsItemProvider();
-
-public:
- virtual QAbstractItemModel *model();
-
-public slots:
- virtual void openApplication(const QModelIndex &index);
- virtual void closeApplication(const QModelIndex &index);
- virtual void closeAllApplications();
- virtual void clearClosedApplicationList();
-
-private:
- TsClosedApplicationsFilterModel *mModel;
- QSharedPointer<CaService> mService;
-
-};
-
-#endif // TSITEMPROVIDER_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsitemproviderinterface.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSITEMPROVIDERINTERFACE_H
-#define TSITEMPROVIDERINTERFACE_H
-
-#include <QObject>
-
-class QAbstractItemModel;
-class QModelIndex;
-
-class TsItemProviderInterface : public QObject
-{
-
- Q_OBJECT
-
-public:
- TsItemProviderInterface(QObject *parent = 0) : QObject(parent) {}
- virtual ~TsItemProviderInterface() {};
-
-public:
- Q_INVOKABLE virtual QAbstractItemModel *model() = 0;
-
-public slots:
- virtual void openApplication(const QModelIndex &index) = 0;
- virtual void closeApplication(const QModelIndex &index) = 0;
- virtual void closeAllApplications() = 0;
- virtual void clearClosedApplicationList() = 0;
-
-};
-
-#endif // TSITEMPROVIDERINTERFACE_H
--- a/taskswitcherapp/tsserviceplugin/inc/tslongpresswatcher.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSLONGPRESSWATCHER_H
-#define TSLONGPRESSWATCHER_H
-
-#include <QObject>
-
-class TsLongPressWatcherPrivate;
-
-class TsLongPressWatcher : public QObject
-{
-
- Q_OBJECT
-
-public:
- TsLongPressWatcher(QObject *parent = 0);
- ~TsLongPressWatcher();
-
-signals:
- void applicationKeyLongPress();
-
-private:
- TsLongPressWatcherPrivate *d_ptr;
-
- friend class TsLongPressWatcherPrivate;
-
-};
-
-#endif // TSLONGPRESSWATCHER_H
--- a/taskswitcherapp/tsserviceplugin/inc/tspresentation.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSPRESENTATION_H
-#define TSPRESENTATION_H
-
-#include "tspresentationinterface.h"
-#include "tsdocumentloader.h"
-
-class HbDialog;
-class TsTasksGrid;
-
-class TsPresentation : public TsPresentationInterface
-{
- Q_OBJECT
-
-public:
- TsPresentation(QObject *parent = 0);
-
-public:
- virtual void setModel(QAbstractItemModel *model);
-
-public slots:
- virtual void hide();
- virtual void show();
-
-private slots:
- void loadOrientationSpecificLayoutData(Qt::Orientation orientation);
-
-private:
- TsDocumentLoader mLoader;
- HbDialog *mDialog;
- TsTasksGrid *mGrid;
-
-};
-
-#endif // TSPRESENTATION_H
--- a/taskswitcherapp/tsserviceplugin/inc/tspresentationinterface.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSPRESENTATIONINTERFACE_H
-#define TSPRESENTATIONINTERFACE_H
-
-#include <QObject>
-
-class QAbstractItemModel;
-class QModelIndex;
-
-class TsPresentationInterface : public QObject
-{
- Q_OBJECT
-
-public:
- TsPresentationInterface(QObject *parent = 0) : QObject(parent) {}
- virtual ~TsPresentationInterface() {};
-
-public:
- Q_INVOKABLE virtual void setModel(QAbstractItemModel *model) = 0;
-
-public slots:
- virtual void hide() = 0;
- virtual void show() = 0;
-
-signals:
- void openApplication(const QModelIndex &index);
- void closeApplication(const QModelIndex &index);
- void closeAllApplications();
- void hideTaskSwitcher();
-
-};
-
-#endif // TSPRESENTATIONINTERFACE_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsrecentapplicationsmodel.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: recentapplicationsmodel.h
-*
-*/
-
-#ifndef TSRECENTAPPLICATIONSMODEL_H
-#define TSRECENTAPPLICATIONSMODEL_H
-
-#include <QAbstractItemModel>
-#include <QList>
-#include <QSize>
-#include <QSharedPointer>
-#include <caquery.h>
-#include <caentry.h>
-
-class CaService;
-class CaNotifier;
-
-class TsRecentApplicationsModel : public QAbstractListModel
-{
- Q_OBJECT
-
-public:
- explicit TsRecentApplicationsModel(QObject *parent = 0);
- ~TsRecentApplicationsModel();
-
- int rowCount(const QModelIndex &parent = QModelIndex()) const;
- virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
-
-public slots:
- void updateModel();
- void entryChanged(CaEntry, ChangeType);
-
-private:
- bool closeable(const QModelIndex &index) const;
- QVariant entryId(const QModelIndex &index) const;
- CaEntry *entry(const QModelIndex &index) const;
-
-public:
- /*
- * List containing result
- */
- QList<CaEntry *> mEntries;
-
- /*
- * Query
- */
- CaQuery mQuery;
-
- /*
- * Content Arsenal Service
- */
- QSharedPointer<CaService> mService;
-
- /*
- * Content Arsenal Notifier
- */
- CaNotifier *mNotifier;
-
- /*
- * Icon size in model
- */
- QSize mSize;
-};
-
-#endif // TSRECENTAPPLICATIONSMODEL_H
--- a/taskswitcherapp/tsserviceplugin/inc/tsserviceplugin.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSSERVICEPLUGIN_H
-#define TSSERVICEPLUGIN_H
-
-#include <QObject>
-#include <qserviceplugininterface.h>
-
-QTM_USE_NAMESPACE
-
-class TsServicePlugin : public QObject, public QServicePluginInterface
-{
- Q_OBJECT
- Q_INTERFACES(QtMobility::QServicePluginInterface)
-
-public:
- QObject *createInstance(const QServiceInterfaceDescriptor &descriptor, QServiceContext *context, QAbstractSecuritySession *session);
-
-};
-
-#endif //TSSERVICEPLUGIN_H
--- a/taskswitcherapp/tsserviceplugin/inc/tstaskpopuphandler.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSTASKPOPUPHANDLER_H
-#define TSTASKPOPUPHANDLER_H
-
-#include <QObject>
-#include <QPointF>
-#include <QAbstractItemModel>
-
-class HbAbstractViewItem;
-class T_TsTaskPopupHandler;
-
-class TsTaskPopupHandler : public QObject
-{
- Q_OBJECT
-
-public:
- explicit TsTaskPopupHandler(QObject *parent = 0);
-
-signals:
- void closeTask(const QModelIndex &index);
- void closeAllTasks();
-
-public slots:
- void showTaskPopup(HbAbstractViewItem *item, const QPointF &coords);
-
-private:
- bool isClosable(const QModelIndex &index) const;
- bool containsClosableItems(const QAbstractItemModel &model) const;
-
- friend class T_TsTaskPopupHandler;
-
-};
-
-#endif // TSTASKPOPUPHANDLER_H
--- a/taskswitcherapp/tsserviceplugin/inc/tstasksgrid.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSTASKSGRID_H
-#define TSTASKSGRID_H
-
-#include <hbgridview.h>
-
-class TsTasksGrid : public HbGridView
-{
-
- Q_OBJECT
-
-signals:
- void deleteButtonClicked(const QModelIndex &index);
-
-};
-
-#endif // TSTASKSGRID_H
--- a/taskswitcherapp/tsserviceplugin/inc/tstasksgriditem.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSTASKSGRIDITEM_H
-#define TSTASKSGRIDITEM_H
-
-#include <hbabstractviewitem.h>
-
-class HbLabel;
-class HbPushButton;
-
-class TsTasksGridItem : public HbAbstractViewItem
-{
- Q_OBJECT
-
-public:
- TsTasksGridItem();
- TsTasksGridItem(const TsTasksGridItem& item);
- ~TsTasksGridItem();
-
- HbAbstractViewItem *createItem();
- void updateChildItems();
-
-private slots:
- void handleDeleteClicked();
-
-signals:
- void deleteClicked(const QModelIndex &index);
-
-private:
- HbLabel *mScreenshotLabel;
- HbLabel *mApplicationNameLabel;
- HbPushButton *mDeleteButton;
-
-};
-
-#endif //TSTASKSGRIDITEM_H
--- a/taskswitcherapp/tsserviceplugin/inc/win/tsexternalactivationwatcher_p.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSEXTERNALACTIVATIONWATCHERPRIVATE_H
-#define TSEXTERNALACTIVATIONWATCHERPRIVATE_H
-
-#include <QObject>
-#include <qmobilityglobal.h>
-
-QTM_BEGIN_NAMESPACE
- class QValueSpacePublisher;
- class QValueSpaceSubscriber;
-QTM_END_NAMESPACE
-
-QTM_USE_NAMESPACE
-
-class TsExternalActivationWatcherPrivate : public QObject
-{
- Q_OBJECT
-
-public:
- TsExternalActivationWatcherPrivate(QObject *parent);
-
-private slots:
- void checkActivationFlag();
-
-signals:
- void activationRequested();
-
-private:
- QValueSpacePublisher *mPublisher;
- QValueSpaceSubscriber *mSubscriber;
-
-};
-
-#endif // TSEXTERNALACTIVATIONWATCHERPRIVATE_H
--- a/taskswitcherapp/tsserviceplugin/inc/win/tslongpresswatcher_p.h Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef TSLONGPRESSWATCHERPRIVATE_H
-#define TSLONGPRESSWATCHERPRIVATE_H
-
-#include <QObject>
-
-class TsLongPressWatcher;
-
-class TsLongPressWatcherPrivate : public QObject
-{
-
- Q_OBJECT
-
-public:
- TsLongPressWatcherPrivate(TsLongPressWatcher *parent);
- virtual ~TsLongPressWatcherPrivate();
-
- static bool hotKeyFilter(void *message);
- static TsLongPressWatcherPrivate *instance;
-
-signals:
- void applicationKeyLongPress();
-
-};
-
-#endif // TSLONGPRESSWATCHERPRIVATE_H
Binary file taskswitcherapp/tsserviceplugin/resource/delete.png has changed
--- a/taskswitcherapp/tsserviceplugin/resource/tsexternalactivation.qcrml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<repository target="RProperty" uidValue="0x2002677D">
- <key int="0x1" ref="/TaskSwitcher/Activation"/>
-</repository>
--- a/taskswitcherapp/tsserviceplugin/serviceinstaller/serviceinstaller.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = subdirs
-SUBDIRS = tsserviceinstaller
-
-symbian {
- load(data_caging_paths)
-
- plugin.sources = tsserviceplugin.dll
- plugin.path = $$QT_PLUGINS_BASE_DIR
-
- installer.pkg_postrules += "\"$${EPOCROOT}epoc32/release/$(PLATFORM)/$(TARGET)/tsserviceinstaller.exe\" \
- - \"!:\sys\bin\tsserviceinstaller.exe\",FR,RI,RW"
-
- DEPLOYMENT += plugin installer
-} else {
- message("You might need to run tsserviceinstaller.exe before running any application that uses task switcher service")
-}
--- a/taskswitcherapp/tsserviceplugin/serviceinstaller/tsserviceinstaller/tsserviceinstaller.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include <qservicemanager.h>
-#include <QCoreApplication>
-
-QTM_USE_NAMESPACE
-
-int main(int argc, char *argv[])
-{
- QCoreApplication app(argc, argv);
-
- QServiceManager manager;
- bool success = manager.addService(":/tsserviceplugin.xml");
- if (!success) {
- qDebug("Service adding failed: %d", manager.error());
- }
-}
--- a/taskswitcherapp/tsserviceplugin/serviceinstaller/tsserviceinstaller/tsserviceinstaller.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = app
-
-QT = core
-#TODO - temporarily disabled, until the installer issues on HW are resolved
-#CONFIG += no_icon
-
-CONFIG += console
-CONFIG += mobility
-MOBILITY = serviceframework
-
-SOURCES += tsserviceinstaller.cpp
-
-RESOURCES += tsserviceinstaller.qrc
-
-symbian {
- TARGET.CAPABILITY = ALL -TCB
-}
--- a/taskswitcherapp/tsserviceplugin/serviceinstaller/tsserviceinstaller/tsserviceinstaller.qrc Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<RCC>
- <qresource prefix="/" >
- <file alias="tsserviceplugin.xml">../../tsserviceplugin.xml</file>
- </qresource>
-</RCC>
--- a/taskswitcherapp/tsserviceplugin/src/s60/tsexternalactivationwatcher_p.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include "tsexternalactivationwatcher_p.h"
-#include "tsexternalactivationwatcher.h"
-
-const TUid KTaskswitcherCategory = { 0x2002677D };
-const TUint KExternalActivationKey = 0x1;
-const TInt KTaskswitcherActivateFlag = 1;
-
-/*!
- \class TsExternalActivationWatcherPrivate
- \ingroup group_tsserviceplugin
- \brief Private implementation of external activation watcher.
-*/
-
-TsExternalActivationWatcherPrivate::TsExternalActivationWatcherPrivate(TsExternalActivationWatcher *parent) : CActive(CActive::EPriorityStandard), mParent(parent)
-{
- CActiveScheduler::Add(this);
-
- TInt err = RProperty::Define(KTaskswitcherCategory, KExternalActivationKey, RProperty::EInt);
- if (err == KErrNone || err == KErrAlreadyExists) {
- err = mProperty.Attach(KTaskswitcherCategory, KExternalActivationKey);
- }
-
- Q_ASSERT_X(err == KErrNone, "TsExternalActivationWatcherPrivate", qPrintable(QString("Cannot define/attach to activation watcher property %1").arg(err)));
-
- mProperty.Subscribe(iStatus);
- SetActive();
-}
-
-TsExternalActivationWatcherPrivate::~TsExternalActivationWatcherPrivate()
-{
- Cancel();
- mProperty.Close();
-}
-
-void TsExternalActivationWatcherPrivate::ResetActivationFlag()
-{
- TInt value(0);
- mProperty.Set(value);
-}
-
-void TsExternalActivationWatcherPrivate::DoCancel()
-{
- mProperty.Cancel();
-}
-
-void TsExternalActivationWatcherPrivate::RunL()
-{
- if (iStatus.Int() != KErrCancel) {
-
- if (CheckActivationFlag()) {
- ResetActivationFlag();
- QT_TRYCATCH_LEAVING(emit mParent->activationRequested());
- }
- mProperty.Subscribe(iStatus);
- SetActive();
- }
-}
-
-bool TsExternalActivationWatcherPrivate::CheckActivationFlag()
-{
- TInt value(0);
- TInt result = mProperty.Get(value);
- return (result == KErrNone && value & KTaskswitcherActivateFlag);
-}
--- a/taskswitcherapp/tsserviceplugin/src/s60/tslongpresswatcher_p.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include "tslongpresswatcher_p.h"
-#include "tslongpresswatcher.h"
-
-// AknCapServer UID, used for P&S category
-const TUid KTaskswitcherStateCategory = { 0x10207218 };
-// Taskswitcher UI, used as P&S key
-const TUint KTaskswitcherStateKey = 0x2002677D;
-// Values for Taskswitcher launching P&S
-const TInt KTaskswitcherBackgroundValue = 1;
-const TInt KTaskswitcherForegroundValue = KTaskswitcherBackgroundValue << 1;
-const TInt KTaskswitcherLongAppKeyPressed = KTaskswitcherForegroundValue << 1;
-
-/*!
- \class TsLongPressWatcherPrivate
- \ingroup group_tsserviceplugin
- \brief Private implementation of long press app key watcher.
-*/
-
-TsLongPressWatcherPrivate::TsLongPressWatcherPrivate(TsLongPressWatcher *parent) : CActive(CActive::EPriorityStandard), mParent(parent)
-{
- CActiveScheduler::Add(this);
- TInt err = mProperty.Attach(KTaskswitcherStateCategory, KTaskswitcherStateKey);
- if (err == KErrNone) {
- mProperty.Subscribe(iStatus);
- SetActive();
- }
-}
-
-TsLongPressWatcherPrivate::~TsLongPressWatcherPrivate()
-{
- Cancel();
- mProperty.Close();
-}
-
-void TsLongPressWatcherPrivate::setBackgroundState()
-{
- TInt value(0);
- mProperty.Get(value);
- value &= ~KTaskswitcherForegroundValue;
- value &= ~KTaskswitcherLongAppKeyPressed;
- value |= KTaskswitcherBackgroundValue;
- mProperty.Set(value);
-}
-
-void TsLongPressWatcherPrivate::DoCancel()
-{
- mProperty.Cancel();
-}
-
-void TsLongPressWatcherPrivate::RunL()
-{
- if (iStatus.Int() != KErrCancel) {
- if (checkLongPressFlag()) {
- setBackgroundState();
- QT_TRYCATCH_LEAVING(emit mParent->applicationKeyLongPress());
- }
- mProperty.Subscribe(iStatus);
- SetActive();
- }
-}
-
-bool TsLongPressWatcherPrivate::checkLongPressFlag()
-{
- TInt value(0);
- bool res = false;
- mProperty.Get(KTaskswitcherStateCategory, KTaskswitcherStateKey, value);
- if (value & KTaskswitcherLongAppKeyPressed) {
- res = true;
- }
- return res;
-}
--- a/taskswitcherapp/tsserviceplugin/src/tsactivation.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "tsactivation.h"
-
-#include "tslongpresswatcher.h"
-#include "tsexternalactivationwatcher.h"
-
-/*!
- \class TsActivation
- \ingroup group_tsserviceplugin
- \brief Activation service.
-
- Service responsible for observing all events that might show TS. When any of them
- occurs it is emiting activation signal.
-*/
-TsActivation::TsActivation(QObject *parent) : TsActivationInterface(parent)
-{
- TsLongPressWatcher *longPressWatcher = new TsLongPressWatcher(this);
- connect(longPressWatcher, SIGNAL(applicationKeyLongPress()), this, SIGNAL(activated()));
-
- TsExternalActivationWatcher *externalActivationWatcher = new TsExternalActivationWatcher(this);
- connect(externalActivationWatcher, SIGNAL(activationRequested()), this, SIGNAL(activated()));
-}
--- a/taskswitcherapp/tsserviceplugin/src/tsclosedapplicationsfiltermodel.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include "tsclosedapplicationsfiltermodel.h"
-#include "tsdataroles.h"
-
-
-/*!
- \class TsClosedApplicationsFilterModel
- \ingroup group_tsserviceplugin
- \brief Filtering model to hide closed apps.
-
- When app is closed from Task Switcher it is hidden from it and will be presented when TS is started once more.
-*/
-
-/*!
- Constructor
- \param pointer to parent object
-*/
-TsClosedApplicationsFilterModel::TsClosedApplicationsFilterModel(QObject *parent) : QSortFilterProxyModel(parent)
-{
-}
-
-/*!
- Add id that should be filtered
- \param id that should be added to list
-*/
-void TsClosedApplicationsFilterModel::addId(int id)
-{
- mClosedIds.append(id);
- invalidateFilter();
-}
-
-/*!
- Clear filtered ids list
-*/
-void TsClosedApplicationsFilterModel::clearIds()
-{
- mClosedIds.clear();
- invalidateFilter();
-}
-
-/*!
- Function to compare items
- \param sourceRow row to check
- \param sourceParent parent of source index
- \return true if row is accepted
-*/
-bool TsClosedApplicationsFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
-{
- Q_UNUSED(sourceParent);
- bool res = true;
- if (mClosedIds.contains(sourceModel()->data(sourceModel()->index(sourceRow,0), TsDataRoles::EntryId).toInt())) {
- res = false;
- }
- return res;
-}
--- a/taskswitcherapp/tsserviceplugin/src/tsdeactivation.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "tsdeactivation.h"
-
-#include <QCoreApplication>
-#include <QEvent>
-
-/*!
- \class TsDeactivation
- \ingroup group_tsserviceplugin
- \brief Deactivation service.
-
- Service responsible for observation of all events that might hide TS. When any of
- them occurs it is emiting signal.
-*/
-TsDeactivation::TsDeactivation(QObject *parent) : TsDeactivationInterface(parent)
-{
- qApp->installEventFilter(this);
-}
-
-bool TsDeactivation::eventFilter(QObject *obj, QEvent *event)
-{
- if (event->type() == QEvent::ApplicationDeactivate) {
- emit deactivated();
- }
- return TsDeactivationInterface::eventFilter(obj, event);
-}
--- a/taskswitcherapp/tsserviceplugin/src/tsdocumentloader.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Screensaver custom document loader.
-*
-*/
-
-#include "tsdocumentloader.h"
-#include "tstasksgrid.h"
-#include "tstasksgriditem.h"
-
-/*!
- \class TsDocumentLoader
- \ingroup group_tsserviceplugin
- \brief Document loader.
-
- TS implementation of document loader. It is creating TS objects used in UI
-*/
-
-QObject *TsDocumentLoader::createObject(const QString &type, const QString &name)
-{
- if (type == TsTasksGrid::staticMetaObject.className()) {
- QObject *object = new TsTasksGrid();
- object->setObjectName(name);
- return object;
- } else if (type == TsTasksGridItem::staticMetaObject.className()) {
- QObject *object = new TsTasksGridItem();
- object->setObjectName(name);
- return object;
- }
-
- return HbDocumentLoader::createObject(type, name);
-}
--- a/taskswitcherapp/tsserviceplugin/src/tsexternalactivationwatcher.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "tsexternalactivationwatcher.h"
-#include "tsexternalactivationwatcher_p.h"
-
-TsExternalActivationWatcher::TsExternalActivationWatcher(QObject *parent) : QObject(parent)
-{
- d_ptr = new TsExternalActivationWatcherPrivate(this);
-}
-
-TsExternalActivationWatcher::~TsExternalActivationWatcher()
-{
- delete d_ptr;
-}
--- a/taskswitcherapp/tsserviceplugin/src/tsitemprovider.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "tsitemprovider.h"
-
-#include <QModelIndex>
-#include <QAbstractItemModel>
-
-#include <caservice.h>
-
-#include "tsrecentapplicationsmodel.h"
-#include "tsclosedapplicationsfiltermodel.h"
-#include "tsdataroles.h"
-
-/*!
- \class TsItemProvider
- \ingroup group_tsserviceplugin
- \brief Returns items that should be presented in TS.
-
- Service providing information about items that should be presented in TS. It also allows to
- start some action on it (open/close).
-*/
-
-TsItemProvider::TsItemProvider(QObject *parent) : TsItemProviderInterface(parent), mService(CaService::instance())
-{
- TsRecentApplicationsModel *recentAppModel = new TsRecentApplicationsModel(this);
- mModel = new TsClosedApplicationsFilterModel(this);
- mModel->setSourceModel(recentAppModel);
-}
-
-TsItemProvider::~TsItemProvider()
-{
-}
-
-QAbstractItemModel *TsItemProvider::model()
-{
- return mModel;
-}
-
-void TsItemProvider::openApplication(const QModelIndex &index)
-{
- QVariant entryId = index.data(TsDataRoles::EntryId);
- if (entryId.isValid()) {
- mService->executeCommand(entryId.toInt(), QString("open"));
- }
-}
-
-void TsItemProvider::closeApplication(const QModelIndex &index)
-{
- if (index.data(TsDataRoles::Closable).toBool()) {
- QVariant entryId = index.data(TsDataRoles::EntryId);
- if (entryId.isValid()) {
- mModel->addId(entryId.toInt());
- mService->executeCommand(entryId.toInt(), QString("close"));
- }
- }
-}
-
-void TsItemProvider::closeAllApplications()
-{
- QList<int> closableList;
- for (int row(0); row < mModel->rowCount(); ++row) {
- if (mModel->index(row, 0).data(TsDataRoles::Closable).toBool()) {
- QVariant entryId = mModel->index(row, 0).data(TsDataRoles::EntryId);
- if (entryId.isValid()) {
- closableList.append(entryId.toInt());
- }
- }
- }
- foreach (int entryId, closableList) {
- mModel->addId(entryId);
- mService->executeCommand(entryId, QString("close"));
- }
-}
-
-void TsItemProvider::clearClosedApplicationList()
-{
- mModel->clearIds();
-}
--- a/taskswitcherapp/tsserviceplugin/src/tslongpresswatcher.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "tslongpresswatcher.h"
-#include "tslongpresswatcher_p.h"
-
-/*!
- \class TsLongPressWatcher
- \ingroup group_tsserviceplugin
- \brief Class watching app key events.
-*/
-TsLongPressWatcher::TsLongPressWatcher(QObject *parent) : QObject(parent)
-{
- d_ptr = new TsLongPressWatcherPrivate(this);
-}
-
-TsLongPressWatcher::~TsLongPressWatcher()
-{
- delete d_ptr;
-}
--- a/taskswitcherapp/tsserviceplugin/src/tspresentation.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include "tspresentation.h"
-
-#include <hbinstance.h>
-#include <hbview.h>
-#include <hbdialog.h>
-
-#include "tstasksgrid.h"
-#include "tstasksgriditem.h"
-#include "tstaskpopuphandler.h"
-
-// FIXME: workaround for Orbit bug: not moving to foreground after QWidget::activateWindow();
-#ifdef Q_OS_SYMBIAN
-#include <apgtask.h>
-#include <eikenv.h>
-#endif
-
-/*!
- \class TsPresentation
- \ingroup group_tsserviceplugin
- \brief Class providing UI for presenting TS data.
-*/
-TsPresentation::TsPresentation(QObject *parent) : TsPresentationInterface(parent), mDialog(NULL), mGrid(NULL)
-{
- HbMainWindow *mainWindow = HbInstance::instance()->allMainWindows().first();
-
- // load layout from XML
- bool ok(true);
- mLoader.load(":/xml/resource/layout.docml", &ok);
- Q_ASSERT(ok);
- loadOrientationSpecificLayoutData(mainWindow->orientation());
-
- // get all items
- HbView *view = qobject_cast<HbView*>(mLoader.findWidget("view"));
- mGrid = qobject_cast<TsTasksGrid*>(mLoader.findWidget("taskgrid"));
- mDialog = qobject_cast<HbDialog*>(mLoader.findWidget("dialog"));
- Q_ASSERT(view);
- Q_ASSERT(mGrid);
- Q_ASSERT(mDialog);
-
- mGrid->setItemPrototype(new TsTasksGridItem());
-
- // forward grid signals
- connect(mGrid, SIGNAL(activated(QModelIndex)), this, SIGNAL(openApplication(QModelIndex)));
- connect(mGrid, SIGNAL(activated(QModelIndex)), this, SIGNAL(hideTaskSwitcher()));
- qRegisterMetaType<QModelIndex>("QModelIndex");
- connect(mGrid, SIGNAL(deleteButtonClicked(QModelIndex)), this, SIGNAL(closeApplication(QModelIndex)), Qt::QueuedConnection);
-
- // task popup
- TsTaskPopupHandler *popupHandler = new TsTaskPopupHandler(this);
- connect(mGrid, SIGNAL(longPressed(HbAbstractViewItem*, QPointF)), popupHandler, SLOT(showTaskPopup(HbAbstractViewItem*, QPointF)));
- connect(popupHandler, SIGNAL(closeTask(QModelIndex)), this, SIGNAL(closeApplication(QModelIndex)),Qt::QueuedConnection);
- connect(popupHandler, SIGNAL(closeAllTasks()), this, SIGNAL(closeAllApplications()));
-
- // dismiss
- connect(mDialog, SIGNAL(aboutToHide()), this, SIGNAL(hideTaskSwitcher()));
-
- // orientation change handling
- connect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(loadOrientationSpecificLayoutData(Qt::Orientation)));
-
- mainWindow->addView(view);
-}
-
-void TsPresentation::setModel(QAbstractItemModel *model)
-{
- mGrid->setModel(model);
-}
-
-void TsPresentation::hide()
-{
- mDialog->hide();
- HbInstance::instance()->allMainWindows().first()->hide();
-}
-
-void TsPresentation::show()
-{
- HbMainWindow *window = HbInstance::instance()->allMainWindows().first();
- window->show();
- window->activateWindow();
-
-#ifdef Q_OS_SYMBIAN
- // FIXME: workaround for Orbit bug: not moving to foreground after QWidget::activateWindow();
- TApaTaskList taskList(CEikonEnv::Static()->WsSession());
- TApaTask task = taskList.FindApp(RProcess().Type()[2]);
- Q_ASSERT_X(task.Exists(), "Bringing task switcher to foreground", "Application couldn't find task with its own UID");
- task.BringToForeground();
-#endif
-
- mDialog->show();
-}
-
-void TsPresentation::loadOrientationSpecificLayoutData(Qt::Orientation orientation)
-{
- bool ok(true);
- if (orientation == Qt::Horizontal) {
- mLoader.load(":/xml/resource/layout.docml", "landscape", &ok);
- } else {
- mLoader.load(":/xml/resource/layout.docml", "portrait", &ok);
- }
- Q_ASSERT(ok);
-}
--- a/taskswitcherapp/tsserviceplugin/src/tsrecentapplicationsmodel.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: recentapplicationsmodel.cpp
-*
-*/
-#include "tsrecentapplicationsmodel.h"
-
-#include <HbIcon>
-#include <cadefs.h>
-#include <caservice.h>
-#include <canotifier.h>
-#include <canotifierfilter.h>
-
-#include "tsdataroles.h"
-
-/*!
- \class TsRecentApplicationsModel
- \ingroup group_tsserviceplugin
- \brief Model storing recent application.
-*/
-
-/*!
- Constructor
- \param query used to create model
- \param pointer to parent object
-*/
-TsRecentApplicationsModel::TsRecentApplicationsModel(QObject *parent) :
- QAbstractListModel(parent),
- mEntries(),
- mService(CaService::instance()),
- mNotifier(NULL),
- mSize(240, 240)
-{
- // creating query
- mQuery.setEntryRoles(ItemEntryRole);
- mQuery.addEntryTypeName(QString("application"));
- mQuery.setFlagsOn(VisibleEntryFlag);
- mQuery.setFlagsOff(MissingEntryFlag);
- mQuery.setFlagsOn(UsedEntryFlag);
- mQuery.setSort(LastUsedSortAttribute, Qt::DescendingOrder);
- // requesting new data
- updateModel();
- // creating notyfication filter
- CaNotifierFilter filter(mQuery);
- mNotifier = mService->createNotifier(filter);
- connect(mNotifier, SIGNAL(entryChanged(CaEntry,ChangeType)), this, SLOT(entryChanged(CaEntry, ChangeType)));
- connect(mNotifier, SIGNAL(entryTouched(int)), this, SLOT(updateModel()));
- if (mQuery.parentId() > 0) {
- connect(mNotifier, SIGNAL(groupContentChanged(int)), this, SLOT(updateModel()));
- }
-}
-
-/*!
- Destructor
-*/
-TsRecentApplicationsModel::~TsRecentApplicationsModel()
-{
- qDeleteAll(mEntries);
- delete mNotifier;
-}
-
-/*!
- Returns count of rows in model
- \retval number of rows
-*/
-int TsRecentApplicationsModel::rowCount(
- const QModelIndex &parent) const
-{
- Q_UNUSED(parent);
- return mEntries.count();
-}
-
-/*!
- Returns appropiate model's data
- \param index model index
- \param role which data role to return
- \retval models data
-*/
-QVariant TsRecentApplicationsModel::data(const QModelIndex &index,
- int role) const
-{
- if (!index.isValid()) {
- return QVariant();
- }
-
- switch (role) {
- case Qt::DisplayRole:
- return QVariant(entry(index)->text());
- case Qt::DecorationRole:
- return QVariant(entry(index)->makeIcon(mSize));
- case TsDataRoles::Closable:
- return QVariant(closeable(index));
- case TsDataRoles::EntryId:
- return entryId(index);
- default:
- return QVariant(QVariant::Invalid);
- }
-}
-
-/*!
- Updates model with fresh entries
-*/
-void TsRecentApplicationsModel::updateModel()
-{
- qDeleteAll(mEntries);
- mEntries.clear();
- mEntries = mService->getEntries(mQuery);
- reset();
-}
-
-/*!
- Called when some entry was changed
- \param updatedEntry entry that was changed
- \param change change type
-*/
-void TsRecentApplicationsModel::entryChanged(CaEntry updatedEntry,
- ChangeType change)
-{
- Q_UNUSED(updatedEntry);
- Q_UNUSED(change)
- updateModel();
-}
-
-/*!
- Returns an entry from model
- \param index of entry in model
- \retval pointer to an entry
-*/
-CaEntry *TsRecentApplicationsModel::entry(const QModelIndex &index) const
-{
- return mEntries.at(index.row());
-}
-
-/*!
- Allows to check if item is closable
- \param index item index to be checked
- \retval true if item is closable
-*/
-bool TsRecentApplicationsModel::closeable(const QModelIndex &index) const
-{
- CaEntry *caEntry = entry(index);
- return (caEntry && caEntry->flags().testFlag(RunningEntryFlag) &&
- !caEntry->flags().testFlag(SystemEntryFlag));
-}
-
-/*!
- Allows to check entry id
- \param index item index to be checked
- \param entry id
-*/
-QVariant TsRecentApplicationsModel::entryId(const QModelIndex &index) const
-{
- QVariant res;
- CaEntry *caEntry = entry(index);
- if (caEntry) {
- res = QVariant(caEntry->id());
- }
- return res;
-}
--- a/taskswitcherapp/tsserviceplugin/src/tsserviceplugin.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "tsserviceplugin.h"
-
-#include <qserviceinterfacedescriptor.h>
-#include <qabstractsecuritysession.h>
-#include <qservicecontext.h>
-
-#include "tsitemprovider.h"
-#include "tsactivation.h"
-#include "tsdeactivation.h"
-#include "tspresentation.h"
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-
-/*!
- \class TsServicePlugin
- \ingroup group_tsserviceplugin
- \brief Plugin implementation.
-*/
-
-QObject *TsServicePlugin::createInstance(const QServiceInterfaceDescriptor &descriptor, QServiceContext *context, QAbstractSecuritySession *session)
-{
- Q_UNUSED(context);
- Q_UNUSED(session);
-
- if (descriptor.interfaceName() == "com.nokia.taskswitcher.itemprovider") {
- return new TsItemProvider(this);
- } else if (descriptor.interfaceName() == "com.nokia.taskswitcher.activation") {
- return new TsActivation(this);
- } else if (descriptor.interfaceName() == "com.nokia.taskswitcher.deactivation") {
- return new TsDeactivation(this);
- } else if (descriptor.interfaceName() == "com.nokia.taskswitcher.presentation") {
- return new TsPresentation(this);
- } else {
- return NULL;
- }
-}
-
-Q_EXPORT_PLUGIN2(tsserviceplugin, TsServicePlugin)
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
--- a/taskswitcherapp/tsserviceplugin/src/tstaskpopuphandler.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include "tstaskpopuphandler.h"
-
-#include <hbmenu.h>
-#include <hbabstractviewitem.h>
-
-#include "tsdataroles.h"
-
-/*!
- \class TsTaskPopupHandler
- \ingroup group_tsserviceplugin
- \brief Create popup with options for TS app.
-*/
-
-TsTaskPopupHandler::TsTaskPopupHandler(QObject *parent) : QObject(parent)
-{
-}
-
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC SKIP
-#endif //COVERAGE_MEASUREMENT
-void TsTaskPopupHandler::showTaskPopup(HbAbstractViewItem *item, const QPointF &coords)
-{
- QModelIndex itemIndex(item->modelIndex());
-
- //initialize popup menu
- HbMenu taskPopup;
- taskPopup.setTimeout(0);
- taskPopup.setDismissPolicy(HbPopup::TapOutside);
-
- HbAction *closeAction = NULL;
- HbAction *closeAllAction = NULL;
-
- if (isClosable(itemIndex)) {
- closeAction = taskPopup.addAction(
- hbTrId("txt_tsw_menu_clear_this_task"));
- }
- if (closeAction || containsClosableItems(*itemIndex.model())) {
- closeAllAction = taskPopup.addAction(
- hbTrId("txt_tsw_menu_clear_all_tasks"));
- }
-
- if (closeAllAction || closeAction) {
- // show popup
- HbAction *selectionAction = taskPopup.exec(coords);
-
- //check selection and emit right signal
- if (selectionAction == closeAction) {
- emit closeTask(itemIndex);
- } else if (selectionAction == closeAllAction) {
- emit closeAllTasks();
- }
- }
-
- //release resources
- taskPopup.close();
-}
-#ifdef COVERAGE_MEASUREMENT
-#pragma CTC ENDSKIP
-#endif //COVERAGE_MEASUREMENT
-
-bool TsTaskPopupHandler::isClosable(const QModelIndex &index) const
-{
- const QVariant state(index.data(TsDataRoles::Closable));
- return state.isValid() && state.toBool();
-}
-
-bool TsTaskPopupHandler::containsClosableItems(const QAbstractItemModel &model) const
-{
- bool retVal(false);
- for (int row(0); !retVal && row < model.rowCount(); ++row) {
- for (int col(0); !retVal && col < model.columnCount(); ++col) {
- retVal = isClosable(model.index(row, col));
- }
- }
- return retVal;
-}
--- a/taskswitcherapp/tsserviceplugin/src/tstasksgriditem.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include "tstasksgriditem.h"
-
-#include <hblabel.h>
-#include <hbpushbutton.h>
-#include <hbabstractitemview.h>
-#include <hbanchorlayout.h>
-#include "tsdataroles.h"
-
-/*!
- \class TsTasksGridItem
- \ingroup group_tsserviceplugin
- \brief Item that should be presented in grid.
-*/
-
-
-TsTasksGridItem::TsTasksGridItem() : HbAbstractViewItem()
-{
-}
-
-TsTasksGridItem::TsTasksGridItem(const TsTasksGridItem &item) : HbAbstractViewItem(item)
-{
- // add screenshot
- mScreenshotLabel = new HbLabel();
- mScreenshotLabel->setAlignment(Qt::AlignHCenter);
-
- // add application name label
- mApplicationNameLabel = new HbLabel();
- mApplicationNameLabel->setAlignment(Qt::AlignCenter);
-
- // add close app button
- HbIcon deleteIcon(":/resource/delete.png");
- mDeleteButton = new HbPushButton();
- mDeleteButton->setIcon(deleteIcon);
- mDeleteButton->setPreferredSize(48, 48);
- mDeleteButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
- mDeleteButton->setEnabled(true);
- connect(mDeleteButton, SIGNAL(clicked()), this, SLOT(handleDeleteClicked()));
- mDeleteButton->hide();
-
- setContentsMargins(5, 5, 5, 5);
-
- // add all items to layout
- HbAnchorLayout *anchorLayout = new HbAnchorLayout();
- anchorLayout->setAnchor(mApplicationNameLabel, Hb::LeftEdge, anchorLayout, Hb::LeftEdge, 0);
- anchorLayout->setAnchor(mApplicationNameLabel, Hb::TopEdge, anchorLayout, Hb::TopEdge, 0);
- anchorLayout->setAnchor(mApplicationNameLabel, Hb::RightEdge, anchorLayout, Hb::RightEdge, 0);
-
- anchorLayout->setAnchor(mScreenshotLabel, Hb::TopEdge, mApplicationNameLabel, Hb::BottomEdge, 0);
- anchorLayout->setAnchor(mScreenshotLabel, Hb::LeftEdge, anchorLayout, Hb::LeftEdge, 0);
- anchorLayout->setAnchor(mScreenshotLabel, Hb::RightEdge, anchorLayout, Hb::RightEdge, 0);
- anchorLayout->setAnchor(mScreenshotLabel, Hb::BottomEdge, anchorLayout, Hb::BottomEdge, 0);
-
- anchorLayout->setAnchor(mDeleteButton, Hb::RightEdge, mScreenshotLabel, Hb::RightEdge, 0);
- anchorLayout->setAnchor(mDeleteButton, Hb::TopEdge, mScreenshotLabel, Hb::TopEdge, 0);
-
- setLayout(anchorLayout);
-}
-
-TsTasksGridItem::~TsTasksGridItem()
-{
-}
-
-HbAbstractViewItem *TsTasksGridItem::createItem()
-{
- TsTasksGridItem *newItem = new TsTasksGridItem(*this);
- connect(newItem, SIGNAL(deleteClicked(QModelIndex)), itemView(), SIGNAL(deleteButtonClicked(QModelIndex)));
- return newItem;
-}
-
-void TsTasksGridItem::handleDeleteClicked()
-{
- emit deleteClicked(modelIndex());
-}
-
-void TsTasksGridItem::updateChildItems()
-{
- mScreenshotLabel->setIcon(modelIndex().data(Qt::DecorationRole).value<HbIcon>());
- mApplicationNameLabel->setPlainText(modelIndex().data(Qt::DisplayRole).toString());
- QVariant status(modelIndex().data(TsDataRoles::Closable));
- const bool isRunning(status.isValid() && status.toBool());
- if (isRunning) {
- mDeleteButton->show();
- } else {
- mDeleteButton->hide();
- }
-}
--- a/taskswitcherapp/tsserviceplugin/src/win/tsexternalactivationwatcher_p.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "tsexternalactivationwatcher_p.h"
-
-#include <qvaluespacesubscriber.h>
-#include <qvaluespacepublisher.h>
-
-QTM_USE_NAMESPACE
-
-TsExternalActivationWatcherPrivate::TsExternalActivationWatcherPrivate(QObject *parent) : QObject()
-{
- mSubscriber = new QValueSpaceSubscriber("/TaskSwitcher/Activation", this);
- mPublisher = new QValueSpacePublisher("/TaskSwitcher", this);
- connect(mSubscriber, SIGNAL(contentsChanged()), this, SLOT(checkActivationFlag()));
- connect(this, SIGNAL(activationRequested()), parent, SIGNAL(activationRequested()));
-}
-
-void TsExternalActivationWatcherPrivate::checkActivationFlag()
-{
- if (mSubscriber->value().isValid()) {
- mPublisher->resetValue("Activation");
- mPublisher->sync();
- emit activationRequested();
- }
-}
--- a/taskswitcherapp/tsserviceplugin/src/win/tslongpresswatcher_p.cpp Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include "tslongpresswatcher_p.h"
-#include "tslongpresswatcher.h"
-
-#include <QAbstractEventDispatcher>
-#include <QDebug>
-
-#include <windows.h>
-
-TsLongPressWatcherPrivate *TsLongPressWatcherPrivate::instance = NULL;
-
-bool TsLongPressWatcherPrivate::hotKeyFilter(void *message)
-{
- MSG *m = (MSG *)(message);
- if (m->message == WM_HOTKEY) {
- unsigned long key = (m->lParam & 0xFFFF0000) >> 16;
- unsigned long mods = (m->lParam & 0x0000FFFF);
- if (key == VK_OEM_3 && mods == (MOD_CONTROL | MOD_SHIFT)) {
- emit TsLongPressWatcherPrivate::instance->applicationKeyLongPress();
- return true;
- }
- }
- return false;
-}
-
-TsLongPressWatcherPrivate::TsLongPressWatcherPrivate(TsLongPressWatcher *parent) : QObject(parent)
-{
- connect(this, SIGNAL(applicationKeyLongPress()), parent, SIGNAL(applicationKeyLongPress()));
- TsLongPressWatcherPrivate::instance = this;
-
- QAbstractEventDispatcher::instance()->setEventFilter(&TsLongPressWatcherPrivate::hotKeyFilter);
-
- if (!RegisterHotKey(NULL, 1, MOD_CONTROL | MOD_SHIFT, VK_OEM_3)) {
- qCritical("Failed to register hot key, taskswitcher might not work as expected");
- } else {
- qDebug("To activate task switcher press Ctrl+Shift+~");
- }
-}
-
-TsLongPressWatcherPrivate::~TsLongPressWatcherPrivate()
-{
- UnregisterHotKey(NULL, 1);
- TsLongPressWatcherPrivate::instance = NULL;
-}
Binary file taskswitcherapp/tsserviceplugin/taskswitcher.qm has changed
--- a/taskswitcherapp/tsserviceplugin/taskswitcher.ts Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="3.0" language="en_GB" sourcelanguage="en_GB">
-<context>
-<message numerus="no" id="txt_tsw_title_task_switcher">
- <comment>Task switcher popup title text. Application allows user to swap between running and recently used applications and to clear them from the list.</comment>
- <source>Task switcher</source>
- <translation variants="no">Task switcher</translation>
- <extra-loc-layout_id>cell_tport_appsw_pane_t1</extra-loc-layout_id>
- <extra-loc-viewid>tsw_01</extra-loc-viewid>
- <extra-loc-positionid>title</extra-loc-positionid>
- <extra-loc-feature>ts</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_tsw_menu_clear_this_task">
- <comment>Task switcher context menu item, removes the task in focus from Task switcher and closes the application / task if it is running. Other command in same menu: “Clear all tasks”.</comment>
- <source>Clear this task</source>
- <translation variants="no">Clear this task</translation>
- <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>
- <extra-loc-viewid>tsw_01</extra-loc-viewid>
- <extra-loc-positionid>menu</extra-loc-positionid>
- <extra-loc-feature>ts</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_tsw_menu_clear_all_tasks">
- <comment>Task switcher context menu item, empties the list of all tasks and closes the apps/tasks if running. Other command in same menu: “Clear this task”.</comment>
- <source>Clear all tasks</source>
- <translation variants="no">Clear all tasks</translation>
- <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>
- <extra-loc-viewid>tsw_01</extra-loc-viewid>
- <extra-loc-positionid>menu</extra-loc-positionid>
- <extra-loc-feature>ts</extra-loc-feature>
- <extra-loc-blank>False</extra-loc-blank>
-</message>
-</context>
-</TS>
--- a/taskswitcherapp/tsserviceplugin/tspresentation.qrc Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<RCC>
- <qresource prefix="/xml">
- <file>resource/layout.docml</file>
- </qresource>
- <qresource prefix="/" >
- <file>resource/delete.png</file>
- </qresource>
-</RCC>
Binary file taskswitcherapp/tsserviceplugin/tsrc/t_tsitemprovider/data/castorage.db has changed
--- a/taskswitcherapp/tsserviceplugin/tsserviceplugin.pro Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description:
-#
-
-TEMPLATE = lib
-CONFIG += plugin hb mobility
-MOBILITY = serviceframework
-
-win32 {
- MOBILITY += publishsubscribe
-}
-
-INCLUDEPATH += . inc
-
-HEADERS += inc/tsserviceplugin.h \
- inc/tsdataroles.h \
- inc/tsactivationinterface.h \
- inc/tsactivation.h \
- inc/tslongpresswatcher.h \
- inc/tsexternalactivationwatcher.h \
- inc/tsdeactivationinterface.h \
- inc/tsdeactivation.h \
- inc/tsitemproviderinterface.h \
- inc/tsitemprovider.h \
- inc/tsclosedapplicationsfiltermodel.h \
- inc/tsrecentapplicationsmodel.h \
- inc/tspresentationinterface.h \
- inc/tspresentation.h \
- inc/tstasksgriditem.h \
- inc/tstasksgrid.h \
- inc/tstaskpopuphandler.h \
- inc/tsdocumentloader.h \
-
-SOURCES += src/tsserviceplugin.cpp \
- src/tsactivation.cpp \
- src/tslongpresswatcher.cpp \
- src/tsexternalactivationwatcher.cpp \
- src/tsdeactivation.cpp \
- src/tsitemprovider.cpp \
- src/tsclosedapplicationsfiltermodel.cpp \
- src/tsrecentapplicationsmodel.cpp \
- src/tspresentation.cpp \
- src/tstasksgriditem.cpp \
- src/tstaskpopuphandler.cpp \
- src/tsdocumentloader.cpp \
-
-LIBS += -lcaclient
-
-TRANSLATIONS = taskswitcher.ts
-
-RESOURCES += tspresentation.qrc
-
-symbian {
- load(data_caging_paths)
-
- plugin.sources = tsserviceplugin.dll
- plugin.path = $$QT_PLUGINS_BASE_DIR
-
- # ugly hack
- translation.sources = ./*.qm
- translation.path = $$QT_PLUGINS_BASE_DIR/../translations
-
- # another ugly hack
- crml.sources = ./resource/*.qcrml
- crml.path = $$QT_PLUGINS_BASE_DIR/../crml
-
- DEPLOYMENT += plugin translation crml
-}
-
-symbian {
- INCLUDEPATH += inc/s60
- HEADERS += inc/s60/tslongpresswatcher_p.h \
- inc/s60/tsexternalactivationwatcher_p.h \
-
- SOURCES += src/s60/tslongpresswatcher_p.cpp \
- src/s60/tsexternalactivationwatcher_p.cpp \
-
- LIBS += -lcone \
- -lapgrfx \
- -lws32 \
-
-}
-
-win32 {
- INCLUDEPATH += inc/win
-
- HEADERS += inc/win/tslongpresswatcher_p.h \
- inc/win/tsexternalactivationwatcher_p.h \
-
- SOURCES += src/win/tslongpresswatcher_p.cpp \
- src/win/tsexternalactivationwatcher_p.cpp \
-
- LIBS += -lUser32
-}
-
-include(../common.pri)
--- a/taskswitcherapp/tsserviceplugin/tsserviceplugin.xml Fri Apr 16 14:54:01 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<service>
- <name>TaskSwitcher</name>
- <filepath>tsserviceplugin</filepath>
- <description>Basic implementation of TaskSwitcher services</description>
- <interface>
- <name>com.nokia.taskswitcher.itemprovider</name>
- <version>1.0</version>
- <description>Default implementation of item provider for TaskSwitcher</description>
- </interface>
- <interface>
- <name>com.nokia.taskswitcher.activation</name>
- <version>1.0</version>
- <description>Default implementation of activation triggers for TaskSwitcher</description>
- </interface>
- <interface>
- <name>com.nokia.taskswitcher.deactivation</name>
- <version>1.0</version>
- <description>Default (empty) implementation of deactivation triggers for TaskSwitcher</description>
- </interface>
- <interface>
- <name>com.nokia.taskswitcher.presentation</name>
- <version>1.0</version>
- <description>Default implementation of presentation layer of TaskSwitcher</description>
- </interface>
-</service>