mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-04-27 06:36:37 +02:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
92838b6215
ChangeLogINSTALLNEWSPACKAGE_VERSIONREADME
docs/opsguide
lib
rdairplay
rdlogedit
rdlogmanager
utils/rddbmgr
32
ChangeLog
32
ChangeLog
@ -17895,6 +17895,8 @@
|
||||
2018-10-23 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a bug in 'configure.ac' that caused detection of FLAC
|
||||
support to always fail.
|
||||
<<<<<<< HEAD
|
||||
<<<<<<< HEAD
|
||||
2018-10-24 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Consolidated the implementation of the 'RDProfile' class into
|
||||
two files.
|
||||
@ -17924,3 +17926,33 @@
|
||||
* Fixed a regression in rdairplay(1) that caused the application
|
||||
to be closed even if an incorrect response was entered in the
|
||||
'Enter Password' dialog.
|
||||
2018-10-28 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a regression that caused the bankground of blank Sound Panel
|
||||
buttons to be black.
|
||||
2018-10-28 Patrick Linstruth <patrick@deltecent.com>
|
||||
* Fixed a regression in rdairplay(1) that caused the application
|
||||
to be closed even if "No" was pressed in the 'Exit RDAirPlay?'
|
||||
dialog.
|
||||
2018-10-28 Patrick Linstruth <patrick@deltecent.com>
|
||||
* Updated the Operations Guide to include illustration of the
|
||||
'Play' and 'Stop' buttons on the main window of rdlibrary(1).
|
||||
2018-10-28 Patrick Linstruth <patrick@deltecent.com>
|
||||
* Fixed a regression in rdlogmanaer(1) that threw a segfault when
|
||||
adding a Log Note to an Event.
|
||||
2018-10-28 Patrick Linstruth <patrick@deltecent.com>
|
||||
* Fix delete and voice track buttons in rdlogedit(1).
|
||||
* Fix bug in RDSimplePlayer setCart() method.
|
||||
2018-10-29 Patrick Linstruth <patrick@deltecent.com>
|
||||
* Fixed regression where background colors are were not displayed
|
||||
in the RDDatePicker calendar.
|
||||
2018-10-29 Patrick Linstruth <patrick@deltecent.com>
|
||||
* Updated the 'README' file with RDDbConfig utility.
|
||||
2018-10-29 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a bug in the code to implement schema update/reversion 284
|
||||
that did not properly add/drop the 'RDAIRPLAY.INSTANCE' field.
|
||||
2018-10-29 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Backported a consistency check into schema update 291 in
|
||||
rddbmgr(8) to remove rdlogmanager(1) events with duplicate start
|
||||
times.
|
||||
2018-10-29 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Incremented the package version to 3.0.0alpha01.
|
||||
|
4
INSTALL
4
INSTALL
@ -224,13 +224,13 @@ In the '[mySQL]' section of the '/etc/rd.conf' file, set the 'Database=',
|
||||
'Loginname=' and 'Password=' parameters to the DB name, user and password
|
||||
that you created. Then, create an initial Rivendell database by doing:
|
||||
|
||||
rddbmgr --create
|
||||
rddbmgr --create
|
||||
|
||||
If all goes well, this command should return with no output.
|
||||
|
||||
Finally, start up the Rivendell service by doing (as root):
|
||||
|
||||
systemctl start rivendell
|
||||
systemctl start rivendell
|
||||
|
||||
You should now be able to run the various Rivendell components from the
|
||||
Applications menu.
|
||||
|
17
NEWS
17
NEWS
@ -1,9 +1,24 @@
|
||||
The NEWS file for the Rivendell package.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
v3.0.0alpha01 -- 10/29/2018
|
||||
|
||||
Second alpha release for v3.x.
|
||||
|
||||
Changes:
|
||||
Cleaned up various regressions. See the ChangeLog for details.
|
||||
|
||||
Database Update:
|
||||
This version of Rivendell uses database schema version 298, and will
|
||||
automatically upgrade any earlier versions. To see the current schema
|
||||
version prior to upgrade, see RDAdmin->SystemInfo.
|
||||
|
||||
Be sure to run 'rddbmgr --modify' (as root) immediately after upgrading
|
||||
to allow any necessary changes to the database schema to be applied.
|
||||
-------------------------------------------------------------------------------
|
||||
v3.0.0alpha00 -- 10/19/2018
|
||||
|
||||
Initial alpha release vor v3.x.
|
||||
Initial alpha release for v3.x.
|
||||
|
||||
Database Update:
|
||||
This version of Rivendell uses database schema version 297, and will
|
||||
|
@ -1 +1 @@
|
||||
3.0.0alpha00
|
||||
3.0.0alpha01
|
7
README
7
README
@ -57,12 +57,13 @@ A utility for posting and managing podcast episodes.
|
||||
RDGpiMon
|
||||
A utility for monitoring GPI line status.
|
||||
|
||||
RDHPIInfo
|
||||
A utility for configuring AudioScience audio adapters.
|
||||
|
||||
RDAlsaConfig
|
||||
A utility for configuring ALSA audio adapters.
|
||||
|
||||
RDDbConfig
|
||||
A utility for creating, backing up and restoring the Rivendell
|
||||
database.
|
||||
|
||||
RDImport
|
||||
A command-line utility for batch importing audio along with
|
||||
accompanying metadata. Do:
|
||||
|
Binary file not shown.
Before ![]() (image error) Size: 86 KiB After ![]() (image error) Size: 88 KiB ![]() ![]() |
@ -788,6 +788,35 @@
|
||||
touching the <computeroutput>Edit</computeroutput> button.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2 xml:id="sect.rdlibrary.viewing_and_selecting_cuts">
|
||||
<title>Viewing and Selecting Cuts</title>
|
||||
<para>
|
||||
If a cart contains more than one cut, you can view all the cuts
|
||||
contained by the cart by clicking the
|
||||
<computeroutput>+</computeroutput> icon. The cuts can be
|
||||
hidden by clicking the <computeroutput>-</computeroutput>
|
||||
icon.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2 xml:id="sect.rdlibrary.playing_carts_and_cuts">
|
||||
<title>Playing Carts and Cuts</title>
|
||||
<para>
|
||||
A selected cart or cut can be played by either pressing the
|
||||
play button (the one with the triangular symbol) or by
|
||||
pressing the space bar. If a cart or cut is currently
|
||||
playing, selecting another cart or cut with the mouse
|
||||
or arrow keys will automatically play the newly selected
|
||||
item. To stop a playing cart or cut, press the stop button
|
||||
(square symbol) or press the space bar again.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2 xml:id="sect.rdlibrary.runnings_macros">
|
||||
<title>Running Macros</title>
|
||||
<para>
|
||||
A selected macro can be run by pressing the
|
||||
<computeroutput>Run Macro</computeroutput> button.
|
||||
</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1 xml:id="sect.rdlibrary.library_maintenance">
|
||||
<title>Library Maintenance</title>
|
||||
|
@ -82,12 +82,12 @@ RDDatePicker::RDDatePicker(int low_year,int high_year,QWidget *parent)
|
||||
// Date Labels
|
||||
//
|
||||
QPalette weekend_palette=palette();
|
||||
weekend_palette.setColor(QPalette::Active,QColorGroup::Background,
|
||||
weekend_palette.setColor(QPalette::Active,QPalette::Background,
|
||||
palette().color(QPalette::Active,
|
||||
QColorGroup::Mid));
|
||||
weekend_palette.setColor(QPalette::Inactive,QColorGroup::Background,
|
||||
QPalette::Mid));
|
||||
weekend_palette.setColor(QPalette::Inactive,QPalette::Background,
|
||||
palette().color(QPalette::Active,
|
||||
QColorGroup::Mid));
|
||||
QPalette::Mid));
|
||||
|
||||
QLabel *label=new QLabel(tr("Mo"),this,"monday_label");
|
||||
label->setGeometry(RDDATEPICKER_X_ORIGIN,30,30,30);
|
||||
@ -124,6 +124,7 @@ RDDatePicker::RDDatePicker(int low_year,int high_year,QWidget *parent)
|
||||
label->setFont(header_font);
|
||||
label->setAlignment(Qt::AlignCenter);
|
||||
label->setPalette(weekend_palette);
|
||||
label->setAutoFillBackground(true);
|
||||
|
||||
label=new QLabel(tr("Su"),this,"sunday_label");
|
||||
label->setGeometry(RDDATEPICKER_X_ORIGIN+RDDATEPICKER_X_INTERVAL*6,
|
||||
@ -131,6 +132,7 @@ RDDatePicker::RDDatePicker(int low_year,int high_year,QWidget *parent)
|
||||
label->setFont(header_font);
|
||||
label->setAlignment(Qt::AlignCenter);
|
||||
label->setPalette(weekend_palette);
|
||||
label->setAutoFillBackground(true);
|
||||
|
||||
|
||||
for(int i=0;i<6;i++) {
|
||||
@ -140,6 +142,7 @@ RDDatePicker::RDDatePicker(int low_year,int high_year,QWidget *parent)
|
||||
setGeometry(RDDATEPICKER_X_ORIGIN+RDDATEPICKER_X_INTERVAL*j,
|
||||
RDDATEPICKER_Y_ORIGIN+20+RDDATEPICKER_Y_INTERVAL*i,30,30);
|
||||
pick_date_label[i][j]->setAlignment(Qt::AlignTop|Qt::AlignHCenter);
|
||||
pick_date_label[i][j]->setAutoFillBackground(true);
|
||||
}
|
||||
}
|
||||
PrintDays();
|
||||
@ -265,12 +268,12 @@ void RDDatePicker::PrintDays()
|
||||
// Clear Days
|
||||
//
|
||||
QPalette weekend_palette=palette();
|
||||
weekend_palette.setColor(QPalette::Active,QColorGroup::Background,
|
||||
weekend_palette.setColor(QPalette::Active,QPalette::Background,
|
||||
palette().color(QPalette::Active,
|
||||
QColorGroup::Mid));
|
||||
weekend_palette.setColor(QPalette::Inactive,QColorGroup::Background,
|
||||
QPalette::Mid));
|
||||
weekend_palette.setColor(QPalette::Inactive,QPalette::Background,
|
||||
palette().color(QPalette::Active,
|
||||
QColorGroup::Mid));
|
||||
QPalette::Mid));
|
||||
for(int i=0;i<6;i++) {
|
||||
for(int j=0;j<5;j++) {
|
||||
pick_date_label[i][j]->clear();
|
||||
@ -324,26 +327,26 @@ void RDDatePicker::SelectDay(int day,int dow_offset,bool state)
|
||||
int dow=slot-7*week;
|
||||
QPalette pal=palette();
|
||||
if(state) {
|
||||
pal.setColor(QPalette::Active,QColorGroup::Foreground,
|
||||
pal.setColor(QPalette::Active,QPalette::Foreground,
|
||||
palette().
|
||||
color(QPalette::Active,QColorGroup::HighlightedText));
|
||||
pal.setColor(QPalette::Active,QColorGroup::Background,
|
||||
palette().color(QPalette::Active,QColorGroup::Highlight));
|
||||
pal.setColor(QPalette::Inactive,QColorGroup::Foreground,
|
||||
color(QPalette::Active,QPalette::HighlightedText));
|
||||
pal.setColor(QPalette::Active,QPalette::Background,
|
||||
palette().color(QPalette::Active,QPalette::Highlight));
|
||||
pal.setColor(QPalette::Inactive,QPalette::Foreground,
|
||||
palette().
|
||||
color(QPalette::Active,QColorGroup::HighlightedText));
|
||||
pal.setColor(QPalette::Inactive,QColorGroup::Background,
|
||||
palette().color(QPalette::Active,QColorGroup::Highlight));
|
||||
color(QPalette::Active,QPalette::HighlightedText));
|
||||
pal.setColor(QPalette::Inactive,QPalette::Background,
|
||||
palette().color(QPalette::Active,QPalette::Highlight));
|
||||
}
|
||||
else {
|
||||
pal.setColor(QPalette::Active,QColorGroup::Foreground,
|
||||
palette().color(QPalette::Active,QColorGroup::Text));
|
||||
pal.setColor(QPalette::Active,QColorGroup::Background,
|
||||
palette().color(QPalette::Active,QColorGroup::Background));
|
||||
pal.setColor(QPalette::Inactive,QColorGroup::Foreground,
|
||||
palette().color(QPalette::Active,QColorGroup::Text));
|
||||
pal.setColor(QPalette::Inactive,QColorGroup::Background,
|
||||
palette().color(QPalette::Active,QColorGroup::Background));
|
||||
pal.setColor(QPalette::Active,QPalette::Foreground,
|
||||
palette().color(QPalette::Active,QPalette::Text));
|
||||
pal.setColor(QPalette::Active,QPalette::Background,
|
||||
palette().color(QPalette::Active,QPalette::Background));
|
||||
pal.setColor(QPalette::Inactive,QPalette::Foreground,
|
||||
palette().color(QPalette::Active,QPalette::Text));
|
||||
pal.setColor(QPalette::Inactive,QPalette::Background,
|
||||
palette().color(QPalette::Active,QPalette::Background));
|
||||
}
|
||||
pick_date_label[week][dow]->setPalette(pal);
|
||||
}
|
||||
|
@ -23,7 +23,6 @@
|
||||
|
||||
#include <qpixmap.h>
|
||||
#include <qpainter.h>
|
||||
//Added by qt3to4:
|
||||
#include <QDropEvent>
|
||||
#include <QMouseEvent>
|
||||
#include <QKeyEvent>
|
||||
@ -52,8 +51,8 @@ void RDPanelButton::clear()
|
||||
{
|
||||
setText("");
|
||||
setOutputText("");
|
||||
setDefaultColor(button_parent->backgroundColor());
|
||||
setColor(button_parent->backgroundColor());
|
||||
button_color=Qt::lightGray;
|
||||
button_default_color=Qt::lightGray;
|
||||
setCart(0);
|
||||
button_deck=-1;
|
||||
button_output=-1;
|
||||
@ -492,6 +491,7 @@ void RDPanelButton::WriteKeycap(int secs)
|
||||
setPixmap(*pix);
|
||||
delete p;
|
||||
delete pix;
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
|
@ -84,6 +84,7 @@ bool RDSimplePlayer::isPlaying()
|
||||
void RDSimplePlayer::setCart(unsigned cart)
|
||||
{
|
||||
play_cart=cart;
|
||||
play_cut="";
|
||||
}
|
||||
|
||||
|
||||
|
@ -2141,6 +2141,7 @@ void MainWidget::closeEvent(QCloseEvent *e)
|
||||
if(QMessageBox::question(this,"RDAirPlay",tr("Exit RDAirPlay?"),
|
||||
QMessageBox::Yes,QMessageBox::No)!=
|
||||
QMessageBox::Yes) {
|
||||
e->setAccepted(false);
|
||||
return;
|
||||
}
|
||||
for(unsigned i=0;i<air_plugin_hosts.size();i++) {
|
||||
|
@ -300,8 +300,8 @@ void MainWidget::userData()
|
||||
// Set Control Perms
|
||||
//
|
||||
log_add_button->setEnabled(rda->user()->createLog());
|
||||
log_delete_button->setEnabled(rda->user()->deleteLog());
|
||||
log_track_button->setEnabled(rda->user()->voicetrackLog());
|
||||
log_delete_button->setEnabled(false);
|
||||
log_track_button->setEnabled(false);
|
||||
}
|
||||
|
||||
|
||||
@ -631,8 +631,8 @@ void MainWidget::logSelectionChangedData()
|
||||
item=(ListListViewItem *)item->nextSibling();
|
||||
}
|
||||
log_edit_button->setEnabled(count==1);
|
||||
log_delete_button->setEnabled(count>0);
|
||||
log_track_button->setEnabled(count==1);
|
||||
log_delete_button->setEnabled(count>0&&rda->user()->deleteLog());
|
||||
log_track_button->setEnabled(count==1&&rda->user()->voicetrackLog());
|
||||
}
|
||||
|
||||
|
||||
|
@ -342,7 +342,7 @@ void ImportListView::insertNoteMenuData()
|
||||
i_item->setEventType(RDLogLine::Marker);
|
||||
i_item->setMarkerComment(note);
|
||||
i_item->setTransType(RDLogLine::Segue);
|
||||
import_list->takeItem(1,i_item);
|
||||
import_list->takeItem(import_menu_line,i_item);
|
||||
validateTransitions();
|
||||
refreshList(import_menu_line);
|
||||
emit sizeChanged(childCount());
|
||||
|
@ -2687,13 +2687,11 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
|
||||
// Revert 284
|
||||
//
|
||||
if((cur_schema==284)&&(set_schema<cur_schema)) {
|
||||
/*
|
||||
sql=QString("alter table RDAIRPLAY add column INSTANCE int unsigned ")+
|
||||
"not null default 0 after STATION";
|
||||
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
for(int i=9;i>=0;i--) {
|
||||
sql=QString("alter table RDAIRPLAY add column ")+
|
||||
QString().sprintf("STOP_RML%d char(255) after INSTANCE",i);
|
||||
|
@ -7008,12 +7008,10 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
|
||||
}
|
||||
|
||||
if((cur_schema<284)&&(set_schema>cur_schema)) {
|
||||
/*
|
||||
sql=QString("alter table RDAIRPLAY drop column INSTANCE");
|
||||
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
for(int i=0;i<10;i++) {
|
||||
sql=QString("alter table RDAIRPLAY ")+
|
||||
QString().sprintf("drop column CARD%d",i);
|
||||
@ -7692,6 +7690,49 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
|
||||
while(q->next()) {
|
||||
QString tablename=q->value(0).toString()+"_CLK";
|
||||
tablename.replace(" ","_");
|
||||
|
||||
/* *** HACK WARNING *** HACK WARNING ***
|
||||
*
|
||||
* This check works around a bug in Rivendell v2.x that permitted
|
||||
* clocks to have events with the same start time. It deletes all
|
||||
* such 'conflicting' events except the one with the lowest ID number.
|
||||
*/
|
||||
QList<unsigned> deleted_ids;
|
||||
sql=QString("select ")+
|
||||
"ID,"+ // 00
|
||||
"EVENT_NAME,"+ // 01
|
||||
"START_TIME,"+ // 02
|
||||
"LENGTH "+ // 03
|
||||
"from `"+tablename+"` "+
|
||||
"order by ID";
|
||||
q1=new RDSqlQuery(sql);
|
||||
while(q1->next()) {
|
||||
sql=QString("select ")+
|
||||
"ID,"+ // 00
|
||||
"EVENT_NAME "+ // 01
|
||||
"from `"+tablename+"` where "+
|
||||
QString().sprintf("START_TIME=%d && ",q1->value(2).toInt())+
|
||||
QString().sprintf("ID!=%u ",q1->value(0).toUInt())+
|
||||
"order by ID";
|
||||
q2=new RDSqlQuery(sql);
|
||||
while(q2->next()) {
|
||||
if(!deleted_ids.contains(q1->value(0).toUInt())) {
|
||||
fprintf(stderr,
|
||||
"WARNING: deleted conflicting event \"%s\" from clock \"%s\"\n",
|
||||
(const char *)q2->value(1).toString().toUtf8(),
|
||||
(const char *)q->value(0).toString().toUtf8());
|
||||
sql=QString("delete ")+
|
||||
"from `"+tablename+"` where "+
|
||||
QString().sprintf("ID=%u",q2->value(0).toUInt());
|
||||
RDSqlQuery::apply(sql);
|
||||
deleted_ids.push_back(q2->value(0).toUInt());
|
||||
}
|
||||
}
|
||||
delete q2;
|
||||
}
|
||||
delete q1;
|
||||
/* *** END OF HACK WARNING *** END OF HACK WARNING ***/
|
||||
|
||||
sql=QString("select ")+
|
||||
"EVENT_NAME,"+ // 00
|
||||
"START_TIME,"+ // 01
|
||||
|
Loading…
x
Reference in New Issue
Block a user