|
1 /* |
|
2 * Copyright (c) 2010 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 * |
|
16 */ |
|
17 #include "zeroconfsharing.h" |
|
18 #include <mdns/mdnsparamset.h> |
|
19 |
|
20 #include <QtGui/QListWidget> |
|
21 #include <QVBoxLayout> |
|
22 #include <QtNetwork> |
|
23 #include <QNetworkRequest> |
|
24 #include <QNetworkReply> |
|
25 |
|
26 #ifdef Q_OS_SYMBIAN |
|
27 #include "sym_iap_util.h" |
|
28 #endif |
|
29 #include "bjrhttpserver.h" |
|
30 |
|
31 #include "contactinfo.h" |
|
32 #include "cfileparser.h" |
|
33 #include "cfilelistengine.h" |
|
34 #include "downloadicon.h" |
|
35 _LIT8(KFileName,"E:\\logs\\temp.txt"); |
|
36 |
|
37 _LIT8(KMyStatusFile,"E:\\MyStatus.txt"); |
|
38 const int KMaxLength = 256; |
|
39 _LIT8(KLogFile,"E:\\logs\\uilog.txt"); |
|
40 |
|
41 QZeroConfSharingUi::QZeroConfSharingUi(QWidget *parent) |
|
42 : QMainWindow(parent) |
|
43 { |
|
44 ui.setupUi(this); |
|
45 |
|
46 isShared = false; |
|
47 |
|
48 tabWidget = new QTabWidget(this); |
|
49 tabWidget->hide(); |
|
50 |
|
51 shareAction = new QAction(tr("Share"), this); |
|
52 connect(shareAction, SIGNAL(triggered()), this, SLOT(StartServer())); |
|
53 |
|
54 unshareAction = new QAction(tr("UnShare"), this); |
|
55 connect(unshareAction, SIGNAL(triggered()), this, SLOT(StopServer())); |
|
56 |
|
57 menuBar()->addAction(shareAction); |
|
58 #ifdef Q_OS_SYMBIAN |
|
59 qt_SetDefaultIap(); |
|
60 #endif |
|
61 |
|
62 manager = new QNetworkAccessManager(this); |
|
63 |
|
64 #ifndef __arm |
|
65 PopulateCommunityList(); |
|
66 PopulateCommunityList(); |
|
67 PopulateCommunityList(); |
|
68 PopulateCommunityList(); |
|
69 PopulateCommunityList(); |
|
70 #endif |
|
71 // Hide the Contact Tab |
|
72 ui.tabWidget->removeTab(0); |
|
73 // Hide the Chat tab |
|
74 ui.tabWidget->removeTab(4); |
|
75 // Hide the File Share Tab |
|
76 ui.treeContactMusic->setVisible(false); |
|
77 ui.treeContactMusic_2->setVisible(false); |
|
78 ui.treeContactMusic_3->setVisible(false); |
|
79 |
|
80 ShowBackButtons(false); |
|
81 // Layout |
|
82 QVBoxLayout *layout = new QVBoxLayout; |
|
83 layout->addWidget(ui.tabWidget); |
|
84 setLayout(layout); |
|
85 |
|
86 |
|
87 ui.tabWidget->setContextMenuPolicy(Qt::NoContextMenu); |
|
88 ui.tabWidget->showMaximized(); |
|
89 |
|
90 connect(ui.listAvatars, SIGNAL(itemClicked(QListWidgetItem *)), |
|
91 this, SLOT(on_listAvatars_itemClicked(QListWidgetItem *))); |
|
92 |
|
93 ui.tabWidget->setCurrentIndex(0); |
|
94 |
|
95 connect(ui.StatusUpdatebtn, SIGNAL(pressed()),this,SLOT(UpdateMyStatus())); |
|
96 connect(ui.pushBackContact, SIGNAL(clicked ()), this, SLOT(backPressed())); |
|
97 connect(ui.pushBackPhoto, SIGNAL(clicked ()), this, SLOT(backPressed())); |
|
98 connect(ui.pushBackVideo, SIGNAL(clicked ()), this, SLOT(backPressed())); |
|
99 connect(ui.pushBackChat, SIGNAL(clicked ()), this, SLOT(backPressed())); |
|
100 connect(ui.pushBackMusic, SIGNAL(clicked ()), this, SLOT(backPressed())); |
|
101 |
|
102 connect(ui.treeContactMusic_2, SIGNAL(itemClicked(QTreeWidgetItem* , int)), this, SLOT(ContactitemClicked(QTreeWidgetItem* , int))); |
|
103 connect(ui.treeContactMusic, SIGNAL(itemClicked(QTreeWidgetItem* , int)), this, SLOT(ContactitemClicked(QTreeWidgetItem* , int))); |
|
104 connect(ui.treeContactMusic_3, SIGNAL(itemClicked(QTreeWidgetItem* , int)), this, SLOT(ContactitemClicked(QTreeWidgetItem* , int))); |
|
105 |
|
106 //Open the status file |
|
107 QString mystatusfile = QString::fromUtf8((const char*)KMyStatusFile().Ptr(),KMyStatusFile().Length()); |
|
108 bool doesExist = MyStatusFile.exists(mystatusfile); |
|
109 MyStatusFile.setFileName(mystatusfile); |
|
110 //file already exists...get the status from file |
|
111 MyStatusFile.open( QIODevice::ReadOnly|QIODevice::Text ); |
|
112 //opened in write only mode so that status updates can be |
|
113 //reflected in the file |
|
114 QByteArray str = MyStatusFile.readAll(); |
|
115 QString filestr(str); |
|
116 nowStatus = filestr; |
|
117 |
|
118 ui.MyStatusLabel->setText(nowStatus); |
|
119 |
|
120 //convert nowSttaus to Rbuf8 |
|
121 TPtrC ptrName(reinterpret_cast<const TText*>(nowStatus.constData())); |
|
122 |
|
123 iStatus.CreateL(ptrName.Length()); |
|
124 iStatus.Copy(ptrName); |
|
125 |
|
126 |
|
127 iZeroConfClient = CZeroconfClient::NewL(this); |
|
128 iZeroConfClient->ConnectL(); |
|
129 |
|
130 iNewContact = NULL; |
|
131 MyStatusFile.close(); |
|
132 |
|
133 iStatusUpdate =EFalse; |
|
134 |
|
135 iMusic = CMusicProvider::NewL(this); |
|
136 iUpdate = EFalse; |
|
137 iMusic->RequestMediaL(); |
|
138 |
|
139 DiscoverServices(); |
|
140 |
|
141 progressBar = NULL; |
|
142 //IsDownloadItem = false; |
|
143 |
|
144 logFile.setFileName("C:\\Data\\logs\\ZeroConfSharingui_log.txt"); |
|
145 logFile.open(QIODevice::WriteOnly | QIODevice::Truncate); |
|
146 |
|
147 logFile.write("Logging Starts"); |
|
148 logFile.close(); |
|
149 |
|
150 |
|
151 } |
|
152 |
|
153 void QZeroConfSharingUi::Log(const char* msg) |
|
154 { |
|
155 |
|
156 logFile.open(QIODevice::Append); |
|
157 logFile.write(msg, qstrlen(msg)); |
|
158 logFile.close(); |
|
159 |
|
160 } |
|
161 |
|
162 |
|
163 void QZeroConfSharingUi::ContactitemClicked(QTreeWidgetItem* item, int /*column*/) |
|
164 { |
|
165 |
|
166 TPtrC ptrName(reinterpret_cast<const TText*>(iSelectedContact.constData())); |
|
167 |
|
168 RBuf8 contactName; |
|
169 contactName.Create(ptrName.Length()); |
|
170 contactName.Copy(ptrName); |
|
171 |
|
172 //Find if its an already existing contact |
|
173 CContactInfo* contact = GetSelectedContact(contactName); |
|
174 if(contact!=NULL) |
|
175 { |
|
176 //IsDownloadItem = true; |
|
177 RBuf8 url; |
|
178 url.Create(KMaxLength); |
|
179 url.Copy(contact->BaseUrl()); |
|
180 |
|
181 TPtrC fileItemName(reinterpret_cast<const TText*>((item->text(0)).constData())); |
|
182 |
|
183 RBuf8 fileName; |
|
184 fileName.Create(fileItemName.Length()); |
|
185 fileName.Copy(fileItemName); |
|
186 |
|
187 url.Append(fileName); |
|
188 |
|
189 QString qurl = QString::fromUtf8((const char*)url.Ptr(),url.Length()); |
|
190 |
|
191 iSelectedFileName = QString::fromUtf8((const char*)(contact->FilePath(fileName)).Ptr(),(contact->FilePath(fileName)).Length()); |
|
192 |
|
193 progressBar = new QProgressDialog(tr("Retrieving Shared Content"), tr("Cancel"), 0, 0); |
|
194 connect(progressBar, SIGNAL(canceled()), this, SLOT(ProgressBarCanceled())); |
|
195 progressBar->show(); |
|
196 |
|
197 itemReply = manager->get(QNetworkRequest(QUrl(qurl))); |
|
198 |
|
199 connect(itemReply, SIGNAL(finished()), this, SLOT(ItemRequestFinished())); |
|
200 |
|
201 fileName.Close(); |
|
202 url.Close(); |
|
203 |
|
204 } |
|
205 contactName.Close(); |
|
206 |
|
207 } |
|
208 |
|
209 |
|
210 void QZeroConfSharingUi::UpdateMyStatus() |
|
211 { |
|
212 //get the Text entered by the user in the status update |
|
213 //text box |
|
214 //& display it in the MyStatus label button |
|
215 |
|
216 QString mystatusfile = QString::fromUtf8((const char*)KMyStatusFile().Ptr(),KMyStatusFile().Length()); |
|
217 bool doesExist = MyStatusFile.exists(mystatusfile); |
|
218 MyStatusFile.setFileName(mystatusfile); |
|
219 |
|
220 MyStatusFile.open( QIODevice::WriteOnly |QIODevice::Text ); |
|
221 QString currentStatus = ui.StatusTextBox->toPlainText(); |
|
222 //set the MyStatusLabel with this text |
|
223 ui.MyStatusLabel->setText(currentStatus); |
|
224 nowStatus = currentStatus; |
|
225 TPtrC ptrName(reinterpret_cast<const TText*>(nowStatus.constData())); |
|
226 |
|
227 RBuf8 current; |
|
228 current.Create(ptrName.Length()); |
|
229 current.Copy(ptrName); |
|
230 if(iStatusUpdate) |
|
231 { |
|
232 iZeroConfClient->UpdateCurrentStatusServiceL(current); |
|
233 } |
|
234 else |
|
235 { |
|
236 iZeroConfClient->PublishCurrentStatusServiceL(current); |
|
237 iStatusUpdate =ETrue; |
|
238 } |
|
239 |
|
240 int errval = MyStatusFile.write(nowStatus.toUtf8()); |
|
241 MyStatusFile.close(); |
|
242 current.Close(); |
|
243 ui.StatusTextBox->clear(); |
|
244 //send an update record at Bonjour-level |
|
245 |
|
246 } |
|
247 |
|
248 void QZeroConfSharingUi::PopulateCommunityList() |
|
249 { |
|
250 static int i = 0; |
|
251 QString path, name; |
|
252 switch(i) |
|
253 { |
|
254 case 0: path = ":/Images/Vivek"; name = "Vivek";break; |
|
255 case 1: path = ":/Images/Unknown"; name = "Vadan";break; |
|
256 case 2: path = ":/Images/Guru"; name = "Guru"; break; |
|
257 case 3: path = ":/Images/Sampo"; name = "Sampo";break; |
|
258 case 4: path = ":/Images/Unknown"; name = "Sindhu";break; |
|
259 default: break; |
|
260 } |
|
261 i++; |
|
262 QListWidgetItem* item = new QListWidgetItem(QIcon(path), name); |
|
263 ui.listAvatars->addItem(item); |
|
264 } |
|
265 |
|
266 void QZeroConfSharingUi::PopulateUserList() |
|
267 { |
|
268 } |
|
269 void QZeroConfSharingUi::backPressed() |
|
270 { |
|
271 ShowAllContacts(true); |
|
272 setWindowTitle(QApplication::translate("MainWindow", "Local Sharing", 0, QApplication::UnicodeUTF8)); |
|
273 |
|
274 ui.treeContactMusic->setVisible(false); |
|
275 ui.treeContactMusic_2->setVisible(false); |
|
276 ui.treeContactMusic_3->setVisible(false); |
|
277 |
|
278 ui.treeMusicAll_3->setVisible(true); |
|
279 ui.treeMusicAll->setVisible(true); |
|
280 ui.treeMusicAll_2->setVisible(true); |
|
281 |
|
282 } |
|
283 |
|
284 void QZeroConfSharingUi::PopulateContactSpecificData() |
|
285 { |
|
286 |
|
287 TPtrC ptrName(reinterpret_cast<const TText*>(iSelectedContact.constData())); |
|
288 RBuf8 iname,mname,vname,fname; |
|
289 RBuf8 contactName; |
|
290 contactName.Create(ptrName.Length()); |
|
291 contactName.Copy(ptrName); |
|
292 //Find if its an already existing contact |
|
293 #ifdef __arm |
|
294 CContactInfo* contact = GetSelectedContact(contactName); |
|
295 if(contact!=NULL) |
|
296 #endif |
|
297 { |
|
298 //invoke the parser |
|
299 #ifdef __arm |
|
300 fname.CreateL(contact->FileListPath(_L8("filelist.txt"))); |
|
301 |
|
302 iname.CreateL(contact->ImgFileName()); |
|
303 mname.CreateL(contact->MusicFileName()); |
|
304 vname.CreateL(contact->VideoFileName()); |
|
305 |
|
306 #else |
|
307 _LIT8(KFileListName,"c:\\data\\filelist.txt"); |
|
308 fname.CreateL(KFileListName); |
|
309 _LIT8(KFileImgName,"c:\\data\\ImgList.txt"); |
|
310 iname.CreateL(KFileImgName); |
|
311 _LIT8(KFileMusicName,"c:\\data\\MusicList.txt"); |
|
312 mname.CreateL(KFileMusicName); |
|
313 _LIT8(KFileVideoName,"c:\\data\\VideoList.txt"); |
|
314 vname.CreateL(KFileVideoName); |
|
315 |
|
316 #endif |
|
317 RBuf allfilenames; |
|
318 RBuf photofile; |
|
319 RBuf musicfile; |
|
320 RBuf videofile; |
|
321 |
|
322 allfilenames.CreateL(KMaxLength); |
|
323 photofile.CreateL(KMaxLength); |
|
324 musicfile.CreateL(KMaxLength); |
|
325 videofile.CreateL(KMaxLength); |
|
326 |
|
327 allfilenames.Copy(fname); |
|
328 photofile.Copy(iname); |
|
329 musicfile.Copy(mname); |
|
330 videofile.Copy(vname); |
|
331 |
|
332 CFileParser* parser = CFileParser::NewL(); |
|
333 parser->ParseFile(allfilenames,photofile,musicfile,videofile); |
|
334 delete parser; |
|
335 |
|
336 allfilenames.Close(); |
|
337 photofile.Close(); |
|
338 musicfile.Close(); |
|
339 videofile.Close(); |
|
340 } |
|
341 contactName.Close(); |
|
342 |
|
343 _LIT8(KPhoto,"c:\\data\\photolist.txt"); |
|
344 _LIT8(KMusic,"c:\\data\\musiclist.txt"); |
|
345 _LIT8(KVideo,"c:\\data\\videolist.txt"); |
|
346 |
|
347 //////////////////////////////////////////////////////////////////////////////////// |
|
348 //first open the photo file & read it |
|
349 |
|
350 ui.treeContactMusic_2->clear(); |
|
351 ui.treeContactMusic->clear(); |
|
352 ui.treeContactMusic_3->clear(); |
|
353 |
|
354 QString photofile = QString::fromUtf8((const char*)iname.Ptr(),iname.Length()); |
|
355 iGenericFile.setFileName(photofile); |
|
356 iGenericFile.open(QIODevice::ReadOnly | QIODevice::Text); |
|
357 |
|
358 int count = 0; |
|
359 while(!iGenericFile.atEnd()) |
|
360 { |
|
361 ReadFile(); |
|
362 if(!filename.isEmpty()) |
|
363 { |
|
364 new QTreeWidgetItem(ui.treeContactMusic_2); |
|
365 QTreeWidgetItem *qtreewidgetitem = ui.treeContactMusic_2->topLevelItem(count); |
|
366 qtreewidgetitem->setText(0,filename); |
|
367 count++; |
|
368 } |
|
369 } |
|
370 iGenericFile.close(); |
|
371 //////////////////////////////////////////////////////////////////////////////////////// |
|
372 |
|
373 //now open music file & read it |
|
374 QString musicfile = QString::fromUtf8((const char*)mname.Ptr(),mname.Length()); |
|
375 iGenericFile.setFileName(musicfile); |
|
376 iGenericFile.open(QIODevice::ReadOnly | QIODevice::Text); |
|
377 count = 0; |
|
378 while(!iGenericFile.atEnd()) |
|
379 { |
|
380 ReadFile(); |
|
381 if(!filename.isEmpty()) |
|
382 { |
|
383 new QTreeWidgetItem(ui.treeContactMusic); |
|
384 QTreeWidgetItem *qtreewidgetitem = ui.treeContactMusic->topLevelItem(count); |
|
385 qtreewidgetitem->setText(0,filename); |
|
386 count++; |
|
387 } |
|
388 } |
|
389 iGenericFile.close(); |
|
390 |
|
391 //////////////////////////////////////////////////////////////////////////////////////// |
|
392 //now open video file & read it |
|
393 |
|
394 QString videofile = QString::fromUtf8((const char*)vname.Ptr(),vname.Length()); |
|
395 iGenericFile.setFileName(videofile); |
|
396 iGenericFile.open(QIODevice::ReadOnly | QIODevice::Text); |
|
397 count = 0; |
|
398 while(!iGenericFile.atEnd()) |
|
399 { |
|
400 ReadFile(); |
|
401 if(!filename.isEmpty()) |
|
402 { |
|
403 new QTreeWidgetItem(ui.treeContactMusic_3); |
|
404 QTreeWidgetItem *qtreewidgetitem = ui.treeContactMusic_3->topLevelItem(count); |
|
405 qtreewidgetitem->setText(0,filename); |
|
406 count++; |
|
407 } |
|
408 } |
|
409 iGenericFile.close(); |
|
410 //////////////////////////////////////////////////////////////////////////// |
|
411 //close all rbufs |
|
412 fname.Close(); |
|
413 iname.Close(); |
|
414 mname.Close(); |
|
415 vname.Close(); |
|
416 |
|
417 } |
|
418 |
|
419 void QZeroConfSharingUi::ReadFile() |
|
420 { |
|
421 qint64 value = Q_INT64_C(255); |
|
422 QByteArray str = iGenericFile.readLine(value); |
|
423 if((!str.isEmpty()) && (str.endsWith('\n'))) |
|
424 str.remove((str.length()-1), 1); |
|
425 int index = str.lastIndexOf('/'); |
|
426 //cut from the index posn |
|
427 filename = str.mid(index+1); |
|
428 } |
|
429 |
|
430 CContactInfo* QZeroConfSharingUi::GetSelectedContact(const TDesC8& aConatactName) |
|
431 { |
|
432 for(TInt i=0;i<iEntries.Count();i++) |
|
433 { |
|
434 if(iEntries[i]->ContactName().Compare(aConatactName)==0) |
|
435 { |
|
436 return iEntries[i]; |
|
437 } |
|
438 } |
|
439 return NULL; |
|
440 } |
|
441 |
|
442 |
|
443 void QZeroConfSharingUi::RequestSharedContent() |
|
444 { |
|
445 |
|
446 TPtrC ptrName(reinterpret_cast<const TText*>(iSelectedContact.constData())); |
|
447 RBuf8 contactName; |
|
448 contactName.Create(ptrName.Length()); |
|
449 contactName.Copy(ptrName); |
|
450 |
|
451 //Find if its an already existing contact |
|
452 CContactInfo* contact = GetSelectedContact(contactName); |
|
453 if(contact!=NULL) |
|
454 { |
|
455 RBuf8 fileUrl; |
|
456 _LIT8(KFileList,"filelist.txt"); |
|
457 fileUrl.Create(contact->FileUrl(KFileList)); |
|
458 |
|
459 iSelectedFileListName = QString::fromUtf8((const char*)(contact->FileListPath(KFileList)).Ptr(),(contact->FileListPath(KFileList)).Length()); |
|
460 |
|
461 QString qurl = QString::fromUtf8((const char*)(fileUrl).Ptr(),(fileUrl).Length()); |
|
462 |
|
463 //QMessageBox::warning(this, tr("Icon Path"),qurl,QMessageBox::Ok); |
|
464 |
|
465 progressBar = new QProgressDialog(tr("Retrieving Shared Content"), tr("Cancel"), 0, 0); |
|
466 connect(progressBar, SIGNAL(canceled()), this, SLOT(ProgressBarCanceled())); |
|
467 progressBar->show(); |
|
468 |
|
469 #ifdef __arm |
|
470 reply = manager->get(QNetworkRequest(QUrl(qurl))); |
|
471 #else |
|
472 reply = manager->get(QNetworkRequest(QUrl("http://kiranp747.googlepages.com/FileList.txt"))); |
|
473 #endif |
|
474 |
|
475 connect(reply, SIGNAL(finished()), this, SLOT(RequestFinished())); |
|
476 |
|
477 fileUrl.Close(); |
|
478 } |
|
479 contactName.Close(); |
|
480 |
|
481 } |
|
482 void QZeroConfSharingUi::on_listAvatars_itemClicked(QListWidgetItem* item) |
|
483 { |
|
484 |
|
485 if(progressBar != NULL) |
|
486 return; |
|
487 |
|
488 iSelectedContact = item->text(); |
|
489 |
|
490 setWindowTitle(iSelectedContact); |
|
491 ui.tabWidget->removeTab(0); |
|
492 ui.tabWidget->insertTab(0, ui.tabVivek, QIcon(":/Images/Unknown"), "Wall"); |
|
493 ui.tabWidget->insertTab(4, ui.tabChat, QIcon(":/Icons/Chat"), "Chat"); |
|
494 ui.tabWidget->setCurrentIndex(0); |
|
495 |
|
496 ShowBackButtons(true); |
|
497 |
|
498 ui.treeContactMusic->setVisible(true); |
|
499 ui.treeContactMusic_2->setVisible(true); |
|
500 ui.treeContactMusic_3->setVisible(true); |
|
501 |
|
502 ui.treeMusicAll_3->setVisible(false); |
|
503 ui.treeMusicAll->setVisible(false); |
|
504 ui.treeMusicAll_2->setVisible(false); |
|
505 #ifndef __arm |
|
506 PopulateContactSpecificData(); |
|
507 #endif |
|
508 |
|
509 RequestSharedContent(); |
|
510 ShowCur_Status_and_Track(); |
|
511 |
|
512 } |
|
513 |
|
514 void QZeroConfSharingUi::ProgressBarCanceled() |
|
515 { |
|
516 //if(progressBar && progressBar->isVisible()) |
|
517 if(progressBar) |
|
518 { |
|
519 //progressBar->close(); |
|
520 delete progressBar; |
|
521 progressBar = NULL; |
|
522 } |
|
523 } |
|
524 |
|
525 void QZeroConfSharingUi::ItemRequestFinished() |
|
526 { |
|
527 if(progressBar && progressBar->isVisible()) |
|
528 { |
|
529 progressBar->close(); |
|
530 delete progressBar; |
|
531 progressBar = NULL; |
|
532 } |
|
533 |
|
534 int error = itemReply->error(); |
|
535 if(!error) |
|
536 { |
|
537 QNetworkReply *reply = ((QNetworkReply *)sender()); |
|
538 QByteArray data = reply->readAll(); |
|
539 |
|
540 if(data.isEmpty()) |
|
541 QMessageBox::warning(this, tr("Test"),tr("No Data Reply"),QMessageBox::Ok); |
|
542 |
|
543 QFile temp(iSelectedFileName); |
|
544 temp.open(QIODevice::WriteOnly | QIODevice::Truncate); |
|
545 temp.write(data); |
|
546 temp.close(); |
|
547 |
|
548 QUrl itemUrl(iSelectedFileName); |
|
549 |
|
550 bool ret = QDesktopServices::openUrl(itemUrl); |
|
551 if(!ret) |
|
552 QMessageBox::warning( this, tr("Operation Failed"), tr("Unkown error!"), QMessageBox::Close); |
|
553 |
|
554 } |
|
555 else |
|
556 QMessageBox::warning(this, tr("Test"),reply->errorString(),QMessageBox::Ok); |
|
557 |
|
558 |
|
559 |
|
560 } |
|
561 |
|
562 void QZeroConfSharingUi::RequestFinished() |
|
563 { |
|
564 |
|
565 if(progressBar && progressBar->isVisible()) |
|
566 { |
|
567 progressBar->close(); |
|
568 delete progressBar; |
|
569 progressBar = NULL; |
|
570 } |
|
571 |
|
572 int error = reply->error(); |
|
573 if(!error) |
|
574 { |
|
575 QNetworkReply *reply = ((QNetworkReply *)sender()); |
|
576 QByteArray data = reply->readAll(); |
|
577 |
|
578 if(data.isEmpty()) |
|
579 QMessageBox::warning(this, tr("Test"),tr("No Data Reply"),QMessageBox::Ok); |
|
580 |
|
581 QFile temp(iSelectedFileListName); |
|
582 temp.open(QIODevice::WriteOnly | QIODevice::Truncate); |
|
583 temp.write(data); |
|
584 temp.close(); |
|
585 |
|
586 PopulateContactSpecificData(); |
|
587 //} |
|
588 } |
|
589 else |
|
590 QMessageBox::warning(this, tr("Test"),reply->errorString(),QMessageBox::Ok); |
|
591 |
|
592 |
|
593 } |
|
594 |
|
595 void QZeroConfSharingUi::ShowCur_Status_and_Track() |
|
596 { |
|
597 |
|
598 TPtrC ptrName(reinterpret_cast<const TText*>(iSelectedContact.constData())); |
|
599 |
|
600 RBuf8 contactName; |
|
601 RBuf8 currentTrack,currentUserStatus; |
|
602 |
|
603 contactName.Create(ptrName.Length()); |
|
604 contactName.Copy(ptrName); |
|
605 |
|
606 //get complete contact info of the person |
|
607 |
|
608 for(TInt i=0;i<iEntries.Count();i++) |
|
609 { |
|
610 if(iEntries[i]->ContactName().Compare(contactName)==0) |
|
611 { |
|
612 currentTrack.CreateL(iEntries[i]->CurrentlyPlaying().Length()); |
|
613 currentTrack.Copy(iEntries[i]->CurrentlyPlaying()); |
|
614 |
|
615 currentUserStatus.CreateL(iEntries[i]->Status().Length()); |
|
616 currentUserStatus.Copy(iEntries[i]->Status()); |
|
617 |
|
618 ui.textEdit_2->clear (); |
|
619 QString nowPlayingLabel = "Now Playing: "; |
|
620 QString nowPlayingTrack = QString::fromUtf8((const char*)currentTrack.Ptr(),currentTrack.Length()); |
|
621 QString total(nowPlayingLabel); |
|
622 total.append(nowPlayingTrack); |
|
623 |
|
624 QString newline(tr("\n\n\n")); |
|
625 total.append(newline); |
|
626 QString nowStatusLabel = "Status: "; |
|
627 total.append(nowStatusLabel); |
|
628 QString nowStatusString = QString::fromUtf8((const char*)currentUserStatus.Ptr(),currentUserStatus.Length()); |
|
629 total.append(nowStatusString); |
|
630 |
|
631 |
|
632 ui.textEdit_2->setText(total); |
|
633 } |
|
634 } |
|
635 currentTrack.Close(); |
|
636 currentUserStatus.Close(); |
|
637 contactName.Close(); |
|
638 |
|
639 |
|
640 }//end of function |
|
641 |
|
642 |
|
643 void QZeroConfSharingUi::ShowAllContacts(bool aShow) |
|
644 { |
|
645 if(aShow) |
|
646 { |
|
647 // Contact Tab |
|
648 ui.tabWidget->removeTab(0); |
|
649 // Add All Contacts tab |
|
650 ui.tabWidget->insertTab(0, ui.tabContacts, QIcon(":/Icons/Contact"), "Contacts"); |
|
651 // Chat Tab |
|
652 ui.tabWidget->removeTab(4); |
|
653 // Set Focus |
|
654 ui.tabWidget->setCurrentIndex(0); |
|
655 } |
|
656 else |
|
657 { |
|
658 ui.tabWidget->removeTab(0); |
|
659 //ui.tabWidget->insertTab(0, ui.tabVivek, QIcon(":/Images/Vivek"), "Vivek's Wall"); |
|
660 ui.tabWidget->insertTab(4, ui.tabChat, QIcon(":/Icons/Chat"), "Chat"); |
|
661 ui.tabWidget->setCurrentIndex(0); |
|
662 } |
|
663 // Music |
|
664 //ui.textMusicAll->setVisible(aShow); |
|
665 //ui.treeMusicAll->setVisible(aShow); |
|
666 //ui.treeContactMusic->setVisible(!aShow); |
|
667 |
|
668 ShowBackButtons(!aShow); |
|
669 } |
|
670 |
|
671 void QZeroConfSharingUi::ShowBackButtons(bool aShow) |
|
672 { |
|
673 |
|
674 // Push Buttons |
|
675 ui.pushBackChat->setVisible(aShow); |
|
676 ui.pushBackContact->setVisible(aShow); |
|
677 ui.pushBackPhoto->setVisible(aShow); |
|
678 ui.pushBackMusic->setVisible(aShow); |
|
679 ui.pushBackVideo->setVisible(aShow); |
|
680 |
|
681 |
|
682 } |
|
683 |
|
684 void QZeroConfSharingUi::on_pushBackContact_clicked() |
|
685 { |
|
686 ShowAllContacts(true); |
|
687 } |
|
688 |
|
689 void QZeroConfSharingUi::on_pushBackMusic_clicked() |
|
690 { |
|
691 ShowAllContacts(true); |
|
692 } |
|
693 |
|
694 void QZeroConfSharingUi::on_pushBackVideo_clicked() |
|
695 { |
|
696 ShowAllContacts(true); |
|
697 } |
|
698 |
|
699 void QZeroConfSharingUi::on_pushBackChat_clicked() |
|
700 { |
|
701 ShowAllContacts(true); |
|
702 } |
|
703 |
|
704 void QZeroConfSharingUi::on_pushBackFile_clicked() |
|
705 { |
|
706 ShowAllContacts(true); |
|
707 } |
|
708 |
|
709 |
|
710 void QZeroConfSharingUi::StartServer() |
|
711 { |
|
712 menuBar()->removeAction(shareAction); |
|
713 menuBar()->addAction(unshareAction); |
|
714 |
|
715 iHttpServer = CHttpServer::NewL(); |
|
716 |
|
717 iHttpServer->ProcessSelectionL(EStart); |
|
718 |
|
719 CFileListEngine* filelister = CFileListEngine::NewL(); |
|
720 filelister->SetOutputFileName(_L("c:\\data\\Images\\filelist.txt")); |
|
721 filelister->GetAllMediaContent(); |
|
722 delete filelister; |
|
723 |
|
724 _LIT8(Kfilelist,"filelist.txt"); |
|
725 _LIT8(KIconName,"mypic.ico"); |
|
726 iPublishBaseUrl.Create(KMaxPath); |
|
727 iPublishBaseUrl.Copy(_L8("http://")); |
|
728 iPublishBaseUrl.Append(iHttpServer->GetIPAddress()); |
|
729 iPublishBaseUrl.Append(_L8("/Images/")); //http://<ipaddr>/ |
|
730 |
|
731 PublishMyService(Kfilelist,KIconName); |
|
732 |
|
733 } |
|
734 |
|
735 |
|
736 void QZeroConfSharingUi::StopServer() |
|
737 { |
|
738 //ToDo: Should stop server and unpublish the services. |
|
739 |
|
740 menuBar()->removeAction(unshareAction); |
|
741 menuBar()->addAction(shareAction); |
|
742 |
|
743 iZeroConfClient->UnPublishServices(); |
|
744 iHttpServer->ProcessSelectionL(EStop); |
|
745 delete iHttpServer; |
|
746 |
|
747 } |
|
748 |
|
749 void QZeroConfSharingUi::NowPlaying(TDes& aTitleBuf) |
|
750 { |
|
751 //QString qtTitle = QString::fromUtf16(aTitleBuf.Ptr(),aTitleBuf.Length()); |
|
752 //QMessageBox::warning(this,tr("Now playing"),qtTitle,QMessageBox::Ok); |
|
753 if(iUpdate) |
|
754 { |
|
755 iZeroConfClient->UpdateNowPlayingServiceL(aTitleBuf); |
|
756 } |
|
757 else |
|
758 { |
|
759 iZeroConfClient->PublishNowPlayingServiceL(aTitleBuf); |
|
760 iUpdate = ETrue; |
|
761 } |
|
762 } |
|
763 |
|
764 void QZeroConfSharingUi::DiscoverServices() |
|
765 { |
|
766 |
|
767 iZeroConfClient->WriteServices(); |
|
768 } |
|
769 |
|
770 void QZeroConfSharingUi::GetSrvInfo(const TDesC8& aQueryString,TDnsType aType) |
|
771 { |
|
772 iZeroConfClient->GetService(aQueryString,aType); |
|
773 } |
|
774 |
|
775 void QZeroConfSharingUi::PublishService() |
|
776 { |
|
777 iZeroConfClient->PublishService(); |
|
778 } |
|
779 |
|
780 void QZeroConfSharingUi:: PublishMyService(const TDesC8& afilelist,const TDesC8& aIconName) |
|
781 { |
|
782 iZeroConfClient->PublishMyService(iPublishBaseUrl, afilelist, aIconName); |
|
783 } |
|
784 |
|
785 QZeroConfSharingUi::~QZeroConfSharingUi() |
|
786 { |
|
787 iPublishBaseUrl.Close(); |
|
788 |
|
789 iBaseUrl.Close(); |
|
790 iIconName.Close(); |
|
791 iFileName.Close(); |
|
792 iCurrentlyPlaying.Close(); |
|
793 iStatus.Close(); |
|
794 iContactName.Close(); |
|
795 MyStatusFile.close(); |
|
796 |
|
797 for(TInt i=0;i<iEntries.Count();i++) |
|
798 { |
|
799 delete iEntries[i]; |
|
800 } |
|
801 |
|
802 iEntries.Reset(); |
|
803 delete iNewContact; |
|
804 delete iNewContact; |
|
805 if(manager) |
|
806 { |
|
807 manager->disconnect(); |
|
808 delete manager; |
|
809 manager = 0; |
|
810 } |
|
811 } |
|
812 |
|
813 void QZeroConfSharingUi::PopulateMainWindow(QString qname) |
|
814 { |
|
815 QTreeWidgetItem *qtreewidgetitem1 = new QTreeWidgetItem(ui.treeMusicAll_3); |
|
816 qtreewidgetitem1->setText(0,qname); |
|
817 ui.treeMusicAll_3->addTopLevelItem(qtreewidgetitem1); |
|
818 |
|
819 QTreeWidgetItem *qtreewidgetitem2 = new QTreeWidgetItem(ui.treeMusicAll); |
|
820 qtreewidgetitem2->setText(0,qname); |
|
821 ui.treeMusicAll->addTopLevelItem(qtreewidgetitem2); |
|
822 |
|
823 QTreeWidgetItem *qtreewidgetitem3 = new QTreeWidgetItem(ui.treeMusicAll_2); |
|
824 qtreewidgetitem3->setText(0,qname); |
|
825 ui.treeMusicAll_2->addTopLevelItem(qtreewidgetitem3); |
|
826 } |
|
827 void QZeroConfSharingUi::OnPnPEventL (RPnPParameterBundleBase& aServiceEventInfo) |
|
828 { |
|
829 //isPresent =EFalse; |
|
830 Log("ZeroConfSharingUi::OnPnPEventL - Entry\n"); |
|
831 RBuf8 ptrInfo; |
|
832 aServiceEventInfo.Store(ptrInfo); |
|
833 CContactInfo* contactInfo = NULL; |
|
834 TInt familyCount = aServiceEventInfo.CountParameterFamilies(); |
|
835 for(TInt idx=0; idx<aServiceEventInfo.CountParameterFamilies();idx++) |
|
836 { |
|
837 RParameterFamily pnpFamily = aServiceEventInfo.GetFamilyAtIndex(idx); |
|
838 switch(pnpFamily.Id()) |
|
839 { |
|
840 case EMdnsPtrParamset: |
|
841 { |
|
842 TUint count = pnpFamily.CountParameterSets ( RParameterFamily::ERequested ) ; |
|
843 for (TInt index= 0; index < count ; index++ ) |
|
844 { |
|
845 CMDnsPtrParamSet* ptrParamSet = static_cast<CMDnsPtrParamSet*>(pnpFamily.GetParameterSetAtIndex( index, RParameterFamily::ERequested )); |
|
846 RBuf name; |
|
847 RBuf domain; |
|
848 name.CreateL(255); |
|
849 domain.CreateL(255); |
|
850 name.Copy(ptrParamSet->InstanceName()); |
|
851 domain.Copy(ptrParamSet->DomainName()); |
|
852 |
|
853 _LIT(KServicesDns,"_services._dns-sd._udp.local."); |
|
854 if(name.Compare(KServicesDns)!=0) |
|
855 { |
|
856 TChar ch = '.'; |
|
857 TInt pos = domain.Locate(ch); |
|
858 |
|
859 if(pos != KErrNotFound) |
|
860 { |
|
861 RBuf buf16; |
|
862 buf16.CreateL(domain.Mid(0,pos)); |
|
863 iSrvName.Close(); |
|
864 iSrvName.CreateL(buf16.Length()); |
|
865 iSrvName.Copy(buf16.Collapse()); |
|
866 //Dont query if you have got all records at a shot!! |
|
867 if(aServiceEventInfo.CountParameterFamilies() <= 1) |
|
868 { |
|
869 Log("ZeroConfSharingUi::OnPnPEventL - Query for SRV\n"); |
|
870 QString tempname5 = QString::fromUtf8((const char*)iSrvName.Ptr(),iSrvName.Length()); |
|
871 |
|
872 logFile.open(QIODevice::Append); |
|
873 logFile.write(tempname5.toUtf8()); |
|
874 logFile.close(); |
|
875 |
|
876 GetSrvInfo(iSrvName,EDnsQType_Any); |
|
877 } |
|
878 buf16.Close(); |
|
879 } |
|
880 } |
|
881 |
|
882 name.Close(); |
|
883 domain.Close(); |
|
884 } |
|
885 } |
|
886 break; |
|
887 |
|
888 case EMdnsSrvParamset: |
|
889 { |
|
890 TUint count = pnpFamily.CountParameterSets ( RParameterFamily::ERequested ) ; |
|
891 for (TInt index= 0; index < count ; index++ ) |
|
892 { |
|
893 TBool isPresent = EFalse; |
|
894 CMDnsSrvParamSet* srvParamSet = static_cast<CMDnsSrvParamSet*>(pnpFamily.GetParameterSetAtIndex( index, RParameterFamily::ERequested )); |
|
895 RBuf name; |
|
896 RBuf target; |
|
897 name.CreateL(255); |
|
898 target.CreateL(255); |
|
899 target.Copy(srvParamSet->Target()); |
|
900 name.Copy(srvParamSet->DomainName()); |
|
901 |
|
902 Log("ZeroConfSharingUi::OnPnPEventL - Print srv inst name\n\t"); |
|
903 QString tempname1 = QString::fromUtf16(name.Ptr(),name.Length()); |
|
904 |
|
905 logFile.open(QIODevice::Append); |
|
906 logFile.write(tempname1.toAscii()); |
|
907 logFile.close(); |
|
908 |
|
909 Log("ZeroConfSharingUi::OnPnPEventL - Print target\n\t"); |
|
910 QString tempname2 = QString::fromUtf16(target.Ptr(),target.Length()); |
|
911 |
|
912 logFile.open(QIODevice::Append); |
|
913 logFile.write(tempname2.toAscii()); |
|
914 logFile.close(); |
|
915 TChar ch = '.'; |
|
916 TInt pos = target.Locate(ch); |
|
917 |
|
918 RBuf targetName; |
|
919 targetName.CreateL(target.Mid(0,pos)); |
|
920 |
|
921 if(iContactName.Length()!=0) |
|
922 { |
|
923 iContactName.Close(); |
|
924 } |
|
925 iContactName.Create(targetName.Length()); |
|
926 iContactName.Copy(targetName); |
|
927 |
|
928 for(TInt i=0;i<iEntries.Count();i++) |
|
929 { |
|
930 if(iEntries[i]->ContactName().Compare(iContactName)==0) |
|
931 { |
|
932 Log("ZeroConfSharingUi::OnPnPEventL - Contact Exists\n\t"); |
|
933 |
|
934 QString tempname = QString::fromUtf8((const char*)iContactName.Ptr(),iContactName.Length()); |
|
935 |
|
936 logFile.open(QIODevice::Append); |
|
937 logFile.write(tempname.toUtf8()); |
|
938 logFile.close(); |
|
939 |
|
940 isPresent = ETrue; |
|
941 break; |
|
942 } |
|
943 } |
|
944 if(!isPresent) |
|
945 { |
|
946 Log("ZeroConfSharingUi::OnPnPEventL - New Contact Added\n"); |
|
947 contactInfo = Create_Icon_Contact(); |
|
948 } |
|
949 /* |
|
950 if(aServiceEventInfo.CountParameterFamilies() <= 1) |
|
951 { |
|
952 GetSrvInfo(iSrvName,EDnsQType_Any); |
|
953 } |
|
954 */ |
|
955 name.Close(); |
|
956 target.Close(); |
|
957 targetName.Close(); |
|
958 |
|
959 } |
|
960 |
|
961 |
|
962 } |
|
963 break; |
|
964 |
|
965 case EMdnsTxtParamset: |
|
966 { |
|
967 TUint count = pnpFamily.CountParameterSets ( RParameterFamily::ERequested ) ; |
|
968 for (TInt index= 0; index < count ; index++ ) |
|
969 { |
|
970 CMDnsTxtParamSet* txtParamSet = static_cast<CMDnsTxtParamSet*>(pnpFamily.GetParameterSetAtIndex( index, RParameterFamily::ERequested )); |
|
971 |
|
972 RArray <RBuf8> txtData ; |
|
973 txtParamSet->TxtDataL(txtData); |
|
974 |
|
975 |
|
976 if(contactInfo != NULL) |
|
977 { |
|
978 FetchBaseUrl(txtData); |
|
979 FetchIconUrl(txtData); |
|
980 FetchFileUrl(txtData); |
|
981 |
|
982 |
|
983 contactInfo->SetBaseUrl(iBaseUrl); |
|
984 FetchCurrentlyPlaying(txtData); |
|
985 FetchStatus(txtData); |
|
986 //See if we have got the Currently Played song |
|
987 if(iCurrentlyPlaying.Length()!=0) |
|
988 { |
|
989 contactInfo->SetCurrentlyPlaying(iCurrentlyPlaying); |
|
990 |
|
991 |
|
992 } |
|
993 else if (iStatus.Length()!=0) |
|
994 { |
|
995 contactInfo->SetStatus(iStatus); |
|
996 |
|
997 } |
|
998 iEntries.Append(Clone(contactInfo)); |
|
999 } |
|
1000 else |
|
1001 { |
|
1002 FetchCurrentlyPlaying(txtData); |
|
1003 FetchStatus(txtData); |
|
1004 CContactInfo** contact = NULL; |
|
1005 |
|
1006 for(TInt i=0;i<iEntries.Count();i++) |
|
1007 { |
|
1008 if(iEntries[i]->ContactName().Compare(iContactName)==0) |
|
1009 { |
|
1010 if(iCurrentlyPlaying.Length()!=0) |
|
1011 iEntries[i]->SetCurrentlyPlaying(iCurrentlyPlaying); |
|
1012 else if(iStatus.Length()!=0) |
|
1013 iEntries[i]->SetStatus(iStatus); |
|
1014 |
|
1015 TPtrC ptrName(reinterpret_cast<const TText*>(iSelectedContact.constData())); |
|
1016 RBuf8 tempcontact; |
|
1017 tempcontact.Create(ptrName.Length()); |
|
1018 tempcontact.Copy(ptrName); |
|
1019 if(iEntries[i]->ContactName().Compare(tempcontact)== 0) |
|
1020 { |
|
1021 ShowCur_Status_and_Track(); |
|
1022 } |
|
1023 tempcontact.Close(); |
|
1024 } |
|
1025 } |
|
1026 |
|
1027 } |
|
1028 |
|
1029 } |
|
1030 } |
|
1031 break; |
|
1032 |
|
1033 case EMdnsPublishResponseParamset: |
|
1034 { |
|
1035 TUint count = pnpFamily.CountParameterSets ( RParameterFamily::ERequested ) ; |
|
1036 for (TInt index= 0; index < count ; index++ ) |
|
1037 { |
|
1038 CMDnsPublishResponseParamSet* publishRespParam = static_cast<CMDnsPublishResponseParamSet*>(pnpFamily.GetParameterSetAtIndex( index, RParameterFamily::ERequested )); |
|
1039 RBuf name; |
|
1040 name.CreateL(255); |
|
1041 name.Copy(publishRespParam->DomainName()); |
|
1042 _LIT(KCRLF, "\r\n A service was published with the name: \n"); |
|
1043 RBuf str; |
|
1044 str.CreateL(255); |
|
1045 str.Copy(KCRLF); |
|
1046 name.Close(); |
|
1047 str.Close(); |
|
1048 } |
|
1049 } |
|
1050 break; |
|
1051 } |
|
1052 } |
|
1053 ptrInfo.Close(); |
|
1054 Log("ZeroConfSharingUi::OnPnPEventL - Exit\n"); |
|
1055 } |
|
1056 |
|
1057 void QZeroConfSharingUi::OnPnPError (TInt /*aError*/) |
|
1058 { |
|
1059 |
|
1060 } |
|
1061 |
|
1062 |
|
1063 void QZeroConfSharingUi::FetchBaseUrl(RArray <RBuf8> aTxtData) |
|
1064 { |
|
1065 iBaseUrl.Close(); |
|
1066 |
|
1067 _LIT8(KBaseUrl,"BaseUrl"); |
|
1068 TChar ch = '='; |
|
1069 RBuf8 key; |
|
1070 for(TInt index=0;index<aTxtData.Count();index++) |
|
1071 { |
|
1072 TInt position = aTxtData[index].Locate(ch); |
|
1073 if(position!= KErrNotFound) |
|
1074 { |
|
1075 key.Close(); |
|
1076 key.CreateL(aTxtData[index].Mid(0,(position-1))); |
|
1077 if(key.Compare(KBaseUrl)==0) |
|
1078 { |
|
1079 iBaseUrl.CreateL(aTxtData[index].Mid((position+2))); |
|
1080 break; |
|
1081 } |
|
1082 } |
|
1083 } |
|
1084 key.Close(); |
|
1085 } |
|
1086 |
|
1087 void QZeroConfSharingUi::FetchIconUrl(RArray <RBuf8> aTxtData) |
|
1088 { |
|
1089 iIconName.Close(); |
|
1090 |
|
1091 _LIT8(KIconUrl,"IconUrl"); |
|
1092 TChar ch = '='; |
|
1093 RBuf8 key; |
|
1094 for(TInt index=0;index<aTxtData.Count();index++) |
|
1095 { |
|
1096 TInt position = aTxtData[index].Locate(ch); |
|
1097 if(position!= KErrNotFound) |
|
1098 { |
|
1099 key.Close(); |
|
1100 key.CreateL(aTxtData[index].Mid(0,(position-1))); |
|
1101 if(key.Compare(KIconUrl)==0) |
|
1102 { |
|
1103 iIconName.CreateL(aTxtData[index].Mid((position+2))); |
|
1104 break; |
|
1105 } |
|
1106 } |
|
1107 } |
|
1108 key.Close(); |
|
1109 } |
|
1110 |
|
1111 void QZeroConfSharingUi::FetchFileUrl(RArray <RBuf8> aTxtData) |
|
1112 { |
|
1113 iFileName.Close(); |
|
1114 |
|
1115 _LIT8(KFileUrl,"FileUrl"); |
|
1116 TChar ch = '='; |
|
1117 RBuf8 key; |
|
1118 for(TInt index=0;index<aTxtData.Count();index++) |
|
1119 { |
|
1120 TInt position = aTxtData[index].Locate(ch); |
|
1121 if(position!= KErrNotFound) |
|
1122 { |
|
1123 key.Close(); |
|
1124 key.CreateL(aTxtData[index].Mid(0,(position-1))); |
|
1125 if(key.Compare(KFileUrl)==0) |
|
1126 { |
|
1127 iFileName.CreateL(aTxtData[index].Mid((position+2))); |
|
1128 break; |
|
1129 } |
|
1130 } |
|
1131 } |
|
1132 key.Close(); |
|
1133 } |
|
1134 |
|
1135 void QZeroConfSharingUi::FetchCurrentlyPlaying(RArray <RBuf8> aTxtData) |
|
1136 { |
|
1137 iCurrentlyPlaying.Close(); |
|
1138 |
|
1139 _LIT8(KNowPlaying,"Now playing"); |
|
1140 TChar ch = '='; |
|
1141 RBuf8 key; |
|
1142 TInt cnt = aTxtData.Count(); |
|
1143 for(TInt index=0;index<aTxtData.Count();index++) |
|
1144 { |
|
1145 TInt position = aTxtData[index].Locate(ch); |
|
1146 if(position!= KErrNotFound) |
|
1147 { |
|
1148 key.Close(); |
|
1149 key.CreateL(aTxtData[index].Mid(0,(position-1))); |
|
1150 if(key.Compare(KNowPlaying)==0) |
|
1151 { |
|
1152 iCurrentlyPlaying.CreateL(aTxtData[index].Mid((position+2))); |
|
1153 break; |
|
1154 } |
|
1155 } |
|
1156 } |
|
1157 key.Close(); |
|
1158 } |
|
1159 |
|
1160 void QZeroConfSharingUi::FetchStatus(RArray <RBuf8> aTxtData) |
|
1161 { |
|
1162 iStatus.Close(); |
|
1163 |
|
1164 _LIT8(KStatus,"Status"); |
|
1165 TChar ch = '='; |
|
1166 RBuf8 key; |
|
1167 for(TInt index=0;index<aTxtData.Count();index++) |
|
1168 { |
|
1169 TInt position = aTxtData[index].Locate(ch); |
|
1170 if(position!= KErrNotFound) |
|
1171 { |
|
1172 key.Close(); |
|
1173 key.CreateL(aTxtData[index].Mid(0,(position-1))); |
|
1174 if(key.Compare(KStatus)==0) |
|
1175 { |
|
1176 iStatus.CreateL(aTxtData[index].Mid((position+2))); |
|
1177 break; |
|
1178 } |
|
1179 } |
|
1180 } |
|
1181 key.Close(); |
|
1182 } |
|
1183 |
|
1184 |
|
1185 CContactInfo* QZeroConfSharingUi::Clone(CContactInfo* aContact) |
|
1186 { |
|
1187 //Clone the entry and insert in Hash |
|
1188 CContactInfo* contact = CContactInfo::NewL(); |
|
1189 contact->SetBaseUrl(aContact->BaseUrl()); |
|
1190 contact->StoreContactDirectory(aContact->ContactDirectory()); |
|
1191 contact->SetContactName(aContact->ContactName()); |
|
1192 contact->SetCurrentlyPlaying(aContact->CurrentlyPlaying()); |
|
1193 contact->SetStatus(aContact->Status()); |
|
1194 |
|
1195 return contact; |
|
1196 |
|
1197 //iContactEntries.Insert(contact->ContactName(),contact); |
|
1198 } |
|
1199 |
|
1200 CContactInfo* QZeroConfSharingUi::Create_Icon_Contact() |
|
1201 { |
|
1202 CContactInfo* contact = NULL; |
|
1203 QString qtName = QString::fromUtf8((const char*)iContactName.Ptr(),iContactName.Length()); |
|
1204 QString path(":/Icons/user"); |
|
1205 QListWidgetItem* item = new QListWidgetItem(QIcon(":/Images/Unknown"),qtName ); |
|
1206 ui.listAvatars->addItem(item); |
|
1207 |
|
1208 PopulateMainWindow(qtName); |
|
1209 |
|
1210 //Create a new contact |
|
1211 contact = CContactInfo::NewL(); |
|
1212 contact->SetContactName(iContactName); |
|
1213 //Creates the contact specific directory |
|
1214 contact->SetContactDirectory(); |
|
1215 |
|
1216 return contact; |
|
1217 |
|
1218 } |