/src/mediaplayerinterface.cpp

https://github.com/jackuess/pirateplayer · C++ · 76 lines · 66 code · 10 blank · 0 comment · 10 complexity · dd6b59ba31cd6507a922898dd0a5d646 MD5 · raw file

  1. #include "mediaplayerinterface.h"
  2. #include "network/tempplayer.h"
  3. #include <QDesktopServices>
  4. #include <QProcess>
  5. #include <QInputDialog>
  6. MediaPlayerInterface::MediaPlayerInterface(QObject *parent) :
  7. QObject(parent)
  8. {
  9. #if defined( Q_OS_ANDROID ) || defined( EMULATE_ANDROID )
  10. nam = new QNetworkAccessManager(this);
  11. #endif
  12. tempDir = "";
  13. }
  14. void MediaPlayerInterface::setNam(QNetworkAccessManager *newNam) {
  15. #if defined( Q_OS_ANDROID ) || defined( EMULATE_ANDROID )
  16. delete nam;
  17. nam = newNam;
  18. #else
  19. Q_UNUSED( newNam )
  20. #endif
  21. }
  22. void MediaPlayerInterface::setTempDir(const QString &newTempDir) {
  23. tempDir = newTempDir;
  24. }
  25. void MediaPlayerInterface::play(const QString &url, const QString &subsUrl, const QString defaultCmdTemplate) {
  26. _url = url;
  27. _subsUrl = subsUrl;
  28. #if defined( Q_OS_ANDROID ) || defined( EMULATE_ANDROID )
  29. Q_UNUSED( defaultCmdTemplate )
  30. if (url.startsWith("rtmp"))
  31. playTemp();
  32. else
  33. playNative();
  34. #elif defined( Q_OS_MAC )
  35. if (url.contains(".m3u8"))
  36. playNative();
  37. else
  38. playUsingCmd(defaultCmdTemplate);
  39. #else
  40. playUsingCmd(defaultCmdTemplate);
  41. #endif
  42. }
  43. void MediaPlayerInterface::playNative() {
  44. #ifdef Q_OS_MAC
  45. playUsingCmd("open -a \"QuickTime Player\" \"%0\"");
  46. #else
  47. QDesktopServices::openUrl(QUrl(_url));
  48. #endif
  49. }
  50. void MediaPlayerInterface::playTemp() {
  51. #if defined( Q_OS_ANDROID ) || defined( EMULATE_ANDROID )
  52. TempPlayer *tmpPlayer = new TempPlayer(nam, this);
  53. if (tempDir != "")
  54. tmpPlayer->setTempDir(tempDir);
  55. tmpPlayer->play(_url);
  56. #endif
  57. }
  58. void MediaPlayerInterface::playUsingCmd(const QString &cmdTemplate) {
  59. QProcess *cmd = new QProcess(this);
  60. bool ok = false;
  61. QString newCmdTemplate = QInputDialog::getText((QWidget*)this->parent(), tr("Ange uppspelningskommando"),
  62. QString::fromUtf8("Uppspelningskommando:\n %0 ersätts med videoaddress.\n %1 ersätts med undertextaddress."), QLineEdit::Normal,
  63. cmdTemplate, &ok);
  64. if (ok && !newCmdTemplate.isEmpty())
  65. cmd->start(newCmdTemplate.arg(_url, _subsUrl));
  66. }