messagingapp/msgui/msgapp/src/draftslistview.cpp
changeset 27 e4592d119491
parent 25 84d9eb65b26f
child 47 5b14749788d7
equal deleted inserted replaced
25:84d9eb65b26f 27:e4592d119491
    41 #include "conversationsenginedefines.h"
    41 #include "conversationsenginedefines.h"
    42 #include "convergedmessage.h"
    42 #include "convergedmessage.h"
    43 #include "convergedmessageid.h"
    43 #include "convergedmessageid.h"
    44 
    44 
    45 // LOCAL CONSTANTS
    45 // LOCAL CONSTANTS
    46 const QString LIST_ITEM_FRAME("qtg_fr_list_normal");
       
    47 const QString POPUP_LIST_FRAME("qtg_fr_popup_list_normal");
    46 const QString POPUP_LIST_FRAME("qtg_fr_popup_list_normal");
    48 const QString NEW_MESSAGE_ICON("qtg_mono_create_message");
    47 const QString NEW_MESSAGE_ICON("qtg_mono_create_message");
    49 const QString SORT_ICON("qtg_mono_sort");
    48 const QString SORT_ICON("qtg_mono_sort");
    50 
    49 
    51 // LOCALIZATION CONSTANTS
    50 // LOCALIZATION CONSTANTS
    73 //---------------------------------------------------------------
    72 //---------------------------------------------------------------
    74 // DraftsListView::DraftsListView
    73 // DraftsListView::DraftsListView
    75 // @see header
    74 // @see header
    76 //---------------------------------------------------------------
    75 //---------------------------------------------------------------
    77 DraftsListView::DraftsListView(QGraphicsItem *parent) :
    76 DraftsListView::DraftsListView(QGraphicsItem *parent) :
    78     MsgBaseView(parent), mListView(0), mViewExtnList(0), mToolBar(0)
    77     MsgBaseView(parent),
       
    78     mListView(0), 
       
    79     mViewExtnList(0),
       
    80     mToolBar(0),
       
    81     mItemLongPressed(false)
    79 {
    82 {
    80     // Delayed loading.
    83     // Delayed loading.
    81     connect(this->mainWindow(), SIGNAL(viewReady()), this, SLOT(doDelayedLoading()));
    84     connect(this->mainWindow(), SIGNAL(viewReady()), this, SLOT(doDelayedLoading()));
    82 }
    85 }
    83 
    86 
   161         mListView->setItemRecycling(true);
   164         mListView->setItemRecycling(true);
   162         mListView->setUniformItemSizes(true);
   165         mListView->setUniformItemSizes(true);
   163         mListView->setClampingStyle(HbScrollArea::BounceBackClamping);
   166         mListView->setClampingStyle(HbScrollArea::BounceBackClamping);
   164 
   167 
   165         // Register the custorm css path.
   168         // Register the custorm css path.
   166         HbStyleLoader::registerFilePath(":/xml/hblistviewitem.css");
   169         HbStyleLoader::registerFilePath(":/dlv");
   167         //    mListView->setLayoutName("custom");
   170         //    mListView->setLayoutName("custom");
   168 
   171 
   169         // Set list item properties.
   172         // Set list item properties.
   170         HbListViewItem *prototype = mListView->listItemPrototype();
   173         HbListViewItem *prototype = mListView->listItemPrototype();
   171         prototype->setGraphicsSize(HbListViewItem::SmallIcon);
   174         prototype->setGraphicsSize(HbListViewItem::SmallIcon);
   172         prototype->setStretchingStyle(HbListViewItem::StretchLandscape);
   175         prototype->setStretchingStyle(HbListViewItem::StretchLandscape);
   173         prototype->setSecondaryTextRowCount(1, 1);
   176         prototype->setSecondaryTextRowCount(1, 1);
   174         HbFrameBackground frame(LIST_ITEM_FRAME, HbFrameDrawer::NinePieces);
       
   175         prototype->setDefaultFrame(frame);
       
   176 
   177 
   177         // Create and set model
   178         // Create and set model
   178         QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
   179         QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
   179         proxyModel->setDynamicSortFilter(true);
   180         proxyModel->setDynamicSortFilter(true);
   180         proxyModel->setSourceModel(ConversationsEngine::instance()->getDraftsModel());
   181         proxyModel->setSourceModel(ConversationsEngine::instance()->getDraftsModel());
   227 
   228 
   228     if (!index.isValid()) {
   229     if (!index.isValid()) {
   229         return;
   230         return;
   230     }
   231     }
   231 
   232 
   232     bool result = HbMessageBox::question(LOC_DELETE_MESSAGE, LOC_BUTTON_DELETE, LOC_BUTTON_CANCEL);
   233     HbMessageBox::question(LOC_DELETE_MESSAGE,
   233 
   234         this,SLOT(onDialogDeleteMsg(HbAction*)),
   234     if (result) {
   235         LOC_BUTTON_DELETE, LOC_BUTTON_CANCEL);
   235         int msgId = index.data(ConvergedMsgId).toInt();
       
   236         QList<int> msgIdList;
       
   237         msgIdList.append(msgId);
       
   238         ConversationsEngine::instance()->deleteMessages(msgIdList);
       
   239     }
       
   240 
   236 
   241 }
   237 }
   242 
   238 
   243 //------------------------------------------------------------------------------
   239 //------------------------------------------------------------------------------
   244 // DraftsListView::deleteAllDraftMessage
   240 // DraftsListView::deleteAllDraftMessage
   245 // @see header
   241 // @see header
   246 //------------------------------------------------------------------------------
   242 //------------------------------------------------------------------------------
   247 void DraftsListView::deleteAllDraftMessage()
   243 void DraftsListView::deleteAllDraftMessage()
   248 {
   244 {
   249     bool result = HbMessageBox::question(LOC_DELETE_ALL_DRAFTS, LOC_BUTTON_DELETE,
   245     HbMessageBox::question(LOC_DELETE_ALL_DRAFTS,
       
   246         this,SLOT(onDialogDeleteAllMessages(HbAction*)),
       
   247         LOC_BUTTON_DELETE,
   250         LOC_BUTTON_CANCEL);
   248         LOC_BUTTON_CANCEL);
   251 
       
   252     if (result) {
       
   253         ConversationsEngine::instance()->deleteAllDraftMessages();
       
   254     }
       
   255 }
   249 }
   256 
   250 
   257 //------------------------------------------------------------------------------
   251 //------------------------------------------------------------------------------
   258 // DraftsListView::createNewMessage
   252 // DraftsListView::createNewMessage
   259 // @see header
   253 // @see header
   271 // DraftsListView::openDraftMessage
   265 // DraftsListView::openDraftMessage
   272 // @see header
   266 // @see header
   273 //------------------------------------------------------------------------------
   267 //------------------------------------------------------------------------------
   274 void DraftsListView::openDraftMessage(const QModelIndex &index)
   268 void DraftsListView::openDraftMessage(const QModelIndex &index)
   275 {
   269 {
       
   270     if(mItemLongPressed)
       
   271         {
       
   272         //reset the flag
       
   273          mItemLongPressed = false;
       
   274          return;
       
   275         }
   276     QVariant msgId = index.data(ConvergedMsgId);
   276     QVariant msgId = index.data(ConvergedMsgId);
   277     QVariant msgType = index.data(MessageType);
   277     QVariant msgType = index.data(MessageType);
   278     ConvergedMessageId convergedMsgId = ConvergedMessageId(msgId.toInt());
   278     ConvergedMessageId convergedMsgId = ConvergedMessageId(msgId.toInt());
   279     ConvergedMessage message;
   279     ConvergedMessage message;
   280     message.setMessageType((ConvergedMessage::MessageType) msgType.toInt());
   280     message.setMessageType((ConvergedMessage::MessageType) msgType.toInt());
   297 // DraftsListView::handleLongPressed
   297 // DraftsListView::handleLongPressed
   298 // @see header
   298 // @see header
   299 //------------------------------------------------------------------------------
   299 //------------------------------------------------------------------------------
   300 void DraftsListView::handleLongPressed(HbAbstractViewItem *item, const QPointF &coords)
   300 void DraftsListView::handleLongPressed(HbAbstractViewItem *item, const QPointF &coords)
   301 {
   301 {
       
   302     mItemLongPressed = true;
   302     if (this->isVisible()) {
   303     if (this->isVisible()) {
   303 
   304 
   304         // Set the current index as tapped items index.
   305         // Set the current index as tapped items index.
   305         mListView->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Select);
   306         mListView->setCurrentIndex(item->modelIndex(), QItemSelectionModel::Select);
   306 
   307 
   307         HbMenu *contextMenu = new HbMenu();
   308         HbMenu *contextMenu = new HbMenu();
   308 
   309         contextMenu->setAttribute(Qt::WA_DeleteOnClose);
   309         // Open
   310         // Open
   310         HbAction* openAction = contextMenu->addAction(LOC_COMMON_OPEN);
   311         HbAction* openAction = contextMenu->addAction(LOC_COMMON_OPEN);
   311         connect(openAction, SIGNAL(triggered()), this, SLOT(openDraftMessage()));
   312         connect(openAction, SIGNAL(triggered()), this, SLOT(openDraftMessage()));
   312 
   313 
   313         // Delete
   314         // Delete
   314         HbAction *deletAction = contextMenu->addAction(LOC_COMMON_DELETE);
   315         HbAction *deletAction = contextMenu->addAction(LOC_COMMON_DELETE);
   315         connect(deletAction, SIGNAL(triggered()), this, SLOT(deleteDraftMessage()));
   316         connect(deletAction, SIGNAL(triggered()), this, SLOT(deleteDraftMessage()));
   316 
   317 
   317         contextMenu->exec(coords);
   318         contextMenu->setPreferredPos(coords);
   318         delete contextMenu;
   319         contextMenu->show();
   319     }
   320     }
   320 }
   321 }
   321 
   322 
   322 //------------------------------------------------------------------------------
   323 //------------------------------------------------------------------------------
   323 // DraftsListView::handleViewExtnActivated
   324 // DraftsListView::handleViewExtnActivated
   351             mainMenu->addAction(LOC_MENU_DELETE_ALL, this, SLOT(deleteAllDraftMessage()));
   352             mainMenu->addAction(LOC_MENU_DELETE_ALL, this, SLOT(deleteAllDraftMessage()));
   352         }
   353         }
   353     }
   354     }
   354 }
   355 }
   355 
   356 
       
   357 //------------------------------------------------------------------------------
       
   358 // DraftsListView::onDialogDeleteMsg
       
   359 // @see header
       
   360 //------------------------------------------------------------------------------
       
   361 void DraftsListView::onDialogDeleteMsg(HbAction* action)
       
   362 {
       
   363     HbMessageBox *dlg = qobject_cast<HbMessageBox*> (sender());
       
   364     if (action == dlg->actions().at(0)) {
       
   365         QModelIndex index = mListView->currentIndex();
       
   366         if (index.isValid()) {
       
   367             int msgId = index.data(ConvergedMsgId).toInt();
       
   368             QList<int> msgIdList;
       
   369             msgIdList.append(msgId);
       
   370             ConversationsEngine::instance()->deleteMessages(msgIdList);
       
   371         }
       
   372 
       
   373     }
       
   374 }
       
   375 
       
   376 //------------------------------------------------------------------------------
       
   377 // DraftsListView::onDialogDeleteMsg
       
   378 // @see header
       
   379 //------------------------------------------------------------------------------
       
   380 void DraftsListView::onDialogDeleteAllMessages(HbAction* action)
       
   381 {
       
   382     HbMessageBox *dlg = qobject_cast<HbMessageBox*> (sender());
       
   383     if (action == dlg->actions().at(0)) {
       
   384         ConversationsEngine::instance()->deleteAllDraftMessages();
       
   385     }
       
   386 }
       
   387 
   356 // EOF
   388 // EOF