javauis/nokiauiapi_qt/softindicatorplugin/src/javasoftindicator.cpp
changeset 79 2f468c1958d0
child 78 71ad690e91f5
equal deleted inserted replaced
76:4ad59aaee882 79:2f468c1958d0
       
     1 /*******************************************************************************
       
     2  * Copyright (c) 2009, 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3  * All rights reserved. This program and the accompanying materials
       
     4  * are made available under the terms of the Eclipse Public License v1.0
       
     5  * which accompanies this distribution, and is available at
       
     6  * http://www.eclipse.org/legal/epl-v10.html
       
     7  *
       
     8  * Contributors:
       
     9  *     Nokia Corporation - initial implementation
       
    10  *******************************************************************************/
       
    11 
       
    12 #include <apgtask.h>
       
    13 #include <apgcli.h>
       
    14 
       
    15 #include "javasoftindicator.h" 
       
    16 
       
    17 // ----------------------------------------------------------------------------
       
    18 // JavaSoftIndicator::JavaSoftIndicator
       
    19 // @see javasoftindicator.h
       
    20 // ----------------------------------------------------------------------------
       
    21 JavaSoftIndicator::JavaSoftIndicator(const QString &indicatorType) :
       
    22     HbIndicatorInterface(indicatorType,
       
    23             HbIndicatorInterface::NotificationCategory, InteractionActivated)
       
    24     {
       
    25     }
       
    26 
       
    27 // ----------------------------------------------------------------------------
       
    28 // JavaSoftIndicator::~JavaSoftIndicator
       
    29 // @see javasoftindicator.h
       
    30 // ----------------------------------------------------------------------------
       
    31 JavaSoftIndicator::~JavaSoftIndicator()
       
    32     {
       
    33     }
       
    34 
       
    35 // ----------------------------------------------------------------------------
       
    36 // JavaSoftIndicator::handleInteraction
       
    37 // @see javasoftindicator.h
       
    38 // ----------------------------------------------------------------------------
       
    39 bool JavaSoftIndicator::handleInteraction(InteractionType type)
       
    40     {
       
    41     bool handled = false;
       
    42     if (type == InteractionActivated)
       
    43         {
       
    44         TRAP_IGNORE(StartJavaMidletL());
       
    45         QVariantMap variantMap;
       
    46         if (iParameter.isValid() && iParameter.canConvert(QVariant::List))
       
    47             {
       
    48             variantMap.insert("MidletId",iParameter.toList()[0].toUInt());
       
    49             variantMap.insert("NotificationId",iParameter.toList()[1]);
       
    50             }
       
    51         emit userActivated(variantMap);
       
    52         handled = true;
       
    53         emit deactivate();
       
    54         }
       
    55     return handled;
       
    56     }
       
    57 
       
    58 // ----------------------------------------------------------------------------
       
    59 // JavaSoftIndicator::indicatorData
       
    60 // @see javasoftindicator.h
       
    61 // ----------------------------------------------------------------------------
       
    62 QVariant JavaSoftIndicator::indicatorData(int role) const
       
    63     {
       
    64     switch (role)
       
    65         {
       
    66         case PrimaryTextRole:
       
    67             {
       
    68             QString text("");
       
    69             if (iParameter.isValid() && iParameter.canConvert(QVariant::List))
       
    70                 {
       
    71                 if (iParameter.toList()[2].isValid())
       
    72                     {
       
    73                     text = iParameter.toList()[2].toString();
       
    74                     }
       
    75                 }
       
    76             return text;
       
    77             }
       
    78         case SecondaryTextRole:
       
    79             {
       
    80             QString text("");
       
    81             if (iParameter.isValid() && iParameter.canConvert(QVariant::List))
       
    82                 {
       
    83                 if (iParameter.toList()[3].isValid())
       
    84                     {
       
    85                     text = iParameter.toList()[3].toString();
       
    86                     }
       
    87                 }
       
    88             return text;
       
    89             }
       
    90         case DecorationNameRole:
       
    91             {
       
    92             QVariant img;
       
    93             if (iParameter.isValid() && iParameter.canConvert(QVariant::List))
       
    94                 {
       
    95                 if (iParameter.toList()[4].isValid())
       
    96                     {
       
    97                     img = iParameter.toList()[4].toString(); 
       
    98                     }
       
    99                 }
       
   100             return img;
       
   101             }
       
   102         default:
       
   103             return QVariant();
       
   104         }
       
   105     }
       
   106 
       
   107 // ----------------------------------------------------------------------------
       
   108 // JavaSoftIndicator::handleClientRequest
       
   109 // ----------------------------------------------------------------------------
       
   110 bool JavaSoftIndicator::handleClientRequest(RequestType type,
       
   111         const QVariant &parameter)
       
   112     {
       
   113     bool handled(false);
       
   114     switch (type)
       
   115         {
       
   116         case RequestActivate:
       
   117             {
       
   118             if (iParameter != parameter)
       
   119                 {
       
   120                 iParameter = parameter;
       
   121                 }
       
   122             emit dataChanged();
       
   123             handled = true;
       
   124             }
       
   125             break;
       
   126         case RequestDeactivate:
       
   127             {
       
   128             emit deactivate();
       
   129             }
       
   130             break;
       
   131         default:
       
   132             break;
       
   133         }
       
   134     return handled;
       
   135     }
       
   136 
       
   137 // ----------------------------------------------------------
       
   138 // JavaSoftIndicator::StartJavaMidletL()
       
   139 // ----------------------------------------------------------
       
   140 void JavaSoftIndicator::StartJavaMidletL() const
       
   141     {
       
   142     if (iParameter.isValid() && iParameter.canConvert(QVariant::List))
       
   143         {
       
   144         if (iParameter.toList()[0].isValid())
       
   145             {
       
   146             TUint KJavaMidletUid = iParameter.toList()[0].toUInt();
       
   147 
       
   148             RWsSession ws;
       
   149             User::LeaveIfError(ws.Connect() == KErrNone);
       
   150             TApaTaskList tasklist(ws);
       
   151             TApaTask task = tasklist.FindApp(TUid::Uid(KJavaMidletUid));
       
   152             if (task.Exists())
       
   153                 {
       
   154                 task.BringToForeground();
       
   155                 ws.Close();
       
   156                 }
       
   157             else
       
   158                 {
       
   159                 ws.Close();
       
   160                 RApaLsSession appArcSession;
       
   161                 User::LeaveIfError(appArcSession.Connect());
       
   162                 TThreadId threadId;
       
   163                 appArcSession.StartDocument(_L(""),
       
   164                 TUid::Uid(KJavaMidletUid), threadId);
       
   165                 appArcSession.Close();
       
   166                 }
       
   167             }
       
   168         }
       
   169     }
       
   170