Multimedia.cpp 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919
  1. #include "Multimedia.h"
  2. #include "MultimediaService.h"
  3. #include "AutoConnect.h"
  4. #include "UserInterfaceUtility.h"
  5. #include "Utility.h"
  6. #include "BusinessLogic/Audio.h"
  7. #include "UserInterfaceUtility.h"
  8. #include "BusinessLogic/ark_api.h"
  9. #include "BusinessLogic/Setting.h"
  10. #include "display.h"
  11. #include <sys/types.h>
  12. #include <sys/stat.h>
  13. #include <fcntl.h>
  14. #include <QProcess>
  15. #include <QFile>
  16. #include <QDomDocument>
  17. #include <unistd.h>
  18. //#include <QGuiApplication>
  19. #include "ArkApplication.h"
  20. class MultimediaPrivate
  21. {
  22. Q_DISABLE_COPY(MultimediaPrivate)
  23. public:
  24. explicit MultimediaPrivate(Multimedia* parent);
  25. ~MultimediaPrivate();
  26. void initializeProxy();
  27. bool requestAudioSource(const AudioSource source);
  28. void releaseAudioSource(const AudioSource source);
  29. void connectAllSlots();
  30. Local::DbusServer::Multimedia* m_MultimediaServiceProxy;
  31. Multimedia::ImageFocus m_ImageFocus;
  32. // AudioSource m_AudioSource;
  33. DeviceWatcherType m_DeviceWatcherType;
  34. DeviceWatcherStatus m_SDStatus;
  35. DeviceWatcherStatus m_USBStatus;
  36. bool m_SDDiskMusicListEmpty;
  37. bool m_USBDiskMusicListEmpty;
  38. bool m_SDDiskImageListEmpty;
  39. bool m_USBDiskImageListEmpty;
  40. bool m_SDDiskVideoListEmpty;
  41. bool m_USBDiskVideoListEmpty;
  42. QTimer *m_testTimer;
  43. private:
  44. Multimedia* m_Parent;
  45. };
  46. void Multimedia::startMultimedia()
  47. {
  48. static bool flag = true;
  49. if (flag) {
  50. flag = false;
  51. QStringList cmd;
  52. cmd << QString("-t") << MultimediaApplication;
  53. bool result = QProcess::startDetached(ArkApplication::applicationFilePath(), cmd);
  54. qDebug() << __PRETTY_FUNCTION__ << __LINE__ << "result" << result;
  55. }
  56. }
  57. void Multimedia::setImageFocus(const Multimedia::ImageFocus focus)
  58. {
  59. m_Private->m_ImageFocus = focus;
  60. if (Multimedia::F_ImageSDFocus == m_Private->m_ImageFocus) {
  61. m_Private->m_DeviceWatcherType = DWT_SDDisk;
  62. } else if (Multimedia::F_ImageUSBFocus == m_Private->m_ImageFocus) {
  63. m_Private->m_DeviceWatcherType = DWT_USBDisk;
  64. }
  65. }
  66. void Multimedia::reset()
  67. {
  68. initializePrivate();
  69. if (NULL != m_Private->m_MultimediaServiceProxy) {
  70. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->reset();
  71. reply.waitForFinished();
  72. if (reply.isError()) {
  73. qDebug() << "method call Multimedia::reset failed" << reply.error();
  74. }
  75. }
  76. }
  77. void Multimedia::musicPlayerSetPlayModeToggle()
  78. {
  79. initializePrivate();
  80. if (NULL != m_Private->m_MultimediaServiceProxy) {
  81. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->musicPlayerSetPlayModeToggle();
  82. reply.waitForFinished();
  83. if (reply.isError()) {
  84. qDebug() << "method call Multimedia::musicPlayerSetPlayModeToggle failed" << reply.error();
  85. }
  86. }
  87. }
  88. void Multimedia::musicPlayerSetPlayMode(const int mode)
  89. {
  90. initializePrivate();
  91. if (NULL != m_Private->m_MultimediaServiceProxy) {
  92. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->musicPlayerSetPlayMode(mode);
  93. reply.waitForFinished();
  94. if (reply.isError()) {
  95. qDebug() << "method call Multimedia::musicPlayerSetPlayMode failed" << reply.error();
  96. }
  97. }
  98. }
  99. void Multimedia::musicPlayerSetPlayStatusToggle()
  100. {
  101. initializePrivate();
  102. if (NULL != m_Private->m_MultimediaServiceProxy) {
  103. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->musicPlayerSetPlayStatusToggle();
  104. reply.waitForFinished();
  105. if (reply.isError()) {
  106. qDebug() << "method call Multimedia::musicPlayerSetPlayStatusToggle failed" << reply.error();
  107. }
  108. }
  109. }
  110. void Multimedia::musicPlayerSetPlayStatus(const int status)
  111. {
  112. initializePrivate();
  113. if (NULL != m_Private->m_MultimediaServiceProxy) {
  114. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->musicPlayerSetPlayStatus(status);
  115. reply.waitForFinished();
  116. if (reply.isError()) {
  117. qDebug() << "method call Multimedia::musicPlayerSetPlayStatus failed" << reply.error();
  118. }
  119. }
  120. }
  121. void Multimedia::musicPlayerPlayListViewIndex(const int type, const int index, const int millesimal)
  122. {
  123. initializePrivate();
  124. m_Private->requestAudioSource(AS_Music);
  125. if (NULL != m_Private->m_MultimediaServiceProxy) {
  126. QDBusPendingReply<void> reply = m_Private->m_MultimediaServiceProxy->musicPlayerPlayListViewIndex(type, index, millesimal);
  127. if (reply.isError()) {
  128. qDebug() << "method call Multimedia::musicPlayerPlayListViewIndex failed" << reply.error();
  129. }
  130. }
  131. }
  132. void Multimedia::musicPlayerPlayPreviousListViewIndex()
  133. {
  134. initializePrivate();
  135. if (NULL != m_Private->m_MultimediaServiceProxy) {
  136. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->musicPlayerPlayPreviousListViewIndex();
  137. //reply.waitForFinished();
  138. if (reply.isError()) {
  139. qDebug() << "method call Multimedia::musicPlayerPlayPreviousListViewIndex failed" << reply.error();
  140. }
  141. }
  142. }
  143. void Multimedia::musicPlayerPlayNextListViewIndex()
  144. {
  145. initializePrivate();
  146. if (NULL != m_Private->m_MultimediaServiceProxy) {
  147. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->musicPlayerPlayNextListViewIndex();
  148. //reply.waitForFinished();
  149. if (reply.isError()) {
  150. qDebug() << "method call Multimedia::musicPlayerPlayNextListViewIndex failed" << reply.error();
  151. }
  152. }
  153. }
  154. void Multimedia::musicPlayerSeekToMillesimal(const int millesimal)
  155. {
  156. initializePrivate();
  157. if (NULL != m_Private->m_MultimediaServiceProxy) {
  158. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->musicPlayerSeekToMillesimal(millesimal);
  159. reply.waitForFinished();
  160. if (reply.isError()) {
  161. qDebug() << "method call Multimedia::musicPlayerSeekToMillesimal failed" << reply.error();
  162. }
  163. }
  164. }
  165. void Multimedia::musicPlayerExit()
  166. {
  167. initializePrivate();
  168. if (NULL != m_Private->m_MultimediaServiceProxy) {
  169. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->musicPlayerExit();
  170. reply.waitForFinished();
  171. if (reply.isError()) {
  172. qDebug() << "method call Multimedia::musicPlayerExit failed" << reply.error();
  173. }
  174. }
  175. }
  176. void Multimedia::imagePlayerPlayListViewIndex(const int type, const int index)
  177. {
  178. initializePrivate();
  179. if (NULL != m_Private->m_MultimediaServiceProxy) {
  180. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->imagePlayerPlayListViewIndex(type, index);
  181. //reply.waitForFinished();
  182. if (reply.isError()) {
  183. qDebug() << "method call Multimedia::imagePlayerPlayListViewIndex failed" << reply.error();
  184. }
  185. }
  186. }
  187. void Multimedia::imagePlayerPlayPreviousListViewIndex()
  188. {
  189. initializePrivate();
  190. if (NULL != m_Private->m_MultimediaServiceProxy) {
  191. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->imagePlayerPlayPreviousListViewIndex();
  192. //reply.waitForFinished();
  193. if (reply.isError()) {
  194. qDebug() << "method call Multimedia::imagePlayerPlayListViewIndex failed" << reply.error();
  195. }
  196. }
  197. }
  198. void Multimedia::imagePlayerPlayNextListViewIndex()
  199. {
  200. initializePrivate();
  201. if (NULL != m_Private->m_MultimediaServiceProxy) {
  202. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->imagePlayerPlayNextListViewIndex();
  203. //reply.waitForFinished();
  204. if (reply.isError()) {
  205. qDebug() << "method call Multimedia::imagePlayerPlayNextListViewIndex failed" << reply.error();
  206. }
  207. }
  208. }
  209. void Multimedia::imagePlayerRotateImage()
  210. {
  211. initializePrivate();
  212. if (NULL != m_Private->m_MultimediaServiceProxy) {
  213. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->imagePlayerRotateImage();
  214. reply.waitForFinished();
  215. if (reply.isError()) {
  216. qDebug() << "method call Multimedia::imagePlayerRotateImage failed" << reply.error();
  217. }
  218. }
  219. }
  220. void Multimedia::imagePlayerZoomInImage()
  221. {
  222. initializePrivate();
  223. if (NULL != m_Private->m_MultimediaServiceProxy) {
  224. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->imagePlayerZoomInImage();
  225. reply.waitForFinished();
  226. if (reply.isError()) {
  227. qDebug() << "method call Multimedia::imagePlayerZoomInImage failed" << reply.error();
  228. }
  229. }
  230. }
  231. void Multimedia::imagePlayerZoomOutImage()
  232. {
  233. initializePrivate();
  234. if (NULL != m_Private->m_MultimediaServiceProxy) {
  235. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->imagePlayerZoomOutImage();
  236. reply.waitForFinished();
  237. if (reply.isError()) {
  238. qDebug() << "method call Multimedia::imagePlayerZoomOutImage failed" << reply.error();
  239. }
  240. }
  241. }
  242. void Multimedia::videoPlayerSetPlayModeToggle()
  243. {
  244. initializePrivate();
  245. if (NULL != m_Private->m_MultimediaServiceProxy) {
  246. QDBusPendingReply<void> reply = m_Private->m_MultimediaServiceProxy->videoPlayerSetPlayModeToggle();
  247. reply.waitForFinished();
  248. if (reply.isError()) {
  249. qDebug() << "method call Multimedia::videoPlayerSetPlayModeToggle failed" << reply.error();
  250. }
  251. }
  252. }
  253. void Multimedia::videoPlayerSetPlayStatusToggle()
  254. {
  255. initializePrivate();
  256. if (NULL != m_Private->m_MultimediaServiceProxy) {
  257. QDBusPendingReply<void> reply = m_Private->m_MultimediaServiceProxy->videoPlayerSetPlayStatusToggle();
  258. reply.waitForFinished();
  259. if (reply.isError()) {
  260. qDebug() << "method call Multimedia::videoPlayerSetPlayStatusToggle failed" << reply.error();
  261. }
  262. }
  263. }
  264. void Multimedia::videoPlayerSetPlayStatus(const VideoPlayerPlayStatus status)
  265. {
  266. initializePrivate();
  267. if (NULL != m_Private->m_MultimediaServiceProxy) {
  268. QDBusPendingReply<void> reply = m_Private->m_MultimediaServiceProxy->videoPlayerSetPlayStatus(status);
  269. reply.waitForFinished();
  270. if (reply.isError()) {
  271. qDebug() << "method call Multimedia::videoPlayerSetPlayStatus failed" << reply.error();
  272. }
  273. }
  274. }
  275. void Multimedia::videoPlayerPlayListViewIndex(const int type, const int index, const int x, const int y, const int width, const int height, const int millesimal)
  276. {
  277. qDebug() << __PRETTY_FUNCTION__;
  278. initializePrivate();
  279. g_Setting->setDisplayMode(DISP_PLAYER);
  280. m_Private->requestAudioSource(AS_Video);
  281. if (NULL != m_Private->m_MultimediaServiceProxy){
  282. QDBusPendingReply<void> reply = m_Private->m_MultimediaServiceProxy->videoPlayerPlayListViewIndex(type, index, x, y, width, height, millesimal);
  283. //reply.waitForFinished();
  284. if (reply.isError()) {
  285. qDebug() << "method call Multimedia::videoPlayerPlayListViewIndex failed" << reply.error();
  286. }
  287. }
  288. }
  289. void Multimedia::videoPlayerPlayPreviousListViewIndex()
  290. {
  291. initializePrivate();
  292. if (NULL != m_Private->m_MultimediaServiceProxy) {
  293. QDBusPendingReply<void> reply = m_Private->m_MultimediaServiceProxy->videoPlayerPlayPreviousListViewIndex();
  294. //reply.waitForFinished();
  295. if (reply.isError()) {
  296. qDebug() << "method call Multimedia::videoPlayerPlayPreviousListViewIndex failed" << reply.error();
  297. }
  298. }
  299. }
  300. void Multimedia::videoPlayerPlayNextListViewIndex()
  301. {
  302. initializePrivate();
  303. if (NULL != m_Private->m_MultimediaServiceProxy) {
  304. QDBusPendingReply<void> reply = m_Private->m_MultimediaServiceProxy->videoPlayerPlayNextListViewIndex();
  305. //reply.waitForFinished();
  306. if (reply.isError()) {
  307. qDebug() << "method call Multimedia::videoPlayerPlayNextListViewIndex failed" << reply.error();
  308. }
  309. }
  310. }
  311. void Multimedia::videoPlayerSeekToMillesimal(const int millesimal)
  312. {
  313. initializePrivate();
  314. if (NULL != m_Private->m_MultimediaServiceProxy) {
  315. QDBusPendingReply<void> reply = m_Private->m_MultimediaServiceProxy->videoPlayerSeekToMillesimal(millesimal);
  316. reply.waitForFinished();
  317. if (reply.isError()) {
  318. qDebug() << "method call Multimedia::videoPlayerSeekToMillesimal failed" << reply.error();
  319. }
  320. }
  321. }
  322. void Multimedia::videoPlayerExit()
  323. {
  324. initializePrivate();
  325. if (NULL != m_Private->m_MultimediaServiceProxy) {
  326. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->videoPlayerExit();
  327. reply.waitForFinished();
  328. if (reply.isError()) {
  329. qDebug() << "method call Multimedia::videoPlayerExit failed" << reply.error();
  330. }
  331. }
  332. }
  333. void Multimedia::writeCmdToMplayer(QString cmd){
  334. Q_UNUSED(cmd);
  335. // initializePrivate();
  336. // if (NULL != m_Private->m_MultimediaServiceProxy) {
  337. // QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->writeCmdToMplayer(cmd);
  338. // reply.waitForFinished();
  339. // if (reply.isError()) {
  340. // qDebug() << "method call Multimedia::videoPlayerExit failed" << reply.error();
  341. // }
  342. // }
  343. }
  344. void Multimedia::videoPlayerVisible(const bool flag)
  345. {
  346. initializePrivate();
  347. if (NULL != m_Private->m_MultimediaServiceProxy) {
  348. QDBusPendingReply<> reply = m_Private->m_MultimediaServiceProxy->videoPlayerVisible(flag);
  349. reply.waitForFinished();
  350. if (reply.isError()) {
  351. qDebug() << "method call Multimedia::videoPlayerVisible failed" << reply.error();
  352. }
  353. }
  354. }
  355. void Multimedia::videoPlayerSetPlayMode(const int mode)
  356. {
  357. initializePrivate();
  358. emit onVideoPlayerPlayMode(mode);
  359. qDebug()<<Q_FUNC_INFO<<"line :"<<__LINE__<<"video_playermode ="<<mode;
  360. }
  361. void Multimedia::videoPlayerSetGeometry(int x,int y,int width,int height)
  362. {
  363. initializePrivate();
  364. if (NULL != m_Private->m_MultimediaServiceProxy) {
  365. QDBusPendingReply<void> reply = m_Private->m_MultimediaServiceProxy->videoPlayerSetGeometry(x,y,width,height);
  366. reply.waitForFinished();
  367. if (reply.isError()) {
  368. qDebug() << "method call Multimedia::videoPlayerSetGeometry failed" << reply.error();
  369. }
  370. }
  371. }
  372. Multimedia::ImageFocus Multimedia::getImageFocus()
  373. {
  374. return m_Private->m_ImageFocus;
  375. }
  376. DeviceWatcherStatus Multimedia::getDeviceStatus(const DeviceWatcherType type)
  377. {
  378. DeviceWatcherStatus status = DWS_Undefine;
  379. if (DWT_SDDisk == type) {
  380. status = m_Private->m_SDStatus;
  381. } else if (DWT_USBDisk == type) {
  382. status = m_Private->m_USBStatus;
  383. }
  384. return status;
  385. }
  386. DeviceWatcherType Multimedia::getDeviceActiveType()
  387. {
  388. return m_Private->m_DeviceWatcherType;
  389. }
  390. bool Multimedia::musicListEmpty(const DeviceWatcherType type)
  391. {
  392. bool flag = true;
  393. if (DWT_SDDisk == type) {
  394. flag = m_Private->m_SDDiskMusicListEmpty;
  395. } else if (DWT_USBDisk == type) {
  396. flag = m_Private->m_USBDiskMusicListEmpty;
  397. }
  398. qDebug() << __PRETTY_FUNCTION__ << __LINE__ << type << flag;
  399. return flag;
  400. }
  401. bool Multimedia::imageListEmpty(const DeviceWatcherType type)
  402. {
  403. bool flag = true;
  404. if (DWT_SDDisk == type) {
  405. flag = m_Private->m_SDDiskImageListEmpty;
  406. } else if (DWT_USBDisk == type) {
  407. flag = m_Private->m_USBDiskImageListEmpty;
  408. }
  409. qDebug() << __PRETTY_FUNCTION__ << __LINE__ << type << flag;
  410. return flag;
  411. }
  412. bool Multimedia::videoListEmpty(const DeviceWatcherType type)
  413. {
  414. bool flag = true;
  415. if (DWT_SDDisk == type) {
  416. flag = m_Private->m_SDDiskVideoListEmpty;
  417. } else if (DWT_USBDisk == type) {
  418. flag = m_Private->m_USBDiskVideoListEmpty;
  419. }
  420. qDebug() << __PRETTY_FUNCTION__ << __LINE__ << type << flag;
  421. return flag;
  422. }
  423. void Multimedia::onDeviceWatcherStatusHandler(const DeviceWatcherType type, const DeviceWatcherStatus status)
  424. {
  425. if (DWT_SDDisk == type) {
  426. m_Private->m_SDStatus = status;
  427. } else if (DWT_USBDisk == type) {
  428. m_Private->m_USBStatus = status;
  429. }
  430. if (DWS_Remove == status) {
  431. if (DWT_SDDisk == type) {
  432. m_Private->m_SDDiskMusicListEmpty = true;
  433. m_Private->m_SDDiskImageListEmpty = true;
  434. m_Private->m_SDDiskVideoListEmpty = true;
  435. } else if (DWT_USBDisk == type) {
  436. m_Private->m_USBDiskMusicListEmpty = true;
  437. m_Private->m_USBDiskImageListEmpty = true;
  438. m_Private->m_USBDiskVideoListEmpty = true;
  439. }
  440. switch (g_Audio->getMultimediaSource()) {
  441. case AS_Music:
  442. case AS_Video: {
  443. if (type == m_Private->m_DeviceWatcherType) {
  444. m_Private->m_DeviceWatcherType = DWT_Undefine;
  445. }
  446. break;
  447. }
  448. default: {
  449. break;
  450. }
  451. }
  452. }
  453. }
  454. void Multimedia::onMusicPlayerFileNamesHandler(const int type, const QString &xml)
  455. {
  456. if (DWT_SDDisk == type) {
  457. QDomDocument document;
  458. document.setContent(xml);
  459. QDomElement root = document.documentElement();
  460. if ((!root.isNull())
  461. && (root.isElement())
  462. && (QString("MusicPlayer") == root.toElement().tagName())
  463. && (root.hasChildNodes())) {
  464. QDomNode node = root.firstChild();
  465. while (!node.isNull()) {
  466. if (node.isElement()) {
  467. QDomElement element = node.toElement();
  468. if (!element.isNull()) {
  469. if (QString("SDFileNames") == element.tagName()) {
  470. QDomNodeList nodeList = element.childNodes();
  471. if (0 == nodeList.length()) {
  472. m_Private->m_SDDiskMusicListEmpty = true;
  473. } else {
  474. m_Private->m_SDDiskMusicListEmpty = false;
  475. }
  476. break;
  477. }
  478. }
  479. }
  480. node = node.nextSibling();
  481. }
  482. }
  483. } else if (DWT_USBDisk == type) {
  484. QDomDocument document;
  485. document.setContent(xml);
  486. QDomElement root = document.documentElement();
  487. if ((!root.isNull())
  488. && (root.isElement())
  489. && (QString("MusicPlayer") == root.toElement().tagName())
  490. && (root.hasChildNodes())) {
  491. QDomNode node = root.firstChild();
  492. while (!node.isNull()) {
  493. if (node.isElement()) {
  494. QDomElement element = node.toElement();
  495. if (!element.isNull()) {
  496. if (QString("USBFileNames") == element.tagName()) {
  497. QDomNodeList nodeList = element.childNodes();
  498. if (0 == nodeList.length()) {
  499. m_Private->m_USBDiskMusicListEmpty = true;
  500. } else {
  501. m_Private->m_USBDiskMusicListEmpty = false;
  502. }
  503. break;
  504. }
  505. }
  506. }
  507. node = node.nextSibling();
  508. }
  509. }
  510. }
  511. }
  512. void Multimedia::onImagePlayerFileNamesHandler(const int type, const QString &xml)
  513. {
  514. if (DWT_SDDisk == type) {
  515. QDomDocument document;
  516. document.setContent(xml);
  517. QDomElement root = document.documentElement();
  518. if ((!root.isNull())
  519. && (root.isElement())
  520. && (QString("ImagePlayer") == root.toElement().tagName())
  521. && (root.hasChildNodes())) {
  522. QDomNode node = root.firstChild();
  523. while (!node.isNull()) {
  524. if (node.isElement()) {
  525. QDomElement element = node.toElement();
  526. if (!element.isNull()) {
  527. if (QString("SDFileNames") == element.tagName()) {
  528. QDomNodeList nodeList = element.childNodes();
  529. if (0 == nodeList.length()) {
  530. m_Private->m_SDDiskImageListEmpty = true;
  531. } else {
  532. m_Private->m_SDDiskImageListEmpty = false;
  533. }
  534. break;
  535. }
  536. }
  537. }
  538. node = node.nextSibling();
  539. }
  540. }
  541. } else if (DWT_USBDisk == type) {
  542. QDomDocument document;
  543. document.setContent(xml);
  544. QDomElement root = document.documentElement();
  545. if ((!root.isNull())
  546. && (root.isElement())
  547. && (QString("ImagePlayer") == root.toElement().tagName())
  548. && (root.hasChildNodes())) {
  549. QDomNode node = root.firstChild();
  550. while (!node.isNull()) {
  551. if (node.isElement()) {
  552. QDomElement element = node.toElement();
  553. if (!element.isNull()) {
  554. if (QString("USBFileNames") == element.tagName()) {
  555. QDomNodeList nodeList = element.childNodes();
  556. if (0 == nodeList.length()) {
  557. m_Private->m_USBDiskImageListEmpty = true;
  558. } else {
  559. m_Private->m_USBDiskImageListEmpty = false;
  560. }
  561. break;
  562. }
  563. }
  564. }
  565. node = node.nextSibling();
  566. }
  567. }
  568. }
  569. }
  570. void Multimedia::onVideoPlayerFileNamesHandler(const int type, const QString &xml)
  571. {
  572. if (DWT_SDDisk == type) {
  573. QDomDocument document;
  574. document.setContent(xml);
  575. QDomElement root = document.documentElement();
  576. if ((!root.isNull())
  577. && (root.isElement())
  578. && (QString("VideoPlayer") == root.toElement().tagName())
  579. && (root.hasChildNodes())) {
  580. QDomNode node = root.firstChild();
  581. while (!node.isNull()) {
  582. if (node.isElement()) {
  583. QDomElement element = node.toElement();
  584. if (!element.isNull()) {
  585. if (QString("SDFileNames") == element.tagName()) {
  586. QDomNodeList nodeList = element.childNodes();
  587. if (0 == nodeList.length()) {
  588. m_Private->m_SDDiskVideoListEmpty = true;
  589. } else {
  590. m_Private->m_SDDiskVideoListEmpty = false;
  591. }
  592. break;
  593. }
  594. }
  595. }
  596. node = node.nextSibling();
  597. }
  598. }
  599. } else if (DWT_USBDisk == type) {
  600. QDomDocument document;
  601. document.setContent(xml);
  602. QDomElement root = document.documentElement();
  603. if ((!root.isNull())
  604. && (root.isElement())
  605. && (QString("VideoPlayer") == root.toElement().tagName())
  606. && (root.hasChildNodes())) {
  607. QDomNode node = root.firstChild();
  608. while (!node.isNull()) {
  609. if (node.isElement()) {
  610. QDomElement element = node.toElement();
  611. if (!element.isNull()) {
  612. if (QString("USBFileNames") == element.tagName()) {
  613. QDomNodeList nodeList = element.childNodes();
  614. if (0 == nodeList.length()) {
  615. m_Private->m_USBDiskVideoListEmpty = true;
  616. } else {
  617. m_Private->m_USBDiskVideoListEmpty = false;
  618. }
  619. break;
  620. }
  621. }
  622. }
  623. node = node.nextSibling();
  624. }
  625. }
  626. }
  627. }
  628. void Multimedia::onMusicPlayerPlayStatusHandler(const DeviceWatcherType type, const MusicPlayerPlayStatus status)
  629. {
  630. Q_UNUSED(status);
  631. qDebug() << __PRETTY_FUNCTION__ << type;
  632. m_Private->m_DeviceWatcherType = type;
  633. }
  634. void Multimedia::onImagePlayerChangeHandler(const int type, const QString &filePath, const int index, const int percent, const int rotate)
  635. {
  636. Q_UNUSED(percent);
  637. Q_UNUSED(rotate);
  638. qDebug() << __PRETTY_FUNCTION__ << type << filePath << index;
  639. m_Private->m_DeviceWatcherType = type;
  640. }
  641. void Multimedia::onVideoPlayerPlayStatusHandler(const DeviceWatcherType type, const VideoPlayerPlayStatus status)
  642. {
  643. Q_UNUSED(status);
  644. qDebug() << __PRETTY_FUNCTION__ << type;
  645. m_Private->m_DeviceWatcherType = type;
  646. }
  647. void Multimedia::onHolderChange(const AudioSource oldHolder, const AudioSource newHolder)
  648. {
  649. qDebug() << __PRETTY_FUNCTION__ << oldHolder << newHolder;
  650. switch (oldHolder) {
  651. case AS_Music: {
  652. switch (newHolder) {
  653. case AS_Radio:
  654. case AS_BluetoothPhone:
  655. case AS_Aux: {
  656. if(newHolder != AS_BluetoothPhone)
  657. {
  658. qDebug()<<"+++++++MPPS_Pause5555++++++";
  659. musicPlayerSetPlayStatus(MPPS_Pause);
  660. }
  661. break;
  662. }
  663. default: {
  664. qDebug()<<"++++++xxxxx00000++++++";
  665. // musicPlayerExit();
  666. break;
  667. }
  668. }
  669. break;
  670. }
  671. case AS_Video: {
  672. switch (newHolder) {
  673. case AS_Radio:
  674. case AS_BluetoothMusic:
  675. case AS_BluetoothPhone:
  676. case AS_Aux: {
  677. videoPlayerSetPlayStatus(VPPS_Pause);
  678. break;
  679. }
  680. default: {
  681. qDebug()<<"===========videoPlayerExit1111";
  682. videoPlayerExit();
  683. break;
  684. }
  685. }
  686. break;
  687. }
  688. default: {
  689. break;
  690. }
  691. }
  692. switch (newHolder) {
  693. case AS_Music: {
  694. qDebug()<<"===========videoPlayerExit2222";
  695. videoPlayerExit();
  696. musicPlayerSetPlayStatus(MPPS_Play);
  697. //musicInitialize();
  698. break;
  699. }
  700. case AS_Video: {
  701. //musicPlayerExit();
  702. break;
  703. }
  704. case AS_CarplayMusic:
  705. case AS_CarplayPhone:
  706. case AS_AutoMusic:
  707. case AS_AutoPhone:
  708. case AS_CarlifeMusic:
  709. case AS_CarlifePhone:
  710. case AS_ECLinkMusic:
  711. case AS_ECLinkBluetoothMusic:
  712. case AS_HiCarMusic:
  713. case AS_HiCarBluetoothMusic:
  714. {
  715. qDebug()<<"===========videoPlayerExit3333";
  716. videoPlayerExit();
  717. break;
  718. }
  719. default: {
  720. break;
  721. }
  722. }
  723. }
  724. Multimedia::Multimedia(QObject *parent)
  725. : QObject(parent)
  726. , m_Private(NULL)
  727. {
  728. initializePrivate();
  729. }
  730. Multimedia::~Multimedia()
  731. {
  732. }
  733. void Multimedia::initializePrivate()
  734. {
  735. if (NULL == m_Private) {
  736. m_Private.reset(new MultimediaPrivate(this));
  737. }
  738. }
  739. void Multimedia::onTimeout()
  740. {
  741. printf("==========onTimeout()\n");
  742. // static int test = 1;
  743. // if(test == 1){
  744. // videoPlayerPlayListViewIndex(DWT_USBDisk, 0, 680, 0,1240, 720, 0);
  745. // test = 0;
  746. // // videoPlayerPlayListViewIndex(const int type, const int index, const int x, const int y, const int width, const int height, const int millesimal)
  747. // }
  748. // else{
  749. // qDebug()<<"===========videoPlayerExit4444";
  750. // videoPlayerExit();
  751. // }
  752. }
  753. MultimediaPrivate::MultimediaPrivate(Multimedia *parent)
  754. : m_Parent(parent)
  755. {
  756. m_MultimediaServiceProxy = NULL;
  757. m_ImageFocus = Multimedia::F_ImageUnfocus;
  758. // m_AudioSource = AS_Radio;
  759. m_DeviceWatcherType = DWT_Undefine;
  760. m_SDStatus = DWS_Empty;
  761. m_USBStatus = DWS_Empty;
  762. m_SDDiskMusicListEmpty = true;
  763. m_USBDiskMusicListEmpty = true;
  764. m_SDDiskImageListEmpty = true;
  765. m_USBDiskImageListEmpty = true;
  766. m_SDDiskVideoListEmpty = true;
  767. m_USBDiskVideoListEmpty = true;
  768. m_testTimer = new QTimer(m_Parent);
  769. m_testTimer->setInterval(5000);
  770. QObject::connect(m_testTimer,SIGNAL(timeout()),m_Parent,SLOT(onTimeout()));
  771. initializeProxy();
  772. connectAllSlots();
  773. }
  774. MultimediaPrivate::~MultimediaPrivate()
  775. {
  776. }
  777. void MultimediaPrivate::initializeProxy()
  778. {
  779. if (NULL == m_MultimediaServiceProxy) {
  780. m_MultimediaServiceProxy = new Local::DbusServer::Multimedia(ArkMicroMultimediaService,
  781. ArkMicroMultimediaPath,
  782. QDBusConnection::sessionBus(),
  783. qApp);
  784. }
  785. }
  786. bool MultimediaPrivate::requestAudioSource(const AudioSource source)
  787. {
  788. switch (source) {
  789. case AS_Music:
  790. case AS_Video: {
  791. g_Audio->requestAudioSource(source);
  792. break;
  793. }
  794. default: {
  795. break;
  796. }
  797. }
  798. return true;
  799. }
  800. void MultimediaPrivate::releaseAudioSource(const AudioSource source)
  801. {
  802. switch (source) {
  803. case AS_Music:
  804. case AS_Video: {
  805. g_Audio->releaseAudioSource(source);
  806. }
  807. default: {
  808. break;
  809. }
  810. }//lfp
  811. }
  812. void MultimediaPrivate::connectAllSlots()
  813. {
  814. if (NULL != m_MultimediaServiceProxy) {
  815. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onDeviceWatcherStatus(int, int)));
  816. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onImagePlayerChange(int, const QString &, int, int, int)));
  817. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onImagePlayerFileNames(int, const QString &)));
  818. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onMusicPlayerElapsedInformation(int, int)));
  819. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onMusicPlayerFileNames(int, const QString &)));
  820. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onMusicPlayerID3TagChange(int, int, const QString , const QString, const QString &, const QString &, int)));
  821. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onMusicPlayerPlayMode(int)));
  822. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onMusicPlayerPlayStatus(int, int)));
  823. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onVideoPlayerElapsedInformation(int, int)));
  824. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onVideoPlayerVisible(bool)));
  825. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onVideoPlayerFileNames(int, const QString &)));
  826. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onVideoPlayerInformation(int, int, const QString &, int)));
  827. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onVideoPlayerPlayMode(int)));
  828. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onVideoPlayerPlayStatus(int, int)));
  829. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onVideoPlayerShowStatus(int)));
  830. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onMusicPlayerFileArtist(int,QStringList)));
  831. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onMusicPlayerExit()));
  832. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onVideoPlayerExit()));
  833. //LFPconnectSignalAndSlotByNamesake(g_Audio, m_Parent, ARKRECEIVER(onHolderChange(const int, const int)));
  834. connectSignalAndSignalByNamesake(m_MultimediaServiceProxy, m_Parent, ARKSENDER(onSliderTouchEnable(bool))); // dll add 20190805
  835. Qt::ConnectionType type = static_cast<Qt::ConnectionType>(Qt::AutoConnection | Qt::UniqueConnection);
  836. QObject::connect(m_MultimediaServiceProxy, ARKSENDER(onDeviceWatcherStatus(const int, const int)),
  837. m_Parent, ARKRECEIVER(onDeviceWatcherStatusHandler(const int, const int)),
  838. type);
  839. QObject::connect(m_MultimediaServiceProxy, ARKSENDER(onMusicPlayerFileNames(const int, const QString &)),
  840. m_Parent, ARKRECEIVER(onMusicPlayerFileNamesHandler(const int, const QString &)),
  841. type);
  842. QObject::connect(m_MultimediaServiceProxy, ARKSENDER(onImagePlayerFileNames(const int, const QString &)),
  843. m_Parent, ARKRECEIVER(onImagePlayerFileNamesHandler(const int, const QString &)),
  844. type);
  845. QObject::connect(m_MultimediaServiceProxy, ARKSENDER(onVideoPlayerFileNames(const int, const QString &)),
  846. m_Parent, ARKRECEIVER(onVideoPlayerFileNamesHandler(const int, const QString &)),
  847. type);
  848. QObject::connect(m_MultimediaServiceProxy, ARKSENDER(onMusicPlayerPlayStatus(const int, const int)),
  849. m_Parent, ARKRECEIVER(onMusicPlayerPlayStatusHandler(const int, const int)),
  850. type);
  851. QObject::connect(m_MultimediaServiceProxy, ARKSENDER(onImagePlayerChange(const int, const QString &, const int, const int, const int)),
  852. m_Parent, ARKRECEIVER(onImagePlayerChangeHandler(const int, const QString &, const int, const int, const int)),
  853. type);
  854. QObject::connect(m_MultimediaServiceProxy, ARKSENDER(onVideoPlayerPlayStatus(const int, const int)),
  855. m_Parent, ARKRECEIVER(onVideoPlayerPlayStatusHandler(const int, const int)),
  856. type);
  857. }
  858. }