camerauis/cameraxui/cxui/src/cxuierrormanager.cpp
author hgs
Thu, 15 Jul 2010 01:55:05 +0300
changeset 43 0e652f8f1fbd
parent 28 3075d9b614e6
permissions -rw-r--r--
201027_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
     2
* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*/
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
#include <QCoreApplication>
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    19
#include <HbAction>
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    20
#include <HbDialog>
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    21
#include <HbMessageBox>
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    22
#include <HbLabel>
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    23
#include <HbPushButton>
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include "cxutils.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include "cxeerror.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include "cxeengine.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include "cxuienums.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include "cxuierrormanager.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "cxuidocumentloader.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include "cxecameradevicecontrol.h"
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    34
/*!
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    35
* Constructor
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
*/
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    37
CxuiErrorManager::CxuiErrorManager(CxuiDocumentLoader *documentLoader) :
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
    mDocumentLoader(documentLoader),
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
    mErrorMsgPopup(NULL),
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    40
    mErrorId(CxeError::None),
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
    mErrorSeverity(CxuiErrorManager::None)
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
    CX_DEBUG_ENTER_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    47
/*!
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    48
* Destructor
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    49
*/
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
CxuiErrorManager::~CxuiErrorManager()
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
    CX_DEBUG_ENTER_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    57
/*!
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    58
* Check the error code and show either error popup, warning popup or do nothing,
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    59
* if "no error" code is given.
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    60
* @param error Error id. If CxeError::None, no action is taken. Otherwise
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    61
* either warning or error popup is shown based on the severity of error.
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    62
*
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    63
*/
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    64
void CxuiErrorManager::check(CxeError::Id error)
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
    CX_DEBUG_ENTER_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
    mErrorSeverity = CxuiErrorManager::None;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    69
    if (error != CxeError::None) {
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    70
        mErrorId = error;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    71
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    72
        // start evaluating the error.
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    73
        QString errorText;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    74
        QString buttonText;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    75
        getErrorDetails(errorText, buttonText);
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    77
        if (mErrorSeverity != CxuiErrorManager::None) {
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    78
            // Clear the old error if one for some reason exists.
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    79
            clear();
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    80
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    81
            // show the error note to the user.
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    82
            launchPopup(errorText, buttonText);
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    83
        } else {
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    84
            // ignore
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
    85
        }
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
    }
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    91
/*!
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    92
* Close the open error popup.
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    93
*/
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    94
void CxuiErrorManager::clear()
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    95
{
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    96
    CX_DEBUG_ENTER_FUNCTION();
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    97
    if (mErrorMsgPopup) {
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    98
        mErrorMsgPopup->close();
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
    99
        mErrorMsgPopup = NULL;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   100
    }
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   101
    CX_DEBUG_EXIT_FUNCTION();
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   102
}
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   104
/*!
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   105
* Slot that gets called when error note is closed.
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   106
*/
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   107
void CxuiErrorManager::popupClosed(HbAction *action)
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
{
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   109
    Q_UNUSED(action)
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   110
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
    CX_DEBUG_ENTER_FUNCTION();
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   112
    // Dialog or action instance cannot be used anymore.
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   113
    mErrorMsgPopup = NULL;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   114
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
    // handle any use-cases when the error can be recovered
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   116
    emit errorPopupClosed();
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   121
/*!
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   122
* Helper method for closing the application.
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   123
*/
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
void CxuiErrorManager::closeApp()
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
    CX_DEBUG_ENTER_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
    QCoreApplication::quit();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   133
/*!
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   134
* Helper method to get the error message to use for showing note to user,
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   135
* and set the severity level, based on given error code.
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   136
* @param error Error code to be analyzed.
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   137
*/
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   138
void CxuiErrorManager::getErrorDetails(QString &errorText, QString &buttonText)
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
    CX_DEBUG_ENTER_FUNCTION();
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   141
    switch (mErrorId) {
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   142
        case CxeError::MemoryNotAccessible:
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   143
            mErrorSeverity = CxuiErrorManager::Error;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   144
            errorText = hbTrId("txt_cam_info_error_usb_disconnected");
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   145
            buttonText = hbTrId("txt_cam_info_error_usb_disconnected_button");
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   146
            break;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   147
        case CxeError::InUse:
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   148
            mErrorSeverity = CxuiErrorManager::Error;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   149
            errorText = hbTrId("txt_cam_info_camera_already_in_use");
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   150
            buttonText = hbTrId("txt_common_button_close");
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   151
            break;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   152
        case CxeError::DiskFull:
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   153
            mErrorSeverity = CxuiErrorManager::Warning;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   154
            errorText = hbTrId("txt_cam_info_memory_full");
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   155
            break;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   156
        case CxeError::OutOfMemory:
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   157
            mErrorSeverity = CxuiErrorManager::Error;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   158
            errorText = hbTrId("txt_cam_info_error_ram_full");
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   159
            buttonText = hbTrId("txt_common_ok");
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   160
            break;
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
        case CxeError::Died:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
        case CxeError::InitializationFailed:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
        case CxeError::HwNotAvailable:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
        case CxeError::NotReady:
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
        default:
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   166
            mErrorSeverity = CxuiErrorManager::Error;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   167
            errorText = hbTrId("txt_cam_info_error");
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   168
            buttonText = hbTrId("txt_common_button_close");
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
            break;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
    }
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
}
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   174
/*!
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   175
* Show warning or error popup.
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   176
* @param errorText Message to be shown in the popup.
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   177
* @param buttonText Button text to be shown in the action button of the popup. Not used on warning popup.
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   178
*/
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   179
void CxuiErrorManager::launchPopup(const QString &errorText, const QString &buttonText)
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
{
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
    CX_DEBUG_ENTER_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   183
    switch (mErrorSeverity) {
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   184
    case CxuiErrorManager::None:
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   185
        break;
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   186
    case CxuiErrorManager::Warning:
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   187
        showWarningPopup(errorText);
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   188
        break;
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   189
    default:
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   190
        showErrorPopup(errorText, buttonText);
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   191
        break;
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   192
    }
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   193
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   194
    mErrorSeverity = CxuiErrorManager::None;
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   195
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   196
    CX_DEBUG_EXIT_FUNCTION();
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   197
}
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   198
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   199
/*!
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   200
* Show error note for severe error.
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   201
*/
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   202
void CxuiErrorManager::showErrorPopup(const QString &errorText, const QString &buttonText)
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   203
{
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
    // we always prepare the popup for the new message and hence we load the
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
    // popup everytime from document loader
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
    CX_ASSERT_ALWAYS(mDocumentLoader);
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
    bool ok = false;
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
    // Use document loader to create popup
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
    mDocumentLoader->load(CxUiLayout::ERROR_POPUP_XML, &ok);
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
    CX_DEBUG(("mErrorMsgPopup load ok=%d", ok));
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
    mErrorMsgPopup = qobject_cast<HbDialog*>(mDocumentLoader->findWidget(CxUiLayout::ERROR_POPUP));
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   215
    CX_ASSERT_ALWAYS(mErrorMsgPopup);
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   216
    mErrorMsgPopup->setAttribute(Qt::WA_DeleteOnClose, true);
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   217
    mErrorMsgPopup->setTimeout(HbDialog::NoTimeout);
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   219
    // HbDialog's default background item is replaced with black rectangle
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   220
    QGraphicsRectItem *backgroundItem = new QGraphicsRectItem();
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   221
    QBrush blackBrush = QBrush(Qt::black);
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   222
    backgroundItem->setBrush(blackBrush);
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   223
    QGraphicsItem *origBgItem = mErrorMsgPopup->backgroundItem();
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   224
    backgroundItem->setRect(origBgItem->boundingRect());
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   225
    mErrorMsgPopup->setBackgroundItem(backgroundItem);
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
    // color of standby text is set in the code. It cannot be done in docml
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
    HbLabel* label = qobject_cast<HbLabel*>(mDocumentLoader->findWidget(CxUiLayout::ERROR_TEXT_WIDGET));
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
    label->setTextColor(Qt::white);
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   231
    label->setPlainText(errorText);
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
    HbPushButton *exitButton = qobject_cast<HbPushButton*>(mDocumentLoader->findWidget(CxUiLayout::ERROR_BUTTON_WIDGET));
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   234
    if (!buttonText.isEmpty()) {
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
        // inform ui about error recovery
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   236
        exitButton->setText(buttonText);
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   237
        connect(exitButton, SIGNAL(released()), this, SLOT(closeApp()));
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
        exitButton->show();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
    }
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   241
    emit errorPopupShown();
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   242
    mErrorMsgPopup->open(this, SLOT(popupClosed(HbAction*)));
19
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
    CX_DEBUG_EXIT_FUNCTION();
d9aefe59d544 Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
}
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   246
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   247
/*!
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   248
* Show warning note for low severity error.
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   249
*/
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   250
void CxuiErrorManager::showWarningPopup(const QString &errorText)
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   251
{
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   252
    CX_DEBUG_ENTER_FUNCTION();
43
0e652f8f1fbd 201027_1
hgs
parents: 28
diff changeset
   253
    HbMessageBox::warning(errorText);
28
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   254
    CX_DEBUG_EXIT_FUNCTION();
3075d9b614e6 201017_1
hgs
parents: 19
diff changeset
   255
}