messagingapp/msgui/conversationview/src/msgconversationbaseview.cpp
changeset 37 518b245aa84c
parent 25 84d9eb65b26f
child 38 4e4b6adb1024
equal deleted inserted replaced
25:84d9eb65b26f 37:518b245aa84c
    27 
    27 
    28 #include <cntservicescontact.h>
    28 #include <cntservicescontact.h>
    29 #include <qtcontactsglobal.h>
    29 #include <qtcontactsglobal.h>
    30 #include <qtcontacts.h>
    30 #include <qtcontacts.h>
    31 #include <ccsdefs.h>
    31 #include <ccsdefs.h>
       
    32 #include <XQSettingsManager>
       
    33 #include <QTimer>
    32 
    34 
    33 // USER INCLUDES
    35 // USER INCLUDES
    34 #include "msgconversationview.h"
    36 #include "msgconversationview.h"
    35 #include "conversationsengine.h"
    37 #include "conversationsengine.h"
    36 #include "msgviewdefines.h"
    38 #include "msgviewdefines.h"
    37 #include "conversationsenginedefines.h"
    39 #include "conversationsenginedefines.h"
    38 #include "msgcontactcardwidget.h"
    40 #include "msgcontactcardwidget.h"
       
    41 #include "conversationidpsconsts.h"
    39 
    42 
    40 QTM_USE_NAMESPACE
    43 QTM_USE_NAMESPACE
       
    44 
       
    45 const int INVALID_MSGID = -1;
       
    46 const int INVALID_CONVID = -1;
    41 
    47 
    42 // LOCALIZATION
    48 // LOCALIZATION
    43 #define LOC_SAVED_TO_DRAFTS    hbTrId("txt_messaging_dpopinfo_saved_to_drafts")
    49 #define LOC_SAVED_TO_DRAFTS    hbTrId("txt_messaging_dpopinfo_saved_to_drafts")
    44 
    50 
    45 //---------------------------------------------------------------
    51 //---------------------------------------------------------------
    46 // MsgConversationBaseView::MsgConversationBaseView
    52 // MsgConversationBaseView::MsgConversationBaseView
    47 // Constructor
    53 // Constructor
    48 //---------------------------------------------------------------
    54 //---------------------------------------------------------------
    49 MsgConversationBaseView::MsgConversationBaseView(QGraphicsItem* parent) :
    55 MsgConversationBaseView::MsgConversationBaseView(QGraphicsItem* parent) :
    50 MsgBaseView(parent),
    56     MsgBaseView(parent), mConversationId(-1), mCVIdkey(XQSettingsKey::TargetPublishAndSubscribe,
    51 mConversationView(NULL),
    57         KMsgCVIdProperty, KMsgCVIdKey)
    52 mConversationId(-1)
    58 {
    53 { 
    59     connect(this->mainWindow(), SIGNAL(viewReady()), this, SLOT(doDelayedConstruction()));
    54     connect(this->mainWindow(),SIGNAL(viewReady()),this,SLOT(doDelayedConstruction()));   
       
    55     initView();
    60     initView();
    56 }
    61 }
    57 
    62 
    58 //---------------------------------------------------------------
    63 //---------------------------------------------------------------
    59 // MsgConversationBaseView::~MsgConversationBaseView
    64 // MsgConversationBaseView::~MsgConversationBaseView
    60 // Destructor
    65 // Destructor
    61 //---------------------------------------------------------------
    66 //---------------------------------------------------------------
    62 MsgConversationBaseView::~MsgConversationBaseView()
    67 MsgConversationBaseView::~MsgConversationBaseView()
    63 {   
    68 {
    64 }
    69 }
    65 
    70 
    66 //---------------------------------------------------------------
    71 //---------------------------------------------------------------
    67 // MsgConversationBaseView::openConversationView
    72 // MsgConversationBaseView::openConversationView
    68 // Launches conversation view for entry id and mode
    73 // Launches conversation view for entry id and mode
    69 //---------------------------------------------------------------
    74 //---------------------------------------------------------------
    70 void MsgConversationBaseView::openConversation(qint64 convId)
    75 void MsgConversationBaseView::openConversation(qint64 convId)
    71 {
    76 {
    72     ConversationsEngine::instance()->getConversations(convId);
    77     ConversationsEngine::instance()->getConversations(convId);
    73     mConversationId = convId;
    78     mConversationId = convId;
    74     connect(this->mainWindow(),SIGNAL(viewReady()),this,SLOT(doDelayedConstruction()));
    79     connect(this->mainWindow(), SIGNAL(viewReady()), this, SLOT(doDelayedConstruction()));
    75     
    80 
    76     if(mConversationView)
    81     // publsih conversation id
    77         {
    82     mSettingsManager->writeItemValue(mCVIdkey, (int) mConversationId);
       
    83 
       
    84     if (mConversationView) {
    78         mConversationView->refreshView();
    85         mConversationView->refreshView();
    79         }
    86     }
    80 }
    87 }
    81 
    88 
    82 //---------------------------------------------------------------
    89 //---------------------------------------------------------------
    83 // MsgConversationBaseView::initView
    90 // MsgConversationBaseView::initView
    84 // create and initialise the conversationview
    91 // create and initialise the conversationview
    85 //---------------------------------------------------------------
    92 //---------------------------------------------------------------
    86 void MsgConversationBaseView::initView()
    93 void MsgConversationBaseView::initView()
    87     {
    94 {
    88     
    95 
    89     // Create header widget
    96     // Create header widget
    90     mContactCard = new MsgContactCardWidget(this);
    97     mContactCard = new MsgContactCardWidget(this);
    91 
    98 
    92     mMainLayout = new QGraphicsLinearLayout(Qt::Vertical);
    99     mMainLayout = new QGraphicsLinearLayout(Qt::Vertical);
    93 
   100 
    94     qreal spacing = HbDeviceProfile::profile(this).unitValue();
   101     qreal spacing = HbDeviceProfile::profile(this).unitValue();
    95     mMainLayout->setSpacing(spacing);
   102     mMainLayout->setSpacing(spacing);
    96     mMainLayout->setContentsMargins(CONTENT_MARGIN, CONTENT_MARGIN,
   103     mMainLayout->setContentsMargins(CONTENT_MARGIN, CONTENT_MARGIN, CONTENT_MARGIN, CONTENT_MARGIN);
    97                                    CONTENT_MARGIN, CONTENT_MARGIN);
       
    98 
   104 
    99     mMainLayout->addItem(mContactCard);
   105     mMainLayout->addItem(mContactCard);
       
   106     connect(mContactCard, SIGNAL(conversationIdChanged(qint64)), this,
       
   107         SLOT(handleConversationIdChange(qint64)));
   100 
   108 
   101     /**
   109     /**
   102      * Create conversation view and connect to proper signals.
   110      * Create conversation view and connect to proper signals.
   103      * NOTE: contactCardWidget is NOT parent of MsgConversationView.
   111      * NOTE: contactCardWidget is NOT parent of MsgConversationView.
   104      * Just passing reference to MsgConversationView.
   112      * Just passing reference to MsgConversationView.
   105      */
   113      */
   106     mConversationView = new MsgConversationView(mContactCard);
   114     mConversationView = new MsgConversationView(mContactCard);
   107 
   115 
   108     mConversationView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
   116     mConversationView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
   109 
   117 
   110     connect(mConversationView, SIGNAL(closeConversationView()),
   118     connect(mConversationView, SIGNAL(closeConversationView()), this, SLOT(closeConversationView()));
   111             this, SLOT(closeConversationView()));
   119 
   112 
   120     connect(mConversationView, SIGNAL(replyStarted()), this, SLOT(markMessagesAsRead()));
   113     connect(mConversationView,SIGNAL(replyStarted()),
   121 
   114             this,SLOT(markMessagesAsRead()));
   122     connect(mConversationView, SIGNAL(switchView(const QVariantList&)), this,
   115 
   123         SIGNAL(switchView(const QVariantList&)));
   116     connect(mConversationView, SIGNAL(switchView(const QVariantList&)),
   124 
   117             this, SIGNAL(switchView(const QVariantList&)));
   125     connect(mConversationView, SIGNAL(vkbOpened(bool)), this, SLOT(hideChrome(bool)));
   118     
   126     connect(mConversationView, SIGNAL(vkbOpened(bool)), mContactCard, SLOT(ignoreSignals(bool)));
   119     connect(mConversationView,SIGNAL(hideChrome(bool)),this,SLOT(hideChrome(bool)));
       
   120 
   127 
   121     this->setMenu(mConversationView->menu());
   128     this->setMenu(mConversationView->menu());
   122 
   129 
   123     mMainLayout->addItem(mConversationView);
   130     mMainLayout->addItem(mConversationView);
   124 
   131 
   125     this->setLayout(mMainLayout);
   132     this->setLayout(mMainLayout);
       
   133 
       
   134     mSettingsManager = new XQSettingsManager(this);
   126 
   135 
   127 }
   136 }
   128 
   137 
   129 //---------------------------------------------------------------
   138 //---------------------------------------------------------------
   130 // MsgConversationBaseView::closeConversationView
   139 // MsgConversationBaseView::closeConversationView
   131 // close conversation view
   140 // close conversation view
   132 //---------------------------------------------------------------
   141 //---------------------------------------------------------------
   133 void MsgConversationBaseView::closeConversationView()
   142 void MsgConversationBaseView::closeConversationView()
   134 {
   143 {
   135    markMessagesAsRead();
   144     markMessagesAsRead();
   136 }
   145 }
   137 
   146 
   138 //---------------------------------------------------------------
   147 //---------------------------------------------------------------
   139 // MsgConversationBaseView::markMessagesAsRead
   148 // MsgConversationBaseView::markMessagesAsRead
   140 // Mark unread msgs in cv as read
   149 // Mark unread msgs in cv as read
   141 //---------------------------------------------------------------
   150 //---------------------------------------------------------------
   142 void MsgConversationBaseView::markMessagesAsRead()
   151 void MsgConversationBaseView::markMessagesAsRead()
   143     {
   152 {
   144     if( mConversationId >= 0)
   153     if (mConversationId >= 0) {
   145         {
       
   146         ConversationsEngine::instance()->markConversationRead(mConversationId);
   154         ConversationsEngine::instance()->markConversationRead(mConversationId);
   147         }
   155     }
   148     }
   156 }
   149 
   157 
   150 //---------------------------------------------------------------
   158 //---------------------------------------------------------------
   151 // MsgConversationBaseView::saveContentToDrafts
   159 // MsgConversationBaseView::saveContentToDrafts
   152 // saves the editors content to drafts
   160 // saves the editors content to drafts
   153 //---------------------------------------------------------------
   161 //---------------------------------------------------------------
   154 void MsgConversationBaseView::saveContentToDrafts()
   162 int MsgConversationBaseView::saveContentToDrafts()
   155     {
   163 {
       
   164     int msgId = INVALID_MSGID;
   156     bool result = false;
   165     bool result = false;
   157     if( mConversationId >= 0)
   166     if (mConversationId >= 0) {
   158         {
   167     msgId = mConversationView->saveContentToDrafts();
   159         result = mConversationView->saveContentToDrafts();
   168     }
   160         }
   169 
   161     
   170     if (msgId != INVALID_MSGID) {
   162     if(result)
       
   163         {
       
   164         HbNotificationDialog::launchDialog(LOC_SAVED_TO_DRAFTS);
   171         HbNotificationDialog::launchDialog(LOC_SAVED_TO_DRAFTS);
   165         }
   172     }
   166     }
   173     return msgId;
       
   174 }
       
   175 
       
   176 //--------------------------------------------------------------- 
       
   177 // MsgConversationBaseView::conversationId 
       
   178 // get the conversation ID 
       
   179 //---------------------------------------------------------------     
       
   180 qint64 MsgConversationBaseView::conversationId()
       
   181 {
       
   182     return mConversationId;
       
   183 }
   167 
   184 
   168 //---------------------------------------------------------------
   185 //---------------------------------------------------------------
   169 // MsgConversationBaseView::clearContent
   186 // MsgConversationBaseView::clearContent
   170 // clears conversation view content
   187 // clears conversation view content
   171 //---------------------------------------------------------------
   188 //---------------------------------------------------------------
   178 //---------------------------------------------------------------
   195 //---------------------------------------------------------------
   179 // MsgConversationBaseView::handleOk
   196 // MsgConversationBaseView::handleOk
   180 //
   197 //
   181 //---------------------------------------------------------------
   198 //---------------------------------------------------------------
   182 void MsgConversationBaseView::handleOk(const QVariant& result)
   199 void MsgConversationBaseView::handleOk(const QVariant& result)
   183     {
   200 {
   184     Q_UNUSED(result)
   201     Q_UNUSED(result)
   185     }
   202 }
   186 
   203 
   187 //---------------------------------------------------------------
   204 //---------------------------------------------------------------
   188 // MsgConversationBaseView::handleError
   205 // MsgConversationBaseView::handleError
   189 //
   206 //
   190 //---------------------------------------------------------------
   207 //---------------------------------------------------------------
   191 void MsgConversationBaseView::handleError(int errorCode, const QString& errorMessage)
   208 void MsgConversationBaseView::handleError(int errorCode, const QString& errorMessage)
   192     {
   209 {
   193     Q_UNUSED(errorMessage)
   210     Q_UNUSED(errorMessage)
   194     Q_UNUSED(errorCode)
   211     Q_UNUSED(errorCode)
   195     }
   212 }
   196 
   213 
   197 //---------------------------------------------------------------
   214 //---------------------------------------------------------------
   198 // MsgConversationBaseView::doDelayedConstruction
   215 // MsgConversationBaseView::doDelayedConstruction
   199 //
   216 //
   200 //---------------------------------------------------------------	
   217 //---------------------------------------------------------------	
   201 void MsgConversationBaseView::doDelayedConstruction()
   218 void MsgConversationBaseView::doDelayedConstruction()
   202 {
   219 {
   203     disconnect(this->mainWindow(),SIGNAL(viewReady()),this,SLOT(doDelayedConstruction()));
   220     disconnect(this->mainWindow(), SIGNAL(viewReady()), this, SLOT(doDelayedConstruction()));
       
   221     QTimer::singleShot(50, this, SLOT(handleViewReady()));
       
   222 }
       
   223 
       
   224 //---------------------------------------------------------------
       
   225 // MsgConversationBaseView::handleViewReady
       
   226 //
       
   227 //---------------------------------------------------------------	
       
   228 void MsgConversationBaseView::handleViewReady()
       
   229 {
   204     ConversationsEngine::instance()->fetchMoreConversations();
   230     ConversationsEngine::instance()->fetchMoreConversations();
   205 }
   231 }
   206 
   232 
   207 //---------------------------------------------------------------
   233 //---------------------------------------------------------------
       
   234 // MsgConversationBaseView::handleConversationIdChange
       
   235 //
       
   236 //---------------------------------------------------------------
       
   237 void MsgConversationBaseView::handleConversationIdChange(qint64 convId)
       
   238 {
       
   239     if (INVALID_CONVID != convId && mConversationId != convId) {
       
   240 	
       
   241         mConversationId = convId;        
       
   242         // publsih conversation id
       
   243         mSettingsManager->writeItemValue(mCVIdkey, (int) mConversationId);       
       
   244     }
       
   245 }
       
   246 
       
   247 //---------------------------------------------------------------
   208 // MsgConversationBaseView::hideChrome
   248 // MsgConversationBaseView::hideChrome
   209 //
   249 //
   210 //---------------------------------------------------------------
   250 //---------------------------------------------------------------
   211 void MsgConversationBaseView::hideChrome(bool hide)
   251 void MsgConversationBaseView::hideChrome(bool hide)
   212     {
   252 {
   213     if(hide)
   253     if (hide) {
   214         {        
       
   215         this->hideItems(Hb::StatusBarItem | Hb::TitleBarItem);
   254         this->hideItems(Hb::StatusBarItem | Hb::TitleBarItem);
   216         this->setContentFullScreen(true);
   255         this->setContentFullScreen(true);
   217         
   256 
   218         if(this->mainWindow()->orientation() == Qt::Horizontal)
   257         if (this->mainWindow()->orientation() == Qt::Horizontal) {
   219             {
       
   220             mMainLayout->removeItem(mContactCard);
   258             mMainLayout->removeItem(mContactCard);
   221             mContactCard->hide();
   259             mContactCard->hide();
   222             }
       
   223         }
   260         }
   224     else
   261     }
   225         {
   262     else {
   226         this->showItems(Hb::StatusBarItem | Hb::TitleBarItem);
   263         this->showItems(Hb::StatusBarItem | Hb::TitleBarItem);
   227         this->setContentFullScreen(false);
   264         this->setContentFullScreen(false);
   228         
   265 
   229         if(!mContactCard->isVisible())
   266         if (!mContactCard->isVisible()) {
   230             {
   267             mMainLayout->insertItem(0, mContactCard);
   231             mMainLayout->insertItem(0,mContactCard);
       
   232             mContactCard->show();
   268             mContactCard->show();
   233             }
       
   234         }
   269         }
   235     }
   270     }
   236 
   271 }
       
   272 
       
   273 //---------------------------------------------------------------
       
   274 // MsgConversationBaseView::setPSCVId
       
   275 //
       
   276 //---------------------------------------------------------------
       
   277 void MsgConversationBaseView::setPSCVId(bool setId)
       
   278 {
       
   279     if (setId) {
       
   280         mSettingsManager->writeItemValue(mCVIdkey, (int) mConversationId);
       
   281     }
       
   282     else {
       
   283         mSettingsManager->writeItemValue(mCVIdkey, -1);
       
   284     }
       
   285 }
   237 // EOF
   286 // EOF