mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-06-08 16:12:33 +02:00
commit
48bbe8ee67
12
ChangeLog
12
ChangeLog
@ -17643,6 +17643,7 @@
|
|||||||
* Corrected an omission in the documentation of the
|
* Corrected an omission in the documentation of the
|
||||||
'Start Button' ['PB'] RML.
|
'Start Button' ['PB'] RML.
|
||||||
<<<<<<< HEAD
|
<<<<<<< HEAD
|
||||||
|
<<<<<<< HEAD
|
||||||
2018-10-01 Fred Gleason <fredg@paravelsystems.com>
|
2018-10-01 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Applied a PR from Patrick Linstruth <patrick@deltecent.com> that
|
* Applied a PR from Patrick Linstruth <patrick@deltecent.com> that
|
||||||
fixed a regression where the 'Stop' button would fail to function
|
fixed a regression where the 'Stop' button would fail to function
|
||||||
@ -17811,3 +17812,14 @@
|
|||||||
* Disabled the 'More than half the audio will be faded...' warning
|
* Disabled the 'More than half the audio will be faded...' warning
|
||||||
in the 'Edit Audio' dialog in rdlibrary(1) if the 'No Fade on
|
in the 'Edit Audio' dialog in rdlibrary(1) if the 'No Fade on
|
||||||
Segue Out' checkbox is ticked.
|
Segue Out' checkbox is ticked.
|
||||||
|
2018-10-17 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Fixed a bug in rivwebcapi's 'RD_ListCartCuts()' and
|
||||||
|
'RD_ListCartsCuts()' functions that threw a segfault if the WebAPI
|
||||||
|
returned an error response.
|
||||||
|
2018-10-17 Patrick Linstruth <patrick@deltecent.com>
|
||||||
|
* Modified rddbconfig(8) to query the user before modifying the
|
||||||
|
DB to the current schema after a DB restore.
|
||||||
|
2018-10-17 Patrick Linstruth <patrick@deltecent.com>
|
||||||
|
* Added talk (intro) column to cart list view in rdlibrary(1)
|
||||||
|
* Added ability to expand cart to view individual cuts in rdlibrary(1)
|
||||||
|
* Added play/stop buttons to cart list in rdlibrary(1)
|
||||||
|
@ -357,6 +357,7 @@ int RD_ListCartCuts(struct rd_cart *carts[],
|
|||||||
* Setup the CURL call
|
* Setup the CURL call
|
||||||
*/
|
*/
|
||||||
memset(&xml_data,0,sizeof(xml_data));
|
memset(&xml_data,0,sizeof(xml_data));
|
||||||
|
xml_data.cut_ptr=-1;
|
||||||
parser=XML_ParserCreate(NULL);
|
parser=XML_ParserCreate(NULL);
|
||||||
XML_SetUserData(parser,&xml_data);
|
XML_SetUserData(parser,&xml_data);
|
||||||
XML_SetElementHandler(parser,__ListCartCutsElementStart,
|
XML_SetElementHandler(parser,__ListCartCutsElementStart,
|
||||||
|
@ -362,6 +362,7 @@ int RD_ListCartsCuts(struct rd_cart *carts[],
|
|||||||
*/
|
*/
|
||||||
memset(&xml_data,0,sizeof(xml_data));
|
memset(&xml_data,0,sizeof(xml_data));
|
||||||
xml_data.cart_ptr=-1;
|
xml_data.cart_ptr=-1;
|
||||||
|
xml_data.cut_ptr=-1;
|
||||||
parser=XML_ParserCreate(NULL);
|
parser=XML_ParserCreate(NULL);
|
||||||
XML_SetUserData(parser,&xml_data);
|
XML_SetUserData(parser,&xml_data);
|
||||||
XML_SetElementHandler(parser,__ListCartsCutsElementStart,
|
XML_SetElementHandler(parser,__ListCartsCutsElementStart,
|
||||||
|
@ -39,6 +39,20 @@ RDListViewItem::RDListViewItem(Q3ListView *parent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RDListViewItem::RDListViewItem(RDListViewItem *parent)
|
||||||
|
: Q3ListViewItem((Q3ListViewItem *)parent)
|
||||||
|
{
|
||||||
|
item_line=-1;
|
||||||
|
item_id=-1;
|
||||||
|
list_parent=(RDListView *)listView();
|
||||||
|
item_background_color=
|
||||||
|
list_parent->palette().color(QPalette::Active,QColorGroup::Base);
|
||||||
|
for(int i=0;i<list_parent->columns();i++) {
|
||||||
|
item_text_color.
|
||||||
|
push_back(list_parent->palette().color(QPalette::Active,QColorGroup::Text));
|
||||||
|
item_text_weight.push_back(list_parent->font().weight());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int RDListViewItem::line() const
|
int RDListViewItem::line() const
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,7 @@ class RDListViewItem : public Q3ListViewItem
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RDListViewItem(Q3ListView *parent);
|
RDListViewItem(Q3ListView *parent);
|
||||||
|
RDListViewItem(RDListViewItem *parent);
|
||||||
int line() const;
|
int line() const;
|
||||||
void setLine(int line);
|
void setLine(int line);
|
||||||
int id() const;
|
int id() const;
|
||||||
|
@ -36,6 +36,7 @@ RDSimplePlayer::RDSimplePlayer(RDCae *cae,RDRipc *ripc,int card,int port,
|
|||||||
play_end_cart=end_cart;
|
play_end_cart=end_cart;
|
||||||
play_stream=-1;
|
play_stream=-1;
|
||||||
play_cart=0;
|
play_cart=0;
|
||||||
|
play_cut="";
|
||||||
play_is_playing=false;
|
play_is_playing=false;
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -74,12 +75,37 @@ RDSimplePlayer::~RDSimplePlayer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool RDSimplePlayer::isPlaying()
|
||||||
|
{
|
||||||
|
return play_is_playing;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void RDSimplePlayer::setCart(unsigned cart)
|
void RDSimplePlayer::setCart(unsigned cart)
|
||||||
{
|
{
|
||||||
play_cart=cart;
|
play_cart=cart;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDSimplePlayer::setCart(QString cart)
|
||||||
|
{
|
||||||
|
QStringList cartcut=cart.split("_");
|
||||||
|
play_cart=cartcut[0].toUInt();
|
||||||
|
if(cartcut.size()>1) {
|
||||||
|
setCut(cart);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
play_cut="";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDSimplePlayer::setCut(QString cut)
|
||||||
|
{
|
||||||
|
play_cut=cut;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
RDTransportButton *RDSimplePlayer::playButton() const
|
RDTransportButton *RDSimplePlayer::playButton() const
|
||||||
{
|
{
|
||||||
return play_start_button;
|
return play_start_button;
|
||||||
@ -112,14 +138,14 @@ void RDSimplePlayer::play(int start_pos)
|
|||||||
stop();
|
stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString cut = "";
|
if(play_cut.isEmpty()) {
|
||||||
RDCart *cart=new RDCart(play_cart);
|
RDCart *cart=new RDCart(play_cart);
|
||||||
if(cart->selectCut(&cut)) {
|
cart->selectCut(&play_cut);
|
||||||
if(cut.isEmpty()) {
|
delete cart;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
if(!play_cut.isEmpty()) {
|
||||||
play_cae->
|
play_cae->
|
||||||
loadPlay(play_card,cut,&play_stream,&handle);
|
loadPlay(play_card,play_cut,&play_stream,&handle);
|
||||||
|
|
||||||
if(play_stream<0) {
|
if(play_stream<0) {
|
||||||
return;
|
return;
|
||||||
@ -130,7 +156,7 @@ void RDSimplePlayer::play(int start_pos)
|
|||||||
"END_POINT,"+ // 01
|
"END_POINT,"+ // 01
|
||||||
"PLAY_GAIN "+ // 02
|
"PLAY_GAIN "+ // 02
|
||||||
"from CUTS where "+
|
"from CUTS where "+
|
||||||
"CUT_NAME=\""+RDEscapeString(cut)+"\"";
|
"CUT_NAME=\""+RDEscapeString(play_cut)+"\"";
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
if(q->first()) {
|
if(q->first()) {
|
||||||
play_cut_gain=q->value(2).toInt();
|
play_cut_gain=q->value(2).toInt();
|
||||||
@ -147,7 +173,6 @@ void RDSimplePlayer::play(int start_pos)
|
|||||||
}
|
}
|
||||||
delete q;
|
delete q;
|
||||||
}
|
}
|
||||||
delete cart;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,6 +38,9 @@ class RDSimplePlayer : public QWidget
|
|||||||
unsigned start_cart,unsigned end_cart,QWidget *parent=0);
|
unsigned start_cart,unsigned end_cart,QWidget *parent=0);
|
||||||
~RDSimplePlayer();
|
~RDSimplePlayer();
|
||||||
void setCart(unsigned cart);
|
void setCart(unsigned cart);
|
||||||
|
void setCart(QString cart);
|
||||||
|
void setCut(QString cart);
|
||||||
|
bool isPlaying();
|
||||||
RDTransportButton *playButton() const;
|
RDTransportButton *playButton() const;
|
||||||
RDTransportButton *stopButton() const;
|
RDTransportButton *stopButton() const;
|
||||||
|
|
||||||
@ -62,6 +65,7 @@ class RDSimplePlayer : public QWidget
|
|||||||
int play_port;
|
int play_port;
|
||||||
std::queue<int> play_handles;
|
std::queue<int> play_handles;
|
||||||
unsigned play_cart;
|
unsigned play_cart;
|
||||||
|
QString play_cut;
|
||||||
unsigned play_start_cart;
|
unsigned play_start_cart;
|
||||||
unsigned play_end_cart;
|
unsigned play_end_cart;
|
||||||
bool play_is_playing;
|
bool play_is_playing;
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#include <rdaudioexport.h>
|
#include <rdaudioexport.h>
|
||||||
#include <rdupload.h>
|
#include <rdupload.h>
|
||||||
|
|
||||||
|
#include "rdlibrary.h"
|
||||||
#include "cdripper.h"
|
#include "cdripper.h"
|
||||||
#include "edit_cart.h"
|
#include "edit_cart.h"
|
||||||
#include "edit_notes.h"
|
#include "edit_notes.h"
|
||||||
@ -937,9 +938,9 @@ void EditCart::okData()
|
|||||||
while(it->current()) {
|
while(it->current()) {
|
||||||
if(it->current()->isSelected()) {
|
if(it->current()->isSelected()) {
|
||||||
RDListViewItem *item=(RDListViewItem *)it->current();
|
RDListViewItem *item=(RDListViewItem *)it->current();
|
||||||
if(item->text(21).isEmpty()) {
|
if(item->text(MainWidget::OwnedBy).isEmpty()) {
|
||||||
|
|
||||||
rdcart_cart_medit=new RDCart(item->text(1).toUInt());
|
rdcart_cart_medit=new RDCart(item->text(MainWidget::Cart).toUInt());
|
||||||
|
|
||||||
if(!rdcart_group_box->currentText().stripWhiteSpace().isEmpty()) {
|
if(!rdcart_group_box->currentText().stripWhiteSpace().isEmpty()) {
|
||||||
rdcart_cart_medit->setGroupName(rdcart_group_box->currentText());
|
rdcart_cart_medit->setGroupName(rdcart_group_box->currentText());
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include <rdcartdrag.h>
|
#include <rdcartdrag.h>
|
||||||
|
#include <rdlibrary.h>
|
||||||
#include <rdlistviewitem.h>
|
#include <rdlistviewitem.h>
|
||||||
|
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
@ -50,10 +50,10 @@ void LibListView::contentsMouseMoveEvent(QMouseEvent *e)
|
|||||||
if(item==NULL) {
|
if(item==NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(item->text(21).isEmpty()) { // Voice tracks cannot be dragged
|
if(item->text(MainWidget::OwnedBy).isEmpty()&&!item->parent()) { // Voice tracks and cuts cannot be dragged
|
||||||
RDCartDrag *d=
|
RDCartDrag *d=
|
||||||
new RDCartDrag(item->text(1).toUInt(),item->text(4),item->textColor(2),
|
new RDCartDrag(item->text(MainWidget::Cart).left(6).toUInt(),item->text(MainWidget::Title),
|
||||||
this);
|
item->textColor(MainWidget::Group), this);
|
||||||
d->dragCopy();
|
d->dragCopy();
|
||||||
emit clicked(item);
|
emit clicked(item);
|
||||||
}
|
}
|
||||||
|
@ -321,80 +321,85 @@ MainWidget::MainWidget(QWidget *parent)
|
|||||||
lib_cart_list->setAllColumnsShowFocus(true);
|
lib_cart_list->setAllColumnsShowFocus(true);
|
||||||
lib_cart_list->setItemMargin(5);
|
lib_cart_list->setItemMargin(5);
|
||||||
lib_cart_list->setSelectionMode(Q3ListView::Extended);
|
lib_cart_list->setSelectionMode(Q3ListView::Extended);
|
||||||
|
lib_cart_list->setRootIsDecorated(true);
|
||||||
// lib_cart_tip=new CartTip(lib_cart_list->viewport());
|
// lib_cart_tip=new CartTip(lib_cart_list->viewport());
|
||||||
connect(lib_cart_list,
|
connect(lib_cart_list,
|
||||||
SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)),
|
SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)),
|
||||||
this,
|
this,
|
||||||
SLOT(cartDoubleclickedData(Q3ListViewItem *,const QPoint &,int)));
|
SLOT(cartDoubleclickedData(Q3ListViewItem *,const QPoint &,int)));
|
||||||
connect(lib_cart_list,SIGNAL(pressed(Q3ListViewItem *)),
|
connect(lib_cart_list,SIGNAL(selectionChanged()),
|
||||||
this,SLOT(cartClickedData(Q3ListViewItem *)));
|
this,SLOT(cartClickedData()));
|
||||||
connect(lib_cart_list,SIGNAL(onItem(Q3ListViewItem *)),
|
connect(lib_cart_list,SIGNAL(onItem(Q3ListViewItem *)),
|
||||||
this,SLOT(cartOnItemData(Q3ListViewItem *)));
|
this,SLOT(cartOnItemData(Q3ListViewItem *)));
|
||||||
lib_cart_list->addColumn("");
|
lib_cart_list->addColumn("");
|
||||||
lib_cart_list->setColumnAlignment(0,Qt::AlignHCenter);
|
lib_cart_list->setColumnAlignment(Icon,Qt::AlignHCenter);
|
||||||
lib_cart_list->addColumn(tr("Cart"));
|
lib_cart_list->addColumn(tr("Cart"));
|
||||||
lib_cart_list->setColumnAlignment(1,Qt::AlignHCenter);
|
lib_cart_list->setColumnAlignment(Cart,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Group"));
|
lib_cart_list->addColumn(tr("Group"));
|
||||||
lib_cart_list->setColumnAlignment(2,Qt::AlignHCenter);
|
lib_cart_list->setColumnAlignment(Group,Qt::AlignHCenter);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Length"));
|
lib_cart_list->addColumn(tr("Length"));
|
||||||
lib_cart_list->setColumnAlignment(3,Qt::AlignRight);
|
lib_cart_list->setColumnAlignment(Length,Qt::AlignRight);
|
||||||
lib_cart_list->setColumnSortType(3,RDListView::TimeSort);
|
lib_cart_list->setColumnSortType(Length,RDListView::TimeSort);
|
||||||
|
|
||||||
|
lib_cart_list->addColumn(tr("Talk"));
|
||||||
|
lib_cart_list->setColumnAlignment(Talk,Qt::AlignRight);
|
||||||
|
lib_cart_list->setColumnSortType(Length,RDListView::TimeSort);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Title"));
|
lib_cart_list->addColumn(tr("Title"));
|
||||||
lib_cart_list->setColumnAlignment(4,Qt::AlignLeft);
|
lib_cart_list->setColumnAlignment(Title,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Artist"));
|
lib_cart_list->addColumn(tr("Artist"));
|
||||||
lib_cart_list->setColumnAlignment(5,Qt::AlignLeft);
|
lib_cart_list->setColumnAlignment(Artist,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Start"));
|
lib_cart_list->addColumn(tr("Start"));
|
||||||
lib_cart_list->setColumnAlignment(6,Qt::AlignHCenter);
|
lib_cart_list->setColumnAlignment(Start,Qt::AlignHCenter);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("End"));
|
lib_cart_list->addColumn(tr("End"));
|
||||||
lib_cart_list->setColumnAlignment(7,Qt::AlignHCenter);
|
lib_cart_list->setColumnAlignment(End,Qt::AlignHCenter);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Album"));
|
lib_cart_list->addColumn(tr("Album"));
|
||||||
lib_cart_list->setColumnAlignment(8,Qt::AlignLeft);
|
lib_cart_list->setColumnAlignment(Album,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Label"));
|
lib_cart_list->addColumn(tr("Label"));
|
||||||
lib_cart_list->setColumnAlignment(9,Qt::AlignLeft);
|
lib_cart_list->setColumnAlignment(Label,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Composer"));
|
lib_cart_list->addColumn(tr("Composer"));
|
||||||
lib_cart_list->setColumnAlignment(10,Qt::AlignLeft);
|
lib_cart_list->setColumnAlignment(Composer,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Conductor"));
|
lib_cart_list->addColumn(tr("Conductor"));
|
||||||
lib_cart_list->setColumnAlignment(11,Qt::AlignLeft);
|
lib_cart_list->setColumnAlignment(Conductor,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Publisher"));
|
lib_cart_list->addColumn(tr("Publisher"));
|
||||||
lib_cart_list->setColumnAlignment(12,Qt::AlignLeft);
|
lib_cart_list->setColumnAlignment(Publisher,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Client"));
|
lib_cart_list->addColumn(tr("Client"));
|
||||||
lib_cart_list->setColumnAlignment(13,Qt::AlignLeft);
|
lib_cart_list->setColumnAlignment(Client,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Agency"));
|
lib_cart_list->addColumn(tr("Agency"));
|
||||||
lib_cart_list->setColumnAlignment(14,Qt::AlignLeft);
|
lib_cart_list->setColumnAlignment(Agency,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("User Defined"));
|
lib_cart_list->addColumn(tr("User Defined"));
|
||||||
lib_cart_list->setColumnAlignment(15,Qt::AlignLeft);
|
lib_cart_list->setColumnAlignment(UserDefined,Qt::AlignLeft);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Cuts"));
|
lib_cart_list->addColumn(tr("Cuts"));
|
||||||
lib_cart_list->setColumnAlignment(16,Qt::AlignRight);
|
lib_cart_list->setColumnAlignment(Cuts,Qt::AlignRight);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Last Cut Played"));
|
lib_cart_list->addColumn(tr("Last Cut Played"));
|
||||||
lib_cart_list->setColumnAlignment(17,Qt::AlignHCenter);
|
lib_cart_list->setColumnAlignment(LastCutPlayed,Qt::AlignHCenter);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Enforce Length"));
|
lib_cart_list->addColumn(tr("Enforce Length"));
|
||||||
lib_cart_list->setColumnAlignment(18,Qt::AlignHCenter);
|
lib_cart_list->setColumnAlignment(EnforceLength,Qt::AlignHCenter);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Preserve Pitch"));
|
lib_cart_list->addColumn(tr("Preserve Pitch"));
|
||||||
lib_cart_list->setColumnAlignment(19,Qt::AlignHCenter);
|
lib_cart_list->setColumnAlignment(PreservePitch,Qt::AlignHCenter);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Length Deviation"));
|
lib_cart_list->addColumn(tr("Length Deviation"));
|
||||||
lib_cart_list->setColumnAlignment(20,Qt::AlignHCenter);
|
lib_cart_list->setColumnAlignment(LengthDeviation,Qt::AlignHCenter);
|
||||||
|
|
||||||
lib_cart_list->addColumn(tr("Owned By"));
|
lib_cart_list->addColumn(tr("Owned By"));
|
||||||
lib_cart_list->setColumnAlignment(21,Qt::AlignHCenter);
|
lib_cart_list->setColumnAlignment(OwnedBy,Qt::AlignHCenter);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Add Button
|
// Add Button
|
||||||
@ -410,6 +415,7 @@ MainWidget::MainWidget(QWidget *parent)
|
|||||||
lib_edit_button=new QPushButton(this);
|
lib_edit_button=new QPushButton(this);
|
||||||
lib_edit_button->setFont(button_font);
|
lib_edit_button->setFont(button_font);
|
||||||
lib_edit_button->setText(tr("&Edit"));
|
lib_edit_button->setText(tr("&Edit"));
|
||||||
|
lib_edit_button->setEnabled(false);
|
||||||
connect(lib_edit_button,SIGNAL(clicked()),this,SLOT(editData()));
|
connect(lib_edit_button,SIGNAL(clicked()),this,SLOT(editData()));
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -418,6 +424,7 @@ MainWidget::MainWidget(QWidget *parent)
|
|||||||
lib_delete_button=new QPushButton(this);
|
lib_delete_button=new QPushButton(this);
|
||||||
lib_delete_button->setFont(button_font);
|
lib_delete_button->setFont(button_font);
|
||||||
lib_delete_button->setText(tr("&Delete"));
|
lib_delete_button->setText(tr("&Delete"));
|
||||||
|
lib_delete_button->setEnabled(false);
|
||||||
connect(lib_delete_button,SIGNAL(clicked()),this,SLOT(deleteData()));
|
connect(lib_delete_button,SIGNAL(clicked()),this,SLOT(deleteData()));
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -450,6 +457,25 @@ MainWidget::MainWidget(QWidget *parent)
|
|||||||
lib_close_button->setText(tr("&Close"));
|
lib_close_button->setText(tr("&Close"));
|
||||||
connect(lib_close_button,SIGNAL(clicked()),this,SLOT(quitMainWidget()));
|
connect(lib_close_button,SIGNAL(clicked()),this,SLOT(quitMainWidget()));
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Load Output Assignment
|
||||||
|
//
|
||||||
|
lib_output_card=rda->libraryConf()->outputCard();
|
||||||
|
lib_output_port=rda->libraryConf()->outputPort();
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Cart Player
|
||||||
|
//
|
||||||
|
lib_player=
|
||||||
|
new RDSimplePlayer(rda->cae(),rda->ripc(),lib_output_card,lib_output_port,
|
||||||
|
0,0,this);
|
||||||
|
lib_player->playButton()->setEnabled(false);
|
||||||
|
lib_player->stopButton()->setEnabled(false);
|
||||||
|
lib_player->stopButton()->setOnColor(Qt::red);
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Setup Signal Handling
|
// Setup Signal Handling
|
||||||
//
|
//
|
||||||
@ -531,8 +557,6 @@ void MainWidget::userData()
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lib_add_button->setEnabled(rda->user()->createCarts());
|
lib_add_button->setEnabled(rda->user()->createCarts());
|
||||||
lib_edit_button->setEnabled(true);
|
|
||||||
lib_delete_button->setEnabled(rda->user()->deleteCarts());
|
|
||||||
lib_rip_button->setEnabled(rda->user()->editAudio());
|
lib_rip_button->setEnabled(rda->user()->editAudio());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -596,6 +620,7 @@ void MainWidget::addData()
|
|||||||
RDCart::Type cart_type=RDCart::All;
|
RDCart::Type cart_type=RDCart::All;
|
||||||
QString cart_title;
|
QString cart_title;
|
||||||
|
|
||||||
|
lib_player->stop();
|
||||||
LockUser();
|
LockUser();
|
||||||
|
|
||||||
RDAddCart *add_cart=new RDAddCart(&lib_default_group,&cart_type,&cart_title,
|
RDAddCart *add_cart=new RDAddCart(&lib_default_group,&cart_type,&cart_title,
|
||||||
@ -622,7 +647,7 @@ void MainWidget::addData()
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
RDListViewItem *item=new RDListViewItem(lib_cart_list);
|
RDListViewItem *item=new RDListViewItem(lib_cart_list);
|
||||||
item->setText(1,QString().sprintf("%06u",cart_num));
|
item->setText(Cart,QString().sprintf("%06u",cart_num));
|
||||||
RefreshLine(item);
|
RefreshLine(item);
|
||||||
SendNotification(RDNotification::AddAction,cart_num);
|
SendNotification(RDNotification::AddAction,cart_num);
|
||||||
Q3ListViewItemIterator it(lib_cart_list);
|
Q3ListViewItemIterator it(lib_cart_list);
|
||||||
@ -645,11 +670,12 @@ void MainWidget::editData()
|
|||||||
int sel_count=0;
|
int sel_count=0;
|
||||||
Q3ListViewItemIterator *it;
|
Q3ListViewItemIterator *it;
|
||||||
|
|
||||||
|
lib_player->stop();
|
||||||
LockUser();
|
LockUser();
|
||||||
|
|
||||||
it=new Q3ListViewItemIterator(lib_cart_list);
|
it=new Q3ListViewItemIterator(lib_cart_list);
|
||||||
while(it->current()) {
|
while(it->current()) {
|
||||||
if (it->current()->isSelected()) {
|
if (it->current()->isSelected() && !it->current()->parent()) {
|
||||||
sel_count++;
|
sel_count++;
|
||||||
}
|
}
|
||||||
++(*it);
|
++(*it);
|
||||||
@ -662,17 +688,17 @@ void MainWidget::editData()
|
|||||||
}
|
}
|
||||||
if(sel_count==1) { //single edit
|
if(sel_count==1) { //single edit
|
||||||
it=new Q3ListViewItemIterator(lib_cart_list);
|
it=new Q3ListViewItemIterator(lib_cart_list);
|
||||||
while(!it->current()->isSelected()) {
|
while(!it->current()->isSelected() || it->current()->parent()) {
|
||||||
++(*it);
|
++(*it);
|
||||||
}
|
}
|
||||||
RDListViewItem *item=(RDListViewItem *)it->current();
|
RDListViewItem *item=(RDListViewItem *)it->current();
|
||||||
|
|
||||||
EditCart *edit_cart=new EditCart(item->text(1).toUInt(),&lib_import_path,
|
EditCart *edit_cart=new EditCart(item->text(Cart).toUInt(),&lib_import_path,
|
||||||
false,profile_ripping,this);
|
false,profile_ripping,this);
|
||||||
edit_cart->exec();
|
edit_cart->exec();
|
||||||
RefreshLine(item);
|
RefreshLine(item);
|
||||||
cartOnItemData(item);
|
cartOnItemData(item);
|
||||||
SendNotification(RDNotification::ModifyAction,item->text(1).toUInt());
|
SendNotification(RDNotification::ModifyAction,item->text(Cart).toUInt());
|
||||||
delete edit_cart;
|
delete edit_cart;
|
||||||
delete it;
|
delete it;
|
||||||
}
|
}
|
||||||
@ -687,7 +713,7 @@ void MainWidget::editData()
|
|||||||
|
|
||||||
it=new Q3ListViewItemIterator(lib_cart_list);
|
it=new Q3ListViewItemIterator(lib_cart_list);
|
||||||
while(it->current()) {
|
while(it->current()) {
|
||||||
if (it->current()->isSelected()) {
|
if (it->current()->isSelected() && !it->current()->parent()) {
|
||||||
RefreshLine((RDListViewItem *)it->current());
|
RefreshLine((RDListViewItem *)it->current());
|
||||||
SendNotification(RDNotification::ModifyAction,
|
SendNotification(RDNotification::ModifyAction,
|
||||||
it->current()->text(1).toUInt());
|
it->current()->text(1).toUInt());
|
||||||
@ -711,11 +737,12 @@ void MainWidget::deleteData()
|
|||||||
Q3ListViewItemIterator *it;
|
Q3ListViewItemIterator *it;
|
||||||
bool del_flag;
|
bool del_flag;
|
||||||
|
|
||||||
|
lib_player->stop();
|
||||||
LockUser();
|
LockUser();
|
||||||
|
|
||||||
it=new Q3ListViewItemIterator(lib_cart_list);
|
it=new Q3ListViewItemIterator(lib_cart_list);
|
||||||
while(it->current()) {
|
while(it->current()) {
|
||||||
if (it->current()->isSelected()) {
|
if (it->current()->isSelected() && !it->current()->parent()) {
|
||||||
sel_count++;
|
sel_count++;
|
||||||
}
|
}
|
||||||
++(*it);
|
++(*it);
|
||||||
@ -735,16 +762,16 @@ void MainWidget::deleteData()
|
|||||||
}
|
}
|
||||||
it=new Q3ListViewItemIterator(lib_cart_list);
|
it=new Q3ListViewItemIterator(lib_cart_list);
|
||||||
while(it->current()) {
|
while(it->current()) {
|
||||||
if (it->current()->isSelected()) {
|
if (it->current()->isSelected() && !it->current()->parent()) {
|
||||||
del_flag=true;
|
del_flag=true;
|
||||||
RDListViewItem *item=(RDListViewItem *)it->current();
|
RDListViewItem *item=(RDListViewItem *)it->current();
|
||||||
sql=QString().sprintf("select CUT_NAME from RECORDINGS where \
|
sql=QString().sprintf("select CUT_NAME from RECORDINGS where \
|
||||||
(CUT_NAME like \"%06u_%%\")||(MACRO_CART=%u)",
|
(CUT_NAME like \"%06u_%%\")||(MACRO_CART=%u)",
|
||||||
item->text(1).toUInt(),item->text(1).toUInt());
|
item->text(Cart).toUInt(),item->text(Cart).toUInt());
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
if(q->first()) {
|
if(q->first()) {
|
||||||
QString str=QString().sprintf(tr("Cart %06u is used in one or more RDCatch events!\n\
|
QString str=QString().sprintf(tr("Cart %06u is used in one or more RDCatch events!\n\
|
||||||
Do you still want to delete it?"),item->text(1).toUInt());
|
Do you still want to delete it?"),item->text(Cart).toUInt());
|
||||||
if(QMessageBox::warning(this,tr("RDCatch Event Exists"),str,
|
if(QMessageBox::warning(this,tr("RDCatch Event Exists"),str,
|
||||||
QMessageBox::Yes,QMessageBox::No)==QMessageBox::No) {
|
QMessageBox::Yes,QMessageBox::No)==QMessageBox::No) {
|
||||||
del_flag=false;
|
del_flag=false;
|
||||||
@ -752,9 +779,9 @@ Do you still want to delete it?"),item->text(1).toUInt());
|
|||||||
}
|
}
|
||||||
delete q;
|
delete q;
|
||||||
if(cut_clipboard!=NULL) {
|
if(cut_clipboard!=NULL) {
|
||||||
if(item->text(1).toUInt()==cut_clipboard->cartNumber()) {
|
if(item->text(Cart).toUInt()==cut_clipboard->cartNumber()) {
|
||||||
QString str=QString().sprintf(tr("Deleting cart %06u will also empty the clipboard.\n\
|
QString str=QString().sprintf(tr("Deleting cart %06u will also empty the clipboard.\n\
|
||||||
Do you still want to proceed?"),item->text(1).toUInt());
|
Do you still want to proceed?"),item->text(Cart).toUInt());
|
||||||
switch(QMessageBox::question(this,tr("Empty Clipboard"),str,
|
switch(QMessageBox::question(this,tr("Empty Clipboard"),str,
|
||||||
QMessageBox::Yes,
|
QMessageBox::Yes,
|
||||||
QMessageBox::No)) {
|
QMessageBox::No)) {
|
||||||
@ -769,8 +796,8 @@ Do you still want to delete it?"),item->text(1).toUInt());
|
|||||||
cut_clipboard=NULL;
|
cut_clipboard=NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(del_flag && item->text(21).isEmpty()) {
|
if(del_flag && item->text(OwnedBy).isEmpty()) {
|
||||||
RDCart *rdcart=new RDCart(item->text(1).toUInt());
|
RDCart *rdcart=new RDCart(item->text(Cart).toUInt());
|
||||||
if(!rdcart->remove(rda->station(),rda->user(),rda->config())) {
|
if(!rdcart->remove(rda->station(),rda->user(),rda->config())) {
|
||||||
QMessageBox::warning(this,tr("RDLibrary"),tr("Unable to delete audio!"));
|
QMessageBox::warning(this,tr("RDLibrary"),tr("Unable to delete audio!"));
|
||||||
return;
|
return;
|
||||||
@ -795,6 +822,7 @@ Do you still want to delete it?"),item->text(1).toUInt());
|
|||||||
|
|
||||||
void MainWidget::ripData()
|
void MainWidget::ripData()
|
||||||
{
|
{
|
||||||
|
lib_player->stop();
|
||||||
LockUser();
|
LockUser();
|
||||||
QString group=lib_group_box->currentText();
|
QString group=lib_group_box->currentText();
|
||||||
QString schedcode=lib_codes_box->currentText();
|
QString schedcode=lib_codes_box->currentText();
|
||||||
@ -818,6 +846,7 @@ void MainWidget::ripData()
|
|||||||
|
|
||||||
void MainWidget::reportsData()
|
void MainWidget::reportsData()
|
||||||
{
|
{
|
||||||
|
lib_player->stop();
|
||||||
LockUser();
|
LockUser();
|
||||||
ListReports *lr=
|
ListReports *lr=
|
||||||
new ListReports(lib_filter_edit->text(),GetTypeFilter(),
|
new ListReports(lib_filter_edit->text(),GetTypeFilter(),
|
||||||
@ -835,21 +864,27 @@ void MainWidget::cartOnItemData(Q3ListViewItem *item)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// lib_cart_tip->
|
// lib_cart_tip->
|
||||||
// setCartNumber(lib_cart_list->itemRect(item),item->text(1).toUInt());
|
// setCartNumber(lib_cart_list->itemRect(item),item->text(Cart).toUInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWidget::cartClickedData(Q3ListViewItem *item)
|
void MainWidget::cartClickedData()
|
||||||
{
|
{
|
||||||
int del_count=0;
|
int del_count=0;
|
||||||
int sel_count=0;
|
int sel_count=0;
|
||||||
|
int play_count=0;
|
||||||
Q3ListViewItemIterator *it;
|
Q3ListViewItemIterator *it;
|
||||||
|
Q3ListViewItem *item;
|
||||||
|
|
||||||
it=new Q3ListViewItemIterator(lib_cart_list);
|
it=new Q3ListViewItemIterator(lib_cart_list);
|
||||||
while(it->current()) {
|
while(it->current()) {
|
||||||
if (it->current()->isSelected()) {
|
if (it->current()->isSelected()) {
|
||||||
|
play_count++;
|
||||||
|
item=it->current();
|
||||||
|
if(!it->current()->parent()) {
|
||||||
sel_count++;
|
sel_count++;
|
||||||
if(it->current()->text(21).isEmpty()) {
|
}
|
||||||
|
if(it->current()->text(OwnedBy).isEmpty() && !it->current()->parent()) {
|
||||||
del_count++;
|
del_count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -863,7 +898,22 @@ void MainWidget::cartClickedData(Q3ListViewItem *item)
|
|||||||
else {
|
else {
|
||||||
lib_delete_button->setEnabled(false);
|
lib_delete_button->setEnabled(false);
|
||||||
}
|
}
|
||||||
if(sel_count>1) {
|
|
||||||
|
if(play_count==1) {
|
||||||
|
lib_player->setCart(item->text(Cart));
|
||||||
|
lib_player->playButton()->setEnabled(true);
|
||||||
|
lib_player->stopButton()->setEnabled(true);
|
||||||
|
if(lib_player->isPlaying()) {
|
||||||
|
lib_player->play();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lib_player->stop();
|
||||||
|
lib_player->playButton()->setEnabled(false);
|
||||||
|
lib_player->stopButton()->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sel_count) {
|
||||||
if(del_count==0) {
|
if(del_count==0) {
|
||||||
lib_edit_button->setEnabled(false);
|
lib_edit_button->setEnabled(false);
|
||||||
}
|
}
|
||||||
@ -872,7 +922,7 @@ void MainWidget::cartClickedData(Q3ListViewItem *item)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lib_edit_button->setEnabled(true);
|
lib_edit_button->setEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -930,7 +980,7 @@ void MainWidget::notificationReceivedData(RDNotification *notify)
|
|||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
if(q->first()) {
|
if(q->first()) {
|
||||||
item=new RDListViewItem(lib_cart_list);
|
item=new RDListViewItem(lib_cart_list);
|
||||||
item->setText(1,QString().sprintf("%06u",cartnum));
|
item->setText(Cart,QString().sprintf("%06u",cartnum));
|
||||||
RefreshLine(item);
|
RefreshLine(item);
|
||||||
}
|
}
|
||||||
delete q;
|
delete q;
|
||||||
@ -938,7 +988,7 @@ void MainWidget::notificationReceivedData(RDNotification *notify)
|
|||||||
|
|
||||||
case RDNotification::ModifyAction:
|
case RDNotification::ModifyAction:
|
||||||
if((item=(RDListViewItem *)lib_cart_list->
|
if((item=(RDListViewItem *)lib_cart_list->
|
||||||
findItem(QString().sprintf("%06u",cartnum),1))!=NULL) {
|
findItem(QString().sprintf("%06u",cartnum),Cart))!=NULL) {
|
||||||
RefreshLine(item);
|
RefreshLine(item);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -948,7 +998,7 @@ void MainWidget::notificationReceivedData(RDNotification *notify)
|
|||||||
lib_deleted_carts.push_back(cartnum);
|
lib_deleted_carts.push_back(cartnum);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if((item=(RDListViewItem *)lib_cart_list->findItem(QString().sprintf("%06u",cartnum),1))!=NULL) {
|
if((item=(RDListViewItem *)lib_cart_list->findItem(QString().sprintf("%06u",cartnum),Cart))!=NULL) {
|
||||||
delete item;
|
delete item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1009,8 +1059,8 @@ void MainWidget::resizeEvent(QResizeEvent *e)
|
|||||||
lib_add_button->setGeometry(10,e->size().height()-60,80,50);
|
lib_add_button->setGeometry(10,e->size().height()-60,80,50);
|
||||||
lib_edit_button->setGeometry(100,e->size().height()-60,80,50);
|
lib_edit_button->setGeometry(100,e->size().height()-60,80,50);
|
||||||
lib_delete_button->setGeometry(190,e->size().height()-60,80,50);
|
lib_delete_button->setGeometry(190,e->size().height()-60,80,50);
|
||||||
disk_gauge->setGeometry(285,e->size().height()-55,
|
disk_gauge->setGeometry(475,e->size().height()-55,
|
||||||
e->size().width()-585,
|
e->size().width()-775,
|
||||||
disk_gauge->sizeHint().height());
|
disk_gauge->sizeHint().height());
|
||||||
lib_rip_button->
|
lib_rip_button->
|
||||||
setGeometry(e->size().width()-290,e->size().height()-60,80,50);
|
setGeometry(e->size().width()-290,e->size().height()-60,80,50);
|
||||||
@ -1018,9 +1068,74 @@ void MainWidget::resizeEvent(QResizeEvent *e)
|
|||||||
setGeometry(e->size().width()-200,e->size().height()-60,80,50);
|
setGeometry(e->size().width()-200,e->size().height()-60,80,50);
|
||||||
lib_close_button->setGeometry(e->size().width()-90,e->size().height()-60,
|
lib_close_button->setGeometry(e->size().width()-90,e->size().height()-60,
|
||||||
80,50);
|
80,50);
|
||||||
|
lib_player->playButton()->setGeometry(290,e->size().height()-60,80,50);
|
||||||
|
lib_player->stopButton()->setGeometry(380,e->size().height()-60,80,50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWidget::RefreshCuts(RDListViewItem *p,unsigned cartnum)
|
||||||
|
{
|
||||||
|
RDListViewItem *l=NULL;
|
||||||
|
Q3ListViewItem *i=NULL;
|
||||||
|
RDSqlQuery *q;
|
||||||
|
QString sql;
|
||||||
|
QDateTime current_datetime(QDate::currentDate(),QTime::currentTime());
|
||||||
|
QDateTime end_datetime;
|
||||||
|
RDCart::Validity validity=RDCart::NeverValid;
|
||||||
|
|
||||||
|
while ((i=p->firstChild())) {
|
||||||
|
delete i;
|
||||||
|
}
|
||||||
|
|
||||||
|
sql=QString("select ")+
|
||||||
|
"CUTS.CART_NUMBER,"+ // 00
|
||||||
|
"CUTS.CUT_NAME,"+ // 01
|
||||||
|
"CUTS.DESCRIPTION,"+ // 02
|
||||||
|
"CUTS.TALK_START_POINT,"+ // 03
|
||||||
|
"CUTS.TALK_END_POINT,"+ // 04
|
||||||
|
"CUTS.LENGTH,"+ // 05 offsets begin here
|
||||||
|
"CUTS.EVERGREEN,"+ // 06
|
||||||
|
"CUTS.START_DATETIME,"+ // 07
|
||||||
|
"CUTS.END_DATETIME,"+ // 08
|
||||||
|
"CUTS.START_DAYPART,"+ // 09
|
||||||
|
"CUTS.END_DAYPART,"+ // 10
|
||||||
|
"CUTS.MON,"+ // 11
|
||||||
|
"CUTS.TUE,"+ // 12
|
||||||
|
"CUTS.WED,"+ // 13
|
||||||
|
"CUTS.THU,"+ // 14
|
||||||
|
"CUTS.FRI,"+ // 15
|
||||||
|
"CUTS.SAT,"+ // 16
|
||||||
|
"CUTS.SUN "+ // 17
|
||||||
|
"from CUTS ";
|
||||||
|
sql+=QString().sprintf("where CUTS.CART_NUMBER=%u ",cartnum);
|
||||||
|
sql+="order by CUTS.CUT_NAME";
|
||||||
|
q=new RDSqlQuery(sql);
|
||||||
|
if (q->size()>1) {
|
||||||
|
while(q->next()) {
|
||||||
|
l=new RDListViewItem(p);
|
||||||
|
l->setDragEnabled(false);
|
||||||
|
l->setText(Cart,q->value(1).toString());
|
||||||
|
l->setText(Length,RDGetTimeLength(q->value(5).toUInt()));
|
||||||
|
l->setText(Talk,RDGetTimeLength(q->value(4).toUInt()-q->value(3).toUInt()));
|
||||||
|
l->setText(Title,q->value(2).toString());
|
||||||
|
if(!q->value(7).toDateTime().isNull()) {
|
||||||
|
l->setText(Start,q->value(7).toDateTime().
|
||||||
|
toString("MM/dd/yyyy hh:mm:ss"));
|
||||||
|
}
|
||||||
|
if(!q->value(8).toDateTime().isNull()) {
|
||||||
|
l->setText(End,q->value(8).toDateTime().
|
||||||
|
toString("MM/dd/yyyy - hh:mm:ss"));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
l->setText(End,"TFN");
|
||||||
|
}
|
||||||
|
validity=ValidateCut(q,5,validity,current_datetime);
|
||||||
|
end_datetime=q->value(8).toDateTime();
|
||||||
|
UpdateItemColor(l,validity,end_datetime,current_datetime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
}
|
||||||
|
|
||||||
void MainWidget::RefreshList()
|
void MainWidget::RefreshList()
|
||||||
{
|
{
|
||||||
@ -1035,6 +1150,9 @@ void MainWidget::RefreshList()
|
|||||||
|
|
||||||
lib_cart_list->clear();
|
lib_cart_list->clear();
|
||||||
|
|
||||||
|
lib_edit_button->setEnabled(false);
|
||||||
|
lib_delete_button->setEnabled(false);
|
||||||
|
|
||||||
type_filter=GetTypeFilter();
|
type_filter=GetTypeFilter();
|
||||||
if(type_filter.isEmpty()) {
|
if(type_filter.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
@ -1064,19 +1182,21 @@ void MainWidget::RefreshList()
|
|||||||
"CART.OWNER,"+ // 21
|
"CART.OWNER,"+ // 21
|
||||||
"CART.VALIDITY,"+ // 22
|
"CART.VALIDITY,"+ // 22
|
||||||
"GROUPS.COLOR,"+ // 23
|
"GROUPS.COLOR,"+ // 23
|
||||||
"CUTS.LENGTH,"+ // 24 offsets begin here
|
"CUTS.TALK_START_POINT,"+ // 24
|
||||||
"CUTS.EVERGREEN,"+ // 25
|
"CUTS.TALK_END_POINT,"+ // 25
|
||||||
"CUTS.START_DATETIME,"+ // 26
|
"CUTS.LENGTH,"+ // 26 offsets begin here
|
||||||
"CUTS.END_DATETIME,"+ // 27
|
"CUTS.EVERGREEN,"+ // 27
|
||||||
"CUTS.START_DAYPART,"+ // 28
|
"CUTS.START_DATETIME,"+ // 28
|
||||||
"CUTS.END_DAYPART,"+ // 29
|
"CUTS.END_DATETIME,"+ // 29
|
||||||
"CUTS.MON,"+ // 30
|
"CUTS.START_DAYPART,"+ // 30
|
||||||
"CUTS.TUE,"+ // 31
|
"CUTS.END_DAYPART,"+ // 31
|
||||||
"CUTS.WED,"+ // 32
|
"CUTS.MON,"+ // 32
|
||||||
"CUTS.THU,"+ // 33
|
"CUTS.TUE,"+ // 33
|
||||||
"CUTS.FRI,"+ // 34
|
"CUTS.WED,"+ // 34
|
||||||
"CUTS.SAT,"+ // 35
|
"CUTS.THU,"+ // 35
|
||||||
"CUTS.SUN "+ // 36
|
"CUTS.FRI,"+ // 36
|
||||||
|
"CUTS.SAT,"+ // 37
|
||||||
|
"CUTS.SUN "+ // 38
|
||||||
"from CART left join GROUPS on CART.GROUP_NAME=GROUPS.NAME "+
|
"from CART left join GROUPS on CART.GROUP_NAME=GROUPS.NAME "+
|
||||||
"left join CUTS on CART.NUMBER=CUTS.CART_NUMBER";
|
"left join CUTS on CART.NUMBER=CUTS.CART_NUMBER";
|
||||||
sql+=WhereClause();
|
sql+=WhereClause();
|
||||||
@ -1096,7 +1216,7 @@ void MainWidget::RefreshList()
|
|||||||
validity=RDCart::AlwaysValid;
|
validity=RDCart::AlwaysValid;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
validity=ValidateCut(q,24,validity,current_datetime);
|
validity=ValidateCut(q,26,validity,current_datetime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -1112,75 +1232,82 @@ void MainWidget::RefreshList()
|
|||||||
validity=RDCart::AlwaysValid;
|
validity=RDCart::AlwaysValid;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
validity=ValidateCut(q,24,RDCart::NeverValid,current_datetime);
|
validity=ValidateCut(q,26,RDCart::NeverValid,current_datetime);
|
||||||
}
|
}
|
||||||
l=new RDListViewItem(lib_cart_list);
|
l=new RDListViewItem(lib_cart_list);
|
||||||
|
l->setExpandable(false);
|
||||||
switch((RDCart::Type)q->value(15).toUInt()) {
|
switch((RDCart::Type)q->value(15).toUInt()) {
|
||||||
case RDCart::Audio:
|
case RDCart::Audio:
|
||||||
if(q->value(21).isNull()) {
|
if(q->value(21).isNull()) {
|
||||||
l->setPixmap(0,*lib_playout_map);
|
l->setPixmap(Icon,*lib_playout_map);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
l->setPixmap(0,*lib_track_cart_map);
|
l->setPixmap(Icon,*lib_track_cart_map);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RDCart::Macro:
|
case RDCart::Macro:
|
||||||
l->setPixmap(0,*lib_macro_map);
|
l->setPixmap(Icon,*lib_macro_map);
|
||||||
l->setBackgroundColor(backgroundColor());
|
l->setBackgroundColor(backgroundColor());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RDCart::All:
|
case RDCart::All:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
l->setText(1,QString().sprintf("%06d",q->value(0).toUInt()));
|
l->setText(Cart,QString().sprintf("%06d",q->value(0).toUInt()));
|
||||||
l->setText(2,q->value(12).toString());
|
l->setText(Group,q->value(12).toString());
|
||||||
l->setTextColor(2,q->value(23).toString(),QFont::Bold);
|
l->setTextColor(Group,q->value(23).toString(),QFont::Bold);
|
||||||
l->setText(3,RDGetTimeLength(q->value(1).toUInt()));
|
if(q->value(16).toUInt()==1) {
|
||||||
l->setText(4,q->value(2).toString());
|
l->setText(Length,RDGetTimeLength(q->value(1).toUInt()));
|
||||||
l->setText(5,q->value(3).toString());
|
l->setText(Talk,RDGetTimeLength(q->value(25).toUInt()-q->value(24).toUInt()));
|
||||||
|
}
|
||||||
|
l->setText(Title,q->value(2).toString());
|
||||||
|
l->setText(Artist,q->value(3).toString());
|
||||||
if(!q->value(13).toDateTime().isNull()) {
|
if(!q->value(13).toDateTime().isNull()) {
|
||||||
l->setText(6,q->value(13).toDateTime().
|
l->setText(Start,q->value(13).toDateTime().
|
||||||
toString("MM/dd/yyyy - hh:mm:ss"));
|
toString("MM/dd/yyyy - hh:mm:ss"));
|
||||||
}
|
}
|
||||||
if(!q->value(14).toDateTime().isNull()) {
|
if(!q->value(14).toDateTime().isNull()) {
|
||||||
l->setText(7,q->value(14).toDateTime().
|
l->setText(End,q->value(14).toDateTime().
|
||||||
toString("MM/dd/yyyy - hh:mm:ss"));
|
toString("MM/dd/yyyy - hh:mm:ss"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
l->setText(7,"TFN");
|
l->setText(End,"TFN");
|
||||||
}
|
}
|
||||||
l->setText(8,q->value(4).toString());
|
l->setText(Album,q->value(4).toString());
|
||||||
l->setText(9,q->value(5).toString());
|
l->setText(Label,q->value(5).toString());
|
||||||
l->setText(10,q->value(9).toString());
|
l->setText(Composer,q->value(9).toString());
|
||||||
l->setText(11,q->value(11).toString());
|
l->setText(Conductor,q->value(11).toString());
|
||||||
l->setText(12,q->value(10).toString());
|
l->setText(Publisher,q->value(10).toString());
|
||||||
l->setText(13,q->value(6).toString());
|
l->setText(Client,q->value(6).toString());
|
||||||
l->setText(14,q->value(7).toString());
|
l->setText(Agency,q->value(7).toString());
|
||||||
l->setText(15,q->value(8).toString());
|
l->setText(UserDefined,q->value(8).toString());
|
||||||
l->setText(16,q->value(16).toString());
|
l->setText(Cuts,q->value(16).toString());
|
||||||
l->setText(17,q->value(17).toString());
|
l->setText(LastCutPlayed,q->value(17).toString());
|
||||||
l->setText(18,q->value(18).toString());
|
l->setText(EnforceLength,q->value(18).toString());
|
||||||
l->setText(19,q->value(19).toString());
|
l->setText(PreservePitch,q->value(19).toString());
|
||||||
l->setText(20,q->value(20).toString());
|
l->setText(LengthDeviation,q->value(20).toString());
|
||||||
l->setText(21,q->value(21).toString());
|
l->setText(OwnedBy,q->value(21).toString());
|
||||||
if(q->value(18).toString()=="Y") {
|
if(q->value(18).toString()=="Y") {
|
||||||
l->setTextColor(3,QColor(RDLIBRARY_ENFORCE_LENGTH_COLOR),QFont::Bold);
|
l->setTextColor(Length,QColor(RDLIBRARY_ENFORCE_LENGTH_COLOR),QFont::Bold);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if((q->value(20).toUInt()>RDLIBRARY_MID_LENGTH_LIMIT)&&
|
if((q->value(20).toUInt()>RDLIBRARY_MID_LENGTH_LIMIT)&&
|
||||||
(q->value(18).toString()=="N")) {
|
(q->value(18).toString()=="N")) {
|
||||||
if(q->value(20).toUInt()>RDLIBRARY_MAX_LENGTH_LIMIT) {
|
if(q->value(20).toUInt()>RDLIBRARY_MAX_LENGTH_LIMIT) {
|
||||||
l->setTextColor(3,QColor(RDLIBRARY_MAX_LENGTH_COLOR),QFont::Bold);
|
l->setTextColor(Length,QColor(RDLIBRARY_MAX_LENGTH_COLOR),QFont::Bold);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
l->setTextColor(3,QColor(RDLIBRARY_MID_LENGTH_COLOR),QFont::Bold);
|
l->setTextColor(Length,QColor(RDLIBRARY_MID_LENGTH_COLOR),QFont::Bold);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
l->setTextColor(3,QColor(Qt::black),QFont::Normal);
|
l->setTextColor(Length,QColor(Qt::black),QFont::Normal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(q->value(16).toUInt() > 1) {
|
||||||
|
RefreshCuts(l,q->value(0).toUInt());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
cartnum=q->value(0).toUInt();
|
cartnum=q->value(0).toUInt();
|
||||||
if(count++>RDLIBRARY_STEP_SIZE) {
|
if(count++>RDLIBRARY_STEP_SIZE) {
|
||||||
@ -1266,6 +1393,8 @@ void MainWidget::RefreshLine(RDListViewItem *item)
|
|||||||
"CART.OWNER,"+ // 20
|
"CART.OWNER,"+ // 20
|
||||||
"CART.VALIDITY,"+ // 21
|
"CART.VALIDITY,"+ // 21
|
||||||
"GROUPS.COLOR,"+ // 22
|
"GROUPS.COLOR,"+ // 22
|
||||||
|
"CUTS.TALK_START_POINT,"+ // 23
|
||||||
|
"CUTS.TALK_END_POINT,"+ // 24
|
||||||
"CUTS.LENGTH,"+ // 23
|
"CUTS.LENGTH,"+ // 23
|
||||||
"CUTS.EVERGREEN,"+ // 24
|
"CUTS.EVERGREEN,"+ // 24
|
||||||
"CUTS.START_DATETIME,"+ // 25
|
"CUTS.START_DATETIME,"+ // 25
|
||||||
@ -1282,24 +1411,24 @@ void MainWidget::RefreshLine(RDListViewItem *item)
|
|||||||
"from CART left join GROUPS "+
|
"from CART left join GROUPS "+
|
||||||
"on CART.GROUP_NAME=GROUPS.NAME left join CUTS on "+
|
"on CART.GROUP_NAME=GROUPS.NAME left join CUTS on "+
|
||||||
"CART.NUMBER=CUTS.CART_NUMBER where "+
|
"CART.NUMBER=CUTS.CART_NUMBER where "+
|
||||||
QString().sprintf("CART.NUMBER=%u",item->text(1).toUInt());
|
QString().sprintf("CART.NUMBER=%u",item->text(Cart).toUInt());
|
||||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||||
while(q->next()) {
|
while(q->next()) {
|
||||||
if((RDCart::Type)q->value(14).toUInt()==RDCart::Macro) {
|
if((RDCart::Type)q->value(14).toUInt()==RDCart::Macro) {
|
||||||
validity=RDCart::AlwaysValid;
|
validity=RDCart::AlwaysValid;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
validity=ValidateCut(q,23,validity,current_datetime);
|
validity=ValidateCut(q,24,validity,current_datetime);
|
||||||
}
|
}
|
||||||
switch((RDCart::Type)q->value(14).toUInt()) {
|
switch((RDCart::Type)q->value(14).toUInt()) {
|
||||||
case RDCart::Audio:
|
case RDCart::Audio:
|
||||||
if(q->value(20).isNull()) {
|
if(q->value(20).isNull()) {
|
||||||
item->setPixmap(0,*lib_playout_map);
|
item->setPixmap(Icon,*lib_playout_map);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
item->setPixmap(0,*lib_track_cart_map);
|
item->setPixmap(Icon,*lib_track_cart_map);
|
||||||
}
|
}
|
||||||
if(q->value(0).toUInt()==0) {
|
if(q->value(Icon).toUInt()==0) {
|
||||||
item->setBackgroundColor(RD_CART_ERROR_COLOR);
|
item->setBackgroundColor(RD_CART_ERROR_COLOR);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -1309,62 +1438,67 @@ void MainWidget::RefreshLine(RDListViewItem *item)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case RDCart::Macro:
|
case RDCart::Macro:
|
||||||
item->setPixmap(0,*lib_macro_map);
|
item->setPixmap(Icon,*lib_macro_map);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RDCart::All:
|
case RDCart::All:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
item->setText(2,q->value(11).toString());
|
item->setText(Group,q->value(11).toString());
|
||||||
item->setTextColor(2,q->value(22).toString(),QFont::Bold);
|
item->setTextColor(Group,q->value(22).toString(),QFont::Bold);
|
||||||
item->setText(3,RDGetTimeLength(q->value(0).toUInt()));
|
if(q->value(15).toUInt()==1) {
|
||||||
item->setText(4,q->value(1).toString());
|
item->setText(Length,RDGetTimeLength(q->value(0).toUInt()));
|
||||||
item->setText(5,q->value(2).toString());
|
item->setText(Talk,RDGetTimeLength(q->value(24).toUInt()-q->value(23).toUInt()));
|
||||||
item->setText(8,q->value(3).toString());
|
}
|
||||||
item->setText(9,q->value(4).toString());
|
item->setText(Title,q->value(1).toString());
|
||||||
item->setText(10,q->value(8).toString());
|
item->setText(Artist,q->value(2).toString());
|
||||||
item->setText(11,q->value(9).toString());
|
item->setText(Album,q->value(3).toString());
|
||||||
|
item->setText(Label,q->value(4).toString());
|
||||||
|
item->setText(Composer,q->value(8).toString());
|
||||||
|
item->setText(Conductor,q->value(9).toString());
|
||||||
|
|
||||||
item->setText(12,q->value(10).toString());
|
item->setText(Publisher,q->value(10).toString());
|
||||||
item->setText(13,q->value(5).toString());
|
item->setText(Client,q->value(5).toString());
|
||||||
item->setText(14,q->value(6).toString());
|
item->setText(Agency,q->value(6).toString());
|
||||||
if(!q->value(12).toDateTime().isNull()) {
|
if(!q->value(12).toDateTime().isNull()) {
|
||||||
item->setText(6,q->value(12).toDateTime().
|
item->setText(Start,q->value(12).toDateTime().
|
||||||
toString("MM/dd/yyyy - hh:mm:ss"));
|
toString("MM/dd/yyyy - hh:mm:ss"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
item->setText(6,"");
|
item->setText(Start,"");
|
||||||
}
|
}
|
||||||
if(!q->value(13).toDateTime().isNull()) {
|
if(!q->value(13).toDateTime().isNull()) {
|
||||||
item->setText(7,q->value(13).toDateTime().
|
item->setText(End,q->value(13).toDateTime().
|
||||||
toString("MM/dd/yyyy - hh:mm:ss"));
|
toString("MM/dd/yyyy - hh:mm:ss"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
item->setText(7,tr("TFN"));
|
item->setText(End,tr("TFN"));
|
||||||
}
|
}
|
||||||
item->setText(16,q->value(15).toString());
|
item->setText(Cuts,q->value(15).toString());
|
||||||
item->setText(17,q->value(16).toString());
|
item->setText(LastCutPlayed,q->value(16).toString());
|
||||||
item->setText(18,q->value(17).toString());
|
item->setText(EnforceLength,q->value(17).toString());
|
||||||
item->setText(19,q->value(18).toString());
|
item->setText(PreservePitch,q->value(18).toString());
|
||||||
item->setText(20,q->value(19).toString());
|
item->setText(LengthDeviation,q->value(19).toString());
|
||||||
item->setText(21,q->value(20).toString());
|
item->setText(OwnedBy,q->value(20).toString());
|
||||||
if(q->value(17).toString()=="Y") {
|
if(q->value(17).toString()=="Y") {
|
||||||
item->setTextColor(3,QColor(RDLIBRARY_ENFORCE_LENGTH_COLOR),QFont::Bold);
|
item->setTextColor(Length,QColor(RDLIBRARY_ENFORCE_LENGTH_COLOR),QFont::Bold);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if((q->value(19).toUInt()>RDLIBRARY_MID_LENGTH_LIMIT)&&
|
if((q->value(19).toUInt()>RDLIBRARY_MID_LENGTH_LIMIT)&&
|
||||||
(q->value(17).toString()=="N")) {
|
(q->value(17).toString()=="N")) {
|
||||||
if(q->value(19).toUInt()>RDLIBRARY_MAX_LENGTH_LIMIT) {
|
if(q->value(19).toUInt()>RDLIBRARY_MAX_LENGTH_LIMIT) {
|
||||||
item->setTextColor(3,QColor(RDLIBRARY_MAX_LENGTH_COLOR),QFont::Bold);
|
item->setTextColor(Length,QColor(RDLIBRARY_MAX_LENGTH_COLOR),QFont::Bold);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
item->setTextColor(3,QColor(RDLIBRARY_MID_LENGTH_COLOR),QFont::Bold);
|
item->setTextColor(Length,QColor(RDLIBRARY_MID_LENGTH_COLOR),QFont::Bold);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
item->setTextColor(3,QColor(Qt::black),QFont::Normal);
|
item->setTextColor(Length,QColor(Qt::black),QFont::Normal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RefreshCuts(item,item->text(Cart).toUInt());
|
||||||
}
|
}
|
||||||
delete q;
|
delete q;
|
||||||
}
|
}
|
||||||
@ -1471,9 +1605,6 @@ void MainWidget::LoadGeometry()
|
|||||||
void MainWidget::SaveGeometry()
|
void MainWidget::SaveGeometry()
|
||||||
{
|
{
|
||||||
QString geometry_file=GeometryFile();
|
QString geometry_file=GeometryFile();
|
||||||
if(geometry_file.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
FILE *file=fopen(geometry_file,"w");
|
FILE *file=fopen(geometry_file,"w");
|
||||||
if(file==NULL) {
|
if(file==NULL) {
|
||||||
return;
|
return;
|
||||||
@ -1515,7 +1646,7 @@ bool MainWidget::UnlockUser()
|
|||||||
// Process Deleted Carts
|
// Process Deleted Carts
|
||||||
//
|
//
|
||||||
for(unsigned i=0;i<lib_deleted_carts.size();i++) {
|
for(unsigned i=0;i<lib_deleted_carts.size();i++) {
|
||||||
if((item=(RDListViewItem *)lib_cart_list->findItem(QString().sprintf("%06u",lib_deleted_carts.at(i)),1))!=NULL) {
|
if((item=(RDListViewItem *)lib_cart_list->findItem(QString().sprintf("%06u",lib_deleted_carts.at(i)),Cart))!=NULL) {
|
||||||
delete item;
|
delete item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include <qsizepolicy.h>
|
#include <qsizepolicy.h>
|
||||||
#include <qsqldatabase.h>
|
#include <qsqldatabase.h>
|
||||||
#include <rdlistview.h>
|
#include <rdlistview.h>
|
||||||
|
#include <rdsimpleplayer.h>
|
||||||
#include <qpushbutton.h>
|
#include <qpushbutton.h>
|
||||||
#include <qcombobox.h>
|
#include <qcombobox.h>
|
||||||
#include <qlabel.h>
|
#include <qlabel.h>
|
||||||
@ -65,6 +66,11 @@ class MainWidget : public QWidget
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
enum Column {Icon=0,Cart=1,Group=2,Length=3,Talk=4,Title=5,Artist=6,
|
||||||
|
Start=7,End=8,Album=9,Label=10,Composer=11,Conductor=12,
|
||||||
|
Publisher=13,Client=14,Agency=15,UserDefined=16,
|
||||||
|
Cuts=17,LastCutPlayed=18,EnforceLength=19,PreservePitch=20,
|
||||||
|
LengthDeviation=21,OwnedBy=22};
|
||||||
MainWidget(QWidget *parent=0);
|
MainWidget(QWidget *parent=0);
|
||||||
QSize sizeHint() const;
|
QSize sizeHint() const;
|
||||||
QSizePolicy sizePolicy() const;
|
QSizePolicy sizePolicy() const;
|
||||||
@ -82,7 +88,7 @@ class MainWidget : public QWidget
|
|||||||
void ripData();
|
void ripData();
|
||||||
void reportsData();
|
void reportsData();
|
||||||
void cartOnItemData(Q3ListViewItem *item);
|
void cartOnItemData(Q3ListViewItem *item);
|
||||||
void cartClickedData(Q3ListViewItem *item);
|
void cartClickedData();
|
||||||
void cartDoubleclickedData(Q3ListViewItem *,const QPoint &,int);
|
void cartDoubleclickedData(Q3ListViewItem *,const QPoint &,int);
|
||||||
void audioChangedData(int state);
|
void audioChangedData(int state);
|
||||||
void macroChangedData(int state);
|
void macroChangedData(int state);
|
||||||
@ -97,6 +103,7 @@ class MainWidget : public QWidget
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void RefreshList();
|
void RefreshList();
|
||||||
|
void RefreshCuts(RDListViewItem *p,unsigned cartnum);
|
||||||
QString WhereClause() const;
|
QString WhereClause() const;
|
||||||
void RefreshLine(RDListViewItem *item);
|
void RefreshLine(RDListViewItem *item);
|
||||||
void UpdateItemColor(RDListViewItem *item,RDCart::Validity validity,
|
void UpdateItemColor(RDListViewItem *item,RDCart::Validity validity,
|
||||||
@ -131,6 +138,9 @@ class MainWidget : public QWidget
|
|||||||
QPushButton *lib_rip_button;
|
QPushButton *lib_rip_button;
|
||||||
QPushButton *lib_reports_button;
|
QPushButton *lib_reports_button;
|
||||||
QPushButton *lib_close_button;
|
QPushButton *lib_close_button;
|
||||||
|
RDSimplePlayer *lib_player;
|
||||||
|
int lib_output_card;
|
||||||
|
int lib_output_port;
|
||||||
QCheckBox *lib_allowdrag_box;
|
QCheckBox *lib_allowdrag_box;
|
||||||
QLabel *lib_allowdrag_label;
|
QLabel *lib_allowdrag_label;
|
||||||
QCheckBox *lib_showaudio_box;
|
QCheckBox *lib_showaudio_box;
|
||||||
|
@ -1478,6 +1478,10 @@ Přesto smazat?</translation>
|
|||||||
<source>Owned By</source>
|
<source>Owned By</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Talk</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RecordCut</name>
|
<name>RecordCut</name>
|
||||||
|
@ -1455,6 +1455,10 @@ verwendet. Trotzdem löschen?</translation>
|
|||||||
<source>Owned By</source>
|
<source>Owned By</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Talk</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RecordCut</name>
|
<name>RecordCut</name>
|
||||||
|
@ -1464,6 +1464,10 @@ Do you still want to delete it?</source>
|
|||||||
<source>Owned By</source>
|
<source>Owned By</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Talk</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RecordCut</name>
|
<name>RecordCut</name>
|
||||||
|
@ -1172,6 +1172,10 @@ Do you still want to delete it?</source>
|
|||||||
<source>Owned By</source>
|
<source>Owned By</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Talk</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RecordCut</name>
|
<name>RecordCut</name>
|
||||||
|
@ -1451,6 +1451,10 @@ Vil du sletta ho likevel?</translation>
|
|||||||
<source>Owned By</source>
|
<source>Owned By</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Talk</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RecordCut</name>
|
<name>RecordCut</name>
|
||||||
|
@ -1451,6 +1451,10 @@ Vil du sletta ho likevel?</translation>
|
|||||||
<source>Owned By</source>
|
<source>Owned By</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Talk</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RecordCut</name>
|
<name>RecordCut</name>
|
||||||
|
@ -1453,6 +1453,10 @@ Você ainda quer deletá-lo?</translation>
|
|||||||
<source>Owned By</source>
|
<source>Owned By</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Talk</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>RecordCut</name>
|
<name>RecordCut</name>
|
||||||
|
@ -63,6 +63,20 @@ Db::~Db()
|
|||||||
QSqlDatabase::removeDatabase("Rivendell");
|
QSqlDatabase::removeDatabase("Rivendell");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Db::clearDatabase(QString name)
|
||||||
|
{
|
||||||
|
QSqlQuery *q;
|
||||||
|
QSqlDatabase db=QSqlDatabase::database("Rivendell");
|
||||||
|
|
||||||
|
if(db.isOpen()){
|
||||||
|
q=new QSqlQuery(QString().sprintf("drop database if exists `%s`",(const char *)name),db);
|
||||||
|
delete q;
|
||||||
|
|
||||||
|
q=new QSqlQuery(QString().sprintf("create database `%s`",(const char *)name),db);
|
||||||
|
delete q;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool Db::isOpen()
|
bool Db::isOpen()
|
||||||
{
|
{
|
||||||
QSqlDatabase db=QSqlDatabase::database("Rivendell");
|
QSqlDatabase db=QSqlDatabase::database("Rivendell");
|
||||||
|
@ -31,6 +31,7 @@ class Db
|
|||||||
Db(QString *err_str,RDConfig *config);
|
Db(QString *err_str,RDConfig *config);
|
||||||
~Db();
|
~Db();
|
||||||
bool isOpen();
|
bool isOpen();
|
||||||
|
void clearDatabase(QString name);
|
||||||
unsigned schema();
|
unsigned schema();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -19,8 +19,6 @@
|
|||||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
//
|
//
|
||||||
|
|
||||||
#define LINE fprintf(stderr,"%s:%d\n",__FILE__,__LINE__);
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@ -31,11 +29,11 @@
|
|||||||
#include <q3filedialog.h>
|
#include <q3filedialog.h>
|
||||||
|
|
||||||
#include <rdconfig.h>
|
#include <rdconfig.h>
|
||||||
|
#include <dbversion.h>
|
||||||
|
|
||||||
#include "../../icons/rivendell-22x22.xpm"
|
#include "../../icons/rivendell-22x22.xpm"
|
||||||
|
|
||||||
#include <rddbconfig.h>
|
#include "rddbconfig.h"
|
||||||
|
|
||||||
#include "db.h"
|
#include "db.h"
|
||||||
#include "createdb.h"
|
#include "createdb.h"
|
||||||
#include "mysql_login.h"
|
#include "mysql_login.h"
|
||||||
@ -146,7 +144,15 @@ MainWidget::MainWidget(QWidget *parent)
|
|||||||
db_close_button->setFont(label_font);
|
db_close_button->setFont(label_font);
|
||||||
connect(db_close_button,SIGNAL(clicked()),this,SLOT(closeData()));
|
connect(db_close_button,SIGNAL(clicked()),this,SLOT(closeData()));
|
||||||
|
|
||||||
updateLabels();
|
//
|
||||||
|
// Signals
|
||||||
|
//
|
||||||
|
connect(this,SIGNAL(dbChanged()),this,SLOT(updateLabels()));
|
||||||
|
connect(this,SIGNAL(dbMismatch()),this,SLOT(mismatchData()));
|
||||||
|
|
||||||
|
this->show();
|
||||||
|
|
||||||
|
emit dbChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -166,6 +172,36 @@ QSizePolicy MainWidget::sizePolicy() const
|
|||||||
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWidget::mismatchData()
|
||||||
|
{
|
||||||
|
if (!db->schema()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (QMessageBox::question(this,tr("Database Mismatch"),QString().sprintf("Your database is version %d. Your Rivendell %s installation requires version %d. Would you like to modify your database to the current version?",db->schema(),VERSION,RD_VERSION_DATABASE),(QMessageBox::No|QMessageBox::Yes)) != QMessageBox::Yes) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QProcess modifyProcess(this);
|
||||||
|
QStringList args;
|
||||||
|
args << QString("--modify");
|
||||||
|
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
||||||
|
modifyProcess.start("rddbmgr", args);
|
||||||
|
modifyProcess.waitForFinished(-1);
|
||||||
|
QApplication::restoreOverrideCursor();
|
||||||
|
if (modifyProcess.exitCode()) {
|
||||||
|
QMessageBox::critical(this,tr("RDDbConfig Error"),
|
||||||
|
QString(modifyProcess.readAllStandardError()));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
QMessageBox::information(this,"Database Modified Successfully",
|
||||||
|
QString().sprintf("Modified database to version %d", RD_VERSION_DATABASE));
|
||||||
|
rd_config->log("rddbconfig",RDConfig::LogInfo,QString().sprintf("Modified database to version %d", RD_VERSION_DATABASE));
|
||||||
|
|
||||||
|
emit dbChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MainWidget::updateLabels()
|
void MainWidget::updateLabels()
|
||||||
{
|
{
|
||||||
QString err_msg="";
|
QString err_msg="";
|
||||||
@ -184,6 +220,10 @@ void MainWidget::updateLabels()
|
|||||||
label_schema->setText(QString().sprintf("DB Version: %d",db->schema()));
|
label_schema->setText(QString().sprintf("DB Version: %d",db->schema()));
|
||||||
db_backup_button->setEnabled(true);
|
db_backup_button->setEnabled(true);
|
||||||
db_restore_button->setEnabled(true);
|
db_restore_button->setEnabled(true);
|
||||||
|
|
||||||
|
if(db->schema()!=RD_VERSION_DATABASE) {
|
||||||
|
emit dbMismatch();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,7 +274,7 @@ void MainWidget::createData()
|
|||||||
|
|
||||||
startDaemons();
|
startDaemons();
|
||||||
|
|
||||||
updateLabels();
|
emit updateLabels();
|
||||||
|
|
||||||
delete db_create;
|
delete db_create;
|
||||||
}
|
}
|
||||||
@ -264,10 +304,9 @@ void MainWidget::backupData()
|
|||||||
backupProcess.setStandardOutputFile(filename);
|
backupProcess.setStandardOutputFile(filename);
|
||||||
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
||||||
backupProcess.start("mysqldump", args);
|
backupProcess.start("mysqldump", args);
|
||||||
backupProcess.waitForFinished();
|
backupProcess.waitForFinished(-1);
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
if (backupProcess.exitCode()) {
|
if (backupProcess.exitCode()) {
|
||||||
fprintf(stderr,"Exit Code=%d\n",backupProcess.exitCode());
|
|
||||||
QMessageBox::critical(this,tr("RDDbConfig Error"),
|
QMessageBox::critical(this,tr("RDDbConfig Error"),
|
||||||
QString(backupProcess.readAllStandardError()));
|
QString(backupProcess.readAllStandardError()));
|
||||||
}
|
}
|
||||||
@ -303,6 +342,9 @@ void MainWidget::restoreData()
|
|||||||
if (QMessageBox::question(this,tr("Restore Entire Database"),tr("Are you sure you want to restore your entire Rivendell database?"),(QMessageBox::No|QMessageBox::Yes)) != QMessageBox::Yes) {
|
if (QMessageBox::question(this,tr("Restore Entire Database"),tr("Are you sure you want to restore your entire Rivendell database?"),(QMessageBox::No|QMessageBox::Yes)) != QMessageBox::Yes) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
db->clearDatabase(rd_config->mysqlDbname());
|
||||||
|
|
||||||
QProcess restoreProcess(this);
|
QProcess restoreProcess(this);
|
||||||
QStringList args;
|
QStringList args;
|
||||||
args << QString().sprintf("--user=%s",(const char *)rd_config->mysqlUsername())
|
args << QString().sprintf("--user=%s",(const char *)rd_config->mysqlUsername())
|
||||||
@ -313,7 +355,7 @@ void MainWidget::restoreData()
|
|||||||
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
||||||
stopDaemons();
|
stopDaemons();
|
||||||
restoreProcess.start("mysql", args);
|
restoreProcess.start("mysql", args);
|
||||||
restoreProcess.waitForFinished();
|
restoreProcess.waitForFinished(-1);
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
if (restoreProcess.exitCode()) {
|
if (restoreProcess.exitCode()) {
|
||||||
QMessageBox::critical(this,tr("RDDbConfig Error"),
|
QMessageBox::critical(this,tr("RDDbConfig Error"),
|
||||||
@ -329,6 +371,7 @@ void MainWidget::restoreData()
|
|||||||
(const char *)rd_config->mysqlDbname(),
|
(const char *)rd_config->mysqlDbname(),
|
||||||
(const char *)filename));
|
(const char *)filename));
|
||||||
}
|
}
|
||||||
|
emit updateLabels();
|
||||||
startDaemons();
|
startDaemons();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -371,14 +414,6 @@ void MainWidget::stopDaemons()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
QApplication::restoreOverrideCursor();
|
QApplication::restoreOverrideCursor();
|
||||||
#if 0
|
|
||||||
if(system("/usr/bin/systemctl status rivendell")==0) {
|
|
||||||
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
|
|
||||||
system("/usr/bin/systemctl stop rivendell");
|
|
||||||
QApplication::restoreOverrideCursor();
|
|
||||||
db_daemon_start_needed=true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -405,8 +440,5 @@ int main(int argc,char *argv[])
|
|||||||
QApplication a(argc,argv);
|
QApplication a(argc,argv);
|
||||||
MainWidget *w=new MainWidget();
|
MainWidget *w=new MainWidget();
|
||||||
a.setMainWidget(w);
|
a.setMainWidget(w);
|
||||||
w->setGeometry(QRect(QPoint(0,0),w->sizeHint()));
|
|
||||||
w->move(250,250);
|
|
||||||
w->show();
|
|
||||||
return a.exec();
|
return a.exec();
|
||||||
}
|
}
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
class MainWidget : public QWidget
|
class MainWidget : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MainWidget(QWidget *parent=0);
|
MainWidget(QWidget *parent=0);
|
||||||
~MainWidget();
|
~MainWidget();
|
||||||
@ -53,12 +54,17 @@ class MainWidget : public QWidget
|
|||||||
void backupData();
|
void backupData();
|
||||||
void restoreData();
|
void restoreData();
|
||||||
void closeData();
|
void closeData();
|
||||||
|
void mismatchData();
|
||||||
|
void updateLabels();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void dbMismatch();
|
||||||
|
void dbChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void resizeEvent(QResizeEvent *e);
|
void resizeEvent(QResizeEvent *e);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateLabels();
|
|
||||||
RDConfig *rd_config;
|
RDConfig *rd_config;
|
||||||
bool db_manage_daemons;
|
bool db_manage_daemons;
|
||||||
bool db_daemon_start_needed;
|
bool db_daemon_start_needed;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user