calendarwidgetplugin/src/contentlayoutgesture.cpp
changeset 0 db1bf15cefff
child 1 f8e7eccf5f96
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarwidgetplugin/src/contentlayoutgesture.cpp	Tue Jul 06 11:55:49 2010 +0300
@@ -0,0 +1,248 @@
+/*
+* 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 widget plugin
+*
+*/
+#include <xqaiwrequest.h>
+#include <xqappmgr.h>
+#include <QPointF>
+#include <HbDocumentLoader>
+#include <HbWidget>
+#include <QStringList>
+
+#include "contentlayoutgesture.h"
+#include "calendarwidgetdebug.h"
+
+const int KMethodIndex = 2;
+
+/*
+ * ContentLayoutGesture::ContentLayoutGesture
+ */
+ContentLayoutGesture::ContentLayoutGesture(HbWidget* widget, QList<QString> parameters, QString& layout, QString& gestureType, QString& action, QObject* parent) : QObject(parent)
+{
+    LOGS("ContentLayoutGesture::ContentLayoutGesture");
+    this->setObjectName(layout);
+    assignParameters(parameters, gestureType, action);
+    mLayout = widget;
+    mTestID = 0;
+}
+
+/*
+ * ContentLayoutGesture::~ContentLayoutGesture
+ */
+ContentLayoutGesture::~ContentLayoutGesture()
+{
+    LOGS("ContentLayoutGesture::~ContentLayoutGesture");
+}
+
+/*
+ * ContentLayoutGesture::assignParameter
+ */
+void ContentLayoutGesture::assignParameters(QList<QString> parameters, QString& gestureType, QString& action)
+{
+    LOGS("ContentLayoutGesture::assignParameter");
+    if (gestureType == "onTap") {
+        mTapParameters = parameters;
+        mTapAction = action;
+        if (mTapAction == "launchApplication") {
+            //Parse the method and extract parameters type 
+            parseParameters(gestureType);
+        }
+    }
+    
+    if (gestureType == "onSwipe") {
+        mSwipeParameters = parameters;
+        mSwipeAction = action;
+    }
+    
+    if (gestureType == "onHighlight") {
+        mHighlightParameters = parameters;
+        mHighlightAction = action;
+    }
+    
+    if (gestureType == "onPinch") {
+        mPinchParameters = parameters;
+        mPinchAction = action;
+    }
+    
+    if (gestureType == "onPan") {
+        mPanParameters = parameters;
+        mPanAction = action;
+        }
+}
+
+/*
+ * ContentLayoutGesture::parseParameters()
+ */
+void ContentLayoutGesture::parseParameters( QString& gestureType )
+{
+	LOGS( "ContentLayoutGesture::parseParameters" );
+	if (gestureType == "onTap") {
+        int parameterStartIndex = 0;
+        int parameterEndIndex = 0;
+        bool parameterFound = false;
+        int i = 0;
+        while ((mTapParameters.at(KMethodIndex).at(i) != '(') && (i < mTapParameters.at(
+            KMethodIndex).length())) {
+            i++;
+        }
+        parameterStartIndex = i + 1;
+        for (;i < mTapParameters.at(KMethodIndex).length(); i++) {
+            if (mTapParameters.at(KMethodIndex).at(i) == ',' || mTapParameters.at(KMethodIndex).at(
+                i) == ')') {
+                parameterEndIndex = i;
+                parameterFound = true;
+            }
+
+            if (parameterFound) {
+                QString parameterType = mTapParameters.at(KMethodIndex).mid(parameterStartIndex,
+                    parameterEndIndex - parameterStartIndex);
+                mTapParametersType.append(parameterType);
+                //check the next parameter type from the next cycle
+                parameterStartIndex = i + 1;
+                parameterFound = false;
+            }
+        }
+    }
+}
+
+/*
+ * ContentLayoutGesture::addGesture()
+ */
+void ContentLayoutGesture::addGesture(QList<QString> parameters, QString& gestureType, QString& action)
+{
+    LOGS("ContentLayoutGesture::addGesture");
+    assignParameters(parameters, gestureType, action);
+}
+
+/*
+ * ContentLayoutGesture::onTap
+ */
+void ContentLayoutGesture::onTap(QPointF& point)
+{
+    LOGS("ContentLayoutGesture::launchApplication");
+	if (mLayout->sceneBoundingRect().contains(point)) {
+        if (mTapAction == "launchApplication") {
+            launchApplication(mTapParameters, mTapParametersType);
+            mTestID = 1;
+        }
+    }
+}
+
+/*
+ * ContentLayoutGesture::launchApplication
+ */
+void ContentLayoutGesture::launchApplication( QList<QString> parameters, QList<QString> parametersType )
+{
+    LOGS("ContentLayoutGesture::launchApplication");
+    
+    QString service = parameters.at(0);
+    QString interface = parameters.at(1);
+    QString method = parameters.at(2);
+
+    XQApplicationManager aiwMgr;
+    //XQAiwRequest request = aiwMgr.create(url);
+    XQAiwRequest* request = aiwMgr.create(service, interface, method, false);
+    if (request == NULL) {
+        return;
+    }
+
+    // Connect result handling signal
+    connect(request, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleOk(const QVariant&)));
+    // Connect error handling signal or apply lastError function instead.
+    connect(request, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&)));
+
+    QList<QVariant> args;
+    
+	for (int i = 3; i < parameters.count(); i++) {
+        if (parameters.at(i) == "CURRENTDATE") {
+            args << mDate;
+        }
+        else {
+            if (parametersType.at(i - KMethodIndex - 1) == "int") {
+                int par = parameters.at(i).toInt();
+                args << par;
+            }
+        }
+    }
+
+    // Set function parameters
+    request->setArguments(args);
+
+    // Send the request
+    bool res = request->send();
+    if (!res) {
+        // Request failed.
+        int error = request->lastError();
+
+        // Handle error
+    }
+
+    // All done.
+    delete request;
+}
+
+/*
+ * ContentLayoutGesture::handleOk()
+ */
+void ContentLayoutGesture::handleOk(const QVariant& var)
+{
+    Q_UNUSED(var);
+    LOGS("DateIconGesture::handleOk");
+    mTestID = 0;
+    emit requestComplete();
+}
+
+/*
+ * ContentLayoutGesture::handleError()
+ */
+void ContentLayoutGesture::handleError(int err, const QString& str)
+{
+    Q_UNUSED(str);
+    Q_UNUSED(err);
+    LOGS("DateIconGesture::handleError");
+    mTestID = err;
+    emit requestError();
+}
+
+
+/*
+ * ContentLayoutGesture::updateDate()
+ */
+void ContentLayoutGesture::updateDate(QDateTime& date)
+{
+    LOGS("ContentLayoutGesture::updateDate");
+    mDate = date;
+}
+
+//TEST FUNCTIONS
+
+/*
+ * ContentLayoutHandler::testId()
+ */
+int ContentLayoutGesture::testId()
+{
+    return mTestID;
+}
+
+/*
+ * ContentLayoutHandler::setTestId()
+ */
+void ContentLayoutGesture::setTestId(int testID)
+{
+    mTestID = testID;
+}
+
+//END OF FILE
+