emailuis/nmailui/src/nmmessagesearchlistview.cpp
author hgs
Wed, 15 Sep 2010 12:09:55 +0300
changeset 68 83cc6bae1de8
parent 66 084b5b1f02a7
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
2dc6caa42ec3 Revision: 201017
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".
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
66
hgs
parents: 62
diff changeset
    18
#include "nmuiheaders.h"
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
66
hgs
parents: 62
diff changeset
    20
static const char *NMUI_MESSAGE_SEARCH_VIEW_XML = ":/docml/nmmessagesearchlistview.docml";
hgs
parents: 62
diff changeset
    21
static const char *NMUI_MESSAGE_SEARCH_VIEW = "NmMessageSearchView";
hgs
parents: 62
diff changeset
    22
static const char *NMUI_MESSAGE_SEARCH_MESSAGE_TREE_LIST= "MessageTreeList";
hgs
parents: 62
diff changeset
    23
static const char *NMUI_MESSAGE_SEARCH_PANEL = "SearchPanel";
hgs
parents: 62
diff changeset
    24
static const char *NMUI_MESSAGE_SEARCH_NO_MESSAGES = "MessageNoMessages";
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
66
hgs
parents: 62
diff changeset
    26
static const QString NmSearchListViewProgressButton("progressbutton");
hgs
parents: 62
diff changeset
    27
static const QString NmSearchListViewLineEdit("lineedit");
hgs
parents: 62
diff changeset
    28
hgs
parents: 62
diff changeset
    29
static const QString NmSearchListViewSpinnerAnimation("qtg_anim_mono_loading");
hgs
parents: 62
diff changeset
    30
static const QString NmSearchListViewSpinnerImage("qtg_anim_mono_loading_1");
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
68
hgs
parents: 66
diff changeset
    32
static const QString NmSearchListViewPortrait("portrait");
hgs
parents: 66
diff changeset
    33
static const QString NmSearchListViewLandscape("landscape");
hgs
parents: 66
diff changeset
    34
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
    \class NmMessageSearchListView
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
    \brief The view for searching messages.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
    Class constructor.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
NmMessageSearchListView::NmMessageSearchListView(
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
    NmApplication &application,
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
    NmUiStartParam* startParam,
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
    NmUiEngine &uiEngine,
40
hgs
parents: 23
diff changeset
    49
    NmMessageListModel &msgListModel,
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
    HbDocumentLoader *documentLoader,
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
    QGraphicsItem *parent)
40
hgs
parents: 23
diff changeset
    52
: NmBaseView(startParam, application, parent),
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
  mApplication(application),
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
  mUiEngine(uiEngine),
40
hgs
parents: 23
diff changeset
    55
  mMsgListModel(msgListModel),
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
  mDocumentLoader(documentLoader),
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
  mItemContextMenu(NULL),
66
hgs
parents: 62
diff changeset
    58
  mMessageList(NULL),
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
  mNoMessagesLabel(NULL),
66
hgs
parents: 62
diff changeset
    60
  mSearchPanel(NULL),
hgs
parents: 62
diff changeset
    61
  mLongPressedItem(NULL),
hgs
parents: 62
diff changeset
    62
  mProgressButton(NULL),
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
  mLineEdit(NULL),
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
  mViewReady(false),
66
hgs
parents: 62
diff changeset
    65
  mSearchInProgress(false),
hgs
parents: 62
diff changeset
    66
  mSpinnerIcon(NULL),
hgs
parents: 62
diff changeset
    67
  mAnimationAddedToManger(false),
hgs
parents: 62
diff changeset
    68
  mSelectTextAfterOrientationChange(false),
hgs
parents: 62
diff changeset
    69
  mVkbHost(NULL)
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
{
43
hgs
parents: 40
diff changeset
    71
    NM_FUNCTION;
hgs
parents: 40
diff changeset
    72
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
    loadViewLayout();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
    initTreeView();
66
hgs
parents: 62
diff changeset
    75
hgs
parents: 62
diff changeset
    76
    // Add spinner animation axml to animation manager.
hgs
parents: 62
diff changeset
    77
    HbIconAnimationManager *animationManager = HbIconAnimationManager::global();
hgs
parents: 62
diff changeset
    78
    if (animationManager) {
hgs
parents: 62
diff changeset
    79
        mAnimationAddedToManger =
hgs
parents: 62
diff changeset
    80
            animationManager->addDefinitionFile(NmSearchListViewSpinnerAnimation);
hgs
parents: 62
diff changeset
    81
    }
hgs
parents: 62
diff changeset
    82
hgs
parents: 62
diff changeset
    83
    HbMainWindow *mainWindow = mApplication.mainWindow();
hgs
parents: 62
diff changeset
    84
    connect(mainWindow, SIGNAL(aboutToChangeOrientation()),
hgs
parents: 62
diff changeset
    85
            this, SLOT(orientationAboutToChange()));
hgs
parents: 62
diff changeset
    86
    connect(mainWindow, SIGNAL(orientationChanged(Qt::Orientation)),
hgs
parents: 62
diff changeset
    87
            this, SLOT(orientationChanged()));
hgs
parents: 62
diff changeset
    88
hgs
parents: 62
diff changeset
    89
    mVkbHost = new HbShrinkingVkbHost(this);
hgs
parents: 62
diff changeset
    90
    connect(mVkbHost, SIGNAL(keypadOpened()), this, SLOT(vkbOpened()));
hgs
parents: 62
diff changeset
    91
    connect(mVkbHost, SIGNAL(keypadClosed()), this, SLOT(vkbClosed()));
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
    Class destructor.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
NmMessageSearchListView::~NmMessageSearchListView()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
{
43
hgs
parents: 40
diff changeset
   100
    NM_FUNCTION;
66
hgs
parents: 62
diff changeset
   101
    delete mSpinnerIcon;
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
    delete mDocumentLoader;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
    mWidgetList.clear();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
    if (mItemContextMenu){
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
        mItemContextMenu->clearActions();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
    delete mItemContextMenu;
66
hgs
parents: 62
diff changeset
   111
    delete mVkbHost;
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
    From NmBaseView.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
    Returns the view ID.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
    \return The view ID.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
NmUiViewId NmMessageSearchListView::nmailViewId() const
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
{
43
hgs
parents: 40
diff changeset
   124
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   125
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
    return NmUiViewMessageSearchList;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
    From NmBaseView.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
66
hgs
parents: 62
diff changeset
   133
    Makes necessary activities before view can exit.
hgs
parents: 62
diff changeset
   134
*/
hgs
parents: 62
diff changeset
   135
void NmMessageSearchListView::aboutToExitView()
hgs
parents: 62
diff changeset
   136
{
hgs
parents: 62
diff changeset
   137
    NM_FUNCTION;
hgs
parents: 62
diff changeset
   138
    if (mSearchInProgress) {
hgs
parents: 62
diff changeset
   139
       // Search is in progress - do cancel.
hgs
parents: 62
diff changeset
   140
       mUiEngine.cancelSearch(mStartParam->mailboxId());
hgs
parents: 62
diff changeset
   141
       mSearchInProgress = false;
hgs
parents: 62
diff changeset
   142
    }
hgs
parents: 62
diff changeset
   143
}
hgs
parents: 62
diff changeset
   144
hgs
parents: 62
diff changeset
   145
/*!
hgs
parents: 62
diff changeset
   146
    From NmBaseView.
hgs
parents: 62
diff changeset
   147
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
    Does the lazy loading after the view layout has been loaded.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
void NmMessageSearchListView::viewReady()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
{
43
hgs
parents: 40
diff changeset
   152
    NM_FUNCTION;
68
hgs
parents: 66
diff changeset
   153
hgs
parents: 66
diff changeset
   154
    // Load orientation specific sections.
hgs
parents: 66
diff changeset
   155
    loadOrientationSection();
43
hgs
parents: 40
diff changeset
   156
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
    if (!mViewReady){
68
hgs
parents: 66
diff changeset
   158
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
        // Set the mailbox name to the title pane.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
        setViewTitle();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
        // Refresh the list.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
        QMetaObject::invokeMethod(this, "refreshList", Qt::QueuedConnection);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
66
hgs
parents: 62
diff changeset
   165
        // Undim search field.
hgs
parents: 62
diff changeset
   166
        setSearchInputMode(NmNormalMode);
hgs
parents: 62
diff changeset
   167
hgs
parents: 62
diff changeset
   168
        // Open VKB
hgs
parents: 62
diff changeset
   169
        QMetaObject::invokeMethod(this, "sendSoftwareInputPanelRequest", Qt::QueuedConnection);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
        mViewReady = true;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   174
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   177
    From NmMenuObserver.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
    Handles action commands which are usually given by the user by selecting
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
    menu items.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
    \param actionResponse The command details.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
void NmMessageSearchListView::handleActionCommand(NmActionResponse &actionResponse)
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   185
{
43
hgs
parents: 40
diff changeset
   186
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   187
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
    // Handle options menu commands here.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
    if (actionResponse.menuType() == NmActionOptionsMenu) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
        switch (actionResponse.responseCommand()) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
            case NmActionResponseCommandUpdateMailboxName: {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
                setViewTitle();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
                break;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
            }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
            case NmActionResponseCommandMailboxDeleted: {
40
hgs
parents: 23
diff changeset
   196
                mApplication.prepareForPopView();
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
                break;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
            }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
            default: {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
                break;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
            }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
    }
40
hgs
parents: 23
diff changeset
   204
    // Handle context menu commands here.
hgs
parents: 23
diff changeset
   205
    if (actionResponse.menuType() == NmActionContextMenu) {
hgs
parents: 23
diff changeset
   206
        if (mLongPressedItem){
66
hgs
parents: 62
diff changeset
   207
hgs
parents: 62
diff changeset
   208
            // Hide VKB
hgs
parents: 62
diff changeset
   209
            vkbClosed();
hgs
parents: 62
diff changeset
   210
            sendSoftwareInputPanelRequest(QEvent::CloseSoftwareInputPanel);
hgs
parents: 62
diff changeset
   211
40
hgs
parents: 23
diff changeset
   212
            NmUiStartParam *startParam = new NmUiStartParam(NmUiViewMessageViewer,
43
hgs
parents: 40
diff changeset
   213
                mStartParam->mailboxId(), mLongPressedItem->envelope().folderId(),
40
hgs
parents: 23
diff changeset
   214
                mLongPressedItem->envelope().messageId());
hgs
parents: 23
diff changeset
   215
hgs
parents: 23
diff changeset
   216
            mApplication.enterNmUiView(startParam);
hgs
parents: 23
diff changeset
   217
            mLongPressedItem = NULL;
hgs
parents: 23
diff changeset
   218
       }
hgs
parents: 23
diff changeset
   219
    }
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   222
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
    From NmBaseView.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
    Loads the view layout from the XML file.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
void NmMessageSearchListView::loadViewLayout()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
{
43
hgs
parents: 40
diff changeset
   230
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   231
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
    // Use the document loader to load the view layout.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
    bool ok(false);
66
hgs
parents: 62
diff changeset
   234
    setObjectName(QString(NMUI_MESSAGE_SEARCH_VIEW));
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
    QObjectList objectList;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
    objectList.append(this);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
    // Pass the view to the document loader. Instead of creating a new view, the
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
    // document loader uses this view when the docml file is parsed.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
    if (mDocumentLoader) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   241
        mDocumentLoader->setObjectTree(objectList);
66
hgs
parents: 62
diff changeset
   242
        mWidgetList = mDocumentLoader->load(NMUI_MESSAGE_SEARCH_VIEW_XML, &ok);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
48
10eaf342f539 201025_1
hgs
parents: 43
diff changeset
   245
    if (ok) {
66
hgs
parents: 62
diff changeset
   246
        // Load the search panel
hgs
parents: 62
diff changeset
   247
        mSearchPanel = qobject_cast<HbSearchPanel *>(
hgs
parents: 62
diff changeset
   248
            mDocumentLoader->findWidget(NMUI_MESSAGE_SEARCH_PANEL));
49
00c7ae862740 201025_2
hgs
parents: 48
diff changeset
   249
66
hgs
parents: 62
diff changeset
   250
        if (mSearchPanel) {
hgs
parents: 62
diff changeset
   251
            mSearchPanel->setProgressive(false);
hgs
parents: 62
diff changeset
   252
            mSearchPanel->setCancelEnabled(true);
49
00c7ae862740 201025_2
hgs
parents: 48
diff changeset
   253
66
hgs
parents: 62
diff changeset
   254
            foreach(QGraphicsItem *obj, mSearchPanel->childItems()) {
hgs
parents: 62
diff changeset
   255
                QGraphicsWidget *const widget = static_cast<QGraphicsWidget *>(obj);
hgs
parents: 62
diff changeset
   256
                if (widget) {
hgs
parents: 62
diff changeset
   257
                    QString objectName(widget->objectName());
hgs
parents: 62
diff changeset
   258
                    if (objectName == NmSearchListViewProgressButton) {
hgs
parents: 62
diff changeset
   259
                        mProgressButton = qobject_cast<HbPushButton *>(widget);
hgs
parents: 62
diff changeset
   260
                        mProgressButton->setIcon(HbIcon("qtg_mono_search"));
hgs
parents: 62
diff changeset
   261
                        mProgressButton->setEnabled(false);
hgs
parents: 62
diff changeset
   262
                    }
hgs
parents: 62
diff changeset
   263
                    else if(objectName == NmSearchListViewLineEdit) {
hgs
parents: 62
diff changeset
   264
                        mLineEdit = qobject_cast<HbLineEdit *>(widget);
hgs
parents: 62
diff changeset
   265
                        mLineEdit->setInputMethodHints(Qt::ImhNoPredictiveText);
hgs
parents: 62
diff changeset
   266
                        connect(mLineEdit, SIGNAL(textChanged(const QString &)),
hgs
parents: 62
diff changeset
   267
                                this, SLOT(textChanged(const QString &)));
hgs
parents: 62
diff changeset
   268
                    }
hgs
parents: 62
diff changeset
   269
                }
hgs
parents: 62
diff changeset
   270
            }
49
00c7ae862740 201025_2
hgs
parents: 48
diff changeset
   271
66
hgs
parents: 62
diff changeset
   272
            connect(mSearchPanel, SIGNAL(criteriaChanged(const QString &)),
hgs
parents: 62
diff changeset
   273
                    this, SLOT(toggleSearch()));
49
00c7ae862740 201025_2
hgs
parents: 48
diff changeset
   274
66
hgs
parents: 62
diff changeset
   275
            connect(mSearchPanel, SIGNAL(exitClicked()),
hgs
parents: 62
diff changeset
   276
                    this, SLOT(exitClicked()), Qt::QueuedConnection);
49
00c7ae862740 201025_2
hgs
parents: 48
diff changeset
   277
00c7ae862740 201025_2
hgs
parents: 48
diff changeset
   278
        }
00c7ae862740 201025_2
hgs
parents: 48
diff changeset
   279
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
        // Get the message list widget.
66
hgs
parents: 62
diff changeset
   281
        mMessageList = qobject_cast<HbTreeView *>(
hgs
parents: 62
diff changeset
   282
            mDocumentLoader->findWidget(NMUI_MESSAGE_SEARCH_MESSAGE_TREE_LIST));
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
66
hgs
parents: 62
diff changeset
   284
        if (mMessageList) {
43
hgs
parents: 40
diff changeset
   285
            NM_COMMENT("NmMessageSearchListView: message list widget loaded");
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
            // Set the item prototype.
66
hgs
parents: 62
diff changeset
   288
            mMessageList->setItemPrototype(new NmMessageListViewItem());
43
hgs
parents: 40
diff changeset
   289
hgs
parents: 40
diff changeset
   290
            // Set the list widget properties.
66
hgs
parents: 62
diff changeset
   291
            mMessageList->setItemRecycling(true);
hgs
parents: 62
diff changeset
   292
            mMessageList->contentWidget()->setProperty("indentation", 0);
hgs
parents: 62
diff changeset
   293
            mMessageList->setScrollDirections(Qt::Vertical);
hgs
parents: 62
diff changeset
   294
            mMessageList->setClampingStyle(HbScrollArea::BounceBackClamping);
hgs
parents: 62
diff changeset
   295
            mMessageList->setFrictionEnabled(true);
hgs
parents: 62
diff changeset
   296
            mMessageList->setItemPixmapCacheEnabled(true);
62
hgs
parents: 56
diff changeset
   297
            
43
hgs
parents: 40
diff changeset
   298
            // We want the search results to appear one by one.
66
hgs
parents: 62
diff changeset
   299
            mMessageList->setEnabledAnimations(HbAbstractItemView::Appear &
hgs
parents: 62
diff changeset
   300
                HbAbstractItemView::Expand);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
40
hgs
parents: 23
diff changeset
   303
        // Load the no messages label.
hgs
parents: 23
diff changeset
   304
        mNoMessagesLabel = qobject_cast<HbLabel *>(
66
hgs
parents: 62
diff changeset
   305
            mDocumentLoader->findWidget(NMUI_MESSAGE_SEARCH_NO_MESSAGES));
40
hgs
parents: 23
diff changeset
   306
hgs
parents: 23
diff changeset
   307
        if (mNoMessagesLabel) {
hgs
parents: 23
diff changeset
   308
            NMLOG("NmMessageSearchListView: No messages label loaded.");
66
hgs
parents: 62
diff changeset
   309
            mNoMessagesLabel->setMaximumHeight(0);
40
hgs
parents: 23
diff changeset
   310
        }
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
    else {
43
hgs
parents: 40
diff changeset
   313
        NM_ERROR(1, "NmMessageSearchListView: failed to load widgets from XML");
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   315
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
    Initializes the tree view.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
void NmMessageSearchListView::initTreeView()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
{
43
hgs
parents: 40
diff changeset
   323
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   324
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   325
    // Get the mailbox widget pointer and set the parameters.
66
hgs
parents: 62
diff changeset
   326
    if (mMessageList) {
hgs
parents: 62
diff changeset
   327
        connect(mMessageList, SIGNAL(activated(const QModelIndex &)),
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   328
                this, SLOT(itemActivated(const QModelIndex &)));
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   329
66
hgs
parents: 62
diff changeset
   330
        connect(mMessageList, SIGNAL(longPressed(HbAbstractViewItem*, QPointF)),
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   331
                this, SLOT(showItemContextMenu(HbAbstractViewItem*, QPointF)));
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   332
66
hgs
parents: 62
diff changeset
   333
        mMessageList->setFocus();
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
        mItemContextMenu = new HbMenu();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   335
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   337
    // Clear the previous content if any.
40
hgs
parents: 23
diff changeset
   338
    mMsgListModel.clear();
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   339
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   340
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   343
    Sets the title according to the name of the current mailbox.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   344
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   345
void NmMessageSearchListView::setViewTitle()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   346
{
43
hgs
parents: 40
diff changeset
   347
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   348
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   349
    if (mStartParam){
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   350
        NmMailboxMetaData *meta = mUiEngine.mailboxById(mStartParam->mailboxId());
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   351
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   352
        if (meta){
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   353
            setTitle(meta->name());
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   354
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   355
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   356
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   357
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   360
    Toggles the visiblity between the message list widget and the "no messages"
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   361
    label.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   362
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
    \param visible If true, will display the "no messages" label. If false,
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   364
                   will display the message list widget.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   365
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
void NmMessageSearchListView::noMessagesLabelVisibility(bool visible)
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   367
{
43
hgs
parents: 40
diff changeset
   368
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   369
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   370
    if (visible) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   371
        // Hide the message list widget and display the "no messages" label.
66
hgs
parents: 62
diff changeset
   372
        if (mMessageList) {
hgs
parents: 62
diff changeset
   373
            mMessageList->setMaximumHeight(0);
hgs
parents: 62
diff changeset
   374
            mMessageList->hide();
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   375
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   376
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   377
        if (mNoMessagesLabel && !mNoMessagesLabel->isVisible()) {
66
hgs
parents: 62
diff changeset
   378
            mNoMessagesLabel->setMaximumHeight(QWIDGETSIZE_MAX);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   379
            mNoMessagesLabel->show();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   380
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   382
    else {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   383
        // Hide the "no messages" label and display the message list widget.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
        if (mNoMessagesLabel && mNoMessagesLabel->isVisible()) {
66
hgs
parents: 62
diff changeset
   385
            mNoMessagesLabel->setMaximumHeight(0);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   386
            mNoMessagesLabel->hide();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   388
66
hgs
parents: 62
diff changeset
   389
        if (mMessageList) {
hgs
parents: 62
diff changeset
   390
            mMessageList->setMaximumHeight(QWIDGETSIZE_MAX);
hgs
parents: 62
diff changeset
   391
            mMessageList->show();
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   392
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   395
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
/*!
66
hgs
parents: 62
diff changeset
   398
    Shows no messages label if no matching messages were found.
43
hgs
parents: 40
diff changeset
   399
*/
66
hgs
parents: 62
diff changeset
   400
void NmMessageSearchListView::updateResultView()
43
hgs
parents: 40
diff changeset
   401
{
hgs
parents: 40
diff changeset
   402
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   403
66
hgs
parents: 62
diff changeset
   404
    if (mMsgListModel.rowCount() < 1) {
hgs
parents: 62
diff changeset
   405
        // Display the "no messages".
43
hgs
parents: 40
diff changeset
   406
        noMessagesLabelVisibility(true);
hgs
parents: 40
diff changeset
   407
    }
hgs
parents: 40
diff changeset
   408
}
hgs
parents: 40
diff changeset
   409
hgs
parents: 40
diff changeset
   410
hgs
parents: 40
diff changeset
   411
/*!
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   412
    Sets the mode for the search input.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   414
    \param mode The mode to set.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
void NmMessageSearchListView::setSearchInputMode(NmSearchInputMode mode)
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   417
{
43
hgs
parents: 40
diff changeset
   418
    NM_FUNCTION;
66
hgs
parents: 62
diff changeset
   419
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   420
    if (!mLineEdit) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
        // No line edit widget!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   422
        return;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   423
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   424
66
hgs
parents: 62
diff changeset
   425
    if (mode == NmNormalMode) {
hgs
parents: 62
diff changeset
   426
        mLineEdit->setEnabled(true);
hgs
parents: 62
diff changeset
   427
        mLineEdit->setFocus();
hgs
parents: 62
diff changeset
   428
    }
hgs
parents: 62
diff changeset
   429
    else {
hgs
parents: 62
diff changeset
   430
        mLineEdit->setEnabled(false);
hgs
parents: 62
diff changeset
   431
        mLineEdit->deselect();
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
    From NmBaseView.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   438
    Reloads the view contents with new start parameters. This method is
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   439
    typically used when the view is already open and an external view activation
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   440
    occurs for this same view.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
void NmMessageSearchListView::reloadViewContents(NmUiStartParam *startParam)
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
{
43
hgs
parents: 40
diff changeset
   444
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   445
    
hgs
parents: 40
diff changeset
   446
    if (startParam && startParam->viewId() == NmUiViewMessageSearchList) {
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   447
        // Delete the existing start parameter data.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   448
        delete mStartParam;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   449
        mStartParam = NULL;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   450
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
        // Store the new start parameter data.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   452
        mStartParam = startParam;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   453
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   454
        // Update the model with new parameters.
40
hgs
parents: 23
diff changeset
   455
        mUiEngine.messageListModelForSearch(startParam->mailboxId());
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   456
        refreshList();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   457
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   458
        // Refresh the mailbox name.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   459
        setViewTitle();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   461
    else {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   462
        // Invalid start parameter data! Unused start parameter needs to be
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   463
        // deleted.
43
hgs
parents: 40
diff changeset
   464
        NM_ERROR(1, "NmMessageSearchListView: invalid message list start parameter");
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   465
        delete startParam;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   466
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   468
40
hgs
parents: 23
diff changeset
   469
/*!
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   470
    Displays the item context menu. This method gets called if an item on the
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   471
    list is long pressed.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   472
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   473
void NmMessageSearchListView::showItemContextMenu(
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   474
    HbAbstractViewItem *listViewItem, const QPointF &coords)
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
{
43
hgs
parents: 40
diff changeset
   476
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   477
    
66
hgs
parents: 62
diff changeset
   478
    // Stop search.
hgs
parents: 62
diff changeset
   479
    if (mSearchInProgress) {
hgs
parents: 62
diff changeset
   480
        toggleSearch();
hgs
parents: 62
diff changeset
   481
    }
hgs
parents: 62
diff changeset
   482
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   483
    // Store long press item for later use with response.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   484
    mLongPressedItem = 
40
hgs
parents: 23
diff changeset
   485
        mMsgListModel.data(listViewItem->modelIndex(),
hgs
parents: 23
diff changeset
   486
                           Qt::DisplayRole).value<NmMessageListModelItem*>();
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   487
40
hgs
parents: 23
diff changeset
   488
    if (mItemContextMenu && mLongPressedItem &&
hgs
parents: 23
diff changeset
   489
        mLongPressedItem->itemType() == NmMessageListModelItem::NmMessageItemMessage) {
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   490
        // Clear the previous menu actions.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   491
        mItemContextMenu->clearActions();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   492
        NmUiExtensionManager &extMngr = mApplication.extManager();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   493
        QList<NmAction*> list;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
        // Fetch the menu actions based on the selected item.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   496
        NmMessageEnvelope *envelope = mLongPressedItem->envelopePtr();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   497
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   498
        if (envelope){
40
hgs
parents: 23
diff changeset
   499
            NmActionRequest request(this, NmActionContextMenu,
43
hgs
parents: 40
diff changeset
   500
                NmActionContextViewMessageSearchList, NmActionContextDataMessage,
hgs
parents: 40
diff changeset
   501
                mStartParam->mailboxId(), envelope->folderId(),
hgs
parents: 40
diff changeset
   502
                envelope->messageId(), QVariant::fromValue(envelope));
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   503
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   504
            extMngr.getActions(request, list);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
        for (int i(0); i < list.count(); ++i) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
            mItemContextMenu->addAction(list[i]);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
        }
40
hgs
parents: 23
diff changeset
   510
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   511
        mItemContextMenu->setPreferredPos(coords);
40
hgs
parents: 23
diff changeset
   512
        mItemContextMenu->open();
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   513
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
    Stores the given index and forwards the call to handleSelection(). This
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   519
    method gets called when an item on the list is selected.  
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
    \param index The index of the activated item.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
void NmMessageSearchListView::itemActivated(const QModelIndex &index)
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
{
43
hgs
parents: 40
diff changeset
   525
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   526
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
    mActivatedIndex = index;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
    QMetaObject::invokeMethod(this, "handleSelection", Qt::QueuedConnection);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   530
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   531
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   532
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
    If the selected item is a message, will open the message.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   534
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   535
void NmMessageSearchListView::handleSelection()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   536
{
43
hgs
parents: 40
diff changeset
   537
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   538
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   539
    // Do expand/collapse for title divider items
40
hgs
parents: 23
diff changeset
   540
    NmMessageListModelItem* modelItem = mMsgListModel.data(
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   541
        mActivatedIndex, Qt::DisplayRole).value<NmMessageListModelItem*>();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   542
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   543
    if (modelItem &&
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   544
        modelItem->itemType() == NmMessageListModelItem::NmMessageItemMessage)
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   545
    {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
        if (mSearchInProgress) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   547
            // Stop the search.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   548
            toggleSearch();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   549
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   550
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   551
        // Open the message.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   552
        NmUiStartParam *startParam = new NmUiStartParam(NmUiViewMessageViewer,
43
hgs
parents: 40
diff changeset
   553
            mStartParam->mailboxId(), modelItem->envelope().folderId(),
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   554
            modelItem->envelope().messageId());
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   555
66
hgs
parents: 62
diff changeset
   556
        // Hide VKB
hgs
parents: 62
diff changeset
   557
        vkbClosed();
hgs
parents: 62
diff changeset
   558
        sendSoftwareInputPanelRequest(QEvent::CloseSoftwareInputPanel);
hgs
parents: 62
diff changeset
   559
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
        mApplication.enterNmUiView(startParam);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   561
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   562
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   563
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   564
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   565
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   566
    Displays the message list widtet if not visible and scrolls to the
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   567
    appropriate point on the list.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   568
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   569
void NmMessageSearchListView::itemsAdded(const QModelIndex &parent, int start, int end)
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   570
{
43
hgs
parents: 40
diff changeset
   571
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   572
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   573
    Q_UNUSED(parent);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   574
    Q_UNUSED(end);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
43
hgs
parents: 40
diff changeset
   576
    // The search is an asynchronous operation. If a user stops the search, it
hgs
parents: 40
diff changeset
   577
    // might take a short while before the search is actually stopped and during
hgs
parents: 40
diff changeset
   578
    // this time it is possible that messages matching the search are added.
66
hgs
parents: 62
diff changeset
   579
    // Therefore, update is needed if items are added after the
43
hgs
parents: 40
diff changeset
   580
    // search has been stopped by the user.
hgs
parents: 40
diff changeset
   581
    if (!mSearchInProgress) {
66
hgs
parents: 62
diff changeset
   582
        updateResultView();
43
hgs
parents: 40
diff changeset
   583
    }
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   584
66
hgs
parents: 62
diff changeset
   585
    if (!start && mMessageList) {
hgs
parents: 62
diff changeset
   586
        QList<HbAbstractViewItem*> items = mMessageList->visibleItems();
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   587
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   588
        if (items.count()) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   589
            QModelIndex index = items.at(0)->modelIndex();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   590
43
hgs
parents: 40
diff changeset
   591
            while (index.row() > 0) {
hgs
parents: 40
diff changeset
   592
                QModelIndex previous =
66
hgs
parents: 62
diff changeset
   593
                    mMessageList->modelIterator()->previousIndex(index);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   594
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   595
                if (previous.isValid()) {
66
hgs
parents: 62
diff changeset
   596
                    mMessageList->scrollTo(previous);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   597
                }
43
hgs
parents: 40
diff changeset
   598
hgs
parents: 40
diff changeset
   599
                index = previous;
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   600
            }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   601
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   602
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   603
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   604
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   605
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   606
/*!
43
hgs
parents: 40
diff changeset
   607
    This method gets called when an item is removed from the list. If the
66
hgs
parents: 62
diff changeset
   608
    search has completed (or stopped), the search results needs to be updated.
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   609
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   610
void NmMessageSearchListView::itemsRemoved()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   611
{
43
hgs
parents: 40
diff changeset
   612
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   613
    
hgs
parents: 40
diff changeset
   614
    if (!mSearchInProgress) {
66
hgs
parents: 62
diff changeset
   615
        updateResultView();
40
hgs
parents: 23
diff changeset
   616
    }
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   617
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   618
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   619
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   620
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   621
    Refreshes the search list.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   622
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   623
void NmMessageSearchListView::refreshList()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   624
{
43
hgs
parents: 40
diff changeset
   625
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   626
    
66
hgs
parents: 62
diff changeset
   627
    if (mMessageList) {
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   628
        // Set the model.
66
hgs
parents: 62
diff changeset
   629
        mMessageList->setModel(static_cast<QStandardItemModel*>(&mMsgListModel));
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   630
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   631
        // Connect the signals.
40
hgs
parents: 23
diff changeset
   632
        connect(&mMsgListModel, SIGNAL(rowsInserted(const QModelIndex&, int, int)),
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   633
                this, SLOT(itemsAdded(const QModelIndex&, int, int)), Qt::UniqueConnection);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   634
40
hgs
parents: 23
diff changeset
   635
        connect(&mMsgListModel, SIGNAL(rowsRemoved(const QModelIndex&, int, int)),
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   636
                this, SLOT(itemsRemoved()), Qt::UniqueConnection);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   637
40
hgs
parents: 23
diff changeset
   638
        connect(&mMsgListModel, SIGNAL(setNewParam(NmUiStartParam*)),
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   639
                this, SLOT(reloadViewContents(NmUiStartParam*)), Qt::UniqueConnection);
49
00c7ae862740 201025_2
hgs
parents: 48
diff changeset
   640
    }
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   641
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   642
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   643
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   644
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   645
    Starts and stops the search according to the current status.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   646
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   647
    Starts search: Uses the input given by the user as a search string and
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   648
    starts an asynchronous search. Any previous search results are removed from
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   649
    the search list.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   650
66
hgs
parents: 62
diff changeset
   651
    Stops search: shows no messages label if no matching messages were found.
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   652
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   653
void NmMessageSearchListView::toggleSearch()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   654
{
43
hgs
parents: 40
diff changeset
   655
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   656
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   657
    if (mSearchInProgress) {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   658
        // Search is in progress - do cancel.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   659
        mUiEngine.cancelSearch(mStartParam->mailboxId());
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   660
        handleSearchComplete();
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   661
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   662
    else {
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   663
        // Do start the search.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   664
        mSearchInProgress = true;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   665
    
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   666
        // Clear previous results if any.
40
hgs
parents: 23
diff changeset
   667
        mMsgListModel.clear();
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   668
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   669
        connect(&mUiEngine, SIGNAL(searchComplete()),
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   670
                this, SLOT(handleSearchComplete()), Qt::UniqueConnection);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   671
    
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   672
        // Get the search input and start the search.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   673
        QStringList searchStrings;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   674
66
hgs
parents: 62
diff changeset
   675
        if (mSearchPanel) {
hgs
parents: 62
diff changeset
   676
            searchStrings.append(mSearchPanel->criteria());
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   677
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   678
56
hgs
parents: 49
diff changeset
   679
        // Hide the virtual keyboard
66
hgs
parents: 62
diff changeset
   680
        sendSoftwareInputPanelRequest(QEvent::CloseSoftwareInputPanel);
hgs
parents: 62
diff changeset
   681
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   682
        // Hide the "no messages" label if visible and dim the search input.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   683
        noMessagesLabelVisibility(false);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   684
        setSearchInputMode(NmDimmedMode);
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   685
66
hgs
parents: 62
diff changeset
   686
        // Change "Go" button icon to spinner.
hgs
parents: 62
diff changeset
   687
        if (mProgressButton) {
hgs
parents: 62
diff changeset
   688
            // Create icon if not created yet.
hgs
parents: 62
diff changeset
   689
            if (!mSpinnerIcon) {
hgs
parents: 62
diff changeset
   690
                // Select one picture if animation loading has failed.
hgs
parents: 62
diff changeset
   691
                QString iconName = NmSearchListViewSpinnerImage;
hgs
parents: 62
diff changeset
   692
                if (mAnimationAddedToManger) {
hgs
parents: 62
diff changeset
   693
                    iconName = NmSearchListViewSpinnerAnimation;
hgs
parents: 62
diff changeset
   694
                }
hgs
parents: 62
diff changeset
   695
                mSpinnerIcon = new HbIcon(iconName);
hgs
parents: 62
diff changeset
   696
                mSpinnerIcon->setFlags(HbIcon::Colorized);
hgs
parents: 62
diff changeset
   697
            }
hgs
parents: 62
diff changeset
   698
            mProgressButton->setIcon(*mSpinnerIcon);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   699
        }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   700
66
hgs
parents: 62
diff changeset
   701
        // Start search
hgs
parents: 62
diff changeset
   702
        mUiEngine.search(mStartParam->mailboxId(), searchStrings);
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   703
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   704
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   705
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   706
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   707
/*!
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   708
    If the search matched any messages, displays the search result count in the
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   709
    info label. If no messages were found, the method displays the "no messages"
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   710
    label. In either case, the search panel is updated.
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   711
*/
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   712
void NmMessageSearchListView::handleSearchComplete()
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   713
{
43
hgs
parents: 40
diff changeset
   714
    NM_FUNCTION;
hgs
parents: 40
diff changeset
   715
    
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   716
    mSearchInProgress = false;
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   717
    
66
hgs
parents: 62
diff changeset
   718
    // Change search button icon to magnifying glass.
hgs
parents: 62
diff changeset
   719
    if (mProgressButton) {
hgs
parents: 62
diff changeset
   720
        mProgressButton->setIcon(HbIcon("qtg_mono_search"));
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   721
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   722
66
hgs
parents: 62
diff changeset
   723
    // Update result view. Shows no message label if no matching messages were found.
hgs
parents: 62
diff changeset
   724
    updateResultView();
hgs
parents: 62
diff changeset
   725
hgs
parents: 62
diff changeset
   726
    // Undim the search input.
hgs
parents: 62
diff changeset
   727
    setSearchInputMode(NmNormalMode);
hgs
parents: 62
diff changeset
   728
hgs
parents: 62
diff changeset
   729
    // In no matching messages were found. Show no messages label and open VKB.
hgs
parents: 62
diff changeset
   730
    if (mMsgListModel.rowCount() < 1) {
hgs
parents: 62
diff changeset
   731
        noMessagesLabelVisibility(true);
hgs
parents: 62
diff changeset
   732
hgs
parents: 62
diff changeset
   733
        sendSoftwareInputPanelRequest(QEvent::RequestSoftwareInputPanel);
43
hgs
parents: 40
diff changeset
   734
66
hgs
parents: 62
diff changeset
   735
        // Select text
hgs
parents: 62
diff changeset
   736
        mLineEdit->selectAll();
hgs
parents: 62
diff changeset
   737
    }
hgs
parents: 62
diff changeset
   738
}
hgs
parents: 62
diff changeset
   739
hgs
parents: 62
diff changeset
   740
/*!
hgs
parents: 62
diff changeset
   741
    By default search button is disabled but when some text is
hgs
parents: 62
diff changeset
   742
    written to search field, the search button is enabled. When search field is
hgs
parents: 62
diff changeset
   743
    erased, button is disabled.
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   744
66
hgs
parents: 62
diff changeset
   745
    \param text chaged text.
hgs
parents: 62
diff changeset
   746
*/
hgs
parents: 62
diff changeset
   747
void NmMessageSearchListView::textChanged(const QString &text)
hgs
parents: 62
diff changeset
   748
{
hgs
parents: 62
diff changeset
   749
    NM_FUNCTION;
hgs
parents: 62
diff changeset
   750
hgs
parents: 62
diff changeset
   751
    if (!text.isEmpty()) {
hgs
parents: 62
diff changeset
   752
        if (!mProgressButton->isEnabled()) {
hgs
parents: 62
diff changeset
   753
            mProgressButton->setEnabled(true);
hgs
parents: 62
diff changeset
   754
        }
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   755
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   756
    else {
66
hgs
parents: 62
diff changeset
   757
        if (mProgressButton->isEnabled()) {
hgs
parents: 62
diff changeset
   758
            mProgressButton->setEnabled(false);
hgs
parents: 62
diff changeset
   759
        }
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   760
    }
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   761
}
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   762
66
hgs
parents: 62
diff changeset
   763
/*!
hgs
parents: 62
diff changeset
   764
    When exit button is clicked, trigger back navigation action
hgs
parents: 62
diff changeset
   765
    which closes the search view.
hgs
parents: 62
diff changeset
   766
*/
hgs
parents: 62
diff changeset
   767
void NmMessageSearchListView::exitClicked()
hgs
parents: 62
diff changeset
   768
{
hgs
parents: 62
diff changeset
   769
    NM_FUNCTION;
hgs
parents: 62
diff changeset
   770
hgs
parents: 62
diff changeset
   771
    navigationAction()->activate(QAction::Trigger);
hgs
parents: 62
diff changeset
   772
}
hgs
parents: 62
diff changeset
   773
hgs
parents: 62
diff changeset
   774
/*!
hgs
parents: 62
diff changeset
   775
    Called before orientation chages. Checks if search criteria text
hgs
parents: 62
diff changeset
   776
    needs to be selected after the orientation has changed.
hgs
parents: 62
diff changeset
   777
*/
hgs
parents: 62
diff changeset
   778
void NmMessageSearchListView::orientationAboutToChange()
hgs
parents: 62
diff changeset
   779
{
hgs
parents: 62
diff changeset
   780
    NM_FUNCTION;
hgs
parents: 62
diff changeset
   781
hgs
parents: 62
diff changeset
   782
    HbVkbHostBridge *instance = HbVkbHostBridge::instance();
hgs
parents: 62
diff changeset
   783
    if (instance &&
hgs
parents: 62
diff changeset
   784
        instance->keypadStatus() == HbVkbHost::HbVkbStatusOpened &&
hgs
parents: 62
diff changeset
   785
        mLineEdit &&
hgs
parents: 62
diff changeset
   786
        mLineEdit->hasSelectedText()) {
hgs
parents: 62
diff changeset
   787
        mSelectTextAfterOrientationChange = true;
hgs
parents: 62
diff changeset
   788
    }
hgs
parents: 62
diff changeset
   789
}
hgs
parents: 62
diff changeset
   790
hgs
parents: 62
diff changeset
   791
/*!
hgs
parents: 62
diff changeset
   792
    Called when orientation has changed. Selects search criteria text if needed.
hgs
parents: 62
diff changeset
   793
    \sa  NmMessageSearchListView::orientationAboutToChange()
hgs
parents: 62
diff changeset
   794
*/
hgs
parents: 62
diff changeset
   795
void NmMessageSearchListView::orientationChanged()
hgs
parents: 62
diff changeset
   796
{
hgs
parents: 62
diff changeset
   797
    NM_FUNCTION;
68
hgs
parents: 66
diff changeset
   798
hgs
parents: 66
diff changeset
   799
    loadOrientationSection();
hgs
parents: 66
diff changeset
   800
66
hgs
parents: 62
diff changeset
   801
    if (mSelectTextAfterOrientationChange) {
hgs
parents: 62
diff changeset
   802
        mLineEdit->selectAll();
hgs
parents: 62
diff changeset
   803
        mSelectTextAfterOrientationChange = false;
hgs
parents: 62
diff changeset
   804
    }
hgs
parents: 62
diff changeset
   805
hgs
parents: 62
diff changeset
   806
}
hgs
parents: 62
diff changeset
   807
hgs
parents: 62
diff changeset
   808
/*!
hgs
parents: 62
diff changeset
   809
    Sends event to software input panel (VKB).
hgs
parents: 62
diff changeset
   810
hgs
parents: 62
diff changeset
   811
    Used event types:
hgs
parents: 62
diff changeset
   812
    QEvent::RequestSoftwareInputPanel(opens VKB)
hgs
parents: 62
diff changeset
   813
    QEvent::CloseSoftwareInputPanel(closes VKB)
hgs
parents: 62
diff changeset
   814
*/
hgs
parents: 62
diff changeset
   815
void NmMessageSearchListView::sendSoftwareInputPanelRequest(QEvent::Type eventType)
hgs
parents: 62
diff changeset
   816
{
hgs
parents: 62
diff changeset
   817
    NM_FUNCTION;
hgs
parents: 62
diff changeset
   818
hgs
parents: 62
diff changeset
   819
    QInputContext *ic = qApp->inputContext();
hgs
parents: 62
diff changeset
   820
    if (ic) {
hgs
parents: 62
diff changeset
   821
        QScopedPointer<QEvent> event(new QEvent(eventType));
hgs
parents: 62
diff changeset
   822
        ic->filterEvent(event.data());
hgs
parents: 62
diff changeset
   823
    }
hgs
parents: 62
diff changeset
   824
}
hgs
parents: 62
diff changeset
   825
hgs
parents: 62
diff changeset
   826
/*!
hgs
parents: 62
diff changeset
   827
    Called when virtual keyboard is about to open.
hgs
parents: 62
diff changeset
   828
*/
hgs
parents: 62
diff changeset
   829
void NmMessageSearchListView::vkbOpened()
hgs
parents: 62
diff changeset
   830
{
hgs
parents: 62
diff changeset
   831
    NM_FUNCTION;
hgs
parents: 62
diff changeset
   832
hgs
parents: 62
diff changeset
   833
    setContentFullScreen(true);
hgs
parents: 62
diff changeset
   834
    hideItems(Hb::ToolBarItem);
hgs
parents: 62
diff changeset
   835
}
hgs
parents: 62
diff changeset
   836
hgs
parents: 62
diff changeset
   837
/*!
hgs
parents: 62
diff changeset
   838
    Called when virtual keyboard is about to close.
hgs
parents: 62
diff changeset
   839
*/
hgs
parents: 62
diff changeset
   840
void NmMessageSearchListView::vkbClosed()
hgs
parents: 62
diff changeset
   841
{
hgs
parents: 62
diff changeset
   842
    NM_FUNCTION;
hgs
parents: 62
diff changeset
   843
hgs
parents: 62
diff changeset
   844
    setContentFullScreen(false);
hgs
parents: 62
diff changeset
   845
    showItems(Hb::ToolBarItem);
hgs
parents: 62
diff changeset
   846
}
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   847
68
hgs
parents: 66
diff changeset
   848
/*!
hgs
parents: 66
diff changeset
   849
    Loads orientation specific sections from docml.
hgs
parents: 66
diff changeset
   850
*/
hgs
parents: 66
diff changeset
   851
void NmMessageSearchListView::loadOrientationSection()
hgs
parents: 66
diff changeset
   852
{
hgs
parents: 66
diff changeset
   853
    QString sectionName(NmSearchListViewPortrait);
hgs
parents: 66
diff changeset
   854
    if (mApplication.mainWindow()->orientation() == Qt::Horizontal) {
hgs
parents: 66
diff changeset
   855
        sectionName = NmSearchListViewLandscape;
hgs
parents: 66
diff changeset
   856
    }
hgs
parents: 66
diff changeset
   857
hgs
parents: 66
diff changeset
   858
    mDocumentLoader->load(NMUI_MESSAGE_SEARCH_VIEW_XML, sectionName);
hgs
parents: 66
diff changeset
   859
}
hgs
parents: 66
diff changeset
   860
23
2dc6caa42ec3 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   861
// End of file.