00001 #include <stdlib.h>
00002 #include <iostream>
00003
00004
00005 #include <QApplication>
00006 #include <QEvent>
00007
00008
00009 #include <mythlogging.h>
00010 #include <mythcontext.h>
00011 #include <mythmainwindow.h>
00012 #include <mythuiwebbrowser.h>
00013 #include <playgroup.h>
00014
00015
00016 #include "webpage.h"
00017 #include "mythflashplayer.h"
00018
00019 using namespace std;
00020
00021 MythFlashPlayer::MythFlashPlayer(MythScreenStack *parent,
00022 QStringList &urlList)
00023 : MythScreenType (parent, "mythflashplayer"),
00024 m_browser(NULL), m_url(urlList[0])
00025 {
00026 m_fftime = PlayGroup::GetSetting("Default", "skipahead", 30);
00027 m_rewtime = PlayGroup::GetSetting("Default", "skipback", 5);
00028 m_jumptime = PlayGroup::GetSetting("Default", "jump", 10);
00029 qApp->setOverrideCursor(QCursor(Qt::BlankCursor));
00030 GetMythMainWindow()->PauseIdleTimer(true);
00031 }
00032
00033
00034 MythFlashPlayer::~MythFlashPlayer()
00035 {
00036 qApp->restoreOverrideCursor();
00037
00038 if (m_browser)
00039 {
00040 m_browser->disconnect();
00041 DeleteChild(m_browser);
00042 m_browser = NULL;
00043 }
00044 GetMythMainWindow()->PauseIdleTimer(false);
00045 }
00046
00047 bool MythFlashPlayer::Create(void)
00048 {
00049 m_browser = new MythUIWebBrowser(this, "mythflashplayer");
00050 m_browser->SetArea(GetMythMainWindow()->GetUIScreenRect());
00051 m_browser->Init();
00052 m_browser->SetActive(true);
00053 m_browser->Show();
00054
00055 BuildFocusList();
00056
00057 SetFocusWidget(m_browser);
00058
00059 m_url.replace("mythflash://", "http://");
00060 LOG(VB_GENERAL, LOG_INFO, QString("Opening %1").arg(m_url));
00061 m_browser->LoadPage(QUrl::fromEncoded(m_url.toLocal8Bit()));
00062
00063 return true;
00064 }
00065
00066 QVariant MythFlashPlayer::evaluateJavaScript(const QString& source)
00067 {
00068 return m_browser->evaluateJavaScript(source);
00069 }
00070
00071 bool MythFlashPlayer::keyPressEvent(QKeyEvent *event)
00072 {
00073 QStringList actions;
00074 bool handled = GetMythMainWindow()->TranslateKeyPress("TV Playback", event, actions);
00075
00076 for (int i = 0; i < actions.size() && !handled; i++)
00077 {
00078 QString action = actions[i];
00079 handled = true;
00080
00081 if (action == "PAUSE")
00082 evaluateJavaScript("play();");
00083 else if (action == "INFO")
00084 evaluateJavaScript("info();");
00085 else if (action == "SEEKFFWD")
00086 evaluateJavaScript(QString("seek(%1);").arg(m_fftime));
00087 else if (action == "SEEKRWND")
00088 evaluateJavaScript(QString("seek(-%1);").arg(m_rewtime));
00089 else if (action == "CHANNELUP")
00090 evaluateJavaScript(QString("seek(%1);").arg(m_jumptime * 60));
00091 else if (action == "CHANNELDOWN")
00092 evaluateJavaScript(QString("seek(-%1);").arg(m_jumptime * 60));
00093 else if (action == "VOLUMEUP")
00094 evaluateJavaScript("adjustVolume(2);");
00095 else if (action == "VOLUMEDOWN")
00096 evaluateJavaScript("adjustVolume(-2);");
00097 else
00098 handled = false;
00099
00100 if (handled)
00101 return true;
00102 }
00103
00104 handled = m_browser->keyPressEvent(event);
00105
00106 if (!handled && MythScreenType::keyPressEvent(event))
00107 handled = true;
00108
00109 return handled;
00110 }