phoneplugins/dialerwidgetplugin/src/dialerwidget.cpp
author hgs
Mon, 04 Oct 2010 16:06:10 +0300
changeset 76 cfea66083b62
parent 74 d1c62c765e48
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
bc5a64e5bc3c Revision: 201025
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".
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*/
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
52
hgs
parents: 50
diff changeset
    18
#include <QGraphicsSceneMouseEvent>
hgs
parents: 50
diff changeset
    19
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
#include <HbStyle>
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <HbStyleLoader>
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <HbFrameItem>
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <HbFrameDrawer>
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include <HbIconItem>
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <HbTextItem>
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include <HbTouchArea>
50
hgs
parents: 46
diff changeset
    27
#include <HbInstantFeedback>
74
hgs
parents: 65
diff changeset
    28
#include <HbTapGesture>
hgs
parents: 65
diff changeset
    29
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "dialerwidget.h"
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#ifdef Q_OS_SYMBIAN
74
hgs
parents: 65
diff changeset
    33
    #include "dialerwidgetengine.h"
hgs
parents: 65
diff changeset
    34
    #include "qtphonelog.h"
hgs
parents: 65
diff changeset
    35
    #include <xqappmgr.h>
hgs
parents: 65
diff changeset
    36
    #include <xqservicerequest.h>
hgs
parents: 65
diff changeset
    37
    #include <xqpublishandsubscribeutils.h>
hgs
parents: 65
diff changeset
    38
    #include <xqrequestinfo.h>
hgs
parents: 65
diff changeset
    39
    #include <xqaiwdecl.h>
hgs
parents: 65
diff changeset
    40
#else
hgs
parents: 65
diff changeset
    41
    #define PHONE_TRACE
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
#endif
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
74
hgs
parents: 65
diff changeset
    44
const QLatin1String KDialerWidgetIconNormal("qtg_graf_hs_dialer_normal");
hgs
parents: 65
diff changeset
    45
const QLatin1String KDialerWidgetIconPressed("qtg_graf_hs_dialer_pressed");
hgs
parents: 65
diff changeset
    46
const QLatin1String KDialerWidgetMissedCallBadge("qtg_fr_shortcut_badge_bg");
hgs
parents: 65
diff changeset
    47
const QLatin1String KDialerWidgetWidgetml(":/resource/dialerwidget.widgetml");
hgs
parents: 65
diff changeset
    48
const QLatin1String KDialerWidgetCss(":/resource/dialerwidget.css");
hgs
parents: 65
diff changeset
    49
const QLatin1String KDialerWidgetNormalLayout("normal");
hgs
parents: 65
diff changeset
    50
const QLatin1String KDialerWidgetMissedCallLayout("missed_call");
hgs
parents: 65
diff changeset
    51
const int KDialerWidgetMaxBadgeTextLenght = 2; // displayable
hgs
parents: 65
diff changeset
    52
// update corresponding values also in css side
hgs
parents: 65
diff changeset
    53
const qreal KDialerWidgetNormalSize = 12.0; // unit
hgs
parents: 65
diff changeset
    54
const qreal KDialerWidgetMissedCallSize = 12.75; // unit
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
/*!
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
    \class DialerWidget
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
    \ingroup group_dialerwidgetplugin
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
    \brief Implementation for the homescreen dialer launcher.
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
*/
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
/*!
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
    Constructs dialer widget with given \a parent and given window \a flags.
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
*/
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
DialerWidget::DialerWidget(QGraphicsItem *parent, Qt::WindowFlags flags)
74
hgs
parents: 65
diff changeset
    68
  : HbWidget(parent, flags),
hgs
parents: 65
diff changeset
    69
    m_background(0),
hgs
parents: 65
diff changeset
    70
    m_badgeBackground(0),
hgs
parents: 65
diff changeset
    71
    m_text(0),
hgs
parents: 65
diff changeset
    72
    m_touchArea(0),
52
hgs
parents: 50
diff changeset
    73
    m_engine(0)
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
{   
74
hgs
parents: 65
diff changeset
    75
    PHONE_TRACE
hgs
parents: 65
diff changeset
    76
    createPrimitives();
hgs
parents: 65
diff changeset
    77
hgs
parents: 65
diff changeset
    78
    HbStyleLoader::registerFilePath(KDialerWidgetWidgetml);
hgs
parents: 65
diff changeset
    79
    HbStyleLoader::registerFilePath(KDialerWidgetCss);
hgs
parents: 65
diff changeset
    80
hgs
parents: 65
diff changeset
    81
    setLayout(KDialerWidgetNormalLayout);
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
/*!
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
    Destructor.
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
*/
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
DialerWidget::~DialerWidget()
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
{
74
hgs
parents: 65
diff changeset
    89
    HbStyleLoader::unregisterFilePath(KDialerWidgetWidgetml);
hgs
parents: 65
diff changeset
    90
    HbStyleLoader::unregisterFilePath(KDialerWidgetCss);
hgs
parents: 65
diff changeset
    91
}
hgs
parents: 65
diff changeset
    92
hgs
parents: 65
diff changeset
    93
/*!
hgs
parents: 65
diff changeset
    94
    Lenght of badge text.
hgs
parents: 65
diff changeset
    95
*/
hgs
parents: 65
diff changeset
    96
int DialerWidget::badgeTextLenght() const
hgs
parents: 65
diff changeset
    97
{
hgs
parents: 65
diff changeset
    98
    return m_text->text().length();
hgs
parents: 65
diff changeset
    99
}
hgs
parents: 65
diff changeset
   100
hgs
parents: 65
diff changeset
   101
/*!
hgs
parents: 65
diff changeset
   102
    Layout name.
hgs
parents: 65
diff changeset
   103
*/
hgs
parents: 65
diff changeset
   104
QString DialerWidget::layoutName() const
hgs
parents: 65
diff changeset
   105
{
hgs
parents: 65
diff changeset
   106
    return m_layoutName;
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
/*!
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
    \fn void DialerWidget::startDialer()
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
    Starts dialer widget via view activation service.
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
*/
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
void DialerWidget::startDialer()
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
{
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
    PHONE_TRACE
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
#ifdef Q_OS_SYMBIAN
65
hgs
parents: 60
diff changeset
   118
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
    QList<QVariant> args;
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
    QString service;
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
    QString interface;
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
    QString operation;
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
65
hgs
parents: 60
diff changeset
   124
    service = "logs";
hgs
parents: 60
diff changeset
   125
    interface = XQI_LOGS_VIEW;
hgs
parents: 60
diff changeset
   126
    operation = XQOP_LOGS_SHOW;
hgs
parents: 60
diff changeset
   127
    QVariantMap map;
hgs
parents: 60
diff changeset
   128
    map.insert(XQLOGS_VIEW_INDEX, QVariant(int(XQService::LogsViewAll)));
hgs
parents: 60
diff changeset
   129
    map.insert(XQLOGS_SHOW_DIALPAD, QVariant(true));
hgs
parents: 60
diff changeset
   130
    map.insert(XQLOGS_DIALPAD_TEXT, QVariant(QString()));
hgs
parents: 60
diff changeset
   131
    args.append(QVariant(map));
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
    XQApplicationManager appManager;
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
    QScopedPointer<XQAiwRequest> request(appManager.create(service, interface, operation, false));
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
    if (request == NULL) {
60
hgs
parents: 52
diff changeset
   136
        PHONE_TRACE1("service not found");
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
        return;
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
    }
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
    request->setArguments(args);
74
hgs
parents: 65
diff changeset
   140
    request->setSynchronous(false);
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
    bool ret = request->send();
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
    PHONE_TRACE2("request sent successfully:", ret);
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
#endif
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
void DialerWidget::onInitialize()
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
{
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
    PHONE_TRACE
74
hgs
parents: 65
diff changeset
   150
#ifdef Q_OS_SYMBIAN
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
    QT_TRY{
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
        // Engine construction is 2 phased 
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
        m_engine = new DialerWidgetEngine();
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
        connect(m_engine, SIGNAL( exceptionOccured(const int&) )
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
                ,this, SLOT( onEngineException(const int&) ) );
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
        
74
hgs
parents: 65
diff changeset
   157
        connect( m_engine, SIGNAL(missedCallsCountChanged(const int&)),
hgs
parents: 65
diff changeset
   158
                        this, SLOT(onMissedCallsCountChange(const int&)));
hgs
parents: 65
diff changeset
   159
        
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
        if(!m_engine->initialize()){
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
            //engine construction failed. Give up.
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
            emit error();
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
            return;
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
            }
74
hgs
parents: 65
diff changeset
   165
        }
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
    QT_CATCH(...){
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
        emit error();
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
    }
74
hgs
parents: 65
diff changeset
   169
#endif
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
/*!
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
    \fn void DialerWidget::onShow()
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   174
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
    Shows the widget
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
*/
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   177
void DialerWidget::onShow()
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
{
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
    PHONE_TRACE
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
/*!
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
    \fn void DialerWidget::onHide()
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   185
    Hides the widget
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
*/
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
void DialerWidget::onHide()
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
{
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
    PHONE_TRACE
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
74
hgs
parents: 65
diff changeset
   192
/*!
hgs
parents: 65
diff changeset
   193
    \fn void DialerWidget::onUninitialize()
hgs
parents: 65
diff changeset
   194
hgs
parents: 65
diff changeset
   195
    Uninitializes the widget
hgs
parents: 65
diff changeset
   196
*/
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
void DialerWidget::onUninitialize()
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
{
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
    PHONE_TRACE
76
hgs
parents: 74
diff changeset
   200
    delete m_engine;
hgs
parents: 74
diff changeset
   201
    m_engine = 0;
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
void DialerWidget::onEngineException(const int& exc)
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
{
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
    Q_UNUSED(exc);
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
    emit error();
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
void DialerWidget::onMissedCallsCountChange(const int& count)
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
{
74
hgs
parents: 65
diff changeset
   212
    if (count){
hgs
parents: 65
diff changeset
   213
        QString newText = QLocale::system().toString(count);
hgs
parents: 65
diff changeset
   214
hgs
parents: 65
diff changeset
   215
        if (newText.length()>KDialerWidgetMaxBadgeTextLenght) {
hgs
parents: 65
diff changeset
   216
            newText = QLatin1String("*");
hgs
parents: 65
diff changeset
   217
        }
hgs
parents: 65
diff changeset
   218
hgs
parents: 65
diff changeset
   219
        bool doRepolish = (m_text->text().length() != newText.length());
hgs
parents: 65
diff changeset
   220
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
        m_badgeBackground->setVisible(true);
74
hgs
parents: 65
diff changeset
   222
hgs
parents: 65
diff changeset
   223
        m_text->setText(newText);
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
74
hgs
parents: 65
diff changeset
   225
        m_text->setVisible(true);
hgs
parents: 65
diff changeset
   226
hgs
parents: 65
diff changeset
   227
        if (doRepolish) {
hgs
parents: 65
diff changeset
   228
            repolish();
hgs
parents: 65
diff changeset
   229
        }
50
hgs
parents: 46
diff changeset
   230
74
hgs
parents: 65
diff changeset
   231
        setLayout(KDialerWidgetMissedCallLayout);
52
hgs
parents: 50
diff changeset
   232
    } else {
74
hgs
parents: 65
diff changeset
   233
        m_badgeBackground->setVisible(false);
hgs
parents: 65
diff changeset
   234
hgs
parents: 65
diff changeset
   235
        m_text->setVisible(false);
hgs
parents: 65
diff changeset
   236
hgs
parents: 65
diff changeset
   237
        setLayout(KDialerWidgetNormalLayout);
52
hgs
parents: 50
diff changeset
   238
    }
hgs
parents: 50
diff changeset
   239
}
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
74
hgs
parents: 65
diff changeset
   241
void DialerWidget::gestureEvent(QGestureEvent *event)
50
hgs
parents: 46
diff changeset
   242
{
74
hgs
parents: 65
diff changeset
   243
    HbTapGesture *gesture = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture));
hgs
parents: 65
diff changeset
   244
    if (gesture) {
hgs
parents: 65
diff changeset
   245
        switch (gesture->state()) {
hgs
parents: 65
diff changeset
   246
            case Qt::GestureStarted:
hgs
parents: 65
diff changeset
   247
                setBackgroundToPressed();
hgs
parents: 65
diff changeset
   248
                break;            
hgs
parents: 65
diff changeset
   249
            case Qt::GestureCanceled:
hgs
parents: 65
diff changeset
   250
                setBackgroundToNormal();
hgs
parents: 65
diff changeset
   251
                break;
hgs
parents: 65
diff changeset
   252
            case Qt::GestureFinished:
hgs
parents: 65
diff changeset
   253
                setBackgroundToNormal();
hgs
parents: 65
diff changeset
   254
                if (gesture->tapStyleHint() == HbTapGesture::Tap) {
hgs
parents: 65
diff changeset
   255
                    HbInstantFeedback::play(HbFeedback::Basic);
hgs
parents: 65
diff changeset
   256
                    startDialer();
hgs
parents: 65
diff changeset
   257
                }
hgs
parents: 65
diff changeset
   258
                break;
hgs
parents: 65
diff changeset
   259
            default:
hgs
parents: 65
diff changeset
   260
                break;
hgs
parents: 65
diff changeset
   261
        }
hgs
parents: 65
diff changeset
   262
    }
52
hgs
parents: 50
diff changeset
   263
}
hgs
parents: 50
diff changeset
   264
74
hgs
parents: 65
diff changeset
   265
QRectF DialerWidget::boundingRect() const
52
hgs
parents: 50
diff changeset
   266
{
74
hgs
parents: 65
diff changeset
   267
    return childrenBoundingRect();
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   269
74
hgs
parents: 65
diff changeset
   270
QPainterPath DialerWidget::shape() const
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
{
74
hgs
parents: 65
diff changeset
   272
    QPainterPath path;
hgs
parents: 65
diff changeset
   273
    path.addRect(boundingRect());
hgs
parents: 65
diff changeset
   274
    return path;
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   277
void DialerWidget::createPrimitives()
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   278
{   
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
    // Background
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
    if (!m_background) {
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
        HbFrameDrawer *drawer = new HbFrameDrawer(
52
hgs
parents: 50
diff changeset
   282
            KDialerWidgetIconNormal, HbFrameDrawer::OnePiece);
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
        m_background = new HbFrameItem(drawer, this);
52
hgs
parents: 50
diff changeset
   284
        style()->setItemName(m_background, QLatin1String("background"));
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   285
    }
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
    
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
    // Badge background
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
    if (!m_badgeBackground) {
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
        HbFrameDrawer *badgedrawer = new HbFrameDrawer(
74
hgs
parents: 65
diff changeset
   290
            KDialerWidgetMissedCallBadge, HbFrameDrawer::ThreePiecesHorizontal);
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
        m_badgeBackground = new HbFrameItem(badgedrawer, this);
74
hgs
parents: 65
diff changeset
   292
        style()->setItemName(m_badgeBackground, QLatin1String("badgeBackground"));
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
        m_badgeBackground->setVisible( false );
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
    }
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   295
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
    // Text
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
    if (!m_text) {
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
        m_text = new HbTextItem(this);
74
hgs
parents: 65
diff changeset
   299
        style()->setItemName(m_text, QLatin1String("badgeText"));
hgs
parents: 65
diff changeset
   300
        m_text->setVisible(false);
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
    }
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
74
hgs
parents: 65
diff changeset
   303
    // Touch area
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   304
    if (!m_touchArea) {
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   305
        m_touchArea = new HbTouchArea(this);
74
hgs
parents: 65
diff changeset
   306
        m_touchArea->setFlag(QGraphicsItem::ItemIsFocusable);
hgs
parents: 65
diff changeset
   307
        style()->setItemName(m_touchArea, QLatin1String("touchArea"));
hgs
parents: 65
diff changeset
   308
        setFiltersChildEvents(true);
hgs
parents: 65
diff changeset
   309
        m_touchArea->grabGesture(Qt::TapGesture);
46
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
    }
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
}
bc5a64e5bc3c Revision: 201025
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
52
hgs
parents: 50
diff changeset
   313
void DialerWidget::setBackgroundToNormal()
hgs
parents: 50
diff changeset
   314
{
hgs
parents: 50
diff changeset
   315
    if (m_background) {
hgs
parents: 50
diff changeset
   316
        m_background->frameDrawer().
hgs
parents: 50
diff changeset
   317
            setFrameGraphicsName(KDialerWidgetIconNormal);
hgs
parents: 50
diff changeset
   318
    }
hgs
parents: 50
diff changeset
   319
}
hgs
parents: 50
diff changeset
   320
hgs
parents: 50
diff changeset
   321
void DialerWidget::setBackgroundToPressed()
hgs
parents: 50
diff changeset
   322
{
hgs
parents: 50
diff changeset
   323
    if (m_background) {
hgs
parents: 50
diff changeset
   324
        m_background->frameDrawer().
hgs
parents: 50
diff changeset
   325
            setFrameGraphicsName(KDialerWidgetIconPressed);
hgs
parents: 50
diff changeset
   326
    }
hgs
parents: 50
diff changeset
   327
}
hgs
parents: 50
diff changeset
   328
74
hgs
parents: 65
diff changeset
   329
void DialerWidget::setLayout(const QString& layoutName)
hgs
parents: 65
diff changeset
   330
{
hgs
parents: 65
diff changeset
   331
    if (layoutName==m_layoutName) {
hgs
parents: 65
diff changeset
   332
        return;
hgs
parents: 65
diff changeset
   333
    }
hgs
parents: 65
diff changeset
   334
hgs
parents: 65
diff changeset
   335
    qreal unit = HbDeviceProfile::profile(this).unitValue();
hgs
parents: 65
diff changeset
   336
hgs
parents: 65
diff changeset
   337
    prepareGeometryChange();
hgs
parents: 65
diff changeset
   338
hgs
parents: 65
diff changeset
   339
    if (layoutName==KDialerWidgetMissedCallLayout) {
hgs
parents: 65
diff changeset
   340
        resize(KDialerWidgetMissedCallSize*unit,
hgs
parents: 65
diff changeset
   341
               KDialerWidgetMissedCallSize*unit);
hgs
parents: 65
diff changeset
   342
    } else {
hgs
parents: 65
diff changeset
   343
        resize(KDialerWidgetNormalSize*unit,
hgs
parents: 65
diff changeset
   344
               KDialerWidgetNormalSize*unit);
hgs
parents: 65
diff changeset
   345
    }
hgs
parents: 65
diff changeset
   346
hgs
parents: 65
diff changeset
   347
    m_layoutName = layoutName;
hgs
parents: 65
diff changeset
   348
hgs
parents: 65
diff changeset
   349
    repolish();
hgs
parents: 65
diff changeset
   350
}