mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-11-26 15:20:29 +01:00
Initial import of CVS-v2_8_branch
This commit is contained in:
83
rdcastmanager/Makefile.am
Normal file
83
rdcastmanager/Makefile.am
Normal file
@@ -0,0 +1,83 @@
|
||||
## automake.am
|
||||
##
|
||||
## Automake.am for rivendell/rdcastmanager
|
||||
##
|
||||
## (C) Copyright 2002-2006 Fred Gleason <fredg@paravelsystems.com>
|
||||
##
|
||||
## $Id: Makefile.am,v 1.8.8.2 2013/01/01 21:36:30 cvs Exp $
|
||||
##
|
||||
## 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
|
||||
## published by the Free Software Foundation.
|
||||
##
|
||||
## This program is distributed in the hope that it will be useful,
|
||||
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
## GNU General Public License for more details.
|
||||
##
|
||||
## You should have received a copy of the GNU General Public
|
||||
## License along with this program; if not, write to the Free Software
|
||||
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
##
|
||||
##
|
||||
## Use automake to process this into a Makefile.in
|
||||
|
||||
AM_CPPFLAGS = -Wall -DPREFIX=\"$(prefix)\" -DQTDIR=\"@QT_DIR@\" @QT_CXXFLAGS@
|
||||
INCLUDES = -I$(top_srcdir)/lib
|
||||
LIBS = @QT_LIBS@ -L$(top_srcdir)/lib
|
||||
MOC = @QT_MOC@
|
||||
|
||||
# The dependency for qt's Meta Object Compiler (moc)
|
||||
moc_%.cpp: %.h
|
||||
$(MOC) $< -o $@
|
||||
|
||||
# I18N Stuff
|
||||
install-exec-local:
|
||||
mkdir -p $(DESTDIR)$(prefix)/share/rivendell
|
||||
cp rdcastmanager_*.qm $(DESTDIR)$(prefix)/share/rivendell
|
||||
|
||||
uninstall:
|
||||
rm -f $(DESTDIR)$(prefix)/share/srlabs/rdcastmanager_*.qm
|
||||
|
||||
all:
|
||||
@QT_BIN@/lupdate rdcastmanager.pro
|
||||
@QT_BIN@/lrelease rdcastmanager.pro
|
||||
|
||||
bin_PROGRAMS = rdcastmanager
|
||||
|
||||
dist_rdcastmanager_SOURCES = edit_cast.cpp edit_cast.h\
|
||||
globals.h\
|
||||
list_casts.cpp list_casts.h\
|
||||
pick_report_dates.cpp pick_report_dates.h\
|
||||
rdcastmanager.cpp rdcastmanager.h
|
||||
|
||||
nodist_rdcastmanager_SOURCES = moc_edit_cast.cpp\
|
||||
moc_list_casts.cpp\
|
||||
moc_pick_report_dates.cpp\
|
||||
moc_rdcastmanager.cpp
|
||||
|
||||
rdcastmanager_LDADD = @LIB_RDLIBS@ @LIBVORBIS@
|
||||
|
||||
EXTRA_DIST = rdcastmanager.pro\
|
||||
rdcastmanager_cs.ts\
|
||||
rdcastmanager_de.ts\
|
||||
rdcastmanager_es.ts\
|
||||
rdcastmanager_fr.ts\
|
||||
rdcastmanager_nb.ts\
|
||||
rdcastmanager_nn.ts\
|
||||
rdcastmanager_pt_BR.ts
|
||||
|
||||
CLEANFILES = *~\
|
||||
*.idb\
|
||||
*ilk\
|
||||
*.obj\
|
||||
*.pdb\
|
||||
*.qm\
|
||||
moc_*
|
||||
|
||||
MAINTAINERCLEANFILES = *~\
|
||||
*.tar.gz\
|
||||
aclocal.m4\
|
||||
configure\
|
||||
Makefile.in\
|
||||
moc_*
|
||||
542
rdcastmanager/edit_cast.cpp
Normal file
542
rdcastmanager/edit_cast.cpp
Normal file
@@ -0,0 +1,542 @@
|
||||
// edit_cast.cpp
|
||||
//
|
||||
// Edit a Rivendell Cast
|
||||
//
|
||||
// (C) Copyright 2002-2004 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// $Id: edit_cast.cpp,v 1.11 2011/09/09 20:23:28 cvs Exp $
|
||||
//
|
||||
// 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
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include <qpainter.h>
|
||||
#include <qevent.h>
|
||||
#include <qmessagebox.h>
|
||||
#include <qpainter.h>
|
||||
#include <qdatetime.h>
|
||||
#include <qradiobutton.h>
|
||||
|
||||
#include <rddb.h>
|
||||
#include <rddatedialog.h>
|
||||
#include <rdfeed.h>
|
||||
#include <rdescape_string.h>
|
||||
#include <pick_report_dates.h>
|
||||
#include <rdconf.h>
|
||||
|
||||
#include <globals.h>
|
||||
#include <edit_cast.h>
|
||||
|
||||
|
||||
EditCast::EditCast(unsigned cast_id,QWidget *parent,const char *name)
|
||||
: QDialog(parent,name,true)
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
RDSqlQuery *q1;
|
||||
int ypos=0;
|
||||
|
||||
cast_cast=new RDPodcast(cast_id);
|
||||
cast_feed=new RDFeed(cast_cast->feedId());
|
||||
cast_status=cast_cast->status();
|
||||
setCaption(tr("Editing PodCast"));
|
||||
|
||||
//
|
||||
// Create Fonts
|
||||
//
|
||||
QFont font=QFont("Helvetica",12,QFont::Bold);
|
||||
font.setPixelSize(12);
|
||||
QFont select_font=QFont("Helvetica",12,QFont::Normal);
|
||||
select_font.setPixelSize(12);
|
||||
|
||||
//
|
||||
// Item Media Link
|
||||
//
|
||||
cast_item_medialink_edit=new QLineEdit(this,"cast_item_medialink_edit");
|
||||
cast_item_medialink_edit->setGeometry(115,10,sizeHint().width()-125,20);
|
||||
cast_item_medialink_edit->setReadOnly(true);
|
||||
QLabel *cast_item_medialink_label=
|
||||
new QLabel(cast_item_medialink_edit,tr("Media Link:"),this,
|
||||
"cast_item_medialink_label");
|
||||
cast_item_medialink_label->setGeometry(20,10,90,20);
|
||||
cast_item_medialink_label->setFont(font);
|
||||
cast_item_medialink_label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
if(cast_feed->mediaLinkMode()==RDFeed::LinkNone) {
|
||||
cast_item_medialink_edit->hide();
|
||||
cast_item_medialink_label->hide();
|
||||
ypos=10;
|
||||
}
|
||||
else {
|
||||
ypos=42;
|
||||
}
|
||||
|
||||
//
|
||||
// Item Title
|
||||
//
|
||||
cast_item_title_edit=new QLineEdit(this,"cast_item_title_edit");
|
||||
cast_item_title_edit->setGeometry(115,ypos,sizeHint().width()-125,20);
|
||||
cast_item_title_edit->setMaxLength(255);
|
||||
QLabel *cast_item_title_label=
|
||||
new QLabel(cast_item_title_edit,tr("Title:"),this,
|
||||
"cast_item_title_label");
|
||||
cast_item_title_label->setGeometry(20,ypos,90,20);
|
||||
cast_item_title_label->setFont(font);
|
||||
cast_item_title_label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
|
||||
//
|
||||
// Item Author
|
||||
//
|
||||
cast_item_author_edit=new QLineEdit(this,"cast_item_author_edit");
|
||||
cast_item_author_edit->setGeometry(115,ypos+22,sizeHint().width()-125,20);
|
||||
cast_item_author_edit->setMaxLength(255);
|
||||
QLabel *cast_item_author_label=
|
||||
new QLabel(cast_item_author_edit,tr("Author E-Mail:"),this,
|
||||
"cast_item_author_label");
|
||||
cast_item_author_label->setGeometry(20,ypos+22,90,20);
|
||||
cast_item_author_label->setFont(font);
|
||||
cast_item_author_label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
|
||||
//
|
||||
// Item Category
|
||||
//
|
||||
cast_item_category_edit=new QLineEdit(this,"cast_item_category_edit");
|
||||
cast_item_category_edit->setGeometry(115,ypos+44,sizeHint().width()-125,20);
|
||||
cast_item_category_edit->setMaxLength(64);
|
||||
QLabel *cast_item_category_label=
|
||||
new QLabel(cast_item_category_edit,tr("Category:"),this,
|
||||
"cast_item_category_label");
|
||||
cast_item_category_label->setGeometry(20,ypos+44,90,20);
|
||||
cast_item_category_label->setFont(font);
|
||||
cast_item_category_label->
|
||||
setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
|
||||
//
|
||||
// Item Link
|
||||
//
|
||||
cast_item_link_edit=new QLineEdit(this,"cast_item_link_edit");
|
||||
cast_item_link_edit->setGeometry(115,ypos+66,sizeHint().width()-125,20);
|
||||
cast_item_link_edit->setMaxLength(255);
|
||||
QLabel *cast_item_link_label=
|
||||
new QLabel(cast_item_link_edit,tr("Link URL:"),this,
|
||||
"cast_item_link_label");
|
||||
cast_item_link_label->setGeometry(20,ypos+66,90,20);
|
||||
cast_item_link_label->setFont(font);
|
||||
cast_item_link_label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
|
||||
//
|
||||
// Item Description
|
||||
//
|
||||
cast_item_description_edit=
|
||||
new QTextEdit(this,"cast_item_description_edit");
|
||||
cast_item_description_edit->
|
||||
setGeometry(115,ypos+88,sizeHint().width()-125,76);
|
||||
QLabel *cast_item_description_label=
|
||||
new QLabel(cast_item_description_edit,tr("Description:"),this,
|
||||
"cast_item_description_label");
|
||||
cast_item_description_label->setGeometry(20,ypos+88,90,20);
|
||||
cast_item_description_label->setFont(font);
|
||||
cast_item_description_label->
|
||||
setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
|
||||
//
|
||||
// Item Source Text
|
||||
//
|
||||
cast_item_sourcetext_edit=new QLineEdit(this,"cast_item_sourcetext_edit");
|
||||
cast_item_sourcetext_edit->setGeometry(115,ypos+169,sizeHint().width()-125,20);
|
||||
cast_item_sourcetext_edit->setMaxLength(64);
|
||||
QLabel *cast_item_sourcetext_label=
|
||||
new QLabel(cast_item_sourcetext_edit,tr("Source Text:"),this,
|
||||
"cast_item_sourcetext_label");
|
||||
cast_item_sourcetext_label->setGeometry(20,ypos+169,90,20);
|
||||
cast_item_sourcetext_label->setFont(font);
|
||||
cast_item_sourcetext_label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
|
||||
//
|
||||
// Item Source URL
|
||||
//
|
||||
cast_item_sourceurl_edit=new QLineEdit(this,"cast_item_sourceurl_edit");
|
||||
cast_item_sourceurl_edit->setGeometry(115,ypos+191,sizeHint().width()-125,20);
|
||||
cast_item_sourceurl_edit->setMaxLength(64);
|
||||
QLabel *cast_item_sourceurl_label=
|
||||
new QLabel(cast_item_sourceurl_edit,tr("Source URL:"),this,
|
||||
"cast_item_sourceurl_label");
|
||||
cast_item_sourceurl_label->setGeometry(20,ypos+191,90,20);
|
||||
cast_item_sourceurl_label->setFont(font);
|
||||
cast_item_sourceurl_label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
|
||||
//
|
||||
// Item Comments
|
||||
//
|
||||
cast_item_comments_edit=new QLineEdit(this,"cast_item_comments_edit");
|
||||
cast_item_comments_edit->setGeometry(115,ypos+213,sizeHint().width()-125,20);
|
||||
cast_item_comments_edit->setMaxLength(64);
|
||||
QLabel *cast_item_comments_label=
|
||||
new QLabel(cast_item_comments_edit,tr("Comments URL:"),this,
|
||||
"cast_item_comments_label");
|
||||
cast_item_comments_label->setGeometry(10,ypos+213,100,20);
|
||||
cast_item_comments_label->setFont(font);
|
||||
cast_item_comments_label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
|
||||
//
|
||||
// Auxiliary Fields
|
||||
//
|
||||
cast_ypos=233+ypos;
|
||||
QString keyname=cast_cast->keyName();
|
||||
keyname.replace(" ","_");
|
||||
QLabel *label;
|
||||
sql=QString().sprintf("select VAR_NAME,CAPTION from AUX_METADATA \
|
||||
where FEED_ID=%u order by VAR_NAME",
|
||||
cast_cast->feedId());
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
cast_aux_varnames.push_back(q->value(0).toString().
|
||||
mid(1,q->value(0).toString().length()-2));
|
||||
cast_aux_edits.push_back(new QLineEdit(this));
|
||||
cast_aux_edits.back()->
|
||||
setGeometry(115,cast_ypos,sizeHint().width()-125,20);
|
||||
cast_aux_edits.back()->setMaxLength(255);
|
||||
sql=QString().sprintf("select %s from %s_FIELDS where CAST_ID=%u",
|
||||
(const char *)cast_aux_varnames.back(),
|
||||
(const char *)keyname,cast_cast->id());
|
||||
q1=new RDSqlQuery(sql);
|
||||
if(q1->first()) {
|
||||
cast_aux_edits.back()->setText(q1->value(0).toString());
|
||||
}
|
||||
delete q1;
|
||||
label=new QLabel(cast_aux_edits.back(),q->value(1).toString()+":",this);
|
||||
label->setGeometry(20,cast_ypos,90,20);
|
||||
label->setFont(font);
|
||||
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
cast_ypos+=22;
|
||||
}
|
||||
delete q;
|
||||
cast_ypos+=3;
|
||||
|
||||
//
|
||||
// Effective DateTime
|
||||
//
|
||||
cast_item_effective_edit=new QDateTimeEdit(this);
|
||||
cast_item_effective_edit->
|
||||
setGeometry(115,cast_ypos,165,20);
|
||||
label=new QLabel(cast_item_effective_edit,tr("Air Date/Time:"),this,
|
||||
"cast_item_effective_label");
|
||||
label->setGeometry(20,cast_ypos,90,20);
|
||||
label->setFont(font);
|
||||
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
QPushButton *button=new QPushButton(this,"cast_item_effective_button");
|
||||
button->setGeometry(290,cast_ypos-3,50,25);
|
||||
button->setFont(select_font);
|
||||
button->setText(tr("&Select"));
|
||||
connect(button,SIGNAL(clicked()),this,SLOT(effectiveSelectData()));
|
||||
cast_ypos+=22;
|
||||
|
||||
//
|
||||
// Item Origin
|
||||
//
|
||||
cast_item_origin_edit=new QLineEdit(this,"cast_item_origin_edit");
|
||||
cast_item_origin_edit->setReadOnly(true);
|
||||
cast_item_origin_edit->setGeometry(115,cast_ypos,165,20);
|
||||
cast_item_origin_edit->setMaxLength(64);
|
||||
QLabel *cast_item_origin_label=
|
||||
new QLabel(cast_item_origin_edit,tr("Posted At:"),this,
|
||||
"cast_item_origin_label");
|
||||
cast_item_origin_label->setGeometry(20,cast_ypos,90,20);
|
||||
cast_item_origin_label->setFont(font);
|
||||
cast_item_origin_label->
|
||||
setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
cast_ypos+=22;
|
||||
|
||||
//
|
||||
// Item Expiration
|
||||
//
|
||||
cast_item_expiration_box=new QComboBox(this,"cast_item_expiration_box");
|
||||
cast_item_expiration_box->setGeometry(115,cast_ypos,50,20);
|
||||
cast_item_expiration_box->insertItem(tr("No"));
|
||||
cast_item_expiration_box->insertItem(tr("Yes"));
|
||||
connect(cast_item_expiration_box,SIGNAL(activated(int)),
|
||||
this,SLOT(expirationSelectedData(int)));
|
||||
label=new QLabel(cast_item_expiration_box,tr("Cast Expires:"),this,"label");
|
||||
label->setGeometry(20,cast_ypos,90,20);
|
||||
label->setFont(font);
|
||||
label->
|
||||
setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
cast_ypos+=22;
|
||||
cast_item_expiration_box->setEnabled(cast_status!=RDPodcast::StatusExpired);
|
||||
label->setEnabled(cast_status!=RDPodcast::StatusExpired);
|
||||
|
||||
cast_item_expiration_edit=new QDateEdit(this);
|
||||
cast_item_expiration_edit->setGeometry(115,cast_ypos,95,20);
|
||||
cast_item_expiration_label=
|
||||
new QLabel(cast_item_expiration_edit,tr("Expires On:"),this,
|
||||
"cast_item_expiration_label");
|
||||
cast_item_expiration_label->setGeometry(20,cast_ypos,90,20);
|
||||
cast_item_expiration_label->setFont(font);
|
||||
cast_item_expiration_label->
|
||||
setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
cast_item_expiration_button=
|
||||
new QPushButton(this,"cast_item_expiration_button");
|
||||
cast_item_expiration_button->setGeometry(220,cast_ypos-3,50,25);
|
||||
cast_item_expiration_button->setFont(select_font);
|
||||
cast_item_expiration_button->setText(tr("&Select"));
|
||||
connect(cast_item_expiration_button,SIGNAL(clicked()),
|
||||
this,SLOT(expirationSelectData()));
|
||||
cast_ypos+=27;
|
||||
cast_item_expiration_edit->setEnabled(cast_status!=RDPodcast::StatusExpired);
|
||||
cast_item_expiration_label->
|
||||
setEnabled(cast_status!=RDPodcast::StatusExpired);
|
||||
cast_item_expiration_button->
|
||||
setEnabled(cast_status!=RDPodcast::StatusExpired);
|
||||
|
||||
//
|
||||
// Cast Status
|
||||
//
|
||||
cast_item_status_group=new QButtonGroup(this,"cast_item_status_group");
|
||||
cast_item_status_group->setExclusive(true);
|
||||
cast_item_status_group->hide();
|
||||
|
||||
QRadioButton *rbutton=new QRadioButton(this,"hold_button");
|
||||
rbutton->setGeometry(120,cast_ypos,15,15);
|
||||
cast_item_status_group->insert(rbutton);
|
||||
label=new QLabel(rbutton,tr("Hold"),this,"hold_label");
|
||||
label->setFont(select_font);
|
||||
label->setGeometry(140,cast_ypos,30,15);
|
||||
label->setAlignment(AlignVCenter|AlignLeft);
|
||||
rbutton->setChecked(true);
|
||||
label->setEnabled(cast_status!=RDPodcast::StatusExpired);
|
||||
rbutton->setEnabled(cast_status!=RDPodcast::StatusExpired);
|
||||
|
||||
rbutton=new QRadioButton(this,"active_button");
|
||||
rbutton->setGeometry(190,cast_ypos,15,15);
|
||||
cast_item_status_group->insert(rbutton);
|
||||
label=new QLabel(rbutton,tr("Active"),this,"hold_label");
|
||||
label->setFont(select_font);
|
||||
label->setGeometry(210,cast_ypos,80,15);
|
||||
label->setAlignment(AlignVCenter|AlignLeft);
|
||||
label->setEnabled(cast_status!=RDPodcast::StatusExpired);
|
||||
label=new QLabel(cast_item_status_group,tr("Posting Status:"),this,
|
||||
"cast_item_status_label");
|
||||
label->setGeometry(20,cast_ypos-1,90,20);
|
||||
label->setFont(font);
|
||||
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
label->setEnabled(cast_status!=RDPodcast::StatusExpired);
|
||||
rbutton->setEnabled(cast_status!=RDPodcast::StatusExpired);
|
||||
|
||||
//
|
||||
// Report Button
|
||||
//
|
||||
button=new QPushButton(this,"button");
|
||||
button->setGeometry(10,sizeHint().height()-60,80,50);
|
||||
button->setFont(font);
|
||||
button->setText(tr("Episode\n&Report"));
|
||||
connect(button,SIGNAL(clicked()),this,SLOT(reportData()));
|
||||
|
||||
//
|
||||
// Ok Button
|
||||
//
|
||||
button=new QPushButton(this,"button");
|
||||
button->setGeometry(sizeHint().width()-180,sizeHint().height()-60,80,50);
|
||||
button->setDefault(true);
|
||||
button->setFont(font);
|
||||
button->setText(tr("&OK"));
|
||||
connect(button,SIGNAL(clicked()),this,SLOT(okData()));
|
||||
|
||||
//
|
||||
// Cancel Button
|
||||
//
|
||||
button=new QPushButton(this,"button");
|
||||
button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,
|
||||
80,50);
|
||||
button->setFont(font);
|
||||
button->setText(tr("&Cancel"));
|
||||
connect(button,SIGNAL(clicked()),this,SLOT(cancelData()));
|
||||
|
||||
//
|
||||
// Populate Values
|
||||
//
|
||||
cast_item_medialink_edit->
|
||||
setText(cast_feed->audioUrl(cast_feed->mediaLinkMode(),
|
||||
"[web-hostname]",cast_cast->id()));
|
||||
cast_item_title_edit->setText(cast_cast->itemTitle());
|
||||
cast_item_author_edit->setText(cast_cast->itemAuthor());
|
||||
cast_item_origin_edit->setText(RDUtcToLocal(cast_cast->originDateTime()).
|
||||
toString("MM/dd/yyyy - hh:mm:ss"));
|
||||
cast_item_category_edit->setText(cast_cast->itemCategory());
|
||||
cast_item_link_edit->setText(cast_cast->itemLink());
|
||||
cast_item_sourcetext_edit->setText(cast_cast->itemSourceText());
|
||||
cast_item_sourceurl_edit->setText(cast_cast->itemSourceUrl());
|
||||
cast_item_description_edit->setText(cast_cast->itemDescription());
|
||||
cast_item_comments_edit->setText(cast_cast->itemComments());
|
||||
cast_item_effective_edit->
|
||||
setDateTime(RDUtcToLocal(cast_cast->effectiveDateTime()));
|
||||
if(cast_cast->shelfLife()>0) {
|
||||
cast_item_expiration_box->setCurrentItem(1);
|
||||
}
|
||||
cast_item_expiration_edit->
|
||||
setDate(RDUtcToLocal(cast_cast->originDateTime()).date().
|
||||
addDays(cast_cast->shelfLife()));
|
||||
expirationSelectedData(cast_item_expiration_box->currentItem());
|
||||
switch(cast_status) {
|
||||
case RDPodcast::StatusActive:
|
||||
cast_item_status_group->setButton(1);
|
||||
break;
|
||||
|
||||
case RDPodcast::StatusPending:
|
||||
cast_item_status_group->setButton(0);
|
||||
break;
|
||||
|
||||
case RDPodcast::StatusExpired:
|
||||
cast_item_status_group->setDisabled(true);
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
// Fix the Window Size
|
||||
//
|
||||
setMinimumWidth(sizeHint().width());
|
||||
setMaximumWidth(sizeHint().width());
|
||||
setMinimumHeight(sizeHint().height());
|
||||
setMaximumHeight(sizeHint().height());
|
||||
}
|
||||
|
||||
|
||||
EditCast::~EditCast()
|
||||
{
|
||||
delete cast_feed;
|
||||
delete cast_cast;
|
||||
}
|
||||
|
||||
|
||||
QSize EditCast::sizeHint() const
|
||||
{
|
||||
return QSize(640,cast_ypos+92);
|
||||
}
|
||||
|
||||
|
||||
QSizePolicy EditCast::sizePolicy() const
|
||||
{
|
||||
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||||
}
|
||||
|
||||
|
||||
void EditCast::expirationSelectedData(int state)
|
||||
{
|
||||
state=state&&(cast_status!=RDPodcast::StatusExpired);
|
||||
cast_item_expiration_edit->setEnabled(state);
|
||||
cast_item_expiration_button->setEnabled(state);
|
||||
cast_item_expiration_label->setEnabled(state);
|
||||
}
|
||||
|
||||
|
||||
void EditCast::effectiveSelectData()
|
||||
{
|
||||
QDate current_date=QDate::currentDate();
|
||||
QDateTime datetime=cast_item_effective_edit->dateTime();
|
||||
QDate date=datetime.date();
|
||||
|
||||
RDDateDialog *dd=
|
||||
new RDDateDialog(current_date.year()-5,current_date.year()+5,this);
|
||||
if(dd->exec(&date)==0) {
|
||||
datetime.setDate(date);
|
||||
cast_item_effective_edit->setDateTime(datetime);
|
||||
}
|
||||
delete dd;
|
||||
}
|
||||
|
||||
|
||||
void EditCast::expirationSelectData()
|
||||
{
|
||||
QDate current_date=QDate::currentDate();
|
||||
QDate date=cast_item_expiration_edit->date();
|
||||
|
||||
RDDateDialog *dd=
|
||||
new RDDateDialog(current_date.year(),current_date.year()+10,this);
|
||||
if(dd->exec(&date)==0) {
|
||||
cast_item_expiration_edit->setDate(date);
|
||||
}
|
||||
delete dd;
|
||||
}
|
||||
|
||||
|
||||
void EditCast::reportData()
|
||||
{
|
||||
PickReportDates *rd=new PickReportDates(cast_cast->feedId(),cast_cast->id());
|
||||
rd->exec();
|
||||
delete rd;
|
||||
}
|
||||
|
||||
|
||||
void EditCast::okData()
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
|
||||
cast_cast->setItemTitle(cast_item_title_edit->text());
|
||||
cast_cast->setItemAuthor(cast_item_author_edit->text());
|
||||
cast_cast->setItemCategory(cast_item_category_edit->text());
|
||||
cast_cast->setItemLink(cast_item_link_edit->text());
|
||||
cast_cast->setItemSourceText(cast_item_sourcetext_edit->text());
|
||||
cast_cast->setItemSourceUrl(cast_item_sourceurl_edit->text());
|
||||
cast_cast->setItemDescription(cast_item_description_edit->text());
|
||||
cast_cast->setItemComments(cast_item_comments_edit->text());
|
||||
cast_cast->
|
||||
setEffectiveDateTime(RDLocalToUtc(cast_item_effective_edit->dateTime()));
|
||||
if(cast_item_status_group->isEnabled()) {
|
||||
if(cast_item_expiration_box->currentItem()) {
|
||||
int shelf_life=RDUtcToLocal(cast_cast->originDateTime()).date().
|
||||
daysTo(cast_item_expiration_edit->date());
|
||||
if(shelf_life<1) {
|
||||
shelf_life=1;
|
||||
}
|
||||
cast_cast->setShelfLife(shelf_life);
|
||||
}
|
||||
else {
|
||||
cast_cast->setShelfLife(0);
|
||||
}
|
||||
switch(cast_item_status_group->selectedId()) {
|
||||
case 0:
|
||||
cast_cast->setStatus(RDPodcast::StatusPending);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
cast_cast->setStatus(RDPodcast::StatusActive);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QString keyname=cast_cast->keyName();
|
||||
keyname.replace(" ","_");
|
||||
for(unsigned i=0;i<cast_aux_varnames.size();i++) {
|
||||
sql=QString().sprintf("update %s_FIELDS set %s=\"%s\" \
|
||||
where CAST_ID=%u",
|
||||
(const char *)keyname,
|
||||
(const char *)cast_aux_varnames[i],
|
||||
(const char *)RDEscapeString(cast_aux_edits[i]->
|
||||
text()),
|
||||
cast_cast->id());
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
}
|
||||
|
||||
cast_feed->
|
||||
setLastBuildDateTime(RDLocalToUtc(QDateTime(QDate::currentDate(),
|
||||
QTime::currentTime())));
|
||||
done(0);
|
||||
}
|
||||
|
||||
|
||||
void EditCast::cancelData()
|
||||
{
|
||||
done(-1);
|
||||
}
|
||||
87
rdcastmanager/edit_cast.h
Normal file
87
rdcastmanager/edit_cast.h
Normal file
@@ -0,0 +1,87 @@
|
||||
// edit_cast.h
|
||||
//
|
||||
// Edit a Rivendell Cast
|
||||
//
|
||||
// (C) Copyright 2002-2004 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// $Id: edit_cast.h,v 1.8 2011/09/09 20:23:28 cvs Exp $
|
||||
//
|
||||
// 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
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#ifndef EDIT_CAST_H
|
||||
#define EDIT_CAST_H
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <qdialog.h>
|
||||
#include <qtextedit.h>
|
||||
#include <qspinbox.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qsqldatabase.h>
|
||||
#include <qcombobox.h>
|
||||
#include <qdatetimeedit.h>
|
||||
#include <qlabel.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qbuttongroup.h>
|
||||
|
||||
#include <rdfeed.h>
|
||||
#include <rdpodcast.h>
|
||||
|
||||
|
||||
class EditCast : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
EditCast(unsigned cast_id,QWidget *parent=0,const char *name=0);
|
||||
~EditCast();
|
||||
QSize sizeHint() const;
|
||||
QSizePolicy sizePolicy() const;
|
||||
|
||||
private slots:
|
||||
void expirationSelectedData(int state);
|
||||
void effectiveSelectData();
|
||||
void expirationSelectData();
|
||||
void reportData();
|
||||
void okData();
|
||||
void cancelData();
|
||||
|
||||
private:
|
||||
RDFeed *cast_feed;
|
||||
RDPodcast *cast_cast;
|
||||
QLineEdit *cast_item_medialink_edit;
|
||||
QLineEdit *cast_item_title_edit;
|
||||
QLineEdit *cast_item_author_edit;
|
||||
QLineEdit *cast_item_origin_edit;
|
||||
QTextEdit *cast_item_description_edit;
|
||||
QLineEdit *cast_item_category_edit;
|
||||
QLineEdit *cast_item_comments_edit;
|
||||
QLineEdit *cast_item_sourcetext_edit;
|
||||
QLineEdit *cast_item_sourceurl_edit;
|
||||
QLineEdit *cast_item_link_edit;
|
||||
QComboBox *cast_item_expiration_box;
|
||||
QLabel *cast_item_expiration_label;
|
||||
QPushButton *cast_item_expiration_button;
|
||||
QDateEdit *cast_item_expiration_edit;
|
||||
QDateTimeEdit *cast_item_effective_edit;
|
||||
QButtonGroup *cast_item_status_group;
|
||||
std::vector<QString> cast_aux_varnames;
|
||||
std::vector<QLineEdit *> cast_aux_edits;
|
||||
int cast_ypos;
|
||||
RDPodcast::Status cast_status;
|
||||
};
|
||||
|
||||
|
||||
#endif // EDIT_CAST_H
|
||||
|
||||
46
rdcastmanager/globals.h
Normal file
46
rdcastmanager/globals.h
Normal file
@@ -0,0 +1,46 @@
|
||||
// globals.h
|
||||
//
|
||||
// Global Variable Declarations for RDCastManager
|
||||
//
|
||||
// (C) Copyright 2007 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// $Id: globals.h,v 1.5 2011/08/30 23:35:44 cvs Exp $
|
||||
//
|
||||
// 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
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#ifndef GLOBALS_H
|
||||
#define GLOBALS_H
|
||||
|
||||
#include <qstring.h>
|
||||
#include <rduser.h>
|
||||
#include <rdripc.h>
|
||||
#include <rdstation.h>
|
||||
#include <rdconfig.h>
|
||||
#include <rdsystem.h>
|
||||
|
||||
//
|
||||
// Global Resources
|
||||
//
|
||||
extern QString cast_filter;
|
||||
extern QString cast_group;
|
||||
extern QString cast_schedcode;
|
||||
extern RDUser *cast_user;
|
||||
extern RDRipc *cast_ripc;
|
||||
extern RDConfig *config;
|
||||
extern RDStation *rdstation_conf;
|
||||
extern RDSystem *cast_system;
|
||||
|
||||
|
||||
#endif // GLOBALS_H
|
||||
542
rdcastmanager/list_casts.cpp
Normal file
542
rdcastmanager/list_casts.cpp
Normal file
@@ -0,0 +1,542 @@
|
||||
// list_casts.cpp
|
||||
//
|
||||
// List Rivendell Casts
|
||||
//
|
||||
// (C) Copyright 2002-2007 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// $Id: list_casts.cpp,v 1.18.4.1 2013/11/13 23:36:35 cvs Exp $
|
||||
//
|
||||
// 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
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <qdialog.h>
|
||||
#include <qstring.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qlistbox.h>
|
||||
#include <qtextedit.h>
|
||||
#include <qlabel.h>
|
||||
#include <qpainter.h>
|
||||
#include <qevent.h>
|
||||
#include <qmessagebox.h>
|
||||
#include <qbuttongroup.h>
|
||||
#include <qdatetime.h>
|
||||
#include <qfile.h>
|
||||
#include <qapplication.h>
|
||||
#include <qfiledialog.h>
|
||||
|
||||
#include <rddb.h>
|
||||
#include <rdpodcast.h>
|
||||
#include <rdtextfile.h>
|
||||
#include <rdcut_dialog.h>
|
||||
#include <rdconf.h>
|
||||
#include <rdcut.h>
|
||||
#include <rdwavefile.h>
|
||||
#include <rdescape_string.h>
|
||||
#include <rdurl.h>
|
||||
#include <rdfeedlog.h>
|
||||
#include <rdsettings.h>
|
||||
#include <rdcastsearch.h>
|
||||
|
||||
#include <list_casts.h>
|
||||
#include <edit_cast.h>
|
||||
#include <globals.h>
|
||||
#include <pick_report_dates.h>
|
||||
|
||||
//
|
||||
// Icons
|
||||
//
|
||||
#include "../icons/redball.xpm"
|
||||
#include "../icons/greenball.xpm"
|
||||
#include "../icons/whiteball.xpm"
|
||||
|
||||
|
||||
ListCasts::ListCasts(unsigned feed_id,QWidget *parent,const char *name)
|
||||
: QDialog(parent,name,true)
|
||||
{
|
||||
list_feed_id=feed_id;
|
||||
|
||||
//
|
||||
// Fix the Window Size
|
||||
//
|
||||
setMinimumWidth(sizeHint().width());
|
||||
setMinimumHeight(sizeHint().height());
|
||||
|
||||
setCaption(tr("Podcast List"));
|
||||
|
||||
//
|
||||
// Create Fonts
|
||||
//
|
||||
QFont font=QFont("Helvetica",12,QFont::Bold);
|
||||
font.setPixelSize(12);
|
||||
QFont list_font=QFont("Helvetica",12,QFont::Normal);
|
||||
list_font.setPixelSize(12);
|
||||
QFont small_font=QFont("Helvetica",10,QFont::Normal);
|
||||
small_font.setPixelSize(10);
|
||||
|
||||
//
|
||||
// Create Icons
|
||||
//
|
||||
list_greenball_map=new QPixmap(greenball_xpm);
|
||||
list_redball_map=new QPixmap(redball_xpm);
|
||||
list_whiteball_map=new QPixmap(whiteball_xpm);
|
||||
|
||||
//
|
||||
// The Feed
|
||||
//
|
||||
list_feed=new RDFeed(feed_id,this);
|
||||
|
||||
//
|
||||
// Progress Dialog
|
||||
//
|
||||
list_progress_dialog=
|
||||
new QProgressDialog(tr("Uploading Audio..."),"Cancel",4,this);
|
||||
list_progress_dialog->setCaption(tr("Progress"));
|
||||
list_progress_dialog->setMinimumDuration(0);
|
||||
list_progress_dialog->setTotalSteps(list_feed->totalPostSteps());
|
||||
connect(list_feed,SIGNAL(postProgressChanged(int)),
|
||||
this,SLOT(postProgressChangedData(int)));
|
||||
|
||||
//
|
||||
// Filter
|
||||
//
|
||||
list_filter_edit=new QLineEdit(this,"list_filter_edit");
|
||||
list_filter_label=
|
||||
new QLabel(list_filter_edit,tr("Filter:"),this,"list_filter_label");
|
||||
list_filter_label->setFont(font);
|
||||
list_filter_label->setAlignment(AlignRight|AlignVCenter);
|
||||
connect(list_filter_edit,SIGNAL(textChanged(const QString &)),
|
||||
this,SLOT(filterChangedData(const QString &)));
|
||||
|
||||
//
|
||||
// Unexpired Check Box
|
||||
//
|
||||
list_unexpired_check=new QCheckBox(this,"list_unexpired_check");
|
||||
list_unexpired_label=
|
||||
new QLabel(list_unexpired_check,tr("Only Show Unexpired Casts"),this,
|
||||
"list_unexpired_label");
|
||||
list_unexpired_label->setFont(font);
|
||||
list_unexpired_label->setAlignment(AlignLeft|AlignVCenter);
|
||||
connect(list_unexpired_check,SIGNAL(toggled(bool)),
|
||||
this,SLOT(notexpiredToggledData(bool)));
|
||||
|
||||
//
|
||||
// Active Check Box
|
||||
//
|
||||
list_active_check=new QCheckBox(this,"list_active_check");
|
||||
list_active_label=
|
||||
new QLabel(list_active_check,tr("Only Show Active Casts"),this,
|
||||
"list_active_label");
|
||||
list_active_label->setFont(font);
|
||||
list_active_label->setAlignment(AlignLeft|AlignVCenter);
|
||||
connect(list_active_check,SIGNAL(toggled(bool)),
|
||||
this,SLOT(activeToggledData(bool)));
|
||||
|
||||
//
|
||||
// Group List
|
||||
//
|
||||
list_casts_view=new RDListView(this,"list_casts_view");
|
||||
list_casts_view->setAllColumnsShowFocus(true);
|
||||
list_casts_view->setItemMargin(5);
|
||||
list_casts_view->addColumn(tr(" "));
|
||||
list_casts_view->setColumnAlignment(0,AlignCenter);
|
||||
list_casts_view->addColumn(tr("Title"));
|
||||
list_casts_view->setColumnAlignment(1,AlignLeft);
|
||||
list_casts_view->addColumn(tr("Origin"));
|
||||
list_casts_view->setColumnAlignment(2,AlignLeft);
|
||||
list_casts_view->addColumn(tr("Expires"));
|
||||
list_casts_view->setColumnAlignment(3,AlignCenter);
|
||||
list_casts_view->addColumn(tr("Length"));
|
||||
list_casts_view->setColumnAlignment(4,AlignRight);
|
||||
list_casts_view->addColumn(tr("Description"));
|
||||
list_casts_view->setColumnAlignment(5,AlignLeft);
|
||||
list_casts_view->addColumn(tr("Category"));
|
||||
list_casts_view->setColumnAlignment(6,AlignCenter);
|
||||
list_casts_view->addColumn(tr("Link"));
|
||||
list_casts_view->setColumnAlignment(7,AlignCenter);
|
||||
connect(list_casts_view,
|
||||
SIGNAL(doubleClicked(QListViewItem *,const QPoint &,int)),
|
||||
this,
|
||||
SLOT(doubleClickedData(QListViewItem *,const QPoint &,int)));
|
||||
|
||||
//
|
||||
// Post Cart Button
|
||||
//
|
||||
list_cart_button=new QPushButton(this,"list_cart_button");
|
||||
list_cart_button->setFont(font);
|
||||
list_cart_button->setText(tr("Post From\nCar&t/Cut"));
|
||||
connect(list_cart_button,SIGNAL(clicked()),this,SLOT(addCartData()));
|
||||
|
||||
//
|
||||
// Post File Button
|
||||
//
|
||||
list_file_button=new QPushButton(this,"list_file_button");
|
||||
list_file_button->setFont(font);
|
||||
list_file_button->setText(tr("Post From\n&File"));
|
||||
connect(list_file_button,SIGNAL(clicked()),this,SLOT(addFileData()));
|
||||
|
||||
//
|
||||
// Edit Button
|
||||
//
|
||||
list_edit_button=new QPushButton(this,"list_edit_button");
|
||||
list_edit_button->setFont(font);
|
||||
list_edit_button->setText(tr("&Edit"));
|
||||
connect(list_edit_button,SIGNAL(clicked()),this,SLOT(editData()));
|
||||
|
||||
//
|
||||
// Delete Button
|
||||
//
|
||||
list_delete_button=new QPushButton(this,"list_delete_button");
|
||||
list_delete_button->setFont(font);
|
||||
list_delete_button->setText(tr("&Delete"));
|
||||
connect(list_delete_button,SIGNAL(clicked()),this,SLOT(deleteData()));
|
||||
|
||||
//
|
||||
// Report Button
|
||||
//
|
||||
list_report_button=new QPushButton(this,"list_report_button");
|
||||
list_report_button->setFont(font);
|
||||
list_report_button->setText(tr("Subscription\n&Report"));
|
||||
connect(list_report_button,SIGNAL(clicked()),this,SLOT(reportData()));
|
||||
|
||||
//
|
||||
// Close Button
|
||||
//
|
||||
list_close_button=new QPushButton(this,"list_close_button");
|
||||
list_close_button->setDefault(true);
|
||||
list_close_button->setFont(font);
|
||||
list_close_button->setText(tr("&Close"));
|
||||
connect(list_close_button,SIGNAL(clicked()),this,SLOT(closeData()));
|
||||
|
||||
RefreshList();
|
||||
GetEncoderId();
|
||||
connect(cast_ripc,SIGNAL(userChanged()),this,SLOT(userChangedData()));
|
||||
userChangedData();
|
||||
}
|
||||
|
||||
|
||||
ListCasts::~ListCasts()
|
||||
{
|
||||
delete list_progress_dialog;
|
||||
delete list_feed;
|
||||
}
|
||||
|
||||
|
||||
QSize ListCasts::sizeHint() const
|
||||
{
|
||||
return QSize(640,480);
|
||||
}
|
||||
|
||||
|
||||
QSizePolicy ListCasts::sizePolicy() const
|
||||
{
|
||||
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::addCartData()
|
||||
{
|
||||
QString cutname;
|
||||
RDCutDialog *cd=new RDCutDialog(&cutname,rdstation_conf,cast_system,
|
||||
&cast_filter,&cast_group,&cast_schedcode,
|
||||
cast_ripc->user());
|
||||
if(cd->exec()!=0) {
|
||||
delete cd;
|
||||
return;
|
||||
}
|
||||
delete cd;
|
||||
RDFeed::Error err;
|
||||
unsigned cast_id=list_feed->postCut(cast_user,rdstation_conf,cutname,&err,
|
||||
config->logXloadDebugData(),config);
|
||||
if(err!=RDFeed::ErrorOk) {
|
||||
QMessageBox::warning(this,tr("Posting Error"),RDFeed::errorString(err));
|
||||
return;
|
||||
}
|
||||
EditCast *edit_cast=new EditCast(cast_id,this);
|
||||
edit_cast->exec();
|
||||
RDListViewItem *item=new RDListViewItem(list_casts_view);
|
||||
item->setId(cast_id);
|
||||
RefreshItem(item);
|
||||
list_casts_view->setSelected(item,true);
|
||||
list_casts_view->ensureItemVisible(item);
|
||||
delete edit_cast;
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::addFileData()
|
||||
{
|
||||
QString srcfile=QFileDialog::getOpenFileName("",RD_AUDIO_FILE_FILTER,this);
|
||||
if(srcfile.isNull()) {
|
||||
return;
|
||||
}
|
||||
RDFeed::Error err;
|
||||
unsigned cast_id=list_feed->postFile(rdstation_conf,srcfile,&err,
|
||||
config->logXloadDebugData(),config);
|
||||
if(err!=RDFeed::ErrorOk) {
|
||||
QMessageBox::warning(this,tr("Posting Error"),RDFeed::errorString(err));
|
||||
return;
|
||||
}
|
||||
EditCast *edit_cast=new EditCast(cast_id,this);
|
||||
edit_cast->exec();
|
||||
RDListViewItem *item=new RDListViewItem(list_casts_view);
|
||||
item->setId(cast_id);
|
||||
RefreshItem(item);
|
||||
list_casts_view->setSelected(item,true);
|
||||
list_casts_view->ensureItemVisible(item);
|
||||
delete edit_cast;
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::editData()
|
||||
{
|
||||
RDListViewItem *item=(RDListViewItem *)list_casts_view->selectedItem();
|
||||
if(item==NULL) {
|
||||
return;
|
||||
}
|
||||
EditCast *edit_cast=new EditCast(item->id(),this);
|
||||
if(edit_cast->exec()==0) {
|
||||
RefreshItem(item);
|
||||
}
|
||||
delete edit_cast;
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::deleteData()
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
QString err_text;
|
||||
|
||||
RDListViewItem *item=(RDListViewItem *)list_casts_view->selectedItem();
|
||||
if(item==NULL) {
|
||||
return;
|
||||
}
|
||||
if(QMessageBox::question(this,tr("Delete Podcast"),
|
||||
tr("Are you sure you want to delete this podcast?"),
|
||||
QMessageBox::Yes,QMessageBox::No)==
|
||||
QMessageBox::No) {
|
||||
return;
|
||||
}
|
||||
|
||||
QProgressDialog *pd=
|
||||
new QProgressDialog(tr("Deleting Podcast..."),"Cancel",2,this);
|
||||
pd->setCaption(tr("Progress"));
|
||||
pd->setMinimumDuration(0);
|
||||
pd->setProgress(0);
|
||||
qApp->processEvents();
|
||||
sleep(1);
|
||||
qApp->processEvents();
|
||||
RDPodcast *cast=new RDPodcast(item->id());
|
||||
if(!cast->removeAudio(list_feed,&err_text,config->logXloadDebugData())) {
|
||||
if(QMessageBox::warning(this,tr("Remote Error"),
|
||||
tr("Unable to delete remote audio!\n")+
|
||||
tr("The server said: \"")+err_text+"\".\n\n"+
|
||||
tr("Continue deleting cast?"),
|
||||
QMessageBox::Yes,QMessageBox::No)==QMessageBox::No) {
|
||||
delete pd;
|
||||
delete cast;
|
||||
return;
|
||||
}
|
||||
}
|
||||
pd->setProgress(1);
|
||||
qApp->processEvents();
|
||||
sql=QString().sprintf("delete from PODCASTS where ID=%u",item->id());
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
sql=QString().sprintf("update FEEDS set LAST_BUILD_DATETIME=now() \
|
||||
where ID=%u",list_feed_id);
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
|
||||
RDDeleteCastCount(list_feed_id,item->id());
|
||||
|
||||
pd->reset();
|
||||
|
||||
delete pd;
|
||||
delete cast;
|
||||
delete item;
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::reportData()
|
||||
{
|
||||
PickReportDates *rd=new PickReportDates(list_feed_id,0);
|
||||
rd->exec();
|
||||
delete rd;
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::doubleClickedData(QListViewItem *item,const QPoint &pt,
|
||||
int col)
|
||||
{
|
||||
editData();
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::userChangedData()
|
||||
{
|
||||
list_cart_button->setEnabled(cast_user->addPodcast()&&(list_encoder_id>=0));
|
||||
list_file_button->setEnabled(cast_user->addPodcast()&&(list_encoder_id>=0));
|
||||
list_edit_button->setEnabled(cast_user->editPodcast());
|
||||
list_delete_button->setEnabled(cast_user->deletePodcast());
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::filterChangedData(const QString &str)
|
||||
{
|
||||
RefreshList();
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::notexpiredToggledData(bool state)
|
||||
{
|
||||
RefreshList();
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::activeToggledData(bool state)
|
||||
{
|
||||
RefreshList();
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::postProgressChangedData(int step)
|
||||
{
|
||||
list_progress_dialog->setProgress(step);
|
||||
if(step==list_progress_dialog->totalSteps()) {
|
||||
list_progress_dialog->reset();
|
||||
}
|
||||
qApp->processEvents();
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::closeData()
|
||||
{
|
||||
done(0);
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::resizeEvent(QResizeEvent *e)
|
||||
{
|
||||
list_filter_label->setGeometry(10,10,40,20);
|
||||
list_filter_edit->setGeometry(55,10,size().width()-65,20);
|
||||
list_unexpired_check->setGeometry(55,35,15,15);
|
||||
list_unexpired_label->setGeometry(75,33,200,20);
|
||||
list_active_check->setGeometry(300,35,15,15);
|
||||
list_active_label->setGeometry(320,33,200,20);
|
||||
list_casts_view->setGeometry(10,54,size().width()-20,size().height()-124);
|
||||
list_cart_button->setGeometry(10,size().height()-60,80,50);
|
||||
list_file_button->setGeometry(100,size().height()-60,80,50);
|
||||
list_edit_button->setGeometry(190,size().height()-60,80,50);
|
||||
list_delete_button->setGeometry(280,size().height()-60,80,50);
|
||||
list_report_button->setGeometry(415,size().height()-60,80,50);
|
||||
list_close_button->setGeometry(size().width()-90,size().height()-60,80,50);
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::RefreshList()
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
RDListViewItem *item;
|
||||
|
||||
list_casts_view->clear();
|
||||
sql=QString().sprintf("select ID from PODCASTS %s \
|
||||
order by ORIGIN_DATETIME",
|
||||
(const char *)RDCastSearch(list_feed_id,list_filter_edit->text(),
|
||||
list_unexpired_check->isChecked(),
|
||||
list_active_check->isChecked()));
|
||||
q=new RDSqlQuery(sql);
|
||||
while (q->next()) {
|
||||
item=new RDListViewItem(list_casts_view);
|
||||
item->setId(q->value(0).toInt());
|
||||
RefreshItem(item);
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::RefreshItem(RDListViewItem *item)
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
|
||||
sql=QString().sprintf("select STATUS,ITEM_TITLE,ORIGIN_DATETIME,SHELF_LIFE,\
|
||||
AUDIO_TIME,ITEM_DESCRIPTION,ITEM_CATEGORY,ITEM_LINK \
|
||||
from PODCASTS where ID=%d",item->id());
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
switch((RDPodcast::Status)q->value(0).toUInt()) {
|
||||
case RDPodcast::StatusActive:
|
||||
item->setPixmap(0,*list_greenball_map);
|
||||
break;
|
||||
|
||||
case RDPodcast::StatusPending:
|
||||
item->setPixmap(0,*list_redball_map);
|
||||
break;
|
||||
|
||||
case RDPodcast::StatusExpired:
|
||||
item->setPixmap(0,*list_whiteball_map);
|
||||
break;
|
||||
}
|
||||
item->setText(1,q->value(1).toString());
|
||||
item->setText(2,RDUtcToLocal(q->value(2).toDateTime()).
|
||||
toString("MM/dd/yyyy hh:mm:ss"));
|
||||
if(q->value(3).toInt()==0) {
|
||||
item->setText(3,tr("Never"));
|
||||
}
|
||||
else {
|
||||
item->setText(3,RDUtcToLocal(q->value(2).toDateTime()).
|
||||
addDays(q->value(3).toInt()).toString("MM/dd/yyyy"));
|
||||
}
|
||||
item->setText(4,RDGetTimeLength(q->value(4).toInt(),false,false));
|
||||
item->setText(5,q->value(5).toString());
|
||||
item->setText(6,q->value(6).toString());
|
||||
item->setText(7,q->value(7).toString());
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
|
||||
|
||||
void ListCasts::GetEncoderId()
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
|
||||
list_encoder_id=-1;
|
||||
RDFeed *feed=new RDFeed(list_feed_id);
|
||||
int format=feed->uploadFormat();
|
||||
delete feed;
|
||||
if((format>0)&&(format<100)) { // Built-in format
|
||||
list_encoder_id=format;
|
||||
return;
|
||||
}
|
||||
sql=QString().sprintf("select NAME from ENCODERS where ID=%d",format);
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
sql=QString().sprintf("select ID from ENCODERS \
|
||||
where (NAME=\"%s\")&&(STATION_NAME=\"%s\")",
|
||||
(const char *)RDEscapeString(q->value(0).toString()),
|
||||
(const char *)RDEscapeString(rdstation_conf->name()));
|
||||
delete q;
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
list_encoder_id=q->value(0).toInt();
|
||||
}
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
93
rdcastmanager/list_casts.h
Normal file
93
rdcastmanager/list_casts.h
Normal file
@@ -0,0 +1,93 @@
|
||||
// list_casts.h
|
||||
//
|
||||
// List Rivendell Casts
|
||||
//
|
||||
// (C) Copyright 2002-2007 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// $Id: list_casts.h,v 1.9 2010/07/29 19:32:36 cvs Exp $
|
||||
//
|
||||
// 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
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#ifndef LIST_CASTS_H
|
||||
#define LIST_CASTS_H
|
||||
|
||||
#include <qdialog.h>
|
||||
#include <qpixmap.h>
|
||||
#include <qradiobutton.h>
|
||||
#include <qsqldatabase.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qlineedit.h>
|
||||
#include <qcheckbox.h>
|
||||
#include <qlabel.h>
|
||||
#include <qprogressdialog.h>
|
||||
|
||||
#include <rdfeed.h>
|
||||
#include <rdlistviewitem.h>
|
||||
|
||||
|
||||
class ListCasts : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ListCasts(unsigned feed_id,QWidget *parent=0,const char *name=0);
|
||||
~ListCasts();
|
||||
QSize sizeHint() const;
|
||||
QSizePolicy sizePolicy() const;
|
||||
|
||||
private slots:
|
||||
void addCartData();
|
||||
void addFileData();
|
||||
void editData();
|
||||
void deleteData();
|
||||
void reportData();
|
||||
void doubleClickedData(QListViewItem *item,const QPoint &pt,int col);
|
||||
void userChangedData();
|
||||
void filterChangedData(const QString &str);
|
||||
void notexpiredToggledData(bool state);
|
||||
void activeToggledData(bool state);
|
||||
void postProgressChangedData(int step);
|
||||
void closeData();
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
|
||||
private:
|
||||
void RefreshList();
|
||||
void RefreshItem(RDListViewItem *item);
|
||||
void GetEncoderId();
|
||||
RDListView *list_casts_view;
|
||||
QPushButton *list_cart_button;
|
||||
QPushButton *list_file_button;
|
||||
QPushButton *list_edit_button;
|
||||
QPushButton *list_delete_button;
|
||||
QPushButton *list_report_button;
|
||||
QPushButton *list_close_button;
|
||||
QPixmap *list_redball_map;
|
||||
QPixmap *list_greenball_map;
|
||||
QPixmap *list_whiteball_map;
|
||||
unsigned list_feed_id;
|
||||
int list_encoder_id;
|
||||
QLabel *list_filter_label;
|
||||
QLineEdit *list_filter_edit;
|
||||
QLabel *list_unexpired_label;
|
||||
QCheckBox *list_unexpired_check;
|
||||
QLabel *list_active_label;
|
||||
QCheckBox *list_active_check;
|
||||
QProgressDialog *list_progress_dialog;
|
||||
RDFeed *list_feed;
|
||||
};
|
||||
|
||||
|
||||
#endif // LIST_CASTS_H
|
||||
320
rdcastmanager/pick_report_dates.cpp
Normal file
320
rdcastmanager/pick_report_dates.cpp
Normal file
@@ -0,0 +1,320 @@
|
||||
// pick_report_date.cpp
|
||||
//
|
||||
// Select a Set of Dates for a Rivendell Report
|
||||
//
|
||||
// (C) Copyright 2002-2006 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// $Id: pick_report_dates.cpp,v 1.5 2011/09/07 13:44:59 cvs Exp $
|
||||
//
|
||||
// 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
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#include <qpushbutton.h>
|
||||
#include <qlabel.h>
|
||||
#include <qmessagebox.h>
|
||||
#include <qfile.h>
|
||||
|
||||
#include <rddatedialog.h>
|
||||
#include <rdreport.h>
|
||||
#include <rddatedecode.h>
|
||||
#include <rddb.h>
|
||||
#include <rdtextfile.h>
|
||||
#include <rdfeed.h>
|
||||
#include <rdpodcast.h>
|
||||
|
||||
#include <globals.h>
|
||||
#include <pick_report_dates.h>
|
||||
|
||||
|
||||
PickReportDates::PickReportDates(unsigned feed_id,unsigned cast_id,
|
||||
QWidget *parent,const char *name)
|
||||
: QDialog(parent,name,true)
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
QDate yesterday_date=QDate::currentDate().addDays(-1);
|
||||
|
||||
edit_cast_id=feed_id;
|
||||
edit_cast_id=cast_id;
|
||||
setCaption(tr("Select Report Dates"));
|
||||
|
||||
sql=QString().sprintf("select KEY_NAME from FEEDS where ID=%d",feed_id);
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
edit_keyname=q->value(0).toString();
|
||||
}
|
||||
delete q;
|
||||
|
||||
//
|
||||
// Fix the Window Size
|
||||
//
|
||||
setMaximumWidth(sizeHint().width());
|
||||
setMaximumHeight(sizeHint().height());
|
||||
setMinimumWidth(sizeHint().width());
|
||||
setMinimumHeight(sizeHint().height());
|
||||
|
||||
//
|
||||
// Create Fonts
|
||||
//
|
||||
QFont bold_font=QFont("Helvetica",12,QFont::Bold);
|
||||
bold_font.setPixelSize(12);
|
||||
QFont font=QFont("Helvetica",12,QFont::Normal);
|
||||
font.setPixelSize(12);
|
||||
|
||||
//
|
||||
// Start Date
|
||||
//
|
||||
edit_startdate_edit=new QDateEdit(this,"edit_startdate_edit");
|
||||
edit_startdate_edit->setGeometry(150,10,100,20);
|
||||
edit_startdate_edit->setDate(yesterday_date.addMonths(-1));
|
||||
QLabel *label=new QLabel(edit_startdate_edit,tr("&Start Date:"),
|
||||
this,"edit_startdate_label");
|
||||
label->setGeometry(75,10,70,20);
|
||||
label->setFont(bold_font);
|
||||
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
QPushButton *button=new QPushButton(this,"startdate_button");
|
||||
button->setGeometry(260,7,50,27);
|
||||
button->setFont(font);
|
||||
button->setText(tr("&Select"));
|
||||
connect(button,SIGNAL(clicked()),this,SLOT(selectStartDateData()));
|
||||
|
||||
//
|
||||
// End Date
|
||||
//
|
||||
edit_enddate_edit=new QDateEdit(this,"edit_enddate_edit");
|
||||
edit_enddate_edit->setGeometry(150,40,100,20);
|
||||
edit_enddate_edit->setDate(yesterday_date);
|
||||
label=new QLabel(edit_enddate_edit,tr("&End Date:"),
|
||||
this,"edit_enddate_label");
|
||||
label->setGeometry(75,40,70,20);
|
||||
label->setFont(bold_font);
|
||||
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||
button=new QPushButton(this,"enddate_button");
|
||||
button->setGeometry(260,37,50,27);
|
||||
button->setFont(font);
|
||||
button->setText(tr("&Select"));
|
||||
connect(button,SIGNAL(clicked()),this,SLOT(selectEndDateData()));
|
||||
|
||||
//
|
||||
// Generate Button
|
||||
//
|
||||
button=new QPushButton(this,"list_purge_button");
|
||||
button->setGeometry(10,sizeHint().height()-60,80,50);
|
||||
button->setFont(bold_font);
|
||||
button->setText(tr("&Generate\nReport"));
|
||||
connect(button,SIGNAL(clicked()),this,SLOT(generateData()));
|
||||
|
||||
//
|
||||
// Close Button
|
||||
//
|
||||
button=new QPushButton(this,"close_button");
|
||||
button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50);
|
||||
button->setDefault(true);
|
||||
button->setFont(bold_font);
|
||||
button->setText(tr("C&lose"));
|
||||
connect(button,SIGNAL(clicked()),this,SLOT(closeData()));
|
||||
}
|
||||
|
||||
|
||||
PickReportDates::~PickReportDates()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
QSize PickReportDates::sizeHint() const
|
||||
{
|
||||
return QSize(400,134);
|
||||
}
|
||||
|
||||
|
||||
QSizePolicy PickReportDates::sizePolicy() const
|
||||
{
|
||||
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||||
}
|
||||
|
||||
|
||||
void PickReportDates::selectStartDateData()
|
||||
{
|
||||
RDDateDialog *dialog=new RDDateDialog(2002,QDate::currentDate().year(),this);
|
||||
QDate date=edit_startdate_edit->date();
|
||||
if(dialog->exec(&date)<0) {
|
||||
delete dialog;
|
||||
return;
|
||||
}
|
||||
edit_startdate_edit->setDate(date);
|
||||
edit_enddate_edit->setDate(date);
|
||||
delete dialog;
|
||||
}
|
||||
|
||||
|
||||
void PickReportDates::selectEndDateData()
|
||||
{
|
||||
RDDateDialog *dialog=new RDDateDialog(2002,QDate::currentDate().year(),this);
|
||||
QDate date=edit_enddate_edit->date();
|
||||
if(dialog->exec(&date)<0) {
|
||||
delete dialog;
|
||||
return;
|
||||
}
|
||||
edit_enddate_edit->setDate(date);
|
||||
delete dialog;
|
||||
}
|
||||
|
||||
|
||||
void PickReportDates::generateData()
|
||||
{
|
||||
QString report;
|
||||
if(edit_cast_id>0) {
|
||||
GenerateEpisodeReport(edit_keyname,edit_cast_id,&report);
|
||||
}
|
||||
else {
|
||||
GenerateSubscriptionReport(edit_keyname,&report);
|
||||
}
|
||||
RDTextFile(report);
|
||||
}
|
||||
|
||||
|
||||
void PickReportDates::closeData()
|
||||
{
|
||||
done(0);
|
||||
}
|
||||
|
||||
|
||||
void PickReportDates::GenerateSubscriptionReport(const QString &keyname,
|
||||
QString *rpt)
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
|
||||
RDFeed *feed=new RDFeed(keyname,this);
|
||||
unsigned total=0;
|
||||
unsigned rss_total=0;
|
||||
unsigned audio_total=0;
|
||||
|
||||
//
|
||||
// Header
|
||||
//
|
||||
*rpt+=" Rivendell Podcast Subscription Report\n";
|
||||
QString title=feed->channelTitle();
|
||||
for(unsigned i=0;i<((80-title.length())/2);i++) {
|
||||
*rpt+=" ";
|
||||
}
|
||||
*rpt+=title;
|
||||
*rpt+="\n\n";
|
||||
*rpt+=" ----- Downloads -----\n";
|
||||
*rpt+=" Date RSS Audio\n";
|
||||
*rpt+=" ---------------------------------------------\n";
|
||||
|
||||
//
|
||||
// Data Rows
|
||||
//
|
||||
QString keyname_esc=keyname;
|
||||
keyname_esc.replace(" ","_");
|
||||
sql=QString().sprintf("select ACCESS_DATE,ACCESS_COUNT,CAST_ID from %s_FLG \
|
||||
where (ACCESS_DATE>=\"%s\")&&(ACCESS_DATE<=\"%s\") \
|
||||
order by ACCESS_DATE,CAST_ID desc",
|
||||
(const char *)keyname_esc,
|
||||
(const char *)edit_startdate_edit->date().
|
||||
toString("yyyy-MM-dd"),
|
||||
(const char *)edit_enddate_edit->date().
|
||||
toString("yyyy-MM-dd"));
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
if(q->value(2).toUInt()==0) {
|
||||
*rpt+=QString().sprintf(" %s %9u %9u\n",
|
||||
(const char *)q->value(0).toDate().
|
||||
toString("MM/dd/yyyy"),
|
||||
q->value(1).toUInt(),total);
|
||||
total=0;
|
||||
rss_total+=q->value(1).toUInt();
|
||||
}
|
||||
else {
|
||||
total+=q->value(1).toUInt();
|
||||
audio_total+=q->value(1).toUInt();
|
||||
}
|
||||
}
|
||||
delete q;
|
||||
*rpt+=QString().sprintf(" ------------ ------------\n");
|
||||
*rpt+=QString().sprintf(" %9u %9u\n",
|
||||
rss_total,audio_total);
|
||||
|
||||
delete feed;
|
||||
}
|
||||
|
||||
|
||||
void PickReportDates::GenerateEpisodeReport(const QString &keyname,
|
||||
unsigned cast_id,QString *rpt)
|
||||
{
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
|
||||
RDFeed *feed=new RDFeed(keyname,this);
|
||||
RDPodcast *cast=new RDPodcast(cast_id);
|
||||
|
||||
//
|
||||
// Header
|
||||
//
|
||||
*rpt+=" Rivendell Podcast Episode Report\n";
|
||||
QString channel_title=feed->channelTitle();
|
||||
for(unsigned i=0;i<((80-channel_title.length())/2);i++) {
|
||||
*rpt+=" ";
|
||||
}
|
||||
*rpt+=channel_title;
|
||||
*rpt+="\n";
|
||||
QString item_title=cast->itemTitle();
|
||||
for(unsigned i=0;i<((80-item_title.length())/2);i++) {
|
||||
*rpt+=" ";
|
||||
}
|
||||
*rpt+=item_title;
|
||||
*rpt+="\n";
|
||||
*rpt+=QString().sprintf(" Posted on %s at %s\n\n",
|
||||
(const char *)cast->originDateTime().
|
||||
toString("MM/dd/yyyy"),
|
||||
(const char *)cast->originDateTime().
|
||||
toString("hh:mm:ss"));
|
||||
*rpt+=" Date Downloads\n";
|
||||
*rpt+=" --------------------------------\n";
|
||||
|
||||
//
|
||||
// Data Rows
|
||||
//
|
||||
unsigned total=0;
|
||||
QString keyname_esc=keyname;
|
||||
keyname_esc.replace(" ","_");
|
||||
sql=QString().sprintf("select ACCESS_DATE,ACCESS_COUNT from %s_FLG \
|
||||
where (ACCESS_DATE>=\"%s\")&&(ACCESS_DATE<=\"%s\")&& \
|
||||
(CAST_ID=%u) order by ACCESS_DATE",
|
||||
(const char *)keyname_esc,
|
||||
(const char *)edit_startdate_edit->date().
|
||||
toString("yyyy-MM-dd"),
|
||||
(const char *)edit_enddate_edit->date().
|
||||
toString("yyyy-MM-dd"),
|
||||
cast_id);
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
*rpt+=QString().sprintf(" %s %9u\n",
|
||||
(const char *)q->value(0).toDate().
|
||||
toString("MM/dd/yyyy"),
|
||||
q->value(1).toUInt());
|
||||
total+=q->value(1).toUInt();
|
||||
}
|
||||
delete q;
|
||||
|
||||
*rpt+=QString().
|
||||
sprintf(" ------------\n");
|
||||
*rpt+=QString().
|
||||
sprintf(" %9u\n",total);
|
||||
|
||||
delete cast;
|
||||
delete feed;
|
||||
}
|
||||
60
rdcastmanager/pick_report_dates.h
Normal file
60
rdcastmanager/pick_report_dates.h
Normal file
@@ -0,0 +1,60 @@
|
||||
// pick_report_date.h
|
||||
//
|
||||
// Select a Set of Dates for a Rivendell Podcast Report
|
||||
//
|
||||
// (C) Copyright 2002-2007 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// $Id: pick_report_dates.h,v 1.3 2010/07/29 19:32:36 cvs Exp $
|
||||
//
|
||||
// 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
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#ifndef PICK_REPORT_DATE_H
|
||||
#define PICK_REPORT_DATE_H
|
||||
|
||||
#include <qdialog.h>
|
||||
#include <qsqldatabase.h>
|
||||
#include <qcombobox.h>
|
||||
#include <qdatetimeedit.h>
|
||||
|
||||
|
||||
class PickReportDates : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
PickReportDates(unsigned feed_id,unsigned cast_id,
|
||||
QWidget *parent=0,const char *name=0);
|
||||
~PickReportDates();
|
||||
QSize sizeHint() const;
|
||||
QSizePolicy sizePolicy() const;
|
||||
|
||||
private slots:
|
||||
void selectStartDateData();
|
||||
void selectEndDateData();
|
||||
void generateData();
|
||||
void closeData();
|
||||
|
||||
private:
|
||||
void GenerateSubscriptionReport(const QString &keyname,QString *rpt);
|
||||
void GenerateEpisodeReport(const QString &keyname,unsigned cast_id,
|
||||
QString *rpt);
|
||||
QDateEdit *edit_startdate_edit;
|
||||
QDateEdit *edit_enddate_edit;
|
||||
QString edit_keyname;
|
||||
unsigned edit_feed_id;
|
||||
unsigned edit_cast_id;
|
||||
};
|
||||
|
||||
|
||||
#endif // PICK_REPORT_DATES_H
|
||||
403
rdcastmanager/rdcastmanager.cpp
Normal file
403
rdcastmanager/rdcastmanager.cpp
Normal file
@@ -0,0 +1,403 @@
|
||||
// rdcastmanager.cpp
|
||||
//
|
||||
// A PodCast Management Utility for Rivendell.
|
||||
//
|
||||
// (C) Copyright 2002-2005 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// $Id: rdcastmanager.cpp,v 1.15.4.3 2014/01/21 21:59:31 cvs Exp $
|
||||
//
|
||||
// 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
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#ifndef WIN32
|
||||
#include <signal.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#include <qapplication.h>
|
||||
#include <qwindowsstyle.h>
|
||||
#include <qwidget.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qlabel.h>
|
||||
#include <qtextcodec.h>
|
||||
#include <qtranslator.h>
|
||||
#include <qsettings.h>
|
||||
#include <qpainter.h>
|
||||
#include <qmessagebox.h>
|
||||
|
||||
#include <rd.h>
|
||||
#include <rdconf.h>
|
||||
#include <rduser.h>
|
||||
#include <rdripc.h>
|
||||
#include <rdcastmanager.h>
|
||||
#include <rdcmd_switch.h>
|
||||
#include <rddb.h>
|
||||
#include <rdpodcast.h>
|
||||
#include <dbversion.h>
|
||||
|
||||
#include <list_casts.h>
|
||||
#include <globals.h>
|
||||
|
||||
//
|
||||
// Icons
|
||||
//
|
||||
#include "../icons/rivendell-22x22.xpm"
|
||||
#include "../icons/greencheckmark.xpm"
|
||||
#include "../icons/redx.xpm"
|
||||
|
||||
//
|
||||
// Global Resources
|
||||
//
|
||||
QString cast_filter;
|
||||
QString cast_group;
|
||||
QString cast_schedcode;
|
||||
RDUser *cast_user;
|
||||
RDRipc *cast_ripc;
|
||||
RDStation *rdstation_conf;
|
||||
RDConfig *config;
|
||||
RDSystem *cast_system=NULL;
|
||||
|
||||
MainWidget::MainWidget(QWidget *parent,const char *name,WFlags f)
|
||||
:QMainWindow(parent,name,f)
|
||||
{
|
||||
QString str1;
|
||||
QString str2;
|
||||
bool skip_db_check=false;
|
||||
unsigned schema=0;
|
||||
|
||||
//
|
||||
// Read Command Options
|
||||
//
|
||||
RDCmdSwitch *cmd=
|
||||
new RDCmdSwitch(qApp->argc(),qApp->argv(),"rdcastmanager","\n");
|
||||
for(unsigned i=0;i<cmd->keys();i++) {
|
||||
if(cmd->key(i)=="--skip-db-check") {
|
||||
skip_db_check=true;
|
||||
}
|
||||
}
|
||||
delete cmd;
|
||||
|
||||
//
|
||||
// Fix the Window Size
|
||||
//
|
||||
setMinimumWidth(sizeHint().width());
|
||||
setMinimumHeight(sizeHint().height());
|
||||
|
||||
//
|
||||
// Load Local Configs
|
||||
//
|
||||
config=new RDConfig();
|
||||
config->load();
|
||||
str1=QString("RDCastManager")+" v"+VERSION+" - "+tr("Host");
|
||||
str2=QString(tr("User: [Unknown]"));
|
||||
setCaption(QString().sprintf("%s: %s, %s",(const char *)str1,
|
||||
(const char *)config->stationName(),
|
||||
(const char *)str2));
|
||||
|
||||
//
|
||||
// Open Database
|
||||
//
|
||||
QString err;
|
||||
QSqlDatabase *db=RDInitDb(&schema,&err);
|
||||
if(!db) {
|
||||
QMessageBox::warning(this,tr("Can't Connect"),err);
|
||||
exit(0);
|
||||
}
|
||||
if((schema!=RD_VERSION_DATABASE)&&(!skip_db_check)) {
|
||||
fprintf(stderr,
|
||||
"rdcastmanager: database version mismatch, should be %u, is %u\n",
|
||||
RD_VERSION_DATABASE,schema);
|
||||
exit(256);
|
||||
}
|
||||
|
||||
//
|
||||
// RIPC Connection
|
||||
//
|
||||
#ifndef WIN32
|
||||
cast_ripc=new RDRipc(config->stationName());
|
||||
connect(cast_ripc,SIGNAL(userChanged()),this,SLOT(userChangedData()));
|
||||
cast_ripc->connectHost("localhost",RIPCD_TCP_PORT,config->password());
|
||||
#else
|
||||
cast_ripc=NULL;
|
||||
#endif // WIN32
|
||||
|
||||
//
|
||||
// Station Configuration
|
||||
//
|
||||
rdstation_conf=new RDStation(config->stationName(),this);
|
||||
cast_system=new RDSystem();
|
||||
|
||||
//
|
||||
// User
|
||||
//
|
||||
#ifndef WIN32
|
||||
cast_user=NULL;
|
||||
#else
|
||||
cast_user=new RDUser(RD_USER_LOGIN_NAME);
|
||||
#endif // WIN32
|
||||
|
||||
//
|
||||
// Create Fonts
|
||||
//
|
||||
QFont default_font("Helvetica",12,QFont::Normal);
|
||||
default_font.setPixelSize(12);
|
||||
qApp->setFont(default_font);
|
||||
QFont button_font=QFont("Helvetica",12,QFont::Bold);
|
||||
button_font.setPixelSize(12);
|
||||
|
||||
//
|
||||
// Create Icons
|
||||
//
|
||||
cast_rivendell_map=new QPixmap(rivendell_xpm);
|
||||
setIcon(*cast_rivendell_map);
|
||||
cast_greencheckmark_map=new QPixmap(greencheckmark_xpm);
|
||||
cast_redx_map=new QPixmap(redx_xpm);
|
||||
|
||||
//
|
||||
// Feed List
|
||||
//
|
||||
cast_feed_list=new RDListView(this,"cast_feed_list");
|
||||
cast_feed_list->setFont(default_font);
|
||||
cast_feed_list->setAllColumnsShowFocus(true);
|
||||
cast_feed_list->setItemMargin(5);
|
||||
connect(cast_feed_list,
|
||||
SIGNAL(doubleClicked(QListViewItem *,const QPoint &,int)),
|
||||
this,
|
||||
SLOT(feedDoubleclickedData(QListViewItem *,const QPoint &,int)));
|
||||
cast_feed_list->addColumn("");
|
||||
cast_feed_list->setColumnAlignment(0,Qt::AlignCenter);
|
||||
cast_feed_list->addColumn(tr("Key Name"));
|
||||
cast_feed_list->setColumnAlignment(1,Qt::AlignHCenter);
|
||||
cast_feed_list->addColumn(tr("Feed Name"));
|
||||
cast_feed_list->setColumnAlignment(2,Qt::AlignLeft);
|
||||
cast_feed_list->addColumn(tr("Description"));
|
||||
cast_feed_list->setColumnAlignment(3,Qt::AlignLeft);
|
||||
cast_feed_list->addColumn(tr("Casts"));
|
||||
cast_feed_list->setColumnAlignment(3,Qt::AlignCenter);
|
||||
|
||||
//
|
||||
// Open Button
|
||||
//
|
||||
cast_open_button=new QPushButton(this,"cast_open_button");
|
||||
cast_open_button->setFont(button_font);
|
||||
cast_open_button->setText(tr("&View\nFeed"));
|
||||
connect(cast_open_button,SIGNAL(clicked()),this,SLOT(openData()));
|
||||
|
||||
//
|
||||
// Close Button
|
||||
//
|
||||
cast_close_button=new QPushButton(this,"cast_close_button");
|
||||
cast_close_button->setFont(button_font);
|
||||
cast_close_button->setText(tr("&Close"));
|
||||
connect(cast_close_button,SIGNAL(clicked()),this,SLOT(quitMainWidget()));
|
||||
}
|
||||
|
||||
|
||||
QSize MainWidget::sizeHint() const
|
||||
{
|
||||
return QSize(640,480);
|
||||
}
|
||||
|
||||
|
||||
QSizePolicy MainWidget::sizePolicy() const
|
||||
{
|
||||
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::userChangedData()
|
||||
{
|
||||
QString str1;
|
||||
QString str2;
|
||||
|
||||
if(cast_user!=NULL) {
|
||||
delete cast_user;
|
||||
}
|
||||
str1=QString("RDCastManager")+" v"+VERSION+" - "+tr("Host");
|
||||
str2=QString(tr("User"));
|
||||
setCaption(QString().sprintf("%s: %s, %s: %s",(const char *)str1,
|
||||
(const char *)config->stationName(),
|
||||
(const char *)str2,
|
||||
(const char *)cast_ripc->user()));
|
||||
cast_user=new RDUser(cast_ripc->user());
|
||||
RefreshList();
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::openData()
|
||||
{
|
||||
RDListViewItem *item=(RDListViewItem *)cast_feed_list->selectedItem();
|
||||
if(item==NULL) {
|
||||
return;
|
||||
}
|
||||
ListCasts *casts=new ListCasts(item->id(),this);
|
||||
casts->exec();
|
||||
RefreshItem(item);
|
||||
delete casts;
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::feedDoubleclickedData(QListViewItem *,const QPoint &,int)
|
||||
{
|
||||
openData();
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::quitMainWidget()
|
||||
{
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::resizeEvent(QResizeEvent *e)
|
||||
{
|
||||
cast_feed_list->setGeometry(10,10,size().width()-20,size().height()-70);
|
||||
cast_open_button->setGeometry(10,size().height()-55,80,50);
|
||||
cast_close_button->setGeometry(size().width()-90,size().height()-55,80,50);
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::RefreshItem(RDListViewItem *item)
|
||||
{
|
||||
RDSqlQuery *q;
|
||||
RDSqlQuery *q1;
|
||||
QString sql;
|
||||
int active=0;
|
||||
int total=0;
|
||||
|
||||
sql=QString().sprintf("select CHANNEL_TITLE,CHANNEL_DESCRIPTION,ID \
|
||||
from FEEDS where KEY_NAME=\"%s\"",
|
||||
(const char *)item->text(1));
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
sql=QString().sprintf("select STATUS from PODCASTS where FEED_ID=%u",
|
||||
q->value(2).toUInt());
|
||||
q1=new RDSqlQuery(sql);
|
||||
while(q1->next()) {
|
||||
total++;
|
||||
switch((RDPodcast::Status)q1->value(0).toUInt()) {
|
||||
case RDPodcast::StatusActive:
|
||||
case RDPodcast::StatusExpired:
|
||||
active++;
|
||||
break;
|
||||
|
||||
case RDPodcast::StatusPending:
|
||||
break;
|
||||
}
|
||||
}
|
||||
delete q1;
|
||||
if(active==total) {
|
||||
item->setPixmap(0,*cast_greencheckmark_map);
|
||||
}
|
||||
else {
|
||||
item->setPixmap(0,*cast_redx_map);
|
||||
}
|
||||
item->setText(2,q->value(0).toString());
|
||||
item->setText(3,q->value(1).toString());
|
||||
item->setText(4,QString().sprintf("%d / %d",active,total));
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::RefreshList()
|
||||
{
|
||||
RDSqlQuery *q;
|
||||
QString sql;
|
||||
int id=-1;
|
||||
RDListViewItem *selected_item=NULL;
|
||||
RDListViewItem *item=(RDListViewItem *)cast_feed_list->selectedItem();
|
||||
if(item!=NULL) {
|
||||
id=item->id();
|
||||
}
|
||||
cast_feed_list->clear();
|
||||
sql=QString().sprintf("select KEY_NAME from FEED_PERMS \
|
||||
where USER_NAME=\"%s\"",
|
||||
(const char *)cast_user->name());
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->size()<=0) { // No valid feeds!
|
||||
delete q;
|
||||
return;
|
||||
}
|
||||
sql="select ID,KEY_NAME from FEEDS where ";
|
||||
while(q->next()) {
|
||||
sql+=QString().sprintf("(KEY_NAME=\"%s\")||",
|
||||
(const char *)q->value(0).toString());
|
||||
}
|
||||
delete q;
|
||||
sql=sql.left(sql.length()-2);
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
item=new RDListViewItem(cast_feed_list);
|
||||
item->setId(q->value(0).toInt());
|
||||
item->setText(1,q->value(1).toString());
|
||||
RefreshItem(item);
|
||||
if(item->id()==id) {
|
||||
selected_item=item;
|
||||
}
|
||||
}
|
||||
delete q;
|
||||
if(selected_item!=NULL) {
|
||||
cast_feed_list->setSelected(selected_item,true);
|
||||
cast_feed_list->ensureItemVisible(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(int argc,char *argv[])
|
||||
{
|
||||
QApplication a(argc,argv);
|
||||
|
||||
//
|
||||
// Load Translations
|
||||
//
|
||||
QString tr_path;
|
||||
QString qt_path;
|
||||
#ifdef WIN32
|
||||
QSettings settings;
|
||||
settings.insertSearchPath(QSettings::Windows,"/SalemRadioLabs");
|
||||
tr_path=QString().sprintf("%s\\",
|
||||
(const char *)settings.
|
||||
readEntry("/Rivendell/InstallDir"));
|
||||
qt_path=tr_path;
|
||||
#else
|
||||
tr_path=QString(PREFIX)+QString("/share/rivendell/");
|
||||
qt_path=QString(QTDIR)+QString("/translation/");
|
||||
#endif // WIN32
|
||||
QTranslator qt(0);
|
||||
qt.load(qt_path+QString("qt_")+QTextCodec::locale(),".");
|
||||
a.installTranslator(&qt);
|
||||
|
||||
QTranslator rd(0);
|
||||
rd.load(tr_path+QString("librd_")+QTextCodec::locale(),".");
|
||||
a.installTranslator(&rd);
|
||||
|
||||
QTranslator rdhpi(0);
|
||||
rdhpi.load(tr_path+QString("librdhpi_")+QTextCodec::locale(),".");
|
||||
a.installTranslator(&rdhpi);
|
||||
|
||||
QTranslator tr(0);
|
||||
tr.load(tr_path+QString("rdcastmanager_")+QTextCodec::locale(),".");
|
||||
a.installTranslator(&tr);
|
||||
|
||||
//
|
||||
// Start Event Loop
|
||||
//
|
||||
MainWidget *w=new MainWidget(NULL,"main",0);
|
||||
a.setMainWidget(w);
|
||||
w->setGeometry(w->geometry().x(),w->geometry().y(),w->sizeHint().width(),w->sizeHint().height());
|
||||
w->show();
|
||||
return a.exec();
|
||||
}
|
||||
73
rdcastmanager/rdcastmanager.h
Normal file
73
rdcastmanager/rdcastmanager.h
Normal file
@@ -0,0 +1,73 @@
|
||||
// rdcastmanager.h
|
||||
//
|
||||
// A RSS Feed Management Utility for Rivendell.
|
||||
//
|
||||
// (C) Copyright 2002-2007 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// $Id: rdcastmanager.h,v 1.6 2010/07/29 19:32:36 cvs Exp $
|
||||
//
|
||||
// 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
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public
|
||||
// License along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
|
||||
#ifndef RDCASTMANAGER_H
|
||||
#define RDCASTMANAGER_H
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <qmainwindow.h>
|
||||
#include <qsize.h>
|
||||
#include <qsizepolicy.h>
|
||||
#include <qsqldatabase.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qpixmap.h>
|
||||
|
||||
#include <rdlistview.h>
|
||||
#include <rduser.h>
|
||||
#include <rdripc.h>
|
||||
#include <rdlibrary_conf.h>
|
||||
#include <rdlog_line.h>
|
||||
#include <rdconfig.h>
|
||||
|
||||
|
||||
class MainWidget : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MainWidget(QWidget *parent=0,const char *name=0,WFlags f=0);
|
||||
QSize sizeHint() const;
|
||||
QSizePolicy sizePolicy() const;
|
||||
|
||||
private slots:
|
||||
void openData();
|
||||
void userChangedData();
|
||||
void feedDoubleclickedData(QListViewItem *item,const QPoint &pt,int col);
|
||||
void quitMainWidget();
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
|
||||
private:
|
||||
void RefreshItem(RDListViewItem *item);
|
||||
void RefreshList();
|
||||
RDListView *cast_feed_list;
|
||||
QPixmap *cast_rivendell_map;
|
||||
QPixmap *cast_greencheckmark_map;
|
||||
QPixmap *cast_redx_map;
|
||||
QPushButton *cast_open_button;
|
||||
QPushButton *cast_close_button;
|
||||
};
|
||||
|
||||
|
||||
#endif // RDCASTMANAGER_H
|
||||
59
rdcastmanager/rdcastmanager.pro
Normal file
59
rdcastmanager/rdcastmanager.pro
Normal file
@@ -0,0 +1,59 @@
|
||||
# rdcastmanager.pro
|
||||
#
|
||||
# The rdcastmanager/ QMake project file for Rivendell
|
||||
#
|
||||
# (C) Copyright 2003-2004 Fred Gleason <fredg@paravelsystems.com>
|
||||
#
|
||||
# $Id: rdcastmanager.pro,v 1.5.2.1 2013/01/01 21:36:30 cvs Exp $
|
||||
#
|
||||
# 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
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
TEMPLATE = app
|
||||
|
||||
TARGET = rdlogmanager
|
||||
|
||||
win32 {
|
||||
DEFINES += WIN32
|
||||
DEFINES += VERSION=\"$$[VERSION]\"
|
||||
DEFINES += PACKAGE=\"rivendell\"
|
||||
DEFINES += PACKAGE_VERSION=\"$$[VERSION]\"
|
||||
DEFINES += PACKAGE_NAME=\"rivendell\"
|
||||
DEFINES += PACKAGE_BUGREPORT=\"fredg@paravelsystems.com\"
|
||||
}
|
||||
|
||||
SOURCES += rdcastmanager.cpp
|
||||
SOURCES += edit_cast.cpp
|
||||
SOURCES += list_casts.cpp
|
||||
SOURCES += pick_report_dates.cpp
|
||||
|
||||
HEADERS += rdcastmanager.h
|
||||
HEADERS += edit_cast.h
|
||||
HEADERS += list_casts.h
|
||||
HEADERS += pick_report_dates.h
|
||||
|
||||
RES_FILE += ..\icons\rivendell.res
|
||||
|
||||
INCLUDEPATH += ..\lib
|
||||
|
||||
LIBS = -lqui -L..\lib -llib
|
||||
|
||||
CONFIG += qt
|
||||
|
||||
TRANSLATIONS += rdcastmanager_cs.ts
|
||||
TRANSLATIONS += rdcastmanager_de.ts
|
||||
TRANSLATIONS += rdcastmanager_es.ts
|
||||
TRANSLATIONS += rdcastmanager_fr.ts
|
||||
TRANSLATIONS += rdcastmanager_nb.ts
|
||||
TRANSLATIONS += rdcastmanager_nn.ts
|
||||
TRANSLATIONS += rdcastmanager_pt_BR.ts
|
||||
367
rdcastmanager/rdcastmanager_cs.ts
Normal file
367
rdcastmanager/rdcastmanager_cs.ts
Normal file
@@ -0,0 +1,367 @@
|
||||
<!DOCTYPE TS><TS>
|
||||
<context>
|
||||
<name>EditCast</name>
|
||||
<message>
|
||||
<source>Editing PodCast</source>
|
||||
<translation>Upravit podcast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title:</source>
|
||||
<translation>Název:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Author E-Mail:</source>
|
||||
<translation>Adresa el. pošty autora:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category:</source>
|
||||
<translation>Skupina:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link URL:</source>
|
||||
<translation>Adresa (URL) odkazu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description:</source>
|
||||
<translation>Popis:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source Text:</source>
|
||||
<translation>Zdrojový text:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source URL:</source>
|
||||
<translation>Adresa (URL) zdroje:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comments URL:</source>
|
||||
<translation>Adresa (URL) poznámky:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posted At:</source>
|
||||
<translation>Vyvěšeno:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No</source>
|
||||
<translation>Ne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Yes</source>
|
||||
<translation>Ano</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast Expires:</source>
|
||||
<translation>Přestane platit:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires At:</source>
|
||||
<translation type="obsolete">Läuft ab am/um:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation>&Vybrat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hold</source>
|
||||
<translation>Držet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active</source>
|
||||
<translation>Činný</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Status:</source>
|
||||
<translation>Stav vyvěšení:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episode
|
||||
&Report</source>
|
||||
<translation>&Zpráva o
|
||||
dílu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation>&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation>Z&rušit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Air Date/Time:</source>
|
||||
<translation>Datum/Čas poslání:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Link:</source>
|
||||
<translation>Multimediální odkaz:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires On:</source>
|
||||
<translation>Přestane platit:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListCasts</name>
|
||||
<message>
|
||||
<source>Podcast List</source>
|
||||
<translation>Seznam podcastů</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
Car&t/Cut</source>
|
||||
<translation>Vyvěsit z
|
||||
vozí&ku/záběru</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
&File</source>
|
||||
<translation>Vyvěsit ze
|
||||
&souboru</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>&Upravit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Delete</source>
|
||||
<translation>S&mazat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subscription
|
||||
&Report</source>
|
||||
<translation>Zpráva o
|
||||
&odběru</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>&Zavřít</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source></source>
|
||||
<translation>Project-Id-Version: amarok
|
||||
Report-Msgid-Bugs-To: http://bugs.kde.org
|
||||
POT-Creation-Date: 2010-05-20 04:55+0200
|
||||
PO-Revision-Date: 2010-05-22 09:34+0200
|
||||
Last-Translator: Pavel Fric
|
||||
Language-Team: Czech <kde-i18n-doc@kde.org>
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
X-Generator: Lokalize 1.0
|
||||
Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title</source>
|
||||
<translation>Název</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Origin</source>
|
||||
<translation>Původ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires</source>
|
||||
<translation>Přestane platit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation>Délka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category</source>
|
||||
<translation>Skupina</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link</source>
|
||||
<translation>Odkaz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uploading Audio...</source>
|
||||
<translation>Nahrává se zvuk...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Progress</source>
|
||||
<translation>Postup</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Format Error</source>
|
||||
<translation type="obsolete">Formatfehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to convert audio file!</source>
|
||||
<translation type="obsolete">Kann die Audiodatei nicht konvertieren!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Error</source>
|
||||
<translation type="obsolete">Fehler beim Hochladen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to upload audio file!</source>
|
||||
<translation type="obsolete">Kann die Audiodatei nicht hochladen!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Podcast</source>
|
||||
<translation>Smazat podcast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to delete this podcast?</source>
|
||||
<translation>Opravdu chcete smazat tento podcast?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Deleting Podcast...</source>
|
||||
<translation>Maže se podcast...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal Error</source>
|
||||
<translation type="obsolete">Interner Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to generate purge command!</source>
|
||||
<translation type="obsolete">Kann den Löschbefehl nicht generieren!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remote Error</source>
|
||||
<translation>Chyba u protistrany</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
Continue deleting cast?</source>
|
||||
<translation type="obsolete">Kann das entfernte Audio nicht Löschen!
|
||||
Podcast trotzdem löschen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Never</source>
|
||||
<translation>Nikdy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File Error</source>
|
||||
<translation type="obsolete">Dateifehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File does not exist!</source>
|
||||
<translation type="obsolete">Datei existiert nicht!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot open file!</source>
|
||||
<translation type="obsolete">Kann die Datei nicht öffnen!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported file type!</source>
|
||||
<translation type="obsolete">Nicht unterstützter Dateityp!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> </source>
|
||||
<translation> </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Filter:</source>
|
||||
<translation>Filtr:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Unexpired Casts</source>
|
||||
<translation>Ukázat jen podcasty, co platí</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Active Casts</source>
|
||||
<translation>Ukázat jen činné podcasty</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Error</source>
|
||||
<translation>Chyba při vyvěšení</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
</source>
|
||||
<translation>Nelze smazat soubory se zvukem na jiném serveru!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The server said: "</source>
|
||||
<translation>Server hlásí: "</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Continue deleting cast?</source>
|
||||
<translation>Pokračovat v mazání podcastu?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
<message>
|
||||
<source>RDCastManager - Host</source>
|
||||
<translation type="obsolete">RDCastManager - Server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User: [Unknown]</source>
|
||||
<translation>Uživatel: [Neznámý]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't Connect</source>
|
||||
<translation>Nelze spojit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key Name</source>
|
||||
<translation>Název klíče</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed Name</source>
|
||||
<translation>Název přívodu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Popis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Casts</source>
|
||||
<translation>Podcasty</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&View
|
||||
Feed</source>
|
||||
<translation>&Zobrazit
|
||||
přívod</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>&Zavřít</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User</source>
|
||||
<translation>Uživatel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Host</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
<message>
|
||||
<source>Select Report Dates</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Start Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation type="unfinished">&Vybrat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&End Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Generate
|
||||
Report</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&lose</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
356
rdcastmanager/rdcastmanager_de.ts
Normal file
356
rdcastmanager/rdcastmanager_de.ts
Normal file
@@ -0,0 +1,356 @@
|
||||
<!DOCTYPE TS><TS>
|
||||
<context>
|
||||
<name>EditCast</name>
|
||||
<message>
|
||||
<source>Editing PodCast</source>
|
||||
<translation>Podcast editieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title:</source>
|
||||
<translation>Titel:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Author E-Mail:</source>
|
||||
<translation>eMail des Autors:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category:</source>
|
||||
<translation>Kategorie:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link URL:</source>
|
||||
<translation>Link URL:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description:</source>
|
||||
<translation>Beschreibung:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source Text:</source>
|
||||
<translation>Quelltext:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source URL:</source>
|
||||
<translation>Quell-URL:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comments URL:</source>
|
||||
<translation>Kommentar-URL:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posted At:</source>
|
||||
<translation>Gepostet am:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No</source>
|
||||
<translation>Nein</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Yes</source>
|
||||
<translation>Ja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast Expires:</source>
|
||||
<translation>Cast läuft ab:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires At:</source>
|
||||
<translation type="obsolete">Läuft ab am/um:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation>&Auswählen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hold</source>
|
||||
<translation>Hold</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active</source>
|
||||
<translation>Aktiv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Status:</source>
|
||||
<translation>Posting Status:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episode
|
||||
&Report</source>
|
||||
<translation>Episoden-
|
||||
&Report</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation>&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation>Abbre&chen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Air Date/Time:</source>
|
||||
<translation>Sendezeit/-Datum:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Link:</source>
|
||||
<translation>Medienlink:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires On:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListCasts</name>
|
||||
<message>
|
||||
<source>Podcast List</source>
|
||||
<translation>Podcastliste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
Car&t/Cut</source>
|
||||
<translation>Poste von
|
||||
Car&t/Cut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
&File</source>
|
||||
<translation>Poste von
|
||||
&Datei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>&Editieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Delete</source>
|
||||
<translation>&Löschen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subscription
|
||||
&Report</source>
|
||||
<translation>Abonnement
|
||||
&Report</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>S&chliessen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title</source>
|
||||
<translation>Titel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Origin</source>
|
||||
<translation>Herkunft</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires</source>
|
||||
<translation>Läuf ab</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation>Länge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Beschreibung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category</source>
|
||||
<translation>Kategorie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link</source>
|
||||
<translation>Link</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uploading Audio...</source>
|
||||
<translation>Lade Audio hoch...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Progress</source>
|
||||
<translation>Fortschritt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Format Error</source>
|
||||
<translation type="obsolete">Formatfehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to convert audio file!</source>
|
||||
<translation type="obsolete">Kann die Audiodatei nicht konvertieren!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Error</source>
|
||||
<translation type="obsolete">Fehler beim Hochladen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to upload audio file!</source>
|
||||
<translation type="obsolete">Kann die Audiodatei nicht hochladen!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Podcast</source>
|
||||
<translation>Podcast löschen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to delete this podcast?</source>
|
||||
<translation>Sind Sie sicher, daß sie diesen Podcast löschen wollen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Deleting Podcast...</source>
|
||||
<translation>Lösche Podcast...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal Error</source>
|
||||
<translation type="obsolete">Interner Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to generate purge command!</source>
|
||||
<translation type="obsolete">Kann den Löschbefehl nicht generieren!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remote Error</source>
|
||||
<translation>Fehler an Gegenstelle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
Continue deleting cast?</source>
|
||||
<translation type="obsolete">Kann das entfernte Audio nicht Löschen!
|
||||
Podcast trotzdem löschen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Never</source>
|
||||
<translation>Nie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File Error</source>
|
||||
<translation type="obsolete">Dateifehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File does not exist!</source>
|
||||
<translation type="obsolete">Datei existiert nicht!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot open file!</source>
|
||||
<translation type="obsolete">Kann die Datei nicht öffnen!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported file type!</source>
|
||||
<translation type="obsolete">Nicht unterstützter Dateityp!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> </source>
|
||||
<translation> </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Filter:</source>
|
||||
<translation>Filter:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Unexpired Casts</source>
|
||||
<translation>Zeige nur nichtabgelaufene Casts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Active Casts</source>
|
||||
<translation>Zeige nur aktive Casts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Error</source>
|
||||
<translation>Fehler beim posten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
</source>
|
||||
<translation>Kann die Audiodatei(en) auf dem anderen Server nicht löschen!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The server said: "</source>
|
||||
<translation>Der Server meldet: "</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Continue deleting cast?</source>
|
||||
<translation>Löschen des Podcasts fortsetzen?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
<message>
|
||||
<source>RDCastManager - Host</source>
|
||||
<translation type="obsolete">RDCastManager - Host</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User: [Unknown]</source>
|
||||
<translation>Benutzer: [Unbekannt]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't Connect</source>
|
||||
<translation>Kann mich nicht verbinden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key Name</source>
|
||||
<translation>Schlüsselname</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed Name</source>
|
||||
<translation>Feedname</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Beschreibung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Casts</source>
|
||||
<translation>Casts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&View
|
||||
Feed</source>
|
||||
<translation>&Zeige
|
||||
Feed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>S&chliessen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User</source>
|
||||
<translation>Benutzer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Host</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
<message>
|
||||
<source>Select Report Dates</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Start Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation type="unfinished">&Auswählen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&End Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Generate
|
||||
Report</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&lose</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
307
rdcastmanager/rdcastmanager_es.ts
Normal file
307
rdcastmanager/rdcastmanager_es.ts
Normal file
@@ -0,0 +1,307 @@
|
||||
<!DOCTYPE TS><TS>
|
||||
<context>
|
||||
<name>EditCast</name>
|
||||
<message>
|
||||
<source>Editing PodCast</source>
|
||||
<translation>Editando PodCast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title:</source>
|
||||
<translation>Título:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category:</source>
|
||||
<translation>Categoría:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description:</source>
|
||||
<translation>Descripción:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posted At:</source>
|
||||
<translation>Colocado el:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No</source>
|
||||
<translation>No</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Yes</source>
|
||||
<translation>Sí</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast Expires:</source>
|
||||
<translation>Expira:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation>&Elegir</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hold</source>
|
||||
<translation>Mantener</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active</source>
|
||||
<translation>Activo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Status:</source>
|
||||
<translation>Estado del Post:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation>&Aceptar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation>&Cancelar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Author E-Mail:</source>
|
||||
<translation>E-Mail del autor:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link URL:</source>
|
||||
<translation>URL del artículo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comments URL:</source>
|
||||
<translation>URL comentarios:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source Text:</source>
|
||||
<translation>Texto fuente:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source URL:</source>
|
||||
<translation>URL fuente:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episode
|
||||
&Report</source>
|
||||
<translation>&Reporte de
|
||||
Episodios</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Air Date/Time:</source>
|
||||
<translation>Fecha/Ho al aire:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Link:</source>
|
||||
<translation>Enlace al medio:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires On:</source>
|
||||
<translation>Expira el:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListCasts</name>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>&Editar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>&Cerrar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source></source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title</source>
|
||||
<translation>Título</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Origin</source>
|
||||
<translation>Origen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires</source>
|
||||
<translation>Expira</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Descripción</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category</source>
|
||||
<translation>Categoría</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link</source>
|
||||
<translation>Enlace</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Never</source>
|
||||
<translation>Nunca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Podcast List</source>
|
||||
<translation>Lista de Podcasts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
Car&t/Cut</source>
|
||||
<translation>Publicar de
|
||||
Car&t./Audio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
&File</source>
|
||||
<translation>Publicar de
|
||||
&Archivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uploading Audio...</source>
|
||||
<translation>Subiendo Audio...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Progress</source>
|
||||
<translation>Progreso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Delete</source>
|
||||
<translation>&Borrar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation>Longitud</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subscription
|
||||
&Report</source>
|
||||
<translation>&Reporte de
|
||||
Suscripción</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> </source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Filter:</source>
|
||||
<translation>Filtro:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Unexpired Casts</source>
|
||||
<translation>Sólo Mostrar sin Expirar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Active Casts</source>
|
||||
<translation>Sólo mostrar activos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Error</source>
|
||||
<translation>Error de Post</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Podcast</source>
|
||||
<translation>Borrar Podcast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to delete this podcast?</source>
|
||||
<translation>¿Está seguro de borrar este Podcast?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Deleting Podcast...</source>
|
||||
<translation>Eliminando Podcast...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remote Error</source>
|
||||
<translation>Error remoto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
</source>
|
||||
<translation>¡No fue posible eliminar audio remoto!
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The server said: "</source>
|
||||
<translation>El servidor dio el error: "</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Continue deleting cast?</source>
|
||||
<translation> ¿Continuar eliminando podcasts?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
<message>
|
||||
<source>RDCastManager - Host</source>
|
||||
<translation type="obsolete">RDCastManager - Equipo </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User: [Unknown]</source>
|
||||
<translation>Usuario: [Desconocido]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't Connect</source>
|
||||
<translation>No puedo conectarme</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key Name</source>
|
||||
<translation>Nombre Clave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed Name</source>
|
||||
<translation>Nombre del Feed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Descripción</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Casts</source>
|
||||
<translation>Podcasts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>&Cerrar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User</source>
|
||||
<translation>Usuario</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&View
|
||||
Feed</source>
|
||||
<translation>&Ver Feed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Host</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
<message>
|
||||
<source>Select Report Dates</source>
|
||||
<translation>Elegir Fechas del Reporte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Start Date:</source>
|
||||
<translation>Fech. &Inicio:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation>&Elegir</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&End Date:</source>
|
||||
<translation>Fech. &Fin:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Generate
|
||||
Report</source>
|
||||
<translation>&Generar
|
||||
Reporte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&lose</source>
|
||||
<translation>&Cerrar</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
297
rdcastmanager/rdcastmanager_fr.ts
Normal file
297
rdcastmanager/rdcastmanager_fr.ts
Normal file
@@ -0,0 +1,297 @@
|
||||
<!DOCTYPE TS><TS>
|
||||
<context>
|
||||
<name>EditCast</name>
|
||||
<message>
|
||||
<source>Editing PodCast</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Author E-Mail:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source Text:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comments URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posted At:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Yes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast Expires:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hold</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Status:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episode
|
||||
&Report</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Air Date/Time:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Link:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires On:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListCasts</name>
|
||||
<message>
|
||||
<source>Podcast List</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
Car&t/Cut</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
&File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Delete</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subscription
|
||||
&Report</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Origin</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uploading Audio...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Progress</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Never</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Filter:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Unexpired Casts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Active Casts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Podcast</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to delete this podcast?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Deleting Podcast...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remote Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The server said: "</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Continue deleting cast?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
<message>
|
||||
<source>User: [Unknown]</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't Connect</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Casts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&View
|
||||
Feed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Host</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
<message>
|
||||
<source>Select Report Dates</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Start Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&End Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Generate
|
||||
Report</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&lose</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
355
rdcastmanager/rdcastmanager_nb.ts
Normal file
355
rdcastmanager/rdcastmanager_nb.ts
Normal file
@@ -0,0 +1,355 @@
|
||||
<!DOCTYPE TS><TS>
|
||||
<context>
|
||||
<name>EditCast</name>
|
||||
<message>
|
||||
<source>Editing PodCast</source>
|
||||
<translation>Redigerer podkast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title:</source>
|
||||
<translation>Tittel:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Author E-Mail:</source>
|
||||
<translation>E-post til forfattaren:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category:</source>
|
||||
<translation>Kategori:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link URL:</source>
|
||||
<translation>Lenkjeadresse:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description:</source>
|
||||
<translation>Skildring:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source Text:</source>
|
||||
<translation>Kjeldetekst:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source URL:</source>
|
||||
<translation>Kjeldeadresse:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comments URL:</source>
|
||||
<translation>Kommentaradresse:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posted At:</source>
|
||||
<translation>Lagt inn:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No</source>
|
||||
<translation>Nei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Yes</source>
|
||||
<translation>Ja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast Expires:</source>
|
||||
<translation>Podkasten går ut:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires At:</source>
|
||||
<translation type="obsolete">Går ut:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation>&Vel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hold</source>
|
||||
<translation>Hald</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active</source>
|
||||
<translation>Aktiv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Status:</source>
|
||||
<translation>Postestatus:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episode
|
||||
&Report</source>
|
||||
<translation>Episode-
|
||||
&rapport</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation>&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation>&Avbryt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Link:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Air Date/Time:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires On:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListCasts</name>
|
||||
<message>
|
||||
<source>Podcast List</source>
|
||||
<translation>Podkastliste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
Car&t/Cut</source>
|
||||
<translation>Post frå
|
||||
Korg/Ku&tt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
&File</source>
|
||||
<translation>Post frå
|
||||
&fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>R&ediger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Delete</source>
|
||||
<translation>&Slett</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subscription
|
||||
&Report</source>
|
||||
<translation>Abonnements&rapport</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>&Lukk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> </source>
|
||||
<translation> </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title</source>
|
||||
<translation>Tittel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Origin</source>
|
||||
<translation>Opphav</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires</source>
|
||||
<translation>Går ut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation>Lengd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Skildring</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category</source>
|
||||
<translation>Kategori</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link</source>
|
||||
<translation>Lenkje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Casts:</source>
|
||||
<translation type="obsolete">&Kastar:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uploading Audio...</source>
|
||||
<translation>Lastar opp lyd...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Progress</source>
|
||||
<translation>Framgang</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Format Error</source>
|
||||
<translation type="obsolete">Formatfeil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to convert audio file!</source>
|
||||
<translation type="obsolete">Greidde ikkje koda om lydfila!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Error</source>
|
||||
<translation type="obsolete">Opplastingsfeil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to upload audio file!</source>
|
||||
<translation type="obsolete">Greidde ikkje lasta opp lydfila!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Podcast</source>
|
||||
<translation type="unfinished">Slett podkast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to delete this podcast?</source>
|
||||
<translation type="unfinished">Er du sikker på at du vil sletta denne podkasten?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Deleting Podcast...</source>
|
||||
<translation type="unfinished">Slettar podkast...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal Error</source>
|
||||
<translation type="obsolete">Intern feil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to generate purge command!</source>
|
||||
<translation type="obsolete">Greidde ikkje laga tømmekommando!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remote Error</source>
|
||||
<translation type="unfinished">Ekstern feil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
Continue deleting cast?</source>
|
||||
<translation type="obsolete">Greidde ikkje sletta ekstern lyd!
|
||||
Vil du halda fram med å sletta podkasten?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Never</source>
|
||||
<translation>Aldri</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File Error</source>
|
||||
<translation type="obsolete">Filfeil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File does not exist!</source>
|
||||
<translation type="obsolete">Fila finst ikkje!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot open file!</source>
|
||||
<translation type="obsolete">Greier ikkje opna fila!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported file type!</source>
|
||||
<translation type="obsolete">Filtypen er ikkje støtta!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Filter:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Unexpired Casts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Active Casts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The server said: "</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Continue deleting cast?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
<message>
|
||||
<source>RDCastManager - Host</source>
|
||||
<translation type="obsolete">RDCastManager - Vert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User: [Unknown]</source>
|
||||
<translation>Brukar: [Ukjend]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't Connect</source>
|
||||
<translation>Greier ikkje kopla til</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key Name</source>
|
||||
<translation>Lykjelnamn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed Name</source>
|
||||
<translation>Straumnamn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Skildring</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Casts</source>
|
||||
<translation>Kastar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&View
|
||||
Feed</source>
|
||||
<translation>&Sjå
|
||||
straum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>&Lukk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User</source>
|
||||
<translation>Brukar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Host</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
<message>
|
||||
<source>Select Report Dates</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Start Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation type="unfinished">&Vel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&End Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Generate
|
||||
Report</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&lose</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
355
rdcastmanager/rdcastmanager_nn.ts
Normal file
355
rdcastmanager/rdcastmanager_nn.ts
Normal file
@@ -0,0 +1,355 @@
|
||||
<!DOCTYPE TS><TS>
|
||||
<context>
|
||||
<name>EditCast</name>
|
||||
<message>
|
||||
<source>Editing PodCast</source>
|
||||
<translation>Redigerer podkast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title:</source>
|
||||
<translation>Tittel:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Author E-Mail:</source>
|
||||
<translation>E-post til forfattaren:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category:</source>
|
||||
<translation>Kategori:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link URL:</source>
|
||||
<translation>Lenkjeadresse:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description:</source>
|
||||
<translation>Skildring:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source Text:</source>
|
||||
<translation>Kjeldetekst:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source URL:</source>
|
||||
<translation>Kjeldeadresse:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comments URL:</source>
|
||||
<translation>Kommentaradresse:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posted At:</source>
|
||||
<translation>Lagt inn:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No</source>
|
||||
<translation>Nei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Yes</source>
|
||||
<translation>Ja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast Expires:</source>
|
||||
<translation>Podkasten går ut:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires At:</source>
|
||||
<translation type="obsolete">Går ut:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation>&Vel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hold</source>
|
||||
<translation>Hald</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active</source>
|
||||
<translation>Aktiv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Status:</source>
|
||||
<translation>Postestatus:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episode
|
||||
&Report</source>
|
||||
<translation>Episode-
|
||||
&rapport</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation>&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation>&Avbryt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Link:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Air Date/Time:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires On:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListCasts</name>
|
||||
<message>
|
||||
<source>Podcast List</source>
|
||||
<translation>Podkastliste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
Car&t/Cut</source>
|
||||
<translation>Post frå
|
||||
Korg/Ku&tt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
&File</source>
|
||||
<translation>Post frå
|
||||
&fil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>R&ediger</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Delete</source>
|
||||
<translation>&Slett</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subscription
|
||||
&Report</source>
|
||||
<translation>Abonnements&rapport</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>&Lukk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> </source>
|
||||
<translation> </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title</source>
|
||||
<translation>Tittel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Origin</source>
|
||||
<translation>Opphav</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires</source>
|
||||
<translation>Går ut</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation>Lengd</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Skildring</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category</source>
|
||||
<translation>Kategori</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link</source>
|
||||
<translation>Lenkje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Casts:</source>
|
||||
<translation type="obsolete">&Kastar:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uploading Audio...</source>
|
||||
<translation>Lastar opp lyd...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Progress</source>
|
||||
<translation>Framgang</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Format Error</source>
|
||||
<translation type="obsolete">Formatfeil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to convert audio file!</source>
|
||||
<translation type="obsolete">Greidde ikkje koda om lydfila!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Error</source>
|
||||
<translation type="obsolete">Opplastingsfeil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to upload audio file!</source>
|
||||
<translation type="obsolete">Greidde ikkje lasta opp lydfila!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Podcast</source>
|
||||
<translation type="unfinished">Slett podkast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to delete this podcast?</source>
|
||||
<translation type="unfinished">Er du sikker på at du vil sletta denne podkasten?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Deleting Podcast...</source>
|
||||
<translation type="unfinished">Slettar podkast...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal Error</source>
|
||||
<translation type="obsolete">Intern feil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to generate purge command!</source>
|
||||
<translation type="obsolete">Greidde ikkje laga tømmekommando!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remote Error</source>
|
||||
<translation type="unfinished">Ekstern feil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
Continue deleting cast?</source>
|
||||
<translation type="obsolete">Greidde ikkje sletta ekstern lyd!
|
||||
Vil du halda fram med å sletta podkasten?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Never</source>
|
||||
<translation>Aldri</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File Error</source>
|
||||
<translation type="obsolete">Filfeil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>File does not exist!</source>
|
||||
<translation type="obsolete">Fila finst ikkje!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot open file!</source>
|
||||
<translation type="obsolete">Greier ikkje opna fila!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unsupported file type!</source>
|
||||
<translation type="obsolete">Filtypen er ikkje støtta!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Filter:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Unexpired Casts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Active Casts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The server said: "</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Continue deleting cast?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
<message>
|
||||
<source>RDCastManager - Host</source>
|
||||
<translation type="obsolete">RDCastManager - Vert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User: [Unknown]</source>
|
||||
<translation>Brukar: [Ukjend]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't Connect</source>
|
||||
<translation>Greier ikkje kopla til</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key Name</source>
|
||||
<translation>Lykjelnamn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed Name</source>
|
||||
<translation>Straumnamn</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Skildring</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Casts</source>
|
||||
<translation>Kastar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&View
|
||||
Feed</source>
|
||||
<translation>&Sjå
|
||||
straum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>&Lukk</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User</source>
|
||||
<translation>Brukar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Host</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
<message>
|
||||
<source>Select Report Dates</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Start Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation type="unfinished">&Vel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&End Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Generate
|
||||
Report</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&lose</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
321
rdcastmanager/rdcastmanager_pt_BR.ts
Normal file
321
rdcastmanager/rdcastmanager_pt_BR.ts
Normal file
@@ -0,0 +1,321 @@
|
||||
<!DOCTYPE TS><TS>
|
||||
<context>
|
||||
<name>EditCast</name>
|
||||
<message>
|
||||
<source>Editing PodCast</source>
|
||||
<translation>Editando Podcast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Link:</source>
|
||||
<translation>Link de Mídia:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title:</source>
|
||||
<translation>Título:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Author E-Mail:</source>
|
||||
<translation>E-mail do autor:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category:</source>
|
||||
<translation>Categoria:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link URL:</source>
|
||||
<translation>Link URL:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description:</source>
|
||||
<translation>Descrição:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source Text:</source>
|
||||
<translation>Texto Fonte:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Source URL:</source>
|
||||
<translation>Fonte URL:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Comments URL:</source>
|
||||
<translation>Comentários da URL:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Air Date/Time:</source>
|
||||
<translation>Ar Data/Hora:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation>&Selecionar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posted At:</source>
|
||||
<translation>Postado em:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No</source>
|
||||
<translation>Não</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Yes</source>
|
||||
<translation>Sim</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast Expires:</source>
|
||||
<translation>Cast Expira:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires At:</source>
|
||||
<translation type="obsolete">Expira em:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hold</source>
|
||||
<translation>Espere</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active</source>
|
||||
<translation>Ativo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Status:</source>
|
||||
<translation>Publicação:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episode
|
||||
&Report</source>
|
||||
<translation>&Relatório do
|
||||
Episódio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&OK</source>
|
||||
<translation>&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Cancel</source>
|
||||
<translation>&Cancelar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires On:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ListCasts</name>
|
||||
<message>
|
||||
<source>Podcast List</source>
|
||||
<translation>Lista de POdcast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Uploading Audio...</source>
|
||||
<translation>Áudio Uploading...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Progress</source>
|
||||
<translation>Progresso</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Filter:</source>
|
||||
<translation>Filtro:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Unexpired Casts</source>
|
||||
<translation>Mostrar Casts não expirados</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only Show Active Casts</source>
|
||||
<translation>Mostrar Casts Ativos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> </source>
|
||||
<translation>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Title</source>
|
||||
<translation>Título</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Origin</source>
|
||||
<translation>Origem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Expires</source>
|
||||
<translation>Expira</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Length</source>
|
||||
<translation>Duração</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Descrição</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Category</source>
|
||||
<translation>Categoria</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Link</source>
|
||||
<translation>Link</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
Car&t/Cut</source>
|
||||
<translation>Postar
|
||||
&Cartão</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Post From
|
||||
&File</source>
|
||||
<translation>Postar
|
||||
&Arquivo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Edit</source>
|
||||
<translation>&Editar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Delete</source>
|
||||
<translation>&Deletar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subscription
|
||||
&Report</source>
|
||||
<translation>&Relatório de
|
||||
Assinaturas</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>&Fechar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Posting Error</source>
|
||||
<translation>Erro na Postagem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Podcast</source>
|
||||
<translation>Deletar PodCast</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to delete this podcast?</source>
|
||||
<translation>Tem certeza que você quer deletar este podcast?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Deleting Podcast...</source>
|
||||
<translation>Deletando Podcast...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Internal Error</source>
|
||||
<translation type="obsolete">Erro Interno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to generate purge command!</source>
|
||||
<translation type="obsolete">Não foi Possível gerar comando para eliminar!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Remote Error</source>
|
||||
<translation>Erro Remoto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
Continue deleting cast?</source>
|
||||
<translation type="obsolete">Não foi possível deletar áudio remoto!
|
||||
Continuar deletando cast?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Never</source>
|
||||
<translation>Nunca</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to delete remote audio!
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The server said: "</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Continue deleting cast?</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
<message>
|
||||
<source>RDCastManager - Host</source>
|
||||
<translation type="obsolete">RDPodcast - Cliente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User: [Unknown]</source>
|
||||
<translation>Usuário: [Desconhecido] </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Can't Connect</source>
|
||||
<translation>Não foi possível conectar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Key Name</source>
|
||||
<translation>Nome chave</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed Name</source>
|
||||
<translation>Nome do Feed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Description</source>
|
||||
<translation>Descrição</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Casts</source>
|
||||
<translation>Casts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&View
|
||||
Feed</source>
|
||||
<translation>&Ver
|
||||
Feed</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Close</source>
|
||||
<translation>&Fechar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User</source>
|
||||
<translation>Usuário</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Host</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
<message>
|
||||
<source>Select Report Dates</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Start Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Select</source>
|
||||
<translation type="unfinished">&Selecionar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&End Date:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Generate
|
||||
Report</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C&lose</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
Reference in New Issue
Block a user