mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-08-02 08:59:33 +02:00
2021-06-19 Fred Gleason <fredg@paravelsystems.com>
* Added an 'RDMainWindow' class. * Added 'RDMainWindow' to rdairplay(1). * Added 'RDMainWindow' to rdpanel(1). Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
8a5080ab85
commit
64a6ebabe0
@ -21919,3 +21919,7 @@
|
|||||||
2021-06-17 Fred Gleason <fredg@paravelsystems.com>
|
2021-06-17 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Fixed a regression in the build system that caused
|
* Fixed a regression in the build system that caused
|
||||||
consolehelper(8) components to be installed incorrectly on RHEL.
|
consolehelper(8) components to be installed incorrectly on RHEL.
|
||||||
|
2021-06-19 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Added an 'RDMainWindow' class.
|
||||||
|
* Added 'RDMainWindow' to rdairplay(1).
|
||||||
|
* Added 'RDMainWindow' to rdpanel(1).
|
||||||
|
@ -186,6 +186,7 @@ dist_librd_la_SOURCES = dbversion.h\
|
|||||||
rdmacro.cpp rdmacro.h\
|
rdmacro.cpp rdmacro.h\
|
||||||
rdmacro_event.cpp rdmacro_event.h\
|
rdmacro_event.cpp rdmacro_event.h\
|
||||||
rdmacrocartmodel.cpp rdmacrocartmodel.h\
|
rdmacrocartmodel.cpp rdmacrocartmodel.h\
|
||||||
|
rdmainwindow.cpp rdmainwindow.h\
|
||||||
rdmarker_bar.cpp rdmarker_bar.h\
|
rdmarker_bar.cpp rdmarker_bar.h\
|
||||||
rdmarkerdialog.cpp rdmarkerdialog.h\
|
rdmarkerdialog.cpp rdmarkerdialog.h\
|
||||||
rdmarkerplayer.cpp rdmarkerplayer.h\
|
rdmarkerplayer.cpp rdmarkerplayer.h\
|
||||||
@ -364,6 +365,7 @@ nodist_librd_la_SOURCES = moc_rdadd_cart.cpp\
|
|||||||
moc_rdlogplay.cpp\
|
moc_rdlogplay.cpp\
|
||||||
moc_rdmacro_event.cpp\
|
moc_rdmacro_event.cpp\
|
||||||
moc_rdmacrocartmodel.cpp\
|
moc_rdmacrocartmodel.cpp\
|
||||||
|
moc_rdmainwindow.cpp\
|
||||||
moc_rdmarker_bar.cpp\
|
moc_rdmarker_bar.cpp\
|
||||||
moc_rdmarkerdialog.cpp\
|
moc_rdmarkerdialog.cpp\
|
||||||
moc_rdmarkerplayer.cpp\
|
moc_rdmarkerplayer.cpp\
|
||||||
|
@ -140,6 +140,7 @@ SOURCES += rdlogplay.cpp
|
|||||||
SOURCES += rdmacro.cpp
|
SOURCES += rdmacro.cpp
|
||||||
SOURCES += rdmacro_event.cpp
|
SOURCES += rdmacro_event.cpp
|
||||||
SOURCES += rdmacrocartmodel.cpp
|
SOURCES += rdmacrocartmodel.cpp
|
||||||
|
SOURCES += rdmainwindow.cpp
|
||||||
SOURCES += rdmarkerdialog.cpp
|
SOURCES += rdmarkerdialog.cpp
|
||||||
SOURCES += rdmarkerplayer.cpp
|
SOURCES += rdmarkerplayer.cpp
|
||||||
SOURCES += rdmarkerreadout.cpp
|
SOURCES += rdmarkerreadout.cpp
|
||||||
@ -319,6 +320,7 @@ HEADERS += rdlogplay.h
|
|||||||
HEADERS += rdmacro.h
|
HEADERS += rdmacro.h
|
||||||
HEADERS += rdmacro_event.h
|
HEADERS += rdmacro_event.h
|
||||||
HEADERS += rdmacrocartmodel.h
|
HEADERS += rdmacrocartmodel.h
|
||||||
|
HEADERS += rdmainwindow.h
|
||||||
HEADERS += rdmarkerdialog.h
|
HEADERS += rdmarkerdialog.h
|
||||||
HEADERS += rdmarkerplayer.h
|
HEADERS += rdmarkerplayer.h
|
||||||
HEADERS += rdmarkerreadout.h
|
HEADERS += rdmarkerreadout.h
|
||||||
|
143
lib/rdmainwindow.cpp
Normal file
143
lib/rdmainwindow.cpp
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
// rdmainwindow.cpp
|
||||||
|
//
|
||||||
|
// Top-level window for Rivendell GUI modules.
|
||||||
|
//
|
||||||
|
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
|
// published by the Free Software Foundation.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public
|
||||||
|
// License along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
#include "rdmainwindow.h"
|
||||||
|
|
||||||
|
RDMainWindow::RDMainWindow(const QString &cmdname,Qt::WindowFlags f)
|
||||||
|
: RDWidget(NULL,f)
|
||||||
|
{
|
||||||
|
d_command_name=cmdname;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
RDMainWindow::RDMainWindow(const QString &cmdname,RDConfig *c,
|
||||||
|
Qt::WindowFlags f)
|
||||||
|
: RDWidget(c,NULL,f)
|
||||||
|
{
|
||||||
|
d_command_name=cmdname;
|
||||||
|
|
||||||
|
if(getenv("HOME")!=NULL) {
|
||||||
|
d_conf_dir=new QDir(QString(getenv("HOME"))+"/.rivendell");
|
||||||
|
d_conf_path=d_conf_dir->path()+"/"+d_command_name+"rc";
|
||||||
|
if(!d_conf_dir->mkpath(d_conf_dir->path())) {
|
||||||
|
delete d_conf_dir;
|
||||||
|
d_conf_dir=NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
RDMainWindow::~RDMainWindow()
|
||||||
|
{
|
||||||
|
if(d_conf_dir!=NULL) {
|
||||||
|
delete d_conf_dir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool RDMainWindow::loadSettings(bool apply_geometry)
|
||||||
|
{
|
||||||
|
RDProfile *p=NULL;
|
||||||
|
int x=0;
|
||||||
|
int y=0;
|
||||||
|
int w=0;
|
||||||
|
int h=0;
|
||||||
|
|
||||||
|
if(d_conf_dir==NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
p=new RDProfile();
|
||||||
|
if(!p->setSource(d_conf_path)) {
|
||||||
|
delete p;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set Geometry
|
||||||
|
//
|
||||||
|
if(apply_geometry) {
|
||||||
|
x=p->intValue(d_command_name,"X");
|
||||||
|
y=p->intValue(d_command_name,"Y");
|
||||||
|
w=p->intValue(d_command_name,"Width");
|
||||||
|
h=p->intValue(d_command_name,"Height");
|
||||||
|
if((x>=0)&&(y>=0)&&(w>0)&&(h>0)) {
|
||||||
|
setGeometry(x,y,w,h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadLocalSettings(p);
|
||||||
|
|
||||||
|
delete p;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool RDMainWindow::saveSettings() const
|
||||||
|
{
|
||||||
|
if(d_conf_dir==NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Save Geometry
|
||||||
|
//
|
||||||
|
QString temppath=d_conf_path+"-TEMP";
|
||||||
|
FILE *f=NULL;
|
||||||
|
|
||||||
|
if((f=fopen(temppath.toUtf8(),"w"))==NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
fprintf(f,"[%s]\n",d_command_name.toUtf8().constData());
|
||||||
|
fprintf(f,"X=%d\n",geometry().x());
|
||||||
|
fprintf(f,"Y=%d\n",geometry().y());
|
||||||
|
fprintf(f,"Width=%d\n",geometry().width());
|
||||||
|
fprintf(f,"Height=%d\n",geometry().height());
|
||||||
|
|
||||||
|
saveLocalSettings(f);
|
||||||
|
|
||||||
|
fclose(f);
|
||||||
|
if(rename(temppath.toUtf8(),d_conf_path.toUtf8())!=0) {
|
||||||
|
unlink(temppath.toUtf8());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString RDMainWindow::commandName() const
|
||||||
|
{
|
||||||
|
return d_command_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMainWindow::loadLocalSettings(RDProfile *p)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDMainWindow::saveLocalSettings(FILE *f) const
|
||||||
|
{
|
||||||
|
}
|
55
lib/rdmainwindow.h
Normal file
55
lib/rdmainwindow.h
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
// rdmainwindow.h
|
||||||
|
//
|
||||||
|
// Top-level window for Rivendell GUI modules.
|
||||||
|
//
|
||||||
|
// (C) Copyright 2021 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
//
|
||||||
|
// This program is free software; you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
|
// published by the Free Software Foundation.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public
|
||||||
|
// License along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef RDMAINWINDOW_H
|
||||||
|
#define RDMAINWINDOW_H
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <QDir>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
#include <rdconfig.h>
|
||||||
|
#include <rdprofile.h>
|
||||||
|
#include <rdwidget.h>
|
||||||
|
|
||||||
|
class RDMainWindow : public RDWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT;
|
||||||
|
public:
|
||||||
|
RDMainWindow(const QString &cmdname,Qt::WindowFlags f=0);
|
||||||
|
RDMainWindow(const QString &cmdname,RDConfig *c,Qt::WindowFlags f=0);
|
||||||
|
~RDMainWindow();
|
||||||
|
bool loadSettings(bool apply_geometry);
|
||||||
|
bool saveSettings() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QString commandName() const;
|
||||||
|
virtual void loadLocalSettings(RDProfile *p);
|
||||||
|
virtual void saveLocalSettings(FILE *f) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString d_command_name;
|
||||||
|
QDir *d_conf_dir;
|
||||||
|
QString d_conf_path;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // RDWIDGET_H
|
@ -40,7 +40,7 @@
|
|||||||
void SigHandler(int signo);
|
void SigHandler(int signo);
|
||||||
|
|
||||||
MainWidget::MainWidget(RDConfig *config,QWidget *parent)
|
MainWidget::MainWidget(RDConfig *config,QWidget *parent)
|
||||||
: RDWidget(config,parent)
|
: RDMainWindow("rdairplay",config)
|
||||||
{
|
{
|
||||||
QString str;
|
QString str;
|
||||||
int cards[3];
|
int cards[3];
|
||||||
@ -711,6 +711,10 @@ MainWidget::MainWidget(RDConfig *config,QWidget *parent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rda->syslog(LOG_INFO,"RDAirPlay started");
|
rda->syslog(LOG_INFO,"RDAirPlay started");
|
||||||
|
|
||||||
|
if(!loadSettings(true)) {
|
||||||
|
showMaximized();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1946,6 +1950,7 @@ void MainWidget::closeEvent(QCloseEvent *e)
|
|||||||
rda->airplayConf()->setExitCode(RDAirPlayConf::ExitClean);
|
rda->airplayConf()->setExitCode(RDAirPlayConf::ExitClean);
|
||||||
rda->syslog(LOG_INFO,"RDAirPlay exiting");
|
rda->syslog(LOG_INFO,"RDAirPlay exiting");
|
||||||
air_lock->unlock();
|
air_lock->unlock();
|
||||||
|
saveSettings();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
if(QMessageBox::question(this,"RDAirPlay",tr("Exit RDAirPlay?"),
|
if(QMessageBox::question(this,"RDAirPlay",tr("Exit RDAirPlay?"),
|
||||||
@ -1960,6 +1965,7 @@ void MainWidget::closeEvent(QCloseEvent *e)
|
|||||||
rda->airplayConf()->setExitCode(RDAirPlayConf::ExitClean);
|
rda->airplayConf()->setExitCode(RDAirPlayConf::ExitClean);
|
||||||
rda->syslog(LOG_INFO,"RDAirPlay exiting");
|
rda->syslog(LOG_INFO,"RDAirPlay exiting");
|
||||||
air_lock->unlock();
|
air_lock->unlock();
|
||||||
|
saveSettings();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2392,7 +2398,7 @@ int main(int argc,char *argv[])
|
|||||||
RDConfig *config=new RDConfig();
|
RDConfig *config=new RDConfig();
|
||||||
config->load();
|
config->load();
|
||||||
MainWidget *w=new MainWidget(config);
|
MainWidget *w=new MainWidget(config);
|
||||||
w->setGeometry(QRect(QPoint(0,0),w->sizeHint()));
|
// w->setGeometry(QRect(QPoint(0,0),w->sizeHint()));
|
||||||
w->show();
|
w->show();
|
||||||
return a.exec();
|
return a.exec();
|
||||||
}
|
}
|
||||||
|
@ -25,9 +25,9 @@
|
|||||||
#include <rdhotkeylist.h>
|
#include <rdhotkeylist.h>
|
||||||
#include <rdhotkeys.h>
|
#include <rdhotkeys.h>
|
||||||
#include <rdinstancelock.h>
|
#include <rdinstancelock.h>
|
||||||
|
#include <rdmainwindow.h>
|
||||||
#include <rdsound_panel.h>
|
#include <rdsound_panel.h>
|
||||||
#include <rdstereometer.h>
|
#include <rdstereometer.h>
|
||||||
#include <rdwidget.h>
|
|
||||||
|
|
||||||
#include "button_log.h"
|
#include "button_log.h"
|
||||||
#include "colors.h"
|
#include "colors.h"
|
||||||
@ -54,7 +54,7 @@
|
|||||||
#define MESSAGE_WIDGET_WIDTH 410
|
#define MESSAGE_WIDGET_WIDTH 410
|
||||||
#define RDAIRPLAY_USAGE "[OPTIONS]\n"
|
#define RDAIRPLAY_USAGE "[OPTIONS]\n"
|
||||||
|
|
||||||
class MainWidget : public RDWidget
|
class MainWidget : public RDMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
@ -40,7 +40,7 @@ RDAudioPort *rdaudioport_conf;
|
|||||||
RDCartDialog *panel_cart_dialog;
|
RDCartDialog *panel_cart_dialog;
|
||||||
|
|
||||||
MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
||||||
: RDWidget(c,parent)
|
: RDMainWindow("rdpanel",c)
|
||||||
{
|
{
|
||||||
QPixmap panel_skin_pixmap;
|
QPixmap panel_skin_pixmap;
|
||||||
QString err_msg;
|
QString err_msg;
|
||||||
@ -48,10 +48,7 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
|||||||
//
|
//
|
||||||
// Fix the Window Size
|
// Fix the Window Size
|
||||||
//
|
//
|
||||||
#ifndef RESIZABLE
|
|
||||||
setMinimumSize(sizeHint());
|
setMinimumSize(sizeHint());
|
||||||
// setMaximumSize(sizeHint());
|
|
||||||
#endif // RESIZABLE
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Open the Database
|
// Open the Database
|
||||||
@ -247,6 +244,10 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
|||||||
panel_empty_cart->hide();
|
panel_empty_cart->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!loadSettings(true)) {
|
||||||
|
showMaximized();
|
||||||
|
}
|
||||||
|
|
||||||
rda->ripc()->connectHost("localhost",RIPCD_TCP_PORT,rda->config()->password());
|
rda->ripc()->connectHost("localhost",RIPCD_TCP_PORT,rda->config()->password());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -345,6 +346,7 @@ void MainWidget::wheelEvent(QWheelEvent *e)
|
|||||||
void MainWidget::closeEvent(QCloseEvent *e)
|
void MainWidget::closeEvent(QCloseEvent *e)
|
||||||
{
|
{
|
||||||
panel_db->removeDatabase(rda->config()->mysqlDbname());
|
panel_db->removeDatabase(rda->config()->mysqlDbname());
|
||||||
|
saveSettings();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -392,7 +394,6 @@ int main(int argc,char *argv[])
|
|||||||
RDConfig *config=new RDConfig();
|
RDConfig *config=new RDConfig();
|
||||||
config->load();
|
config->load();
|
||||||
MainWidget *w=new MainWidget(config);
|
MainWidget *w=new MainWidget(config);
|
||||||
w->setGeometry(QRect(QPoint(0,0),w->sizeHint()));
|
|
||||||
w->show();
|
w->show();
|
||||||
return a.exec();
|
return a.exec();
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#define RDPANEL_H
|
#define RDPANEL_H
|
||||||
|
|
||||||
#include <rdemptycart.h>
|
#include <rdemptycart.h>
|
||||||
|
#include <rdmainwindow.h>
|
||||||
#include <rdsound_panel.h>
|
#include <rdsound_panel.h>
|
||||||
#include <rdstereometer.h>
|
#include <rdstereometer.h>
|
||||||
#include <rdwidget.h>
|
#include <rdwidget.h>
|
||||||
@ -31,11 +32,9 @@
|
|||||||
//
|
//
|
||||||
#define MASTER_TIMER_INTERVAL 100
|
#define MASTER_TIMER_INTERVAL 100
|
||||||
#define METER_INTERVAL 50
|
#define METER_INTERVAL 50
|
||||||
//#define RDPANEL_PANEL_BUTTON_ROWS 7
|
|
||||||
//#define RDPANEL_PANEL_BUTTON_COLUMNS 9
|
|
||||||
#define RDPANEL_USAGE "\n"
|
#define RDPANEL_USAGE "\n"
|
||||||
|
|
||||||
class MainWidget : public RDWidget
|
class MainWidget : public RDMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user