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 |