mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-10-19 17:11:15 +02:00
2024-02-14 Fred Gleason <fredg@paravelsystems.com>
* Added a 'RDAIRPLAY.MESSAGE_WIDGET_URL' field to the database. * Incremented the database version to 374. * Added 'RDAirPlayConf::messageWidgetUrl()' and 'RDAirPlayConf::setMessageWidgetUrl()' methods. * Modified rdairplay(1) to make the Message Widget retain the loaded URL across instances. * Modified rdairplay(1) to make the Message Widget continually poll and update loaded URLs using the 'file:' schema. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
#include <QKeyEvent>
|
||||
#include <QWebFrame>
|
||||
|
||||
#include <rdapplication.h>
|
||||
#include <rdeventfilter.h>
|
||||
|
||||
#include "colors.h"
|
||||
@@ -63,6 +64,21 @@ MessageWidget::MessageWidget(QWidget *parent)
|
||||
filter->addFilter(QEvent::MouseMove);
|
||||
filter->addFilter(QEvent::Wheel);
|
||||
d_view->installEventFilter(filter);
|
||||
|
||||
//
|
||||
// Refresh Timer
|
||||
//
|
||||
d_refresh_timer=new QTimer(this);
|
||||
d_refresh_timer->setSingleShot(true);
|
||||
connect(d_refresh_timer,SIGNAL(timeout()),this,SLOT(refreshData()));
|
||||
|
||||
//
|
||||
// Load Current Page
|
||||
//
|
||||
QString url=rda->airplayConf()->messageWidgetUrl();
|
||||
if(!url.isEmpty()) {
|
||||
setUrl(url);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -77,6 +93,8 @@ void MessageWidget::setText(const QString &str,const QColor &col)
|
||||
d_label->setText(str);
|
||||
d_label->show();
|
||||
d_view->hide();
|
||||
|
||||
d_refresh_timer->stop();
|
||||
}
|
||||
|
||||
|
||||
@@ -85,6 +103,7 @@ bool MessageWidget::setUrl(const QString &str)
|
||||
QUrl url(str);
|
||||
if(!url.isValid()) {
|
||||
setText(tr("invalid URL")+": "+str.toUtf8().constData(),Qt::black);
|
||||
d_refresh_timer->stop();
|
||||
return false;
|
||||
}
|
||||
if((url.scheme().toLower()!="http")&&
|
||||
@@ -92,12 +111,22 @@ bool MessageWidget::setUrl(const QString &str)
|
||||
(url.scheme().toLower()!="file")) {
|
||||
setText(tr("unsupported URL scheme")+": "+str.toUtf8().constData(),
|
||||
Qt::black);
|
||||
d_refresh_timer->stop();
|
||||
return false;
|
||||
}
|
||||
d_view->load(url);
|
||||
d_view->show();
|
||||
d_label->hide();
|
||||
|
||||
d_url=str;
|
||||
rda->airplayConf()->setMessageWidgetUrl(str);
|
||||
if(url.scheme().toLower()=="file") {
|
||||
d_refresh_timer->start(1000);
|
||||
}
|
||||
else {
|
||||
d_refresh_timer->stop();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -107,6 +136,9 @@ void MessageWidget::clear()
|
||||
d_label->clear();
|
||||
d_label->show();
|
||||
d_view->hide();
|
||||
d_refresh_timer->stop();
|
||||
|
||||
rda->airplayConf()->setMessageWidgetUrl(QString());
|
||||
}
|
||||
|
||||
|
||||
@@ -119,6 +151,13 @@ void MessageWidget::webLoadFinishedData(bool state)
|
||||
}
|
||||
|
||||
|
||||
void MessageWidget::refreshData()
|
||||
{
|
||||
d_view->load(d_url);
|
||||
d_refresh_timer->start(1000);
|
||||
}
|
||||
|
||||
|
||||
void MessageWidget::resizeEvent(QResizeEvent *e)
|
||||
{
|
||||
d_label->setGeometry(0,0,size().width(),size().height());
|
||||
|
@@ -22,6 +22,7 @@
|
||||
#define MESSAGEWIDGET_H
|
||||
|
||||
#include <QLabel>
|
||||
#include <QTimer>
|
||||
#include <QWebView>
|
||||
|
||||
#define MESSAGE_FONT_QUANTITY 8
|
||||
@@ -38,6 +39,7 @@ class MessageWidget : public QWidget
|
||||
|
||||
private slots:
|
||||
void webLoadFinishedData(bool state);
|
||||
void refreshData();
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
@@ -46,8 +48,10 @@ class MessageWidget : public QWidget
|
||||
QFont MessageFont(QString str) const;
|
||||
QLabel *d_label;
|
||||
QWebView *d_view;
|
||||
QTimer *d_refresh_timer;
|
||||
QFont d_message_fonts[MESSAGE_FONT_QUANTITY];
|
||||
QFontMetrics *d_message_metrics[MESSAGE_FONT_QUANTITY];
|
||||
QString d_url;
|
||||
};
|
||||
|
||||
#endif // MESSAGEWIDGET_H
|
||||
|
Reference in New Issue
Block a user