screensaver/devicedialogplugins/snsrdevicedialogplugin/src/snsrdevicedialog.cpp
changeset 77 4b195f3bea29
parent 61 2b1b11a301d2
child 92 6727c5d0afc7
equal deleted inserted replaced
61:2b1b11a301d2 77:4b195f3bea29
     1 /*
     1 /*
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    13 *
    13 *
    14 * Description: Default Screensaver runtime.
    14 * Description: Default Screensaver runtime.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include <HbMainWindow>
       
    19 #include <QGraphicsLinearLayout>
    18 #include <QGraphicsLinearLayout>
       
    19 #include <QGraphicsSceneResizeEvent>
    20 #include <QPainter>
    20 #include <QPainter>
    21 #include <QDebug>
    21 #include <QDebug>
       
    22 #include <QServiceManager>
       
    23 #include <QServiceFilter>
       
    24 #include <QServiceInterfaceDescriptor>
       
    25 #include <XQSettingsManager>
       
    26 #include <HbMainWindow>
    22 #include <HbIndicatorInterface>
    27 #include <HbIndicatorInterface>
    23 
    28 
    24 #include <qservicemanager.h>
       
    25 #include <qservicefilter.h>
       
    26 #include <qserviceinterfacedescriptor.h>
       
    27 
       
    28 #include <screensaver.h>
    29 #include <screensaver.h>
    29 
    30 #include <screensaverdomaincrkeys.h>
    30 #include "snsrdevicedialog.h"
    31 #include "snsrdevicedialog.h"
    31 #include <screensaverdomaincrkeys.h>
       
    32 #include <xqsettingsmanager.h> 
       
    33 
       
    34 
    32 
    35 const char *gBigClockInterfaceName = "com.nokia.screensaver.ISnsrBigClockScreensaver";
    33 const char *gBigClockInterfaceName = "com.nokia.screensaver.ISnsrBigClockScreensaver";
    36 
    34 
    37 /*!
    35 /*!
    38     \class SnsrDeviceDialog
    36     \class SnsrDeviceDialog
    41  */
    39  */
    42 
    40 
    43 extern const char *lViewType;
    41 extern const char *lViewType;
    44 
    42 
    45 const char *SnsrDeviceDialog::dataKeyUnlock = "unlock";
    43 const char *SnsrDeviceDialog::dataKeyUnlock = "unlock";
       
    44 const char *SnsrDeviceDialog::dataKeySwitchLights = "switch_lights";
       
    45 const char *SnsrDeviceDialog::dataKeySwitchLowPower = "switch_low_power";
    46 
    46 
    47 QTM_USE_NAMESPACE
    47 QTM_USE_NAMESPACE
    48 
    48 
    49 /*!
    49 /*!
    50     Constructor.
    50     Constructor.
    51     \param viewType Initial view type (active or standby).
    51     \param viewType Initial view type (active or standby).
    52     \param parent Parent.
    52     \param parent Parent.
    53  */
    53  */
    54 SnsrDeviceDialog::SnsrDeviceDialog(const QVariantMap &parameters, QGraphicsItem *parent) :
    54 SnsrDeviceDialog::SnsrDeviceDialog(const QVariantMap &parameters, QGraphicsItem *parent) :
    55         HbPopup(parent) , mScreensaver(0), mLayout(0), m_setManager (0)
    55         HbPopup(parent), 
       
    56         mScreensaver(0), 
       
    57         mLayout(0), 
       
    58         m_setManager(0)
    56 {
    59 {
    57     qDebug("SnsrDeviceDialog::SnsrDeviceDialog()");
    60     qDebug("SnsrDeviceDialog::SnsrDeviceDialog()");
    58 
    61 
    59     
    62     
    60     // load screensaver plugin
    63     // load screensaver plugin
    74     }
    77     }
    75     connect(mScreensaver, SIGNAL(viewChanged(QGraphicsWidget*)),
    78     connect(mScreensaver, SIGNAL(viewChanged(QGraphicsWidget*)),
    76         SLOT(changeView(QGraphicsWidget*)));
    79         SLOT(changeView(QGraphicsWidget*)));
    77     connect(mScreensaver, SIGNAL(faulted()),
    80     connect(mScreensaver, SIGNAL(faulted()),
    78         SLOT(screensaverFaulted()));
    81         SLOT(screensaverFaulted()));
       
    82     connect( mScreensaver, SIGNAL(unlockRequested()),
       
    83         SLOT(requestUnlock()) );
       
    84     connect( mScreensaver, SIGNAL(screenPowerModeRequested(Screensaver::ScreenPowerMode)),
       
    85         SLOT(requestScreenMode(Screensaver::ScreenPowerMode)) );
    79     
    86     
    80     mScreensaver->initialize();
    87     mScreensaver->initialize();
    81 
    88 
    82     setBackgroundItem(0);
    89     setBackgroundItem(0);
    83 
    90 
    84     setDismissPolicy(HbPopup::NoDismiss);
    91     setDismissPolicy(HbPopup::NoDismiss);
    85     setTimeout(HbPopup::NoTimeout);
    92     setTimeout(HbPopup::NoTimeout);
       
    93     
       
    94     mainWindow()->setAutomaticOrientationEffectEnabled(false);
    86 
    95 
    87     setDeviceDialogParameters( parameters );
    96     setDeviceDialogParameters( parameters );
    88     
       
    89     connect( mScreensaver, SIGNAL(unlockRequested()), SLOT(requestUnlock()) );
       
    90 }
    97 }
    91 
    98 
    92 /*!
    99 /*!
    93     Destructor.
   100     Destructor.
    94  */
   101  */
   121         }
   128         }
   122     }
   129     }
   123         
   130         
   124     // Check initial view from repository
   131     // Check initial view from repository
   125     if (viewType == ViewTypeInitial ) {
   132     if (viewType == ViewTypeInitial ) {
   126     XQSettingsManager::Error error;
   133         XQSettingsManager::Error error;
   127         int startupView = 0; 
   134         int startupView = 0; 
   128         XQSettingsKey settingsKey( XQSettingsKey::TargetCentralRepository, 
   135         XQCentralRepositorySettingsKey settingsKey(
   129                  KCRUidScreensaverSettings.iUid, KScreensaverStartupView ); // TUid as same repository used in control panel via Symbian APIs 
   136                  KCRUidScreensaverSettings.iUid, KScreensaverStartupView ); // TUid as same repository used in control panel via Symbian APIs 
   130         m_setManager = new XQSettingsManager(this);
   137         m_setManager = new XQSettingsManager(this);
   131          if (m_setManager) {
   138         if (m_setManager) {
   132             startupView = m_setManager->readItemValue(settingsKey, XQSettingsManager::TypeInt).toUInt();
   139             startupView = m_setManager->readItemValue(settingsKey, XQSettingsManager::TypeInt).toInt();
   133             error = m_setManager->error();
   140             error = m_setManager->error();
   134             if (error == XQSettingsManager::NoError)
   141             if (error == XQSettingsManager::NoError) {
   135                 viewType = startupView;
   142                 viewType = startupView;
       
   143             }
   136             delete m_setManager;
   144             delete m_setManager;
   137          }
   145         }
   138     }
   146     }
   139 
   147 
   140     switch (viewType) {
   148     switch (viewType) {
   141     case SnsrDeviceDialog::ViewTypeActive:
   149     case SnsrDeviceDialog::ViewTypeActive:
   142         mScreensaver->foreground();
   150         mScreensaver->foreground();
   251         setLayout(mLayout);
   259         setLayout(mLayout);
   252     }
   260     }
   253     
   261     
   254     if (mLayout->count()) {
   262     if (mLayout->count()) {
   255         mLayout->removeAt(0);
   263         mLayout->removeAt(0);
   256     }    
   264     }
   257     if (widget) {
   265     if (widget) {
   258         widget->show();
   266         widget->show();
   259         mLayout->addItem(widget);
   267         mLayout->addItem(widget);
   260     }
   268 
       
   269         if ( isVisible() ) {
       
   270            changeLayout( mainWindow()->orientation() );
       
   271         }
       
   272     }
       
   273     
       
   274 
   261 }
   275 }
   262 
   276 
   263 /*!
   277 /*!
   264     Handles faults in loaded screensaver model.
   278     Handles faults in loaded screensaver model.
   265  */
   279  */
   278     Q_UNUSED(orientation)
   292     Q_UNUSED(orientation)
   279     
   293     
   280     QRectF rect = mainWindow()->layoutRect();
   294     QRectF rect = mainWindow()->layoutRect();
   281     setMinimumSize( rect.size() );
   295     setMinimumSize( rect.size() );
   282     setPreferredPos( QPointF(0,0) );
   296     setPreferredPos( QPointF(0,0) );
       
   297     QGraphicsSceneResizeEvent sceneResize;
       
   298     sceneResize.setNewSize( rect.size() );
       
   299     event( &sceneResize );
       
   300     mScreensaver->updateLayout();
   283 }
   301 }
   284 
   302 
   285 /*!
   303 /*!
   286     Send unlock signal to autolock.
   304     Send unlock signal to autolock.
   287  */
   305  */
   289 {
   307 {
   290     QVariantMap data;
   308     QVariantMap data;
   291     data.insert(dataKeyUnlock, 1);
   309     data.insert(dataKeyUnlock, 1);
   292     emit deviceDialogData(data);
   310     emit deviceDialogData(data);
   293 }
   311 }
       
   312 
       
   313 /*!
       
   314     Send low power mode on/off request to autolock.
       
   315  */
       
   316 void SnsrDeviceDialog::requestScreenMode(Screensaver::ScreenPowerMode mode)
       
   317 {
       
   318     /* TEMPORARY FIX for the "black screen jam" bug. To be re-enabled when proper fix is found.
       
   319     QVariantMap data;
       
   320     QVariantList rowLimits;
       
   321     if ( mode == Screensaver::ScreenModeOff ) {
       
   322         data.insert(dataKeySwitchLights, 0);
       
   323         data.insert(dataKeySwitchLowPower, rowLimits); // empty list means "low power off"
       
   324     }
       
   325     else if ( mode == Screensaver::ScreenModeLowPower ) {
       
   326         //data.insert(dataKeySwitchLights, 0);
       
   327         int firstRow;
       
   328         int lastRow;
       
   329         mScreensaver->getActiveScreenRows(&firstRow, &lastRow);
       
   330         rowLimits.append( firstRow );
       
   331         rowLimits.append( lastRow );
       
   332         data.insert(dataKeySwitchLowPower, rowLimits);
       
   333     }
       
   334     else if ( mode == Screensaver::ScreenModeFullPower ) {
       
   335         data.insert(dataKeySwitchLights, 30);
       
   336         data.insert(dataKeySwitchLowPower, rowLimits); // empty list means "low power off"
       
   337     }
       
   338     
       
   339     emit deviceDialogData(data);
       
   340     */
       
   341 }
       
   342 
   294 /*!
   343 /*!
   295     Called when the dialog is created if they are any currently
   344     Called when the dialog is created if they are any currently
   296     activate universal indicators present.
   345     activate universal indicators present.
   297  */
   346  */
   298 void SnsrDeviceDialog::indicatorsActivated(
   347 void SnsrDeviceDialog::indicatorsActivated(