mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-04-09 14:33:28 +02:00
2020-02-02 Fred Gleason <fredg@paravelsystems.com>
* Added a 'STATIONS.BROWSER_PATH' field to the database. * Incremented the database version to 314. * Added a 'Web Browser' control to the 'Edit Host' dialog in rdadmin(1). * Added a MusicBrainz record lookup button to the full disc ripper in rdlibrary(1). * Added a MusicBrainz record lookup button to the disc track ripper in rdlibrary(1).
This commit is contained in:
parent
32a3e34c6e
commit
8dfd341cdf
@ -19464,3 +19464,12 @@
|
||||
to fail to save MBIDs to the database after a successful rip.
|
||||
* Fixed a bug in the disc track ripper in rdlibrary(1)that caused it
|
||||
to fail to save MBIDs to the database after a successful rip.
|
||||
2020-02-02 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Added a 'STATIONS.BROWSER_PATH' field to the database.
|
||||
* Incremented the database version to 314.
|
||||
* Added a 'Web Browser' control to the 'Edit Host' dialog in
|
||||
rdadmin(1).
|
||||
* Added a MusicBrainz record lookup button to the full disc ripper
|
||||
in rdlibrary(1).
|
||||
* Added a MusicBrainz record lookup button to the disc track ripper
|
||||
in rdlibrary(1).
|
||||
|
@ -17,8 +17,9 @@ BROADCAST_SECURITY int(10) unsigned 0=HostSec, 1=UserSec
|
||||
HEARTBEAT_CART int(10) unsigned
|
||||
HEARTBEAT_INTERVAL int(10) unsigned
|
||||
STARTUP_CART int(10) unsigned
|
||||
EDITOR_PATH varchar(191)
|
||||
REPORT_EDITOR_PATH varchar(191)
|
||||
EDITOR_PATH varchar(191) Audio editor --e.g. Audacity
|
||||
REPORT_EDITOR_PATH varchar(191) Text Editor --e.g. GEdit
|
||||
BROWSER_PATH varchar(191) Web Browser --e.g. Firefox
|
||||
FILTER_MODE int(11) 0=Synchronous, 1=Asynchronous
|
||||
START_JACK enum('Y','N')
|
||||
JACK_SERVER_NAME varchar(64)
|
||||
|
@ -283,6 +283,8 @@ EXTRA_DIST = admin.xpm\
|
||||
mic16.xpm\
|
||||
music.png\
|
||||
music.xpm\
|
||||
musicbrainz-159x25.xpm\
|
||||
musicbrainz.svg\
|
||||
note.xpm\
|
||||
note2.xpm\
|
||||
notemarker.png\
|
||||
|
62
icons/musicbrainz-159x25.xpm
Normal file
62
icons/musicbrainz-159x25.xpm
Normal file
@ -0,0 +1,62 @@
|
||||
/* XPM */
|
||||
static const char * musicbrainz_159x25_xpm[] = {
|
||||
"159 25 34 1",
|
||||
" c None",
|
||||
". c #BA478F",
|
||||
"+ c #EB743A",
|
||||
"@ c #B9488F",
|
||||
"# c #EB743B",
|
||||
"$ c #B94790",
|
||||
"% c #BA478E",
|
||||
"& c #EB733A",
|
||||
"* c #EA753B",
|
||||
"= c #BB488F",
|
||||
"- c #EC743C",
|
||||
"; c #BB478F",
|
||||
"> c #EB743C",
|
||||
", c #EB753A",
|
||||
"' c #B9478E",
|
||||
") c #BA4790",
|
||||
"! c #EB753B",
|
||||
"~ c #BA468F",
|
||||
"{ c #EB733C",
|
||||
"] c #EB733B",
|
||||
"^ c #EA743B",
|
||||
"/ c #BA488F",
|
||||
"( c #B9478F",
|
||||
"_ c #BB4890",
|
||||
": c #EC753A",
|
||||
"< c #EA743A",
|
||||
"[ c #BB468F",
|
||||
"} c #EC733B",
|
||||
"| c #EC743B",
|
||||
"1 c #EA733B",
|
||||
"2 c #BB468E",
|
||||
"3 c #BA468E",
|
||||
"4 c #BB478E",
|
||||
"5 c #B94890",
|
||||
" . + ",
|
||||
" @.. ## ",
|
||||
" $... #### ",
|
||||
" %..... #####& .. ##* ",
|
||||
" =....... #######- ..... ..... .... ########## #### ",
|
||||
" ;........ ########> ..... ..... ;... ########### ,### ",
|
||||
".......... ########## .....' ...... .) ####!!#####& !- ",
|
||||
".......... ########## ...... ~..... ###! #### ",
|
||||
".......... ########## ...).. ...... ...~ .... .....; .... ..... ###! #### ### {#> #####] ### ### ^#### #########+ ",
|
||||
".......... ########## ...$... .../... ...( ...; ........ .... $.......; ###! #### ^####### ######## ### ########## ########## ",
|
||||
".......... ########## ... ... ... ... ...( ...; .... _...; .... ....;)... #### #### ^####### ####,+###^ ### ####!###### #########: ",
|
||||
".......... ########## ... %.. ../ ... ...( ...; ... ./// .... ;... ...; ########## ^####^< ### -### ### ###^ #### #### ",
|
||||
".......... ########## ... [..~ ... ... ...( ...; .... .... .... =((. ########### ^### -### ### ### #### #### ",
|
||||
".......... ########## ... ... ... ... ...( ...; /.....; .... ...$ #### -###> ^### +######## ### ### ###- #### ",
|
||||
".......... ########## ... (.. ... ... ...( ...; ........ .... ...( ###} #### ^### -####!#### ### ### ###- !###! ",
|
||||
".......... ########## ... ..).. )... ...( ...; ;..... .... .... ###} #### ^### ###- |### ### ### ###- ###{ ",
|
||||
".......... ########## .... ..... (... ...= ...; ..[ %... .... .... $... ###} >### ^### 1### ^### ### ### ###- #### ",
|
||||
".......... #########, ...2 ....( .... ....@ ....; %... ...) .... ....3 (...@ ######-##### ^### ##### #### ### ### ###- !####,,,,! ",
|
||||
" ........ ######## ...2 ... .... (.........; .......... .... ........$ ########### ^### ########## ### ### ###- ########## ",
|
||||
" @...... ###### ...2 ... .... $........; .......' .... ....... ########## ^### #####|### ### ### ###- ########## ",
|
||||
" 4.... ####+ 5% )=3 ([ , ",
|
||||
" %.. ##{ ",
|
||||
" . # ",
|
||||
" ",
|
||||
" "};
|
1
icons/musicbrainz.svg
Normal file
1
icons/musicbrainz.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 5.8 KiB |
@ -24,7 +24,7 @@
|
||||
/*
|
||||
* Current Database Version
|
||||
*/
|
||||
#define RD_VERSION_DATABASE 313
|
||||
#define RD_VERSION_DATABASE 314
|
||||
|
||||
|
||||
#endif // DBVERSION_H
|
||||
|
@ -63,6 +63,24 @@ QSize RDDiscLookup::sizeHint() const
|
||||
}
|
||||
|
||||
|
||||
QString RDDiscLookup::sourceName() const
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
||||
QPixmap RDDiscLookup::sourceLogo() const
|
||||
{
|
||||
return QPixmap();
|
||||
}
|
||||
|
||||
|
||||
QString RDDiscLookup::sourceUrl() const
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
||||
void RDDiscLookup::setCddbRecord(RDDiscRecord *rec)
|
||||
{
|
||||
lookup_record=rec;
|
||||
@ -153,7 +171,7 @@ void RDDiscLookup::resizeEvent(QResizeEvent *e)
|
||||
}
|
||||
|
||||
|
||||
RDDiscRecord *RDDiscLookup::discRecord()
|
||||
RDDiscRecord *RDDiscLookup::discRecord() const
|
||||
{
|
||||
return lookup_record;
|
||||
}
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
#include <qcombobox.h>
|
||||
#include <qlabel.h>
|
||||
#include <qpixmap.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qstringlist.h>
|
||||
#include <qtcpsocket.h>
|
||||
@ -40,7 +41,9 @@ class RDDiscLookup : public RDDialog
|
||||
enum Result {ExactMatch=0,NoMatch=1,LookupError=2};
|
||||
RDDiscLookup(const QString &caption,FILE *profile_msgs,QWidget *parent=0);
|
||||
QSize sizeHint() const;
|
||||
virtual QString sourceName() const=0;
|
||||
virtual QString sourceName() const;
|
||||
virtual QPixmap sourceLogo() const;
|
||||
virtual QString sourceUrl() const;
|
||||
void setCddbRecord(RDDiscRecord *);
|
||||
void lookup();
|
||||
static bool isrcIsValid(const QString &isrc);
|
||||
@ -58,7 +61,7 @@ class RDDiscLookup : public RDDialog
|
||||
protected:
|
||||
virtual void lookupRecord()=0;
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
RDDiscRecord *discRecord();
|
||||
RDDiscRecord *discRecord() const;
|
||||
void profile(const QString &msg);
|
||||
QComboBox *titlesBox();
|
||||
QStringList *titlesKey();
|
||||
|
@ -28,12 +28,7 @@ RDDummyLookup::RDDummyLookup(const QString &caption,FILE *profile_msgs,
|
||||
}
|
||||
|
||||
|
||||
QString RDDummyLookup::sourceName() const
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
||||
void RDDummyLookup::lookupRecord()
|
||||
{
|
||||
emit lookupDone(RDDiscLookup::NoMatch,"OK");
|
||||
}
|
||||
|
@ -29,7 +29,6 @@ class RDDummyLookup : public RDDiscLookup
|
||||
Q_OBJECT
|
||||
public:
|
||||
RDDummyLookup(const QString &caption,FILE *profile_msgs,QWidget *parent=0);
|
||||
QString sourceName() const;
|
||||
|
||||
protected:
|
||||
void lookupRecord();
|
||||
|
@ -40,6 +40,8 @@
|
||||
|
||||
#include "rdmblookup.h"
|
||||
|
||||
#include "../icons/musicbrainz-159x25.xpm"
|
||||
|
||||
QString err_str="OK";
|
||||
RDDiscLookup::Result result_code=RDDiscLookup::ExactMatch;
|
||||
|
||||
@ -57,6 +59,22 @@ QString RDMbLookup::sourceName() const
|
||||
}
|
||||
|
||||
|
||||
QPixmap RDMbLookup::sourceLogo() const
|
||||
{
|
||||
return QPixmap(musicbrainz_159x25_xpm);
|
||||
}
|
||||
|
||||
|
||||
QString RDMbLookup::sourceUrl() const
|
||||
{
|
||||
if(discRecord()->discReleaseMbId().isEmpty()) {
|
||||
return QString();
|
||||
}
|
||||
return "https://"+rda->libraryConf()->mbServer()+"/release/"+
|
||||
discRecord()->discReleaseMbId();
|
||||
}
|
||||
|
||||
|
||||
void RDMbLookup::lookupRecord()
|
||||
{
|
||||
MusicBrainz5::CQuery
|
||||
|
@ -32,6 +32,8 @@ class RDMbLookup : public RDDiscLookup
|
||||
public:
|
||||
RDMbLookup(const QString &caption,FILE *profile_msgs,QWidget *parent=0);
|
||||
QString sourceName() const;
|
||||
QPixmap sourceLogo() const;
|
||||
QString sourceUrl() const;
|
||||
|
||||
protected:
|
||||
void lookupRecord();
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// Abstract a Rivendell Workstation.
|
||||
//
|
||||
// (C) Copyright 2002-2018 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2020 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
|
||||
@ -270,6 +270,19 @@ void RDStation::setReportEditorPath(const QString &cmd)
|
||||
}
|
||||
|
||||
|
||||
QString RDStation::browserPath() const
|
||||
{
|
||||
return RDGetSqlValue("STATIONS","NAME",station_name,"BROWSER_PATH").
|
||||
toString();
|
||||
}
|
||||
|
||||
|
||||
void RDStation::setBrowserPath(const QString &cmd) const
|
||||
{
|
||||
SetRow("BROWSER_PATH",cmd);
|
||||
}
|
||||
|
||||
|
||||
RDStation::FilterMode RDStation::filterMode() const
|
||||
{
|
||||
return (RDStation::FilterMode)RDGetSqlValue("STATIONS","NAME",station_name,
|
||||
|
@ -66,6 +66,8 @@ class RDStation
|
||||
void setEditorPath(const QString &cmd);
|
||||
QString reportEditorPath() const;
|
||||
void setReportEditorPath(const QString &cmd);
|
||||
QString browserPath() const;
|
||||
void setBrowserPath(const QString &cmd) const;
|
||||
RDStation::FilterMode filterMode() const;
|
||||
void setFilterMode(RDStation::FilterMode mode) const;
|
||||
bool startJack() const;
|
||||
|
@ -119,3 +119,44 @@ bool RDTextViewer(const QString &filename)
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool RDWebBrowser(const QString &url)
|
||||
{
|
||||
QString editor=RD_LINUX_EDITOR;
|
||||
char cmd[PATH_MAX];
|
||||
char *args[64];
|
||||
|
||||
editor=rda->station()->browserPath();
|
||||
if(editor.isEmpty()) {
|
||||
QMessageBox::warning(NULL,"Error",
|
||||
"No web browser configured!");
|
||||
return false;
|
||||
}
|
||||
memset(args,0,sizeof(args));
|
||||
QStringList f0=editor.split(" ",QString::SkipEmptyParts);
|
||||
if(f0.size()>64) {
|
||||
QMessageBox::warning(NULL,"Error",
|
||||
"Too many arguments to web browser!");
|
||||
return false;
|
||||
}
|
||||
strncpy(cmd,f0.at(0).toUtf8(),PATH_MAX);
|
||||
QStringList f1=f0.at(0).split("/");
|
||||
args[0]=(char *)malloc(f1.back().toUtf8().size()+1);
|
||||
strcpy(args[0],f1.back().toUtf8());
|
||||
for(int i=1;i<f0.size();i++) {
|
||||
args[i]=(char *)malloc(f0.at(i).toUtf8().size()+1);
|
||||
strcpy(args[i],f0.at(i).toUtf8());
|
||||
}
|
||||
|
||||
args[f0.size()]=(char *)malloc(url.toUtf8().length()+1);
|
||||
strcpy(args[f0.size()],url.toUtf8());
|
||||
|
||||
args[f0.size()+1]=(char *)NULL;
|
||||
|
||||
if(fork()==0) {
|
||||
execvp(cmd,args);
|
||||
_exit(1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
|
||||
bool RDTextFile(const QString &data,bool delete_on_exit=true);
|
||||
bool RDTextViewer(const QString &filename);
|
||||
bool RDWebBrowser(const QString &url);
|
||||
|
||||
|
||||
#endif // RDTEXTFILE_H
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// Edit a Rivendell Workstation Configuration
|
||||
//
|
||||
// (C) Copyright 2002-2019 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2020 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
|
||||
@ -148,6 +148,16 @@ EditStation::EditStation(QString sname,QWidget *parent)
|
||||
station_report_editor_label->setFont(labelFont());
|
||||
station_report_editor_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
|
||||
//
|
||||
// Web Browser Command
|
||||
//
|
||||
station_web_browser_edit=new QLineEdit(this);
|
||||
station_web_browser_edit->setMaxLength(191);
|
||||
station_web_browser_label=
|
||||
new QLabel(station_web_browser_edit,tr("Web Browser")+":",this);
|
||||
station_web_browser_label->setFont(labelFont());
|
||||
station_web_browser_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
|
||||
//
|
||||
// Station Time Offset
|
||||
//
|
||||
@ -463,6 +473,7 @@ EditStation::EditStation(QString sname,QWidget *parent)
|
||||
station_address_edit->setText(station_station->address().toString());
|
||||
station_audio_editor_edit->setText(station_station->editorPath());
|
||||
station_report_editor_edit->setText(station_station->reportEditorPath());
|
||||
station_web_browser_edit->setText(station_station->browserPath());
|
||||
station_timeoffset_box->setValue(station_station->timeOffset());
|
||||
unsigned cartnum=station_station->startupCart();
|
||||
if(cartnum>0) {
|
||||
@ -575,8 +586,7 @@ EditStation::~EditStation()
|
||||
|
||||
QSize EditStation::sizeHint() const
|
||||
{
|
||||
return QSize(415,744);
|
||||
// return QSize(395,744);
|
||||
return QSize(415,765);
|
||||
}
|
||||
|
||||
|
||||
@ -696,8 +706,8 @@ void EditStation::okData()
|
||||
station_station->setAddress(addr);
|
||||
station_station->
|
||||
setEditorPath(station_audio_editor_edit->text());
|
||||
station_station->
|
||||
setReportEditorPath(station_report_editor_edit->text());
|
||||
station_station->setReportEditorPath(station_report_editor_edit->text());
|
||||
station_station->setBrowserPath(station_web_browser_edit->text());
|
||||
station_station->setTimeOffset(station_timeoffset_box->value());
|
||||
cartnum=station_startup_cart_edit->text().toUInt(&ok);
|
||||
if(ok&&(cartnum<=999999)) {
|
||||
@ -907,82 +917,85 @@ void EditStation::resizeEvent(QResizeEvent *e)
|
||||
station_report_editor_edit->setGeometry(115,137,size().width()-120,19);
|
||||
station_report_editor_label->setGeometry(10,137,100,19);
|
||||
|
||||
station_timeoffset_box->setGeometry(115,158,80,19);
|
||||
station_timeoffset_label->setGeometry(10,158,100,19);
|
||||
station_web_browser_edit->setGeometry(115,158,size().width()-120,19);
|
||||
station_web_browser_label->setGeometry(10,158,100,19);
|
||||
|
||||
station_startup_cart_edit->setGeometry(115,179,60,19);
|
||||
station_startup_cart_label->setGeometry(10,179,100,19);
|
||||
station_startup_select_button->setGeometry(180,178,50,22);
|
||||
station_timeoffset_box->setGeometry(115,179,80,19);
|
||||
station_timeoffset_label->setGeometry(10,179,100,19);
|
||||
|
||||
station_cue_sel->setGeometry(90,200,110,117);
|
||||
station_cue_sel_label->setGeometry(10,200,100,19);
|
||||
station_startup_cart_edit->setGeometry(115,200,60,19);
|
||||
station_startup_cart_label->setGeometry(10,200,100,19);
|
||||
station_startup_select_button->setGeometry(180,199,50,22);
|
||||
|
||||
station_start_cart_edit->setGeometry(290,200,60,20);
|
||||
station_start_cart_label->setGeometry(205,200,80,20);
|
||||
station_start_cart_button->setGeometry(355,199,50,22);
|
||||
station_cue_sel->setGeometry(90,221,110,117);
|
||||
station_cue_sel_label->setGeometry(10,221,100,19);
|
||||
|
||||
station_stop_cart_edit->setGeometry(290,222,60,20);
|
||||
station_stop_cart_label->setGeometry(205,222,80,20);
|
||||
station_stop_cart_button->setGeometry(355,221,50,22);
|
||||
station_start_cart_edit->setGeometry(290,221,60,20);
|
||||
station_start_cart_label->setGeometry(205,221,80,20);
|
||||
station_start_cart_button->setGeometry(355,220,50,22);
|
||||
|
||||
station_heartbeat_box->setGeometry(10,247,15,15);
|
||||
station_heartbeat_label->setGeometry(30,245,150,20);
|
||||
station_stop_cart_edit->setGeometry(290,243,60,20);
|
||||
station_stop_cart_label->setGeometry(205,243,80,20);
|
||||
station_stop_cart_button->setGeometry(355,242,50,22);
|
||||
|
||||
station_filter_box->setGeometry(210,247,15,15);
|
||||
station_filter_label->setGeometry(230,245,150,20);
|
||||
station_heartbeat_box->setGeometry(10,268,15,15);
|
||||
station_heartbeat_label->setGeometry(30,266,150,20);
|
||||
|
||||
station_hbcart_edit->setGeometry(65,269,60,19);
|
||||
station_hbcart_label->setGeometry(10,269,50,19);
|
||||
station_hbcart_button->setGeometry(140,266,60,26);
|
||||
station_filter_box->setGeometry(210,268,15,15);
|
||||
station_filter_label->setGeometry(230,266,150,20);
|
||||
|
||||
station_hbinterval_spin->setGeometry(275,269,45,19);
|
||||
station_hbinterval_label->setGeometry(220,269,50,19);
|
||||
station_hbinterval_unit->setGeometry(325,269,100,19);
|
||||
station_hbcart_edit->setGeometry(65,290,60,19);
|
||||
station_hbcart_label->setGeometry(10,290,50,19);
|
||||
station_hbcart_button->setGeometry(140,287,60,26);
|
||||
|
||||
station_maint_box->setGeometry(10,296,15,15);
|
||||
station_maint_label->setGeometry(30,294,size().width()-40,20);
|
||||
station_hbinterval_spin->setGeometry(275,290,45,19);
|
||||
station_hbinterval_label->setGeometry(220,290,50,19);
|
||||
station_hbinterval_unit->setGeometry(325,290,100,19);
|
||||
|
||||
station_dragdrop_box->setGeometry(10,317,15,15);
|
||||
station_dragdrop_label->setGeometry(30,314,size().width()-40,20);
|
||||
station_maint_box->setGeometry(10,317,15,15);
|
||||
station_maint_label->setGeometry(30,315,size().width()-40,20);
|
||||
|
||||
station_panel_enforce_box->setGeometry(25,335,15,15);
|
||||
station_panel_enforce_label->setGeometry(45,333,size().width()-55,20);
|
||||
station_dragdrop_box->setGeometry(10,338,15,15);
|
||||
station_dragdrop_label->setGeometry(30,335,size().width()-40,20);
|
||||
|
||||
station_systemservices_groupbox->setGeometry(10,360,size().width()-20,60);
|
||||
station_panel_enforce_box->setGeometry(25,356,15,15);
|
||||
station_panel_enforce_label->setGeometry(45,356,size().width()-55,20);
|
||||
|
||||
station_http_station_box->setGeometry(145,375,size().width()-165,19);
|
||||
station_http_station_label->setGeometry(11,375,130,19);
|
||||
station_systemservices_groupbox->setGeometry(10,381,size().width()-20,60);
|
||||
|
||||
station_cae_station_box->setGeometry(145,396,size().width()-165,19);
|
||||
station_cae_station_label->setGeometry(11,396,130,19);
|
||||
station_http_station_box->setGeometry(145,396,size().width()-165,19);
|
||||
station_http_station_label->setGeometry(11,396,130,19);
|
||||
|
||||
station_rdlibrary_button->setGeometry(30,434,80,50);
|
||||
station_cae_station_box->setGeometry(145,417,size().width()-165,19);
|
||||
station_cae_station_label->setGeometry(11,417,130,19);
|
||||
|
||||
station_rdcatch_button->setGeometry(120,434,80,50);
|
||||
station_rdlibrary_button->setGeometry(30,455,80,50);
|
||||
|
||||
station_rdairplay_button->setGeometry(210,434,80,50);
|
||||
station_rdcatch_button->setGeometry(120,455,80,50);
|
||||
|
||||
station_rdpanel_button->setGeometry(300,434,80,50);
|
||||
station_rdairplay_button->setGeometry(210,455,80,50);
|
||||
|
||||
station_rdlogedit_button->setGeometry(30,494,80,50);
|
||||
station_rdpanel_button->setGeometry(300,455,80,50);
|
||||
|
||||
station_rdcartslots_button->setGeometry(120,494,80,50);
|
||||
station_rdlogedit_button->setGeometry(30,513,80,50);
|
||||
|
||||
station_dropboxes_button->setGeometry(210,494,80,50);
|
||||
station_rdcartslots_button->setGeometry(120,513,80,50);
|
||||
|
||||
station_switchers_button->setGeometry(300,494,80,50);
|
||||
station_dropboxes_button->setGeometry(210,513,80,50);
|
||||
|
||||
station_hostvars_button->setGeometry(30,554,80,50);
|
||||
station_switchers_button->setGeometry(300,513,80,50);
|
||||
|
||||
station_audioports_button->setGeometry(120,554,80,50);
|
||||
station_hostvars_button->setGeometry(30,575,80,50);
|
||||
|
||||
station_ttys_button->setGeometry(210,554,80,50);
|
||||
station_audioports_button->setGeometry(120,575,80,50);
|
||||
|
||||
station_adapters_button->setGeometry(300,554,80,50);
|
||||
station_ttys_button->setGeometry(210,575,80,50);
|
||||
|
||||
station_jack_button->setGeometry(120,614,80,50);
|
||||
station_adapters_button->setGeometry(300,575,80,50);
|
||||
|
||||
station_pypad_button->setGeometry(210,614,80,50);
|
||||
station_jack_button->setGeometry(120,635,80,50);
|
||||
|
||||
station_pypad_button->setGeometry(210,635,80,50);
|
||||
|
||||
station_ok_button->setGeometry(size().width()-180,size().height()-60,80,50);
|
||||
station_cancel_button->
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// Edit a Rivendell Workstation
|
||||
//
|
||||
// (C) Copyright 2002-2019 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2020 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
|
||||
@ -92,6 +92,8 @@ class EditStation : public RDDialog
|
||||
QLineEdit *station_audio_editor_edit;
|
||||
QLabel *station_report_editor_label;
|
||||
QLineEdit *station_report_editor_edit;
|
||||
QLabel *station_web_browser_label;
|
||||
QLineEdit *station_web_browser_edit;
|
||||
QLabel *station_timeoffset_label;
|
||||
QSpinBox *station_timeoffset_box;
|
||||
QLabel *station_startup_cart_label;
|
||||
|
@ -3924,6 +3924,10 @@ Ports</source>
|
||||
Instances</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Web Browser</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditSvc</name>
|
||||
|
@ -3797,6 +3797,10 @@ Ports</source>
|
||||
Instances</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Web Browser</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditSvc</name>
|
||||
|
@ -3933,6 +3933,10 @@ Ports</source>
|
||||
Instances</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Web Browser</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditSvc</name>
|
||||
|
@ -3175,6 +3175,10 @@ Ports</source>
|
||||
Instances</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Web Browser</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditSvc</name>
|
||||
|
@ -3714,6 +3714,10 @@ Ports</source>
|
||||
Instances</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Web Browser</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditSvc</name>
|
||||
|
@ -3714,6 +3714,10 @@ Ports</source>
|
||||
Instances</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Web Browser</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditSvc</name>
|
||||
|
@ -3785,6 +3785,10 @@ Ports</source>
|
||||
Instances</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Web Browser</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditSvc</name>
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <rdconf.h>
|
||||
#include <rddisclookup_factory.h>
|
||||
#include <rdtempdirectory.h>
|
||||
#include <rdtextfile.h>
|
||||
|
||||
#include "cdripper.h"
|
||||
#include "globals.h"
|
||||
@ -40,7 +41,6 @@ CdRipper::CdRipper(QString cutname,RDDiscRecord *rec,RDLibraryConf *conf,
|
||||
: RDDialog(parent)
|
||||
{
|
||||
rip_profile_rip=profile_rip;
|
||||
// rip_isrc_read=false;
|
||||
rip_conf=conf;
|
||||
rip_disc_record=rec;
|
||||
rip_track[0]=-1;
|
||||
@ -139,6 +139,17 @@ CdRipper::CdRipper(QString cutname,RDDiscRecord *rec,RDLibraryConf *conf,
|
||||
rip_apply_box->setVisible(!rip_disc_lookup->sourceName().isNull());
|
||||
rip_apply_label->setVisible(!rip_disc_lookup->sourceName().isNull());
|
||||
|
||||
//
|
||||
// Web Browser Button
|
||||
//
|
||||
rip_browser_button=new QPushButton(this);
|
||||
rip_browser_button->setPixmap(rip_disc_lookup->sourceLogo());
|
||||
rip_browser_button->setDisabled(true);
|
||||
connect(rip_browser_button,SIGNAL(clicked()),this,SLOT(openBrowserData()));
|
||||
if(rip_disc_lookup->sourceLogo().isNull()) {
|
||||
rip_browser_button->hide();
|
||||
}
|
||||
|
||||
//
|
||||
// Track List
|
||||
//
|
||||
@ -284,7 +295,7 @@ CdRipper::~CdRipper()
|
||||
|
||||
QSize CdRipper::sizeHint() const
|
||||
{
|
||||
return QSize(470,606);
|
||||
return QSize(730,606);
|
||||
}
|
||||
|
||||
|
||||
@ -586,6 +597,7 @@ void CdRipper::lookupDoneData(RDDiscLookup::Result result,const QString &err_msg
|
||||
rip_apply_box->setChecked(true);
|
||||
rip_apply_box->setEnabled(true);
|
||||
rip_apply_label->setEnabled(true);
|
||||
rip_browser_button->setDisabled(rip_disc_lookup->sourceUrl().isNull());
|
||||
trackSelectionChangedData();
|
||||
break;
|
||||
|
||||
@ -620,6 +632,12 @@ void CdRipper::autotrimCheckData(bool state)
|
||||
}
|
||||
|
||||
|
||||
void CdRipper::openBrowserData()
|
||||
{
|
||||
RDWebBrowser(rip_disc_lookup->sourceUrl());
|
||||
}
|
||||
|
||||
|
||||
void CdRipper::closeData()
|
||||
{
|
||||
if(rip_done) {
|
||||
@ -643,6 +661,7 @@ void CdRipper::resizeEvent(QResizeEvent *e)
|
||||
rip_other_edit->setGeometry(65,75,size().width()-125,60);
|
||||
rip_apply_box->setGeometry(65,140,15,15);
|
||||
rip_apply_label->setGeometry(85,140,250,20);
|
||||
rip_browser_button->setGeometry(size().width()-260,139,200,35);
|
||||
rip_track_list->setGeometry(10,178,size().width()-110,size().height()-290);
|
||||
rip_track_label->setGeometry(10,162,100,14);
|
||||
rip_bar->setGeometry(10,size().height()-100,size().width()-112,20);
|
||||
|
@ -21,14 +21,15 @@
|
||||
#ifndef CDRIPPER_H
|
||||
#define CDRIPPER_H
|
||||
|
||||
#include <qprogressbar.h>
|
||||
|
||||
#include <qlineedit.h>
|
||||
#include <qdir.h>
|
||||
#include <qspinbox.h>
|
||||
#include <qcheckbox.h>
|
||||
#include <q3textedit.h>
|
||||
|
||||
#include <qcheckbox.h>
|
||||
#include <qdir.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qpixmap.h>
|
||||
#include <qprogressbar.h>
|
||||
#include <qspinbox.h>
|
||||
|
||||
#include <rddialog.h>
|
||||
#include <rdcddblookup.h>
|
||||
#include <rdcdplayer.h>
|
||||
@ -60,6 +61,7 @@ class CdRipper : public RDDialog
|
||||
void lookupDoneData(RDDiscLookup::Result,const QString &err_msg);
|
||||
void normalizeCheckData(bool);
|
||||
void autotrimCheckData(bool);
|
||||
void openBrowserData();
|
||||
void closeData();
|
||||
|
||||
protected:
|
||||
@ -91,6 +93,7 @@ class CdRipper : public RDDialog
|
||||
Q3TextEdit *rip_other_edit;
|
||||
QCheckBox *rip_apply_box;
|
||||
QLabel *rip_apply_label;
|
||||
QPushButton *rip_browser_button;
|
||||
RDTransportButton *rip_eject_button;
|
||||
RDTransportButton *rip_play_button;
|
||||
RDTransportButton *rip_stop_button;
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include <rdgroup.h>
|
||||
#include <rdlist_groups.h>
|
||||
#include <rdtempdirectory.h>
|
||||
#include <rdtextfile.h>
|
||||
|
||||
#include "disk_ripper.h"
|
||||
#include "globals.h"
|
||||
@ -37,7 +38,6 @@ DiskRipper::DiskRipper(QString *filter,QString *group,QString *schedcode,
|
||||
bool profile_rip,QWidget *parent)
|
||||
: RDDialog(parent)
|
||||
{
|
||||
// rip_isrc_read=false;
|
||||
rip_filter_text=filter;
|
||||
rip_group_text=group;
|
||||
rip_schedcode_text=schedcode;
|
||||
@ -116,7 +116,7 @@ DiskRipper::DiskRipper(QString *filter,QString *group,QString *schedcode,
|
||||
rip_other_edit->setReadOnly(true);
|
||||
|
||||
//
|
||||
// Apply FreeDB Check Box
|
||||
// Apply Lookup Data Check Box
|
||||
//
|
||||
rip_apply_box=new QCheckBox(this);
|
||||
rip_apply_box->setChecked(true);
|
||||
@ -131,6 +131,17 @@ DiskRipper::DiskRipper(QString *filter,QString *group,QString *schedcode,
|
||||
rip_apply_box->setVisible(!rip_disc_lookup->sourceName().isNull());
|
||||
rip_apply_label->setVisible(!rip_disc_lookup->sourceName().isNull());
|
||||
|
||||
//
|
||||
// Web Browser Button
|
||||
//
|
||||
rip_browser_button=new QPushButton(this);
|
||||
rip_browser_button->setPixmap(rip_disc_lookup->sourceLogo());
|
||||
rip_browser_button->setDisabled(true);
|
||||
connect(rip_browser_button,SIGNAL(clicked()),this,SLOT(openBrowserData()));
|
||||
if(rip_disc_lookup->sourceLogo().isNull()) {
|
||||
rip_browser_button->hide();
|
||||
}
|
||||
|
||||
//
|
||||
// Track List
|
||||
//
|
||||
@ -470,6 +481,7 @@ void DiskRipper::ejectedData()
|
||||
rip_apply_box->setChecked(false);
|
||||
rip_apply_box->setDisabled(true);
|
||||
rip_apply_label->setDisabled(true);
|
||||
rip_browser_button->setDisabled(true);
|
||||
}
|
||||
|
||||
|
||||
@ -804,6 +816,7 @@ void DiskRipper::lookupDoneData(RDDiscLookup::Result result,
|
||||
rip_apply_box->setChecked(true);
|
||||
rip_apply_box->setEnabled(true);
|
||||
rip_apply_label->setEnabled(true);
|
||||
rip_browser_button->setDisabled(rip_disc_lookup->sourceUrl().isNull());
|
||||
break;
|
||||
|
||||
case RDDiscLookup::NoMatch:
|
||||
@ -878,6 +891,12 @@ void DiskRipper::selectionChangedData()
|
||||
}
|
||||
|
||||
|
||||
void DiskRipper::openBrowserData()
|
||||
{
|
||||
RDWebBrowser(rip_disc_lookup->sourceUrl());
|
||||
}
|
||||
|
||||
|
||||
void DiskRipper::doubleClickedData(Q3ListViewItem *item,const QPoint &pt,
|
||||
int col)
|
||||
{
|
||||
@ -904,6 +923,7 @@ void DiskRipper::resizeEvent(QResizeEvent *e)
|
||||
rip_other_edit->setGeometry(65,53,size().width()-125,60);
|
||||
rip_apply_box->setGeometry(65,118,15,15);
|
||||
rip_apply_label->setGeometry(85,118,250,20);
|
||||
rip_browser_button->setGeometry(size().width()-260,117,200,35);
|
||||
rip_track_label->setGeometry(100,140,100,14);
|
||||
rip_track_list->setGeometry(100,156,size().width()-202,size().height()-342);
|
||||
rip_diskbar_label->setGeometry(10,size().height()-174,size().width()-110,20);
|
||||
|
@ -61,6 +61,7 @@ class DiskRipper : public RDDialog
|
||||
void normalizeCheckData(bool);
|
||||
void autotrimCheckData(bool);
|
||||
void selectionChangedData();
|
||||
void openBrowserData();
|
||||
void doubleClickedData(Q3ListViewItem *item,const QPoint &pt,int col);
|
||||
void closeData();
|
||||
|
||||
@ -88,6 +89,7 @@ class DiskRipper : public RDDialog
|
||||
QTextEdit *rip_other_edit;
|
||||
QCheckBox *rip_apply_box;
|
||||
QLabel *rip_apply_label;
|
||||
QPushButton *rip_browser_button;
|
||||
RDTransportButton *rip_eject_button;
|
||||
RDTransportButton *rip_play_button;
|
||||
RDTransportButton *rip_stop_button;
|
||||
@ -125,7 +127,6 @@ class DiskRipper : public RDDialog
|
||||
std::vector<RDWaveData *> rip_wave_datas;
|
||||
bool rip_aborting;
|
||||
bool rip_profile_rip;
|
||||
// bool rip_isrc_read;
|
||||
RDWaveDataDialog *rip_wavedata_dialog;
|
||||
};
|
||||
|
||||
|
@ -40,6 +40,15 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
|
||||
|
||||
// NEW SCHEMA REVERSIONS GO HERE...
|
||||
|
||||
//
|
||||
// Revert 314
|
||||
//
|
||||
if((cur_schema==314)&&(set_schema<cur_schema)) {
|
||||
DropColumn("STATIONS","BROWSER_PATH");
|
||||
|
||||
WriteSchemaVersion(--cur_schema);
|
||||
}
|
||||
|
||||
//
|
||||
// Revert 313
|
||||
//
|
||||
|
@ -159,7 +159,7 @@ void MainObject::InitializeSchemaMap() {
|
||||
global_version_map["3.0"]=308;
|
||||
global_version_map["3.1"]=310;
|
||||
global_version_map["3.2"]=311;
|
||||
global_version_map["3.3"]=313;
|
||||
global_version_map["3.3"]=314;
|
||||
}
|
||||
|
||||
|
||||
|
@ -9893,6 +9893,16 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
|
||||
WriteSchemaVersion(++cur_schema);
|
||||
}
|
||||
|
||||
if((cur_schema<314)&&(set_schema>cur_schema)) {
|
||||
sql=QString("alter table STATIONS add column ")+
|
||||
"BROWSER_PATH varchar(191) default 'firefox' after REPORT_EDITOR_PATH";
|
||||
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
WriteSchemaVersion(++cur_schema);
|
||||
}
|
||||
|
||||
|
||||
// NEW SCHEMA UPDATES GO HERE...
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user