homescreenapp/hsutils/src/hsmenudialogfactory.cpp
author hgs
Mon, 20 Sep 2010 10:19:07 +0300
changeset 90 3ac3aaebaee5
parent 63 52b0f64eeb51
child 97 66b5fe3c07fd
permissions -rw-r--r--
201037
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
hgs
parents:
diff changeset
    63
        actionIdentifiers << hbTrId("txt_common_button_ok");
hgs
parents:
diff changeset
    64
        actionIdentifiers << hbTrId("txt_common_button_cancel");
hgs
parents:
diff changeset
    65
        type = HbMessageBox::MessageTypeQuestion;
hgs
parents:
diff changeset
    66
        break;
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
    case Close:
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
        actionIdentifiers << hbTrId("txt_common_button_close");
hgs
parents:
diff changeset
    71
        type = HbMessageBox::MessageTypeInformation;
hgs
parents:
diff changeset
    72
        break;
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
    default:
hgs
parents:
diff changeset
    75
        break;
hgs
parents:
diff changeset
    76
    }
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
    QScopedPointer<HbMessageBox> box(new HbMessageBox(type));
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
    setUpActions(box.data(), actionIdentifiers);
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
    box->setText(text);
hgs
parents:
diff changeset
    83
    box->setAttribute(Qt::WA_DeleteOnClose);
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
    return box.take();
hgs
parents:
diff changeset
    86
}
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
/*!
hgs
parents:
diff changeset
    90
    Destructor.
hgs
parents:
diff changeset
    91
*/
hgs
parents:
diff changeset
    92
HsMenuDialogFactory::~HsMenuDialogFactory() {}
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
/*!
hgs
parents:
diff changeset
    95
    Sets up dialog actions
hgs
parents:
diff changeset
    96
    \param box dialog to operate on.
hgs
parents:
diff changeset
    97
    \param actionIdentifiers list of translation identifiers for actions. Order of
hgs
parents:
diff changeset
    98
    actions in the dialog will reflect the identifiers order in the list.
hgs
parents:
diff changeset
    99
*/
hgs
parents:
diff changeset
   100
void HsMenuDialogFactory::setUpActions(HbMessageBox *box,
hgs
parents:
diff changeset
   101
                                    const QStringList &translationIdentifiers) const
hgs
parents:
diff changeset
   102
{
hgs
parents:
diff changeset
   103
    box->clearActions();
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
    foreach (QString identifier, translationIdentifiers) {
hgs
parents:
diff changeset
   106
        QScopedPointer<HbAction> action(new HbAction(identifier));
hgs
parents:
diff changeset
   107
        action->setParent(box);
hgs
parents:
diff changeset
   108
        box->addAction(action.take());
hgs
parents:
diff changeset
   109
    }
hgs
parents:
diff changeset
   110
}
90
hgs
parents: 63
diff changeset
   111
hgs
parents: 63
diff changeset
   112
int HsMenuDialogFactory::acceptActionIndex()
hgs
parents: 63
diff changeset
   113
{
hgs
parents: 63
diff changeset
   114
    return 0;
hgs
parents: 63
diff changeset
   115
}
hgs
parents: 63
diff changeset
   116
hgs
parents: 63
diff changeset
   117
int HsMenuDialogFactory::rejectActionIndex()
hgs
parents: 63
diff changeset
   118
{
hgs
parents: 63
diff changeset
   119
    return 1;
hgs
parents: 63
diff changeset
   120
}
hgs
parents: 63
diff changeset
   121