activityfw/testapplications/activitytestletter/viewmanager.cpp
changeset 117 c63ee96dbe5f
equal deleted inserted replaced
115:3ab5c078b490 117:c63ee96dbe5f
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 #include <qservicemanager.h>
       
    18 #include <HbInstance>
       
    19 #include <QEventLoop>
       
    20 #include <QStringList>
       
    21 #include <QCoreApplication>
       
    22 #include <hbapplication.h>
       
    23 #include "viewmanager.h"
       
    24 #include "boldwidget.h"
       
    25 #include "italicwidget.h"
       
    26 #include "underlinewidget.h"
       
    27 #include "letterwidget.h"
       
    28 #include "afstorageglobals.h"
       
    29 
       
    30 QTM_USE_NAMESPACE
       
    31 
       
    32 viewmanager::viewmanager(HbApplication *hbapp):
       
    33     HbMainWindow(),  mHbApp(hbapp)
       
    34 {
       
    35     QServiceManager serviceManager;
       
    36     mActivityClient = serviceManager.loadInterface("com.nokia.qt.activities.ActivityClient");
       
    37     if (!mActivityClient) {
       
    38         qFatal("load plugin failed");
       
    39     }
       
    40 
       
    41     connect(mActivityClient, SIGNAL(activityRequested(QString)), this, SLOT(loadActivityData(QString)));
       
    42     
       
    43 
       
    44     mBoldWidget = new boldwidget();
       
    45     mItalicWidget = new italicwidget();
       
    46     mUnderlineWidget = new underlinewidget();
       
    47     mBoldView = addView(mBoldWidget);
       
    48     mBoldView->setTitle("Bold");
       
    49     mItalicView = addView(mItalicWidget);
       
    50     mItalicView->setTitle("Italic");
       
    51     mUnderlineView = addView(mUnderlineWidget);
       
    52     mUnderlineView->setTitle("Underline");
       
    53     toitalic();
       
    54     connect(mBoldWidget, SIGNAL(toitalic()), this, SLOT(toitalic()));
       
    55     connect(mBoldWidget, SIGNAL(tounderline()), this, SLOT(tounderline()));
       
    56 
       
    57     connect(mItalicWidget, SIGNAL(tounderline()), this, SLOT(tounderline()));
       
    58     connect(mItalicWidget, SIGNAL(tobold()), this, SLOT(tobold()));
       
    59 
       
    60     connect(mUnderlineWidget, SIGNAL(tobold()), this, SLOT(tobold()));
       
    61     connect(mUnderlineWidget, SIGNAL(toitalic()), this, SLOT(toitalic()));
       
    62 
       
    63     connect(mBoldWidget, SIGNAL(save()), this, SLOT(save()));
       
    64     connect(mItalicWidget, SIGNAL(save()), this, SLOT(save()));
       
    65     connect(mUnderlineWidget, SIGNAL(save()), this, SLOT(save()));
       
    66     connect(mBoldWidget, SIGNAL(del()), this, SLOT(del()));
       
    67     connect(mItalicWidget, SIGNAL(del()), this, SLOT(del()));
       
    68     connect(mUnderlineWidget, SIGNAL(del()), this, SLOT(del()));
       
    69 
       
    70     
       
    71     //startup case    
       
    72     QStringList arglist = qApp->arguments(); 
       
    73     QVariantHash actdata;
       
    74     bool ok = QMetaObject::invokeMethod(mActivityClient, "parseCommandLine", Q_RETURN_ARG(QVariantHash, actdata), Q_ARG(QStringList, arglist));
       
    75     if (!ok) {
       
    76         qFatal("Startup failed");
       
    77     }
       
    78     QString actid = actdata.value("activityname").toString();
       
    79     if ( !actid.isNull() )
       
    80         {
       
    81         QVariant data;
       
    82         ok = QMetaObject::invokeMethod(mActivityClient, "activityData", Q_RETURN_ARG(QVariant, data), Q_ARG(QString, actid));
       
    83         if (!ok) {
       
    84             qFatal("Get data failed");
       
    85         }
       
    86         loadActivityData(data, true);
       
    87         }
       
    88     //startup case end
       
    89 }
       
    90 
       
    91 viewmanager::~viewmanager()
       
    92 {
       
    93 }
       
    94 
       
    95 void viewmanager::toitalic()
       
    96 {
       
    97     setCurrentView(mItalicView);
       
    98     mStatename = "italic";
       
    99 }
       
   100 
       
   101 void viewmanager::tobold()
       
   102 {
       
   103     setCurrentView(mBoldView);
       
   104     mStatename = "bold";
       
   105 }
       
   106 
       
   107 void viewmanager::tounderline()
       
   108 {
       
   109     setCurrentView(mUnderlineView);
       
   110     mStatename = "underline";
       
   111 }
       
   112 
       
   113 
       
   114 void viewmanager::save()
       
   115 {
       
   116     QString color;
       
   117     QString visible;
       
   118     QString persistent;
       
   119     QString name;
       
   120     letterwidget* widget = currentWidget();
       
   121     color = widget->color();
       
   122     visible = widget->visibility();
       
   123     persistent = widget->persistent();
       
   124     name = widget->name();
       
   125 
       
   126     QStringList list;
       
   127     list.append(mStatename);
       
   128     list.append(color);
       
   129     mSaveVariant.clear();
       
   130     mSaveVariant = list;
       
   131 
       
   132     HbMainWindow *mainWindow = hbInstance->allMainWindows().first();
       
   133     QPixmap screenshot = QPixmap::grabWidget(mainWindow, mainWindow->rect());
       
   134     QVariantHash metadata;
       
   135     metadata.insert(ActivityScreenshotKeyword, screenshot);
       
   136     if ( visible == "true" )
       
   137         {
       
   138         metadata.insert(ActivityVisibility, true);    
       
   139         }
       
   140     else if ( visible == "false" )
       
   141         {
       
   142         metadata.insert(ActivityVisibility, false);    
       
   143         }
       
   144     
       
   145     if ( persistent == "true" )
       
   146         {
       
   147         metadata.insert(ActivityPersistence, true);    
       
   148         }
       
   149     else if ( persistent == "false" )
       
   150         {
       
   151         metadata.insert(ActivityPersistence, false);    
       
   152         }
       
   153     
       
   154     if ( name != "none" )
       
   155         {
       
   156         metadata.insert(ActivityApplicationName, name);    
       
   157         }
       
   158     
       
   159     bool retok;
       
   160     bool ok = QMetaObject::invokeMethod(mActivityClient, "removeActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mStatename));
       
   161     if (!ok) {
       
   162         qFatal("Remove failed");
       
   163     }
       
   164 
       
   165     ok = QMetaObject::invokeMethod(mActivityClient, "addActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mStatename), Q_ARG(QVariant, mSaveVariant), Q_ARG(QVariantHash, metadata));
       
   166     if (!ok || !retok) {
       
   167         qFatal("Add failed");
       
   168     }
       
   169 }
       
   170 void viewmanager::del()
       
   171 {
       
   172     bool retok;
       
   173     bool ok = QMetaObject::invokeMethod(mActivityClient, "removeActivity", Q_RETURN_ARG(bool, retok), Q_ARG(QString, mStatename));
       
   174     if (!ok) {
       
   175         qFatal("Remove failed");
       
   176     }
       
   177 }
       
   178 
       
   179 void viewmanager::loadActivityData(const QString &name)
       
   180 {
       
   181     QVariant data;
       
   182     bool ok = QMetaObject::invokeMethod(mActivityClient, "activityData", Q_RETURN_ARG(QVariant, data), Q_ARG(QString, name));
       
   183     if (!ok) {
       
   184         qFatal("Get data failed");
       
   185     }
       
   186     loadActivityData(data, false);
       
   187 }
       
   188 
       
   189 void viewmanager::loadActivityData(const QVariant &data, bool startup)
       
   190 {
       
   191     HbView *oldView = currentView();
       
   192 
       
   193     QStringList list = data.toStringList();
       
   194     QString statename = list.at(0);
       
   195     QString color = list.at(1);
       
   196     if (statename == "bold") {
       
   197         mBoldWidget->setcolor(color);
       
   198         tobold();
       
   199         mBoldWidget->update();
       
   200     } else if (statename == "italic") {
       
   201         mItalicWidget->setcolor(color);
       
   202         toitalic();
       
   203         mItalicWidget->update();
       
   204     } else if (statename == "underline") {
       
   205         mUnderlineWidget->setcolor(color);
       
   206         tounderline();
       
   207         mUnderlineWidget->update();
       
   208     } else {
       
   209         Q_ASSERT(false);
       
   210     }
       
   211     
       
   212     if (currentView() != oldView && !startup) {
       
   213         QEventLoop loop;
       
   214         loop.connect(this, SIGNAL(viewReady()), SLOT(quit()));
       
   215         loop.exec();
       
   216     }
       
   217 }
       
   218 
       
   219 letterwidget* viewmanager::currentWidget()
       
   220 	{
       
   221 	HbView* view = currentView();
       
   222 	QGraphicsWidget* gwidget = view->widget();
       
   223 	letterwidget* lwidget = qobject_cast<letterwidget*>(gwidget);
       
   224 	}