Advertisement
MohammadAG

Untitled

Mar 20th, 2011
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.75 KB | None | 0 0
  1. #include "videonowplayingwindow.h"
  2. #ifdef Q_WS_MAEMO_5
  3. #include <QtGui/QX11Info>
  4. #include <X11/Xlib.h>
  5. #include <X11/Xatom.h>
  6. #include <X11/Xutil.h>
  7. #endif
  8.  
  9. VideoNowPlayingWindow::VideoNowPlayingWindow(QWidget *parent, MafwRendererAdapter* mra, MafwSourceAdapter* msa, MafwPlaylistAdapter* pls) :
  10.     QMainWindow(parent),
  11.     ui(new Ui::VideoNowPlayingWindow)
  12. #ifdef MAFW
  13.     ,mafwrenderer(mra),
  14.     mafwTrackerSource(msa),
  15.     playlist(pls)
  16. #endif
  17. {
  18.     ui->setupUi(this);
  19.     setAttribute(Qt::WA_NativeWindow);
  20.     ui->widget->setAttribute(Qt::WA_NativeWindow);
  21. #ifdef Q_WS_MAEMO_5
  22.     setAttribute(Qt::WA_Maemo5StackedWindow);
  23.     QRect screenGeometry = QApplication::desktop()->screenGeometry();
  24.     if(screenGeometry.width() > screenGeometry.height()) {
  25.         portrait = false;
  26.         this->orientationChanged();
  27.         this->onLandscapeMode();
  28.     } else {
  29.         portrait = true;
  30.     }
  31.     rotator = new QMaemo5Rotator(QMaemo5Rotator::AutomaticBehavior);
  32.     //http://www.gossamer-threads.com/lists/maemo/developers/54239
  33.     quint32 disable = {0};
  34.     Atom winPortraitModeSupportAtom = XInternAtom(QX11Info::display(), "_HILDON_PORTRAIT_MODE_SUPPORT", false);
  35.     XChangeProperty(QX11Info::display(), winId(), winPortraitModeSupportAtom, XA_CARDINAL, 32, PropModeReplace, (uchar*) &disable, 1);
  36.     if(portrait) {
  37.         QTimer::singleShot(1000, this, SLOT(onPortraitMode()));
  38.     }
  39.     this->setDNDAtom(true);
  40. #endif
  41.     setAttribute(Qt::WA_DeleteOnClose);
  42.     volumeTimer = new QTimer(this);
  43.     volumeTimer->setInterval(3000);
  44.     this->setIcons();
  45.     this->connectSignals();
  46.     ui->volumeSlider->hide();
  47. }
  48.  
  49. VideoNowPlayingWindow::~VideoNowPlayingWindow()
  50. {
  51.     delete ui;
  52. }
  53.  
  54. void VideoNowPlayingWindow::setIcons()
  55. {
  56.     ui->wmCloseButton->setIcon(QIcon(wmCloseIcon));
  57.     ui->prevButton->setIcon(QIcon(prevButtonIcon));
  58.     ui->playButton->setIcon(QIcon(playButtonIcon));
  59.     ui->nextButton->setIcon(QIcon(nextButtonIcon));
  60.     ui->deleteButton->setIcon(QIcon(deleteButtonIcon));
  61.     ui->shareButton->setIcon(QIcon(shareButtonIcon));
  62.     ui->volumeButton->setIcon(QIcon(volumeButtonIcon));
  63. }
  64.  
  65. void VideoNowPlayingWindow::connectSignals()
  66. {
  67.     connect(ui->volumeButton, SIGNAL(clicked()), this, SLOT(toggleVolumeSlider()));
  68.     connect(ui->volumeButton, SIGNAL(clicked()), this, SLOT(volumeWatcher()));
  69.     connect(volumeTimer, SIGNAL(timeout()), this, SLOT(toggleVolumeSlider()));
  70.     connect(ui->volumeSlider, SIGNAL(sliderPressed()), volumeTimer, SLOT(stop()));
  71.     connect(ui->volumeSlider, SIGNAL(sliderReleased()), volumeTimer, SLOT(start()));
  72.     //connect(QApplication::desktop(), SIGNAL(resized(int)), this, SLOT(orientationChanged()));
  73. #ifdef Q_WS_MAEMO_5
  74.     connect(rotator, SIGNAL(portrait()), this, SLOT(onPortraitMode()));
  75.     connect(rotator, SIGNAL(landscape()), this, SLOT(onLandscapeMode()));
  76.     QDBusConnection::sessionBus().connect("com.nokia.mafw.renderer.Mafw-Gst-Renderer-Plugin.gstrenderer",
  77.                                           "/700com/nokia/mafw/renderer/gstrenderer",
  78.                                           "com.nokia.mafw.extension",
  79.                                           "property_changed",
  80.                                           this, SLOT(onVolumeChanged(const QDBusMessage &)));
  81. #endif
  82. }
  83.  
  84. void VideoNowPlayingWindow::toggleVolumeSlider()
  85. {
  86.     if(ui->volumeSlider->isHidden()) {
  87.         ui->buttonWidget->hide();
  88.         ui->volumeSlider->show();
  89.     } else {
  90.         ui->volumeSlider->hide();
  91.         ui->buttonWidget->show();
  92.         if(volumeTimer->isActive())
  93.             volumeTimer->stop();
  94.     }
  95. }
  96.  
  97. #ifdef MAFW
  98. void VideoNowPlayingWindow::onVolumeChanged(const QDBusMessage &msg)
  99. {
  100.     /*dbus-send --print-reply --type=method_call --dest=com.nokia.mafw.renderer.Mafw-Gst-Renderer-Plugin.gstrenderer \
  101.                  /com/nokia/mafw/renderer/gstrenderer com.nokia.mafw.extension.get_extension_property string:volume*/
  102.     if (msg.arguments()[0].toString() == "volume") {
  103.         int volumeLevel = qdbus_cast<QVariant>(msg.arguments()[1]).toInt();
  104. #ifdef DEBUG
  105.         qDebug() << QString::number(volumeLevel);
  106. #endif
  107.         ui->volumeSlider->setValue(volumeLevel);
  108.     }
  109. }
  110. #endif
  111.  
  112. void VideoNowPlayingWindow::volumeWatcher()
  113. {
  114.     if(!ui->volumeSlider->isHidden())
  115.         volumeTimer->start();
  116. }
  117.  
  118. void VideoNowPlayingWindow::orientationChanged()
  119. {
  120.     QRect screenGeometry = QApplication::desktop()->screenGeometry();
  121.     ui->controlOverlay->setGeometry((screenGeometry.width() / 2)-(ui->controlOverlay->width()/2),
  122.                                     (screenGeometry.height() / 2)-(ui->controlOverlay->height()/2),
  123.                                     ui->controlOverlay->width(), ui->controlOverlay->height());
  124.     ui->toolbarOverlay->setGeometry(0, screenGeometry.height()-ui->toolbarOverlay->height(),
  125.                                     screenGeometry.width(), ui->toolbarOverlay->height());
  126.     ui->wmCloseButton->setGeometry(screenGeometry.width()-ui->wmCloseButton->width(), 0,
  127.                                    ui->wmCloseButton->width(), ui->wmCloseButton->height());
  128. }
  129.  
  130. #ifdef Q_WS_MAEMO_5
  131. void VideoNowPlayingWindow::onPortraitMode()
  132. {
  133.     ui->wmCloseButton->setGeometry(0, 0, 56, 112);
  134.     ui->wmCloseButton->setIconSize(QSize(56, 112));
  135.     QTransform t;
  136.     t = t.rotate(-90, Qt::ZAxis);
  137.     ui->wmCloseButton->setIcon(QIcon(QPixmap(wmCloseIcon).transformed(t)));
  138.     ui->prevButton->setIcon(QIcon(QPixmap(prevButtonIcon).transformed(t)));
  139.     ui->playButton->setIcon(QIcon(QPixmap(playButtonIcon).transformed(t)));
  140.     ui->nextButton->setIcon(QIcon(QPixmap(nextButtonIcon).transformed(t)));
  141.     ui->deleteButton->setIcon(QIcon(QPixmap(deleteButtonIcon).transformed(t)));
  142.     ui->shareButton->setIcon(QIcon(QPixmap(shareButtonIcon).transformed(t)));
  143.     ui->volumeButton->setIcon(QIcon(QPixmap(volumeButtonIcon).transformed(t)));
  144.     ui->controlLayout->setDirection(QBoxLayout::BottomToTop);
  145.     ui->controlOverlay->setGeometry(360, 70, 101, 318);
  146.     if(!ui->toolbarOverlay->isHidden())
  147.         ui->toolbarOverlay->hide();
  148.     if(ui->portraittoolBar->isHidden())
  149.         ui->portraittoolBar->show();
  150.     ui->portraittoolBar->update();
  151. }
  152.  
  153. void VideoNowPlayingWindow::onLandscapeMode()
  154. {
  155.     this->setIcons();
  156.     ui->deleteButton->show();
  157.     ui->shareButton->show();
  158.     ui->volumeButton->show();
  159.     QRect screenGeometry = QApplication::desktop()->screenGeometry();
  160.     ui->wmCloseButton->setIconSize(QSize(112, 56));
  161.     ui->wmCloseButton->setGeometry(screenGeometry.width()-112, 0, 112, 56);
  162.     ui->controlLayout->setDirection(QBoxLayout::LeftToRight);
  163.     ui->controlOverlay->setGeometry(230, 170, 318, 114);
  164.     if(ui->toolbarOverlay->isHidden())
  165.         ui->toolbarOverlay->show();
  166.     if(!ui->portraittoolBar->isHidden())
  167.         ui->portraittoolBar->hide();
  168. }
  169.  
  170. void VideoNowPlayingWindow::setDNDAtom(bool dnd)
  171. {
  172.     quint32 enable;
  173.     if (dnd)
  174.         enable = 1;
  175.     else
  176.         enable = 0;
  177.     Atom winDNDAtom = XInternAtom(QX11Info::display(), "_HILDON_DO_NOT_DISTURB", false);
  178.     XChangeProperty(QX11Info::display(), winId(), winDNDAtom, XA_INTEGER, 32, PropModeReplace, (uchar*) &enable, 1);
  179. }
  180. #endif
  181.  
  182. void VideoNowPlayingWindow::playObject(QString objectId)
  183. {
  184. #ifdef MAFW
  185.     qDebug() << "playObject";
  186.     unsigned long windowId = ui->widget->winId();
  187.     qDebug() << windowId;
  188.     QApplication::syncX();
  189.     if (mafwrenderer->isRendererReady())
  190.         qDebug() << "Renderer ready";
  191.     mafwrenderer->setWindowXid(windowId);
  192.     QApplication::syncX();
  193.     QTimer::singleShot(2000, this, SLOT(test()));
  194. #endif
  195. }
  196.  
  197. void VideoNowPlayingWindow::test()
  198. {
  199.     unsigned long windowId = ui->widget->winId();
  200.     mafwrenderer->setWindowXid(windowId);
  201.  
  202.     mafwrenderer->playURI("/home/user/MyDocs/.videos/Nokia_N900.mp4");
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement