coreapplicationuis/powersaveutilities/psmindicatorplugin/src/psmindicator.cpp
author hgs
Wed, 20 Oct 2010 17:03:03 +0300
changeset 81 676b6116ca93
parent 77 b01c07dfcf84
permissions -rw-r--r--
201041_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
50b444048a8d 201027_02
hgs
parents:
diff changeset
     1
/*
50b444048a8d 201027_02
hgs
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
50b444048a8d 201027_02
hgs
parents:
diff changeset
     3
 * All rights reserved.
50b444048a8d 201027_02
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
50b444048a8d 201027_02
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
50b444048a8d 201027_02
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
50b444048a8d 201027_02
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
50b444048a8d 201027_02
hgs
parents:
diff changeset
     8
 *
50b444048a8d 201027_02
hgs
parents:
diff changeset
     9
 * Initial Contributors:
50b444048a8d 201027_02
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
50b444048a8d 201027_02
hgs
parents:
diff changeset
    11
 *
50b444048a8d 201027_02
hgs
parents:
diff changeset
    12
 * Contributors:
50b444048a8d 201027_02
hgs
parents:
diff changeset
    13
 *
50b444048a8d 201027_02
hgs
parents:
diff changeset
    14
 * Description:
50b444048a8d 201027_02
hgs
parents:
diff changeset
    15
 *
50b444048a8d 201027_02
hgs
parents:
diff changeset
    16
 */
50b444048a8d 201027_02
hgs
parents:
diff changeset
    17
#include "psmindicator.h"
50b444048a8d 201027_02
hgs
parents:
diff changeset
    18
50b444048a8d 201027_02
hgs
parents:
diff changeset
    19
#include <QWidget>
50b444048a8d 201027_02
hgs
parents:
diff changeset
    20
#include <QtPlugin>
50b444048a8d 201027_02
hgs
parents:
diff changeset
    21
#include <QProcess>
50b444048a8d 201027_02
hgs
parents:
diff changeset
    22
#include <cppluginlauncher.h>
50b444048a8d 201027_02
hgs
parents:
diff changeset
    23
#include <hbview.h>
50b444048a8d 201027_02
hgs
parents:
diff changeset
    24
#include <hbapplication.h>
50b444048a8d 201027_02
hgs
parents:
diff changeset
    25
#include <hbmainwindow.h>
50b444048a8d 201027_02
hgs
parents:
diff changeset
    26
#include <hbaction.h>
50b444048a8d 201027_02
hgs
parents:
diff changeset
    27
#include <cpbasesettingview.h>
50b444048a8d 201027_02
hgs
parents:
diff changeset
    28
#include <e32debug.h>
77
hgs
parents: 51
diff changeset
    29
#include <hbmessagebox.h>
hgs
parents: 51
diff changeset
    30
#include <xqaiwrequest.h>
hgs
parents: 51
diff changeset
    31
#include <XQServiceRequest.h>
hgs
parents: 51
diff changeset
    32
#include <QTimer>
51
50b444048a8d 201027_02
hgs
parents:
diff changeset
    33
50b444048a8d 201027_02
hgs
parents:
diff changeset
    34
50b444048a8d 201027_02
hgs
parents:
diff changeset
    35
Q_EXPORT_PLUGIN(PsmIndicatorPlugin)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    36
const static char IndicatorType[] = "com.nokia.hb.powersavemodeplugin/1.0";
50b444048a8d 201027_02
hgs
parents:
diff changeset
    37
QString KPsm = "PSM";
50b444048a8d 201027_02
hgs
parents:
diff changeset
    38
QString KCharging = "Charging";
50b444048a8d 201027_02
hgs
parents:
diff changeset
    39
77
hgs
parents: 51
diff changeset
    40
PsmIndicatorPlugin::PsmIndicatorPlugin():HbIndicatorInterface(IndicatorType,HbIndicatorInterface::NotificationCategory,InteractionActivated),mRequest(NULL)
51
50b444048a8d 201027_02
hgs
parents:
diff changeset
    41
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    42
    RDebug::Print( _L("PsmIndicatorPlugin constructor begin  ") );  
50b444048a8d 201027_02
hgs
parents:
diff changeset
    43
    iIndicatorTypes << "com.nokia.hb.powersavemodeplugin/1.0";
50b444048a8d 201027_02
hgs
parents:
diff changeset
    44
    RDebug::Print( _L("PsmIndicatorPlugin constructor end  ")  ); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    45
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    46
50b444048a8d 201027_02
hgs
parents:
diff changeset
    47
PsmIndicatorPlugin::~PsmIndicatorPlugin()
50b444048a8d 201027_02
hgs
parents:
diff changeset
    48
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    49
   RDebug::Print( _L("PsmIndicatorPlugin destructor begin  ")  ); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    50
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    51
50b444048a8d 201027_02
hgs
parents:
diff changeset
    52
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    53
// psmIndicatorPlugin::indicatorTypes
50b444048a8d 201027_02
hgs
parents:
diff changeset
    54
// returns the indicator types handled by this plugin
50b444048a8d 201027_02
hgs
parents:
diff changeset
    55
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    56
50b444048a8d 201027_02
hgs
parents:
diff changeset
    57
QStringList PsmIndicatorPlugin::indicatorTypes() const
50b444048a8d 201027_02
hgs
parents:
diff changeset
    58
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    59
    RDebug::Print( _L("PsmIndicatorPlugin indicatortypes  ")); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    60
    return iIndicatorTypes;
50b444048a8d 201027_02
hgs
parents:
diff changeset
    61
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    62
50b444048a8d 201027_02
hgs
parents:
diff changeset
    63
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    64
// psmIndicatorPlugin::createIndicator
50b444048a8d 201027_02
hgs
parents:
diff changeset
    65
// creates an indicator.
50b444048a8d 201027_02
hgs
parents:
diff changeset
    66
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    67
50b444048a8d 201027_02
hgs
parents:
diff changeset
    68
HbIndicatorInterface* PsmIndicatorPlugin::createIndicator(
50b444048a8d 201027_02
hgs
parents:
diff changeset
    69
        const QString &indicatorType)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    70
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    71
    Q_UNUSED(indicatorType)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    72
    RDebug::Print( _L("PsmIndicatorPlugin createindicator  ") ); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    73
    return this;
50b444048a8d 201027_02
hgs
parents:
diff changeset
    74
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    75
50b444048a8d 201027_02
hgs
parents:
diff changeset
    76
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    77
// psmIndicatorPlugin::error
50b444048a8d 201027_02
hgs
parents:
diff changeset
    78
// returns the error code.
50b444048a8d 201027_02
hgs
parents:
diff changeset
    79
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    80
50b444048a8d 201027_02
hgs
parents:
diff changeset
    81
int PsmIndicatorPlugin::error() const
50b444048a8d 201027_02
hgs
parents:
diff changeset
    82
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    83
    RDebug::Print( _L("PsmIndicatorPlugin error  ") ); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    84
    return mError;
50b444048a8d 201027_02
hgs
parents:
diff changeset
    85
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    86
50b444048a8d 201027_02
hgs
parents:
diff changeset
    87
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    88
// psmIndicatorPlugin::accessAllowed
50b444048a8d 201027_02
hgs
parents:
diff changeset
    89
// check for the access rights of the client. As there are no restrictions for 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    90
// this plugin it always returns true.
50b444048a8d 201027_02
hgs
parents:
diff changeset
    91
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    92
50b444048a8d 201027_02
hgs
parents:
diff changeset
    93
bool PsmIndicatorPlugin::accessAllowed(const QString &indicatorType,
50b444048a8d 201027_02
hgs
parents:
diff changeset
    94
        const QVariantMap &     securityInfo) const
50b444048a8d 201027_02
hgs
parents:
diff changeset
    95
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    96
    Q_UNUSED(indicatorType)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    97
    Q_UNUSED(securityInfo)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    98
    
50b444048a8d 201027_02
hgs
parents:
diff changeset
    99
    RDebug::Print( _L("PsmIndicatorPlugin accessallowed  ") ); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   100
    return true;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   101
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   102
50b444048a8d 201027_02
hgs
parents:
diff changeset
   103
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   104
// psmIndicator::handleInteraction
50b444048a8d 201027_02
hgs
parents:
diff changeset
   105
// called when the user interacts with the indicator.Enable the interaction 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   106
// for psm enabled and charger connected
50b444048a8d 201027_02
hgs
parents:
diff changeset
   107
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   108
bool PsmIndicatorPlugin::handleInteraction(InteractionType type)
50b444048a8d 201027_02
hgs
parents:
diff changeset
   109
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   110
    bool handled = false;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   111
    RDebug::Print( _L("PsmIndicatorPlugin handleinteraction begin  ")); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   112
    if (type == InteractionActivated) 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   113
        {
77
hgs
parents: 51
diff changeset
   114
         RDebug::Print( _L("PsmIndicatorPlugin handleinteractiontype  interactionactivated  ") );	
hgs
parents: 51
diff changeset
   115
       //Qthighway methodology      
hgs
parents: 51
diff changeset
   116
       if (mRequest)
hgs
parents: 51
diff changeset
   117
       	{
hgs
parents: 51
diff changeset
   118
        delete mRequest;
hgs
parents: 51
diff changeset
   119
        mRequest = NULL;
hgs
parents: 51
diff changeset
   120
        }
hgs
parents: 51
diff changeset
   121
    
hgs
parents: 51
diff changeset
   122
        mRequest = mAppMgr.create("com.nokia.symbian.ICpPluginLauncher", "launchSettingView(QString,QVariant)", false);
hgs
parents: 51
diff changeset
   123
hgs
parents: 51
diff changeset
   124
       if (!mRequest)
hgs
parents: 51
diff changeset
   125
       {
hgs
parents: 51
diff changeset
   126
        return handled;
hgs
parents: 51
diff changeset
   127
       }
hgs
parents: 51
diff changeset
   128
       
hgs
parents: 51
diff changeset
   129
hgs
parents: 51
diff changeset
   130
hgs
parents: 51
diff changeset
   131
       // Set arguments for request 
hgs
parents: 51
diff changeset
   132
       QList<QVariant> args;
hgs
parents: 51
diff changeset
   133
       args << QVariant( "cppsmplugin.dll" );
hgs
parents: 51
diff changeset
   134
       args << QVariant ( "psm_view" );
hgs
parents: 51
diff changeset
   135
       mRequest->setArguments(args);
hgs
parents: 51
diff changeset
   136
hgs
parents: 51
diff changeset
   137
       mRequest->setSynchronous(false);
hgs
parents: 51
diff changeset
   138
    
hgs
parents: 51
diff changeset
   139
       QTimer::singleShot(20* 1000, this, SLOT(closeSettingView()));
hgs
parents: 51
diff changeset
   140
    
hgs
parents: 51
diff changeset
   141
       // Make the request
hgs
parents: 51
diff changeset
   142
       if (!mRequest->send())
hgs
parents: 51
diff changeset
   143
       {
hgs
parents: 51
diff changeset
   144
        //report error  
hgs
parents: 51
diff changeset
   145
        RDebug::Print( _L("PsmIndicatorPlugin handleinteraction error launching the psmview  "));    
hgs
parents: 51
diff changeset
   146
       }
hgs
parents: 51
diff changeset
   147
        
hgs
parents: 51
diff changeset
   148
        
hgs
parents: 51
diff changeset
   149
       handled = true;
51
50b444048a8d 201027_02
hgs
parents:
diff changeset
   150
                        
77
hgs
parents: 51
diff changeset
   151
       }   
51
50b444048a8d 201027_02
hgs
parents:
diff changeset
   152
    RDebug::Print( _L("PsmIndicatorPlugin handleinteraction end  ") );         
50b444048a8d 201027_02
hgs
parents:
diff changeset
   153
    return handled;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   154
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   155
50b444048a8d 201027_02
hgs
parents:
diff changeset
   156
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   157
// psmIndicator::indicatorData
50b444048a8d 201027_02
hgs
parents:
diff changeset
   158
// returns the name and icon to be displayed in the universal indicator menu.
50b444048a8d 201027_02
hgs
parents:
diff changeset
   159
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   160
QVariant PsmIndicatorPlugin::indicatorData(int role) const
50b444048a8d 201027_02
hgs
parents:
diff changeset
   161
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   162
    RDebug::Print( _L("PsmIndicatorPlugin indicatordata begin  ") );
50b444048a8d 201027_02
hgs
parents:
diff changeset
   163
    switch(role)
50b444048a8d 201027_02
hgs
parents:
diff changeset
   164
        {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   165
        //for displaying the string in indicator.
50b444048a8d 201027_02
hgs
parents:
diff changeset
   166
        case PrimaryTextRole: 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   167
            {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   168
             return iDisplayName;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   169
            }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   170
        //for displaying the icon in indicator.
50b444048a8d 201027_02
hgs
parents:
diff changeset
   171
        case DecorationNameRole:
50b444048a8d 201027_02
hgs
parents:
diff changeset
   172
            {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   173
             return iIcon;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   174
            }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   175
        default: 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   176
            return QVariant();      
50b444048a8d 201027_02
hgs
parents:
diff changeset
   177
        }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   178
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   179
50b444048a8d 201027_02
hgs
parents:
diff changeset
   180
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   181
// psmIndicatorPlugin::handleClientRequest
50b444048a8d 201027_02
hgs
parents:
diff changeset
   182
// this function gets called when client activates plugin
50b444048a8d 201027_02
hgs
parents:
diff changeset
   183
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   184
bool PsmIndicatorPlugin::handleClientRequest( RequestType type, 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   185
        const QVariant &parameter)
50b444048a8d 201027_02
hgs
parents:
diff changeset
   186
    {    
50b444048a8d 201027_02
hgs
parents:
diff changeset
   187
    RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest begin  ") );
50b444048a8d 201027_02
hgs
parents:
diff changeset
   188
    bool handled(false);
50b444048a8d 201027_02
hgs
parents:
diff changeset
   189
    switch (type) 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   190
        {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   191
        case RequestActivate:
50b444048a8d 201027_02
hgs
parents:
diff changeset
   192
            {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   193
            RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest requestactivate  ") );
50b444048a8d 201027_02
hgs
parents:
diff changeset
   194
            // Get the param from the hbindicator.activate() which is called from sysap.
50b444048a8d 201027_02
hgs
parents:
diff changeset
   195
            HbTranslator trans("powermanagement");
50b444048a8d 201027_02
hgs
parents:
diff changeset
   196
            iDisplayName.clear();
50b444048a8d 201027_02
hgs
parents:
diff changeset
   197
            //if it's a PSM indicator then prepare the string and icon accordingly
50b444048a8d 201027_02
hgs
parents:
diff changeset
   198
            if((parameter.operator ==(QString("PSM"))))
50b444048a8d 201027_02
hgs
parents:
diff changeset
   199
               {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   200
            RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest requestactivate PSM  "));   	
50b444048a8d 201027_02
hgs
parents:
diff changeset
   201
            iDisplayName.append(hbTrId("txt_power_management_dpopinfo_psm_activated_automa"));
50b444048a8d 201027_02
hgs
parents:
diff changeset
   202
            iIcon.append(QString("qtg_large_psm"));
50b444048a8d 201027_02
hgs
parents:
diff changeset
   203
               }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   204
            //else it's a charging indicator then prepare the string and icon accordingly
50b444048a8d 201027_02
hgs
parents:
diff changeset
   205
            else
50b444048a8d 201027_02
hgs
parents:
diff changeset
   206
              {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   207
            RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest requestactivate charging  ") );   	  	
77
hgs
parents: 51
diff changeset
   208
            iDisplayName.append(hbTrId("txt_powermgt_dblist_charging"));
51
50b444048a8d 201027_02
hgs
parents:
diff changeset
   209
            iIcon.append(QString("qtg_mono_flash_charging"));
50b444048a8d 201027_02
hgs
parents:
diff changeset
   210
               }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   211
50b444048a8d 201027_02
hgs
parents:
diff changeset
   212
            
50b444048a8d 201027_02
hgs
parents:
diff changeset
   213
            emit dataChanged();
50b444048a8d 201027_02
hgs
parents:
diff changeset
   214
            handled =  true;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   215
            }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   216
            break;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   217
        case RequestDeactivate:
50b444048a8d 201027_02
hgs
parents:
diff changeset
   218
            {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   219
            RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest requestdeactivate  ") );   	
50b444048a8d 201027_02
hgs
parents:
diff changeset
   220
            // reset data 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   221
            iDisplayName = QString();
50b444048a8d 201027_02
hgs
parents:
diff changeset
   222
            iIcon=QString();
50b444048a8d 201027_02
hgs
parents:
diff changeset
   223
            
50b444048a8d 201027_02
hgs
parents:
diff changeset
   224
            emit deactivate();
50b444048a8d 201027_02
hgs
parents:
diff changeset
   225
            }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   226
            break;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   227
        default:
50b444048a8d 201027_02
hgs
parents:
diff changeset
   228
            break;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   229
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   230
    RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest end  ") );
50b444048a8d 201027_02
hgs
parents:
diff changeset
   231
    return handled;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   232
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   233
50b444048a8d 201027_02
hgs
parents:
diff changeset
   234
77
hgs
parents: 51
diff changeset
   235
void PsmIndicatorPlugin::closeSettingView()
hgs
parents: 51
diff changeset
   236
{   
hgs
parents: 51
diff changeset
   237
    if (mRequest) {
hgs
parents: 51
diff changeset
   238
        delete mRequest;
hgs
parents: 51
diff changeset
   239
        mRequest = NULL;
51
50b444048a8d 201027_02
hgs
parents:
diff changeset
   240
    }
81
676b6116ca93 201041_01
hgs
parents: 77
diff changeset
   241
}