homescreenapp/hsutils/src/hsmenudialogfactory.cpp
author hgs
Wed, 06 Oct 2010 16:06:24 +0300
changeset 97 66b5fe3c07fd
parent 90 3ac3aaebaee5
permissions -rw-r--r--
201039_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
63
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Menu Dialog
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include <QString>
hgs
parents:
diff changeset
    19
#include <QStringList>
hgs
parents:
diff changeset
    20
#include <QList>
hgs
parents:
diff changeset
    21
#include <QAction>
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <HbAction>
hgs
parents:
diff changeset
    24
#include <HbMessageBox>
hgs
parents:
diff changeset
    25
#include "hsmenudialogfactory.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
/*!
hgs
parents:
diff changeset
    28
    \class HsMenuDialogFactory
hgs
parents:
diff changeset
    29
    \ingroup group_hsutils
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
    \brief Creates dialog instances for Application Library.
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
    \sa HsMenuEvent
hgs
parents:
diff changeset
    34
*/
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
/*! \enum HsMenuDialogFactory::Options
hgs
parents:
diff changeset
    37
 Describes what actions the dialog will have.
hgs
parents:
diff changeset
    38
 */
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
/*! \var HsMenuDialogFactory::Options HsMenuDialogFactory::OkCancel
hgs
parents:
diff changeset
    41
 Requested dialog should have two actions in the following order: Ok (confirm) and Cancel (reject).
hgs
parents:
diff changeset
    42
 */
hgs
parents:
diff changeset
    43
/*! \var HsMenuDialogFactory::Options HsMenuDialogFactory::Close
hgs
parents:
diff changeset
    44
 Requested dialog should have one action: Close.
hgs
parents:
diff changeset
    45
 */
hgs
parents:
diff changeset
    46
/*!
hgs
parents:
diff changeset
    47
    Creates dialog.
hgs
parents:
diff changeset
    48
    \param text to be displayed in the dialog.
hgs
parents:
diff changeset
    49
    \param options specify dialog actions.
hgs
parents:
diff changeset
    50
    \return requested dialog.
hgs
parents:
diff changeset
    51
*/
hgs
parents:
diff changeset
    52
HbMessageBox *HsMenuDialogFactory::create(const QString &text,
hgs
parents:
diff changeset
    53
                                 Options options) const
hgs
parents:
diff changeset
    54
{
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
    QStringList actionIdentifiers; // head of the list will be first action in dialog
hgs
parents:
diff changeset
    57
    HbMessageBox::MessageBoxType type(HbMessageBox::MessageTypeNone);
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
    switch (options) {
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
    case OkCancel:
hgs
parents:
diff changeset
    62
        actionIdentifiers << hbTrId("txt_common_button_ok");
hgs
parents:
diff changeset
    63
        actionIdentifiers << hbTrId("txt_common_button_cancel");
hgs
parents:
diff changeset
    64
        type = HbMessageBox::MessageTypeQuestion;
hgs
parents:
diff changeset
    65
        break;
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
    case Close:
hgs
parents:
diff changeset
    68
        actionIdentifiers << hbTrId("txt_common_button_close");
hgs
parents:
diff changeset
    69
        type = HbMessageBox::MessageTypeInformation;
hgs
parents:
diff changeset
    70
        break;
hgs
parents:
diff changeset
    71
97
66b5fe3c07fd 201039_01
hgs
parents: 90
diff changeset
    72
    case DeleteCancel:
66b5fe3c07fd 201039_01
hgs
parents: 90
diff changeset
    73
        actionIdentifiers << hbTrId("txt_common_button_delete");
66b5fe3c07fd 201039_01
hgs
parents: 90
diff changeset
    74
        actionIdentifiers << hbTrId("txt_common_button_cancel");
66b5fe3c07fd 201039_01
hgs
parents: 90
diff changeset
    75
        type = HbMessageBox::MessageTypeQuestion;
66b5fe3c07fd 201039_01
hgs
parents: 90
diff changeset
    76
        break;
66b5fe3c07fd 201039_01
hgs
parents: 90
diff changeset
    77
        
63
hgs
parents:
diff changeset
    78
    default:
hgs
parents:
diff changeset
    79
        break;
hgs
parents:
diff changeset
    80
    }
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
    QScopedPointer<HbMessageBox> box(new HbMessageBox(type));
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
    setUpActions(box.data(), actionIdentifiers);
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
    box->setText(text);
hgs
parents:
diff changeset
    87
    box->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
    return box.take();
hgs
parents:
diff changeset
    90
}
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
/*!
hgs
parents:
diff changeset
    94
    Destructor.
hgs
parents:
diff changeset
    95
*/
hgs
parents:
diff changeset
    96
HsMenuDialogFactory::~HsMenuDialogFactory() {}
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
/*!
hgs
parents:
diff changeset
    99
    Sets up dialog actions
hgs
parents:
diff changeset
   100
    \param box dialog to operate on.
hgs
parents:
diff changeset
   101
    \param actionIdentifiers list of translation identifiers for actions. Order of
hgs
parents:
diff changeset
   102
    actions in the dialog will reflect the identifiers order in the list.
hgs
parents:
diff changeset
   103
*/
hgs
parents:
diff changeset
   104
void HsMenuDialogFactory::setUpActions(HbMessageBox *box,
hgs
parents:
diff changeset
   105
                                    const QStringList &translationIdentifiers) const
hgs
parents:
diff changeset
   106
{
hgs
parents:
diff changeset
   107
    box->clearActions();
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
    foreach (QString identifier, translationIdentifiers) {
hgs
parents:
diff changeset
   110
        QScopedPointer<HbAction> action(new HbAction(identifier));
hgs
parents:
diff changeset
   111
        action->setParent(box);
hgs
parents:
diff changeset
   112
        box->addAction(action.take());
hgs
parents:
diff changeset
   113
    }
hgs
parents:
diff changeset
   114
}
90
hgs
parents: 63
diff changeset
   115
hgs
parents: 63
diff changeset
   116
int HsMenuDialogFactory::acceptActionIndex()
hgs
parents: 63
diff changeset
   117
{
hgs
parents: 63
diff changeset
   118
    return 0;
hgs
parents: 63
diff changeset
   119
}
hgs
parents: 63
diff changeset
   120
hgs
parents: 63
diff changeset
   121
int HsMenuDialogFactory::rejectActionIndex()
hgs
parents: 63
diff changeset
   122
{
hgs
parents: 63
diff changeset
   123
    return 1;
hgs
parents: 63
diff changeset
   124
}
hgs
parents: 63
diff changeset
   125