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:
Fred Gleason 2020-02-01 17:17:47 -05:00
parent 32a3e34c6e
commit 8dfd341cdf
32 changed files with 352 additions and 80 deletions

View File

@ -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).

View File

@ -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)

View File

@ -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\

View 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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -24,7 +24,7 @@
/*
* Current Database Version
*/
#define RD_VERSION_DATABASE 313
#define RD_VERSION_DATABASE 314
#endif // DBVERSION_H

View File

@ -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;
}

View File

@ -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();

View File

@ -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");
}

View File

@ -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();

View File

@ -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

View File

@ -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();

View File

@ -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,

View File

@ -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;

View File

@ -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;
}

View File

@ -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

View File

@ -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->

View File

@ -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;

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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;
};

View File

@ -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
//

View File

@ -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;
}

View File

@ -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...