coreapplicationuis/powersaveutilities/psmindicatorplugin/src/psmindicator.cpp
author hgs
Fri, 16 Jul 2010 10:30:52 +0300
changeset 51 50b444048a8d
child 77 b01c07dfcf84
permissions -rw-r--r--
201027_02
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>
50b444048a8d 201027_02
hgs
parents:
diff changeset
    29
50b444048a8d 201027_02
hgs
parents:
diff changeset
    30
50b444048a8d 201027_02
hgs
parents:
diff changeset
    31
Q_EXPORT_PLUGIN(PsmIndicatorPlugin)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    32
const static char IndicatorType[] = "com.nokia.hb.powersavemodeplugin/1.0";
50b444048a8d 201027_02
hgs
parents:
diff changeset
    33
QString KPsm = "PSM";
50b444048a8d 201027_02
hgs
parents:
diff changeset
    34
QString KCharging = "Charging";
50b444048a8d 201027_02
hgs
parents:
diff changeset
    35
50b444048a8d 201027_02
hgs
parents:
diff changeset
    36
PsmIndicatorPlugin::PsmIndicatorPlugin():HbIndicatorInterface(IndicatorType,HbIndicatorInterface::NotificationCategory,InteractionActivated)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    37
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    38
    RDebug::Print( _L("PsmIndicatorPlugin constructor begin  ") );  
50b444048a8d 201027_02
hgs
parents:
diff changeset
    39
    iIndicatorTypes << "com.nokia.hb.powersavemodeplugin/1.0";
50b444048a8d 201027_02
hgs
parents:
diff changeset
    40
    RDebug::Print( _L("PsmIndicatorPlugin constructor end  ")  ); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    41
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    42
50b444048a8d 201027_02
hgs
parents:
diff changeset
    43
PsmIndicatorPlugin::~PsmIndicatorPlugin()
50b444048a8d 201027_02
hgs
parents:
diff changeset
    44
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    45
   RDebug::Print( _L("PsmIndicatorPlugin destructor begin  ")  ); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    46
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    47
50b444048a8d 201027_02
hgs
parents:
diff changeset
    48
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    49
// psmIndicatorPlugin::indicatorTypes
50b444048a8d 201027_02
hgs
parents:
diff changeset
    50
// returns the indicator types handled by this plugin
50b444048a8d 201027_02
hgs
parents:
diff changeset
    51
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    52
50b444048a8d 201027_02
hgs
parents:
diff changeset
    53
QStringList PsmIndicatorPlugin::indicatorTypes() const
50b444048a8d 201027_02
hgs
parents:
diff changeset
    54
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    55
    RDebug::Print( _L("PsmIndicatorPlugin indicatortypes  ")); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    56
    return iIndicatorTypes;
50b444048a8d 201027_02
hgs
parents:
diff changeset
    57
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    58
50b444048a8d 201027_02
hgs
parents:
diff changeset
    59
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    60
// psmIndicatorPlugin::createIndicator
50b444048a8d 201027_02
hgs
parents:
diff changeset
    61
// creates an indicator.
50b444048a8d 201027_02
hgs
parents:
diff changeset
    62
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    63
50b444048a8d 201027_02
hgs
parents:
diff changeset
    64
HbIndicatorInterface* PsmIndicatorPlugin::createIndicator(
50b444048a8d 201027_02
hgs
parents:
diff changeset
    65
        const QString &indicatorType)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    66
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    67
    Q_UNUSED(indicatorType)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    68
    RDebug::Print( _L("PsmIndicatorPlugin createindicator  ") ); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    69
    return this;
50b444048a8d 201027_02
hgs
parents:
diff changeset
    70
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    71
50b444048a8d 201027_02
hgs
parents:
diff changeset
    72
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    73
// psmIndicatorPlugin::error
50b444048a8d 201027_02
hgs
parents:
diff changeset
    74
// returns the error code.
50b444048a8d 201027_02
hgs
parents:
diff changeset
    75
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    76
50b444048a8d 201027_02
hgs
parents:
diff changeset
    77
int PsmIndicatorPlugin::error() const
50b444048a8d 201027_02
hgs
parents:
diff changeset
    78
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    79
    RDebug::Print( _L("PsmIndicatorPlugin error  ") ); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    80
    return mError;
50b444048a8d 201027_02
hgs
parents:
diff changeset
    81
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    82
50b444048a8d 201027_02
hgs
parents:
diff changeset
    83
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    84
// psmIndicatorPlugin::accessAllowed
50b444048a8d 201027_02
hgs
parents:
diff changeset
    85
// check for the access rights of the client. As there are no restrictions for 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    86
// this plugin it always returns true.
50b444048a8d 201027_02
hgs
parents:
diff changeset
    87
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
    88
50b444048a8d 201027_02
hgs
parents:
diff changeset
    89
bool PsmIndicatorPlugin::accessAllowed(const QString &indicatorType,
50b444048a8d 201027_02
hgs
parents:
diff changeset
    90
        const QVariantMap &     securityInfo) const
50b444048a8d 201027_02
hgs
parents:
diff changeset
    91
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
    92
    Q_UNUSED(indicatorType)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    93
    Q_UNUSED(securityInfo)
50b444048a8d 201027_02
hgs
parents:
diff changeset
    94
    
50b444048a8d 201027_02
hgs
parents:
diff changeset
    95
    RDebug::Print( _L("PsmIndicatorPlugin accessallowed  ") ); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
    96
    return true;
50b444048a8d 201027_02
hgs
parents:
diff changeset
    97
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
    98
50b444048a8d 201027_02
hgs
parents:
diff changeset
    99
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   100
// psmIndicator::handleInteraction
50b444048a8d 201027_02
hgs
parents:
diff changeset
   101
// called when the user interacts with the indicator.Enable the interaction 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   102
// for psm enabled and charger connected
50b444048a8d 201027_02
hgs
parents:
diff changeset
   103
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   104
bool PsmIndicatorPlugin::handleInteraction(InteractionType type)
50b444048a8d 201027_02
hgs
parents:
diff changeset
   105
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   106
    bool handled = false;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   107
    RDebug::Print( _L("PsmIndicatorPlugin handleinteraction begin  ")); 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   108
    if (type == InteractionActivated) 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   109
        {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   110
         RDebug::Print( _L("PsmIndicatorPlugin handleinteraction inside interactionactivated  ") );	
50b444048a8d 201027_02
hgs
parents:
diff changeset
   111
         QObject::connect( &iProcess, SIGNAL(error(QProcess::ProcessError)),                       
50b444048a8d 201027_02
hgs
parents:
diff changeset
   112
                                          this, SLOT(processError(QProcess::ProcessError)));
50b444048a8d 201027_02
hgs
parents:
diff changeset
   113
                                          
50b444048a8d 201027_02
hgs
parents:
diff changeset
   114
         // Launch the process to show the view.
50b444048a8d 201027_02
hgs
parents:
diff changeset
   115
         iProcess.start("CpPsmPluginLauncher");
50b444048a8d 201027_02
hgs
parents:
diff changeset
   116
         handled = true;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   117
                        
50b444048a8d 201027_02
hgs
parents:
diff changeset
   118
        }   
50b444048a8d 201027_02
hgs
parents:
diff changeset
   119
    RDebug::Print( _L("PsmIndicatorPlugin handleinteraction end  ") );         
50b444048a8d 201027_02
hgs
parents:
diff changeset
   120
    return handled;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   121
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   122
50b444048a8d 201027_02
hgs
parents:
diff changeset
   123
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   124
// psmIndicator::indicatorData
50b444048a8d 201027_02
hgs
parents:
diff changeset
   125
// returns the name and icon to be displayed in the universal indicator menu.
50b444048a8d 201027_02
hgs
parents:
diff changeset
   126
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   127
QVariant PsmIndicatorPlugin::indicatorData(int role) const
50b444048a8d 201027_02
hgs
parents:
diff changeset
   128
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   129
    RDebug::Print( _L("PsmIndicatorPlugin indicatordata begin  ") );
50b444048a8d 201027_02
hgs
parents:
diff changeset
   130
    switch(role)
50b444048a8d 201027_02
hgs
parents:
diff changeset
   131
        {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   132
        //for displaying the string in indicator.
50b444048a8d 201027_02
hgs
parents:
diff changeset
   133
        case PrimaryTextRole: 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   134
            {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   135
             return iDisplayName;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   136
            }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   137
        //for displaying the icon in indicator.
50b444048a8d 201027_02
hgs
parents:
diff changeset
   138
        case DecorationNameRole:
50b444048a8d 201027_02
hgs
parents:
diff changeset
   139
            {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   140
             return iIcon;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   141
            }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   142
        default: 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   143
            return QVariant();      
50b444048a8d 201027_02
hgs
parents:
diff changeset
   144
        }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   145
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   146
50b444048a8d 201027_02
hgs
parents:
diff changeset
   147
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   148
// psmIndicatorPlugin::handleClientRequest
50b444048a8d 201027_02
hgs
parents:
diff changeset
   149
// this function gets called when client activates plugin
50b444048a8d 201027_02
hgs
parents:
diff changeset
   150
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   151
bool PsmIndicatorPlugin::handleClientRequest( RequestType type, 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   152
        const QVariant &parameter)
50b444048a8d 201027_02
hgs
parents:
diff changeset
   153
    {    
50b444048a8d 201027_02
hgs
parents:
diff changeset
   154
    RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest begin  ") );
50b444048a8d 201027_02
hgs
parents:
diff changeset
   155
    bool handled(false);
50b444048a8d 201027_02
hgs
parents:
diff changeset
   156
    switch (type) 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   157
        {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   158
        case RequestActivate:
50b444048a8d 201027_02
hgs
parents:
diff changeset
   159
            {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   160
            RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest requestactivate  ") );
50b444048a8d 201027_02
hgs
parents:
diff changeset
   161
            // Get the param from the hbindicator.activate() which is called from sysap.
50b444048a8d 201027_02
hgs
parents:
diff changeset
   162
            HbTranslator trans("powermanagement");
50b444048a8d 201027_02
hgs
parents:
diff changeset
   163
            iDisplayName.clear();
50b444048a8d 201027_02
hgs
parents:
diff changeset
   164
            //if it's a PSM indicator then prepare the string and icon accordingly
50b444048a8d 201027_02
hgs
parents:
diff changeset
   165
            if((parameter.operator ==(QString("PSM"))))
50b444048a8d 201027_02
hgs
parents:
diff changeset
   166
               {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   167
            RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest requestactivate PSM  "));   	
50b444048a8d 201027_02
hgs
parents:
diff changeset
   168
            iDisplayName.append(hbTrId("txt_power_management_dpopinfo_psm_activated_automa"));
50b444048a8d 201027_02
hgs
parents:
diff changeset
   169
            iIcon.append(QString("qtg_large_psm"));
50b444048a8d 201027_02
hgs
parents:
diff changeset
   170
               }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   171
            //else it's a charging indicator then prepare the string and icon accordingly
50b444048a8d 201027_02
hgs
parents:
diff changeset
   172
            else
50b444048a8d 201027_02
hgs
parents:
diff changeset
   173
              {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   174
            RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest requestactivate charging  ") );   	  	
50b444048a8d 201027_02
hgs
parents:
diff changeset
   175
            iDisplayName.append(hbTrId("txt_power_management_dblist_charging"));
50b444048a8d 201027_02
hgs
parents:
diff changeset
   176
            iIcon.append(QString("qtg_mono_flash_charging"));
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
            emit dataChanged();
50b444048a8d 201027_02
hgs
parents:
diff changeset
   181
            handled =  true;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   182
            }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   183
            break;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   184
        case RequestDeactivate:
50b444048a8d 201027_02
hgs
parents:
diff changeset
   185
            {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   186
            RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest requestdeactivate  ") );   	
50b444048a8d 201027_02
hgs
parents:
diff changeset
   187
            // reset data 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   188
            iDisplayName = QString();
50b444048a8d 201027_02
hgs
parents:
diff changeset
   189
            iIcon=QString();
50b444048a8d 201027_02
hgs
parents:
diff changeset
   190
            
50b444048a8d 201027_02
hgs
parents:
diff changeset
   191
            emit deactivate();
50b444048a8d 201027_02
hgs
parents:
diff changeset
   192
            }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   193
            break;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   194
        default:
50b444048a8d 201027_02
hgs
parents:
diff changeset
   195
            break;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   196
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   197
    RDebug::Print( _L("PsmIndicatorPlugin handleclientrequest end  ") );
50b444048a8d 201027_02
hgs
parents:
diff changeset
   198
    return handled;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   199
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   200
50b444048a8d 201027_02
hgs
parents:
diff changeset
   201
50b444048a8d 201027_02
hgs
parents:
diff changeset
   202
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   203
// psmIndicator::processError
50b444048a8d 201027_02
hgs
parents:
diff changeset
   204
// handle the error conditions returned by the QProcess.
50b444048a8d 201027_02
hgs
parents:
diff changeset
   205
// ----------------------------------------------------------------------------
50b444048a8d 201027_02
hgs
parents:
diff changeset
   206
50b444048a8d 201027_02
hgs
parents:
diff changeset
   207
void PsmIndicatorPlugin::processError(QProcess::ProcessError err)
50b444048a8d 201027_02
hgs
parents:
diff changeset
   208
    {
50b444048a8d 201027_02
hgs
parents:
diff changeset
   209
    RDebug::Print( _L("PsmIndicatorPlugin processerror begin  "));   		
50b444048a8d 201027_02
hgs
parents:
diff changeset
   210
    switch (err)
50b444048a8d 201027_02
hgs
parents:
diff changeset
   211
        {   
50b444048a8d 201027_02
hgs
parents:
diff changeset
   212
        case QProcess::FailedToStart: 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   213
        case QProcess::Crashed: 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   214
        case QProcess::Timedout: 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   215
        case QProcess::ReadError: 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   216
        case QProcess::WriteError: 
50b444048a8d 201027_02
hgs
parents:
diff changeset
   217
        case QProcess::UnknownError:
50b444048a8d 201027_02
hgs
parents:
diff changeset
   218
             break;  
50b444048a8d 201027_02
hgs
parents:
diff changeset
   219
        default:
50b444048a8d 201027_02
hgs
parents:
diff changeset
   220
            break;
50b444048a8d 201027_02
hgs
parents:
diff changeset
   221
        }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   222
    }
50b444048a8d 201027_02
hgs
parents:
diff changeset
   223
50b444048a8d 201027_02
hgs
parents:
diff changeset
   224