diff -r 000000000000 -r db1bf15cefff calendarwidgetplugin/src/contentlayoutgesture.cpp --- /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 +#include +#include +#include +#include +#include + +#include "contentlayoutgesture.h" +#include "calendarwidgetdebug.h" + +const int KMethodIndex = 2; + +/* + * ContentLayoutGesture::ContentLayoutGesture + */ +ContentLayoutGesture::ContentLayoutGesture(HbWidget* widget, QList 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 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 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 parameters, QList 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 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 +