diff --git a/ChangeLog b/ChangeLog index 9dbf768f..1cf004e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22429,3 +22429,10 @@ * Added an 'RDGroups::remove()' static method. 2021-09-16 Fred Gleason * Added a ' SaveWebgetFilesDirectory=' directive to rd.conf(5). +2021-09-16 Fred Gleason + * Added an 'RDAIRPLAY.LOGO_PATH' field to the database. + * Incremented the database version to 355. + * Added 'RDAirPlayConf::logoPath()' and + 'RDAirPlayConf::setLogoPath()' methods. + * Added a 'Logo Image' control to the 'Configure RDAirPlay' dialog + in rdadmin(1). diff --git a/docs/tables/rd_airplay.txt b/docs/tables/rd_airplay.txt index 3d4c4be7..f0762c63 100644 --- a/docs/tables/rd_airplay.txt +++ b/docs/tables/rd_airplay.txt @@ -28,6 +28,7 @@ EXIT_CODE int(11) 0=clean, 1=dirty VIRTUAL_EXIT_CODE int(11) 0=clean, 1=dirty EXIT_PASSWORD varchar(48) SKIN_PATH varchar(191) +LOGO_PATH varchar(191) SHOW_COUNTERS enum('N','Y') AUDITION_PREROLL int(11) TITLE_TEMPLATE varchar(64) diff --git a/icons/Makefile.am b/icons/Makefile.am index ca425075..f0de276e 100644 --- a/icons/Makefile.am +++ b/icons/Makefile.am @@ -183,6 +183,8 @@ install-exec-am: cp rdpanel-512x512.png $(DESTDIR)@prefix@/share/icons/hicolor/512x512/apps/rdpanel.png mkdir -p $(DESTDIR)@prefix@/share/icons/hicolor/128x128/apps cp rdpanel-128x128.png $(DESTDIR)@prefix@/share/icons/hicolor/128x128/apps/rdpanel.png + mkdir -p $(DESTDIR)@prefix@/share/pixmaps/rivendell + cp rdairplay_logo.png $(DESTDIR)@prefix@/share/pixmaps/rivendell/ mkdir -p $(DESTDIR)@prefix@/share/X11/fvwm2/pixmaps cp rivendell-16x16.xpm $(DESTDIR)@prefix@/share/X11/fvwm2/pixmaps/mini.rivendell.xpm cp rivendell-32x32.xpm $(DESTDIR)@prefix@/share/X11/fvwm2/pixmaps/rivendell.xpm @@ -268,6 +270,7 @@ uninstall-local: rm -f $(DESTDIR)@prefix@/share/icons/hicolor/128x128/apps/rdpanel-128x128.png rm -f $(DESTDIR)@prefix@/share/icons/hicolor/256x256/apps/rdpanel.png rm -f $(DESTDIR)@prefix@/share/icons/hicolor/512x512/apps/rdpanel.png + rm -f $(DESTDIR)@prefix@/share/pixmaps/rivendell/rdairplay_logo.png ./update_icons.sh EXTRA_DIST = admin.xpm\ @@ -314,6 +317,7 @@ EXTRA_DIST = admin.xpm\ post3.xpm\ progressbar.gif\ progressbar.xcf\ + rdairplay_logo.png\ record.xpm\ record2.xpm\ record3.xpm\ diff --git a/icons/rdairplay_logo.png b/icons/rdairplay_logo.png new file mode 100644 index 00000000..443f85fa Binary files /dev/null and b/icons/rdairplay_logo.png differ diff --git a/lib/dbversion.h b/lib/dbversion.h index 51b6db18..91e4fe89 100644 --- a/lib/dbversion.h +++ b/lib/dbversion.h @@ -24,7 +24,7 @@ /* * Current Database Version */ -#define RD_VERSION_DATABASE 354 +#define RD_VERSION_DATABASE 355 #endif // DBVERSION_H diff --git a/lib/rdairplay_conf.cpp b/lib/rdairplay_conf.cpp index 3e02c677..6d8d592a 100644 --- a/lib/rdairplay_conf.cpp +++ b/lib/rdairplay_conf.cpp @@ -736,6 +736,18 @@ void RDAirPlayConf::setSkinPath(const QString &path) const } +QString RDAirPlayConf::logoPath() const +{ + return RDGetSqlValue(air_tablename,"ID",air_id,"LOGO_PATH").toString(); +} + + +void RDAirPlayConf::setLogoPath(const QString &path) const +{ + SetRow("LOGO_PATH",path); +} + + bool RDAirPlayConf::showCounters() const { return RDBool(RDGetSqlValue(air_tablename,"ID",air_id,"SHOW_COUNTERS"). diff --git a/lib/rdairplay_conf.h b/lib/rdairplay_conf.h index 5de2cebf..aa8bb4b0 100644 --- a/lib/rdairplay_conf.h +++ b/lib/rdairplay_conf.h @@ -138,6 +138,8 @@ class RDAirPlayConf void setExitPassword(const QString &passwd) const; QString skinPath() const; void setSkinPath(const QString &path) const; + QString logoPath() const; + void setLogoPath(const QString &path) const; bool showCounters() const; void setShowCounters(bool state) const; int auditionPreroll() const; diff --git a/rdadmin/edit_rdairplay.cpp b/rdadmin/edit_rdairplay.cpp index 2eb51308..4c48a588 100644 --- a/rdadmin/edit_rdairplay.cpp +++ b/rdadmin/edit_rdairplay.cpp @@ -809,44 +809,58 @@ EditRDAirPlay::EditRDAirPlay(RDStation *station,RDStation *cae_station, button->setGeometry(740,400,50,25); connect(button,SIGNAL(clicked()),this,SLOT(selectSkinData())); + // + // Logo Path + // + air_logo_edit=new QLineEdit(this); + air_logo_edit->setGeometry(555,433,180,20); + label=new QLabel(tr("Logo Image:"),this); + label->setFont(subLabelFont()); + label->setGeometry(435,433,115,20); + label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); + button=new QPushButton(tr("Select"),this); + button->setFont(subButtonFont()); + button->setGeometry(740,430,50,25); + connect(button,SIGNAL(clicked()),this,SLOT(selectLogoData())); + // // Title Template // air_title_template_edit=new QLineEdit(this); - air_title_template_edit->setGeometry(555,425,180,20); + air_title_template_edit->setGeometry(555,455,180,20); label=new QLabel(tr("Title Template:"),this); label->setFont(subLabelFont()); - label->setGeometry(430,425,120,20); + label->setGeometry(430,455,120,20); label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); // // Artist Template // air_artist_template_edit=new QLineEdit(this); - air_artist_template_edit->setGeometry(555,447,180,20); + air_artist_template_edit->setGeometry(555,477,180,20); label=new QLabel(tr("Artist Template:"),this); label->setFont(subLabelFont()); - label->setGeometry(430,447,120,20); + label->setGeometry(430,477,120,20); label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); // // Outcue Template // air_outcue_template_edit=new QLineEdit(this); - air_outcue_template_edit->setGeometry(555,469,180,20); + air_outcue_template_edit->setGeometry(555,499,180,20); label=new QLabel(tr("Outcue Template:"),this); label->setFont(subLabelFont()); - label->setGeometry(430,469,120,20); + label->setGeometry(430,499,120,20); label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); // // Description Template // air_description_template_edit=new QLineEdit(this); - air_description_template_edit->setGeometry(555,491,180,20); + air_description_template_edit->setGeometry(555,521,180,20); label=new QLabel(tr("Description Template:"),this); label->setFont(subLabelFont()); - label->setGeometry(425,491,125,20); + label->setGeometry(425,521,125,20); label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); // @@ -854,18 +868,18 @@ EditRDAirPlay::EditRDAirPlay(RDStation *station,RDStation *cae_station, // label=new QLabel(tr("Log Mode Control"),this); label->setFont(sectionLabelFont()); - label->setGeometry(435,530,200,16); + label->setGeometry(435,560,200,16); // // Mode Control Style // air_modecontrol_box=new QComboBox(this); - air_modecontrol_box->setGeometry(560,550,110,20); + air_modecontrol_box->setGeometry(560,580,110,20); connect(air_modecontrol_box,SIGNAL(activated(int)), this,SLOT(modeControlActivatedData(int))); label=new QLabel(tr("Mode Control Style:"),this); label->setFont(subLabelFont()); - label->setGeometry(435,550,120,20); + label->setGeometry(435,580,120,20); label->setAlignment(Qt::AlignRight|Qt::AlignVCenter); air_modecontrol_box->insertItem(0,tr("Unified")); air_modecontrol_box->insertItem(1,tr("Independent")); @@ -875,12 +889,12 @@ EditRDAirPlay::EditRDAirPlay(RDStation *station,RDStation *cae_station, // for(int i=0;i<3;i++) { air_logstartmode_box[i]=new QComboBox(this); - air_logstartmode_box[i]->setGeometry(615,572+i*22,110,20); + air_logstartmode_box[i]->setGeometry(615,602+i*22,110,20); connect(air_logstartmode_box[i],SIGNAL(activated(int)), this,SLOT(logStartupModeActivatedData(int))); air_logstartmode_label[i]=new QLabel(this); air_logstartmode_label[i]->setFont(subLabelFont()); - air_logstartmode_label[i]->setGeometry(470,572+i*22,140,20); + air_logstartmode_label[i]->setGeometry(470,602+i*22,140,20); air_logstartmode_label[i]->setAlignment(Qt::AlignRight|Qt::AlignVCenter); air_logstartmode_box[i]->insertItem(0,tr("Previous")); air_logstartmode_box[i]->insertItem(1,tr("LiveAssist")); @@ -892,7 +906,7 @@ EditRDAirPlay::EditRDAirPlay(RDStation *station,RDStation *cae_station, air_logstartmode_label[2]->setText(tr("Aux 2 Log Startup Mode:")); air_virtual_logstartsel_box=new QComboBox(this); - air_virtual_logstartsel_box->setGeometry(435,638,120,20); + air_virtual_logstartsel_box->setGeometry(435,668,120,20); connect(air_virtual_logstartsel_box,SIGNAL(activated(int)), this,SLOT(virtualModeActivatedData(int))); for(int i=0;isetFont(subLabelFont()); - label->setGeometry(555,638,5,20); + label->setGeometry(555,668,5,20); label->setAlignment(Qt::AlignCenter|Qt::AlignVCenter); air_virtual_logstartmode_box=new QComboBox(this); - air_virtual_logstartmode_box->setGeometry(565,638,110,20); + air_virtual_logstartmode_box->setGeometry(565,668,110,20); air_virtual_logstartmode_box->insertItem(0,tr("Previous")); air_virtual_logstartmode_box->insertItem(1,tr("LiveAssist")); air_virtual_logstartmode_box->insertItem(2,tr("Automatic")); @@ -1024,6 +1038,7 @@ EditRDAirPlay::EditRDAirPlay(RDStation *station,RDStation *cae_station, air_startlog_edit->setText(air_startlogs[air_logmachine]); air_autorestart_box->setChecked(air_autorestarts[air_logmachine]); air_skin_edit->setText(air_conf->skinPath()); + air_logo_edit->setText(air_conf->logoPath()); startModeChangedData(air_startmodes[air_logmachine]); for(unsigned i=0;itext(); + filename=QFileDialog::getOpenFileName(this,"RDAdmin - "+ + tr("Select Image File"),filename, + RD_IMAGE_FILE_FILTER); + if(!filename.isNull()) { + air_logo_edit->setText(filename); + } +} + + void EditRDAirPlay::modeControlActivatedData(int n) { if(n==0) { @@ -1308,6 +1335,7 @@ void EditRDAirPlay::okData() air_conf->setOpMode(i+RD_RDVAIRPLAY_LOG_BASE,air_virtual_opmodes[i]); } air_conf->setSkinPath(air_skin_edit->text()); + air_conf->setLogoPath(air_logo_edit->text()); done(0); } diff --git a/rdadmin/edit_rdairplay.h b/rdadmin/edit_rdairplay.h index f1c4cff0..be871d80 100644 --- a/rdadmin/edit_rdairplay.h +++ b/rdadmin/edit_rdairplay.h @@ -60,6 +60,7 @@ class EditRDAirPlay : public RDDialog void selectData(); // void editHotKeys(); void selectSkinData(); + void selectLogoData(); void modeControlActivatedData(int n); void logStartupModeActivatedData(int n); void okData(); @@ -137,6 +138,7 @@ class EditRDAirPlay : public RDDialog QMap air_autorestarts; QLabel *air_autorestart_label; QLineEdit *air_skin_edit; + QLineEdit *air_logo_edit; QLineEdit *air_title_template_edit; QLineEdit *air_artist_template_edit; QLineEdit *air_outcue_template_edit; diff --git a/rdairplay/topstrip.cpp b/rdairplay/topstrip.cpp index a0f95f4b..171cecde 100644 --- a/rdairplay/topstrip.cpp +++ b/rdairplay/topstrip.cpp @@ -61,13 +61,17 @@ TopStrip::TopStrip(QWidget *parent) // // Logo // + QPixmap pix(rda->airplayConf()->logoPath()); d_logo=new QLabel(this); d_logo->setAlignment(Qt::AlignCenter); + d_logo->setPixmap(pix); + /* d_logo->setFont(bannerFont()); d_logo->setText(QString::asprintf("User Logo\n(%dx%d)", RD_RDAIRPLAY_LOGO_WIDTH, RD_RDAIRPLAY_LOGO_HEIGHT)); d_logo->setStyleSheet("background-color: #99FF99"); + */ setFocusPolicy(Qt::NoFocus); } diff --git a/rivendell.spec.in b/rivendell.spec.in index facae8d9..45eafd84 100644 --- a/rivendell.spec.in +++ b/rivendell.spec.in @@ -361,6 +361,7 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/icons/hicolor/512x512/apps/rdlogedit.png %{_datadir}/icons/hicolor/512x512/apps/rdlogmanager.png %{_datadir}/icons/hicolor/512x512/apps/rdpanel.png +%{_datadir}/pixmaps/rivendell/rdairplay_logo.png %{_datadir}/X11/fvwm2/pixmaps/mini.rivendell.xpm %{_datadir}/X11/fvwm2/pixmaps/rivendell.xpm %{_datadir}/applications/rivendell-rdadmin.desktop diff --git a/utils/rddbmgr/revertschema.cpp b/utils/rddbmgr/revertschema.cpp index d0ce36e3..122d1f50 100644 --- a/utils/rddbmgr/revertschema.cpp +++ b/utils/rddbmgr/revertschema.cpp @@ -41,6 +41,15 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg) // NEW SCHEMA REVERSIONS GO HERE... + // + // Revert 355 + // + if((cur_schema==355)&&(set_schemacur_schema)) { + sql=QString("alter table `RDAIRPLAY` ")+ + "add column `LOGO_PATH` varchar(191) default '/usr/share/pixmaps/rivendell/rdairplay_logo.png' after `SKIN_PATH`"; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + WriteSchemaVersion(++cur_schema); + } + // NEW SCHEMA UPDATES GO HERE...