messagingapp/msgui/msgaudiofetcher/src/msgaudiofetcherwidget.cpp
changeset 70 a15d9966050f
parent 61 8ba0afbb4637
child 72 6f657153cbc5
equal deleted inserted replaced
61:8ba0afbb4637 70:a15d9966050f
     1 /*
       
     2  * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of "Eclipse Public License v1.0"
       
     6  * which accompanies this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Nokia Corporation - initial contribution.
       
    11  *
       
    12  * Contributors:
       
    13  *
       
    14  * Description:
       
    15  *     The source file for messaging's audio fetcher widget.
       
    16  *
       
    17  */
       
    18 
       
    19 // SYSTEM INCLUDES
       
    20 #include <HbListView>
       
    21 #include <QModelIndex>
       
    22 #include <QGraphicsLinearLayout>
       
    23 #include <QStandardItemModel>
       
    24 #include <HbLabel>
       
    25 
       
    26 // USER INCLUDES
       
    27 #include "msgaudiofetcherwidget.h"
       
    28 #include "msgaudiofetchermodel.h"
       
    29 #include "msgaudiopreview.h"
       
    30 
       
    31 // LOCALIZED CONSTANTS
       
    32 #define LOC_SELECT_SOUND  hbTrId("txt_messaging_title_select_a_sound")
       
    33 
       
    34 
       
    35 MsgAudioFetcherWidget::MsgAudioFetcherWidget()
       
    36     : HbWidget(NULL),
       
    37       mLabel(0),
       
    38       mListView(0),
       
    39       mLayout(0),
       
    40       mFetcherModel(0),
       
    41       mAudioPreview(0),
       
    42       mSelected(false)
       
    43 {
       
    44     init();
       
    45 }
       
    46 
       
    47 MsgAudioFetcherWidget::~MsgAudioFetcherWidget()
       
    48 {
       
    49 }
       
    50 
       
    51 QString MsgAudioFetcherWidget::getCurrentItemPath()
       
    52 {
       
    53     QModelIndexList modelIndexList = mListView->selectionModel()->selectedIndexes();
       
    54     if(modelIndexList.count() > 0)
       
    55     {
       
    56         QModelIndex index = modelIndexList.at(0);
       
    57         QString temppath = 
       
    58                 mFetcherModel->data(index, Qt::UserRole).toString();
       
    59         return QDir::toNativeSeparators(temppath);
       
    60     }
       
    61     return QString();
       
    62 }
       
    63 
       
    64 void MsgAudioFetcherWidget::playOrPause()
       
    65 {
       
    66     mAudioPreview->SetAttr(getCurrentItemPath());
       
    67     mAudioPreview->Play();
       
    68 }
       
    69 
       
    70 void MsgAudioFetcherWidget::on_list_activated(const QModelIndex &index)
       
    71 {
       
    72     QModelIndexList modelIndexList = mListView->selectionModel()->selectedIndexes();
       
    73 
       
    74     //stop previewing when clicking another item.
       
    75     if (mAudioPreview->IsPlaying()) {
       
    76         mAudioPreview->SetAttr(getCurrentItemPath());
       
    77             mAudioPreview->Play();
       
    78         
       
    79     }
       
    80 
       
    81     /*
       
    82      * when one item is selected, reselecting it will deselect it. selecting another
       
    83      * will also deselect it, while the other is selected.
       
    84      */
       
    85     if(mSelected)
       
    86     {
       
    87         if(mOldSeletedItem != index)
       
    88         {
       
    89             mListView->selectionModel()->select(index, QItemSelectionModel::Select);
       
    90             mOldSeletedItem = index;
       
    91             emit triggerToolBar(true);
       
    92         }
       
    93         else
       
    94         {
       
    95             mListView->selectionModel()->select(index, QItemSelectionModel::Deselect);
       
    96             mSelected = false;
       
    97             emit triggerToolBar(false);
       
    98         }
       
    99         return;
       
   100     }
       
   101 
       
   102     if(modelIndexList.count() > 0)
       
   103     {
       
   104 		QModelIndexList::const_iterator it;
       
   105         for(it=modelIndexList.begin(); it!=modelIndexList.end(); ++it)
       
   106         {
       
   107             if((*it) == index)
       
   108             {
       
   109                 mSelected = true;
       
   110                 mOldSeletedItem = index;
       
   111                 emit triggerToolBar(true);
       
   112             }
       
   113         }
       
   114     }
       
   115 }
       
   116 
       
   117 void MsgAudioFetcherWidget::init()
       
   118 {
       
   119     mLayout = new QGraphicsLinearLayout(this);
       
   120     mLayout->setOrientation(Qt::Vertical);
       
   121     setLayout(mLayout);
       
   122 
       
   123     mLabel = new HbLabel(this);
       
   124     // TODO: need localized string
       
   125     mLabel->setPlainText(LOC_SELECT_SOUND);
       
   126     mLayout->addItem(mLabel);
       
   127 
       
   128     mListView = new HbListView(this);
       
   129     mListView->setObjectName("list");
       
   130     mLayout->addItem(mListView);
       
   131     mListView->setSelectionMode(HbAbstractItemView::SingleSelection);
       
   132 
       
   133     mFetcherModel = new MsgAudioFetcherModel(this);
       
   134     mListView->setModel(mFetcherModel);
       
   135     connect(mListView, SIGNAL(activated(QModelIndex)),
       
   136         this, SLOT(on_list_activated(QModelIndex)));
       
   137     mAudioPreview = new MsgAudioPreview(this);
       
   138 }
       
   139 
       
   140 //End of File