mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-24 08:31:41 +02:00
2020-02-23 Fred Gleason <fredg@paravelsystems.com>
* Implemented superfeed in 'rdfeed.xml'.
This commit is contained in:
parent
a2f571f759
commit
4f6c0eb2c9
@ -19589,3 +19589,5 @@
|
||||
2020-02-21 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Tweaked controls to be disabled for superfeeds in the 'Edit Feed'
|
||||
dialog in rdadmin(1).
|
||||
2020-02-23 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Implemented superfeed in 'rdfeed.xml'.
|
||||
|
@ -52,7 +52,6 @@ EXTRA_DIST = audio_cards.txt\
|
||||
extended_panels.txt\
|
||||
feed_perms.txt\
|
||||
feeds.txt\
|
||||
feeds_key_names.txt\
|
||||
gpio_events.txt\
|
||||
gpis.txt\
|
||||
gpos.txt\
|
||||
@ -100,6 +99,7 @@ EXTRA_DIST = audio_cards.txt\
|
||||
stack_lines.txt\
|
||||
stack_sched_codes.txt\
|
||||
stations.txt\
|
||||
superfeed_maps.txt\
|
||||
switcher_nodes.txt\
|
||||
system.txt\
|
||||
triggers.txt\
|
||||
|
@ -1,10 +0,0 @@
|
||||
FEED_KEY_NAMES Table Layout for Rivendell
|
||||
|
||||
The FEED_KEY_NAMES table the mappings of actual RSS feeds with super
|
||||
feeds.
|
||||
|
||||
FIELD NAME TYPE REMARKS
|
||||
---------------------------------------------------------------
|
||||
ID int(10) unsigned Primary key, auto increment
|
||||
KEY_NAME varchar(8)
|
||||
MEMBER_KEY_NAME varchar(8)
|
@ -0,0 +1,12 @@
|
||||
SUPERFEED_MAPS Table Layout for Rivendell
|
||||
|
||||
The SUPERFEED_MAPS table contains the mappings of actual RSS feeds with super
|
||||
feeds.
|
||||
|
||||
FIELD NAME TYPE REMARKS
|
||||
------------------------------------------------------------------
|
||||
ID int(10) unsigned Primary key, auto increment
|
||||
FEED_ID int(10) unsigned From FEEDS.ID
|
||||
MEMBER_FEED_ID int(10) unsigned From FEEDS.ID
|
||||
KEY_NAME varchar(8) From FEEDS.KEY_NAME
|
||||
MEMBER_KEY_NAME varchar(8) From FEEDS.KEY_NAME
|
@ -48,21 +48,39 @@ QString RDCastSearchString(const QString &filter,bool unexp_only,
|
||||
return ret;
|
||||
}
|
||||
|
||||
QString RDCastSearch(int feed_id,const QString &filter,bool unexp_only,
|
||||
bool active_only)
|
||||
{
|
||||
QString ret=QString().sprintf("where (FEED_ID=%d)",feed_id);
|
||||
ret+=RDCastSearchString(filter,unexp_only,active_only);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
QString RDCastSearch(const QString &keyname,const QString &filter,
|
||||
QString RDCastSearch(const QString &keyname,bool is_super,const QString &filter,
|
||||
bool unexp_only,bool active_only)
|
||||
{
|
||||
QString ret=QString("where (KEY_NAME=\"")+
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
QString ret=QString("where (.KEY_NAME=\"")+
|
||||
RDEscapeString(keyname)+"\")";
|
||||
|
||||
if(is_super) {
|
||||
ret="where ";
|
||||
sql=QString("select ")+
|
||||
"MEMBER_FEED_ID "+ // 00
|
||||
"from SUPERFEED_MAPS where "+
|
||||
"KEY_NAME=\""+RDEscapeString(keyname)+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
ret+=QString().sprintf("PODCASTS.FEED_ID=%u || ",q->value(0).toUInt());
|
||||
}
|
||||
delete q;
|
||||
ret=ret.left(ret.length()-3);
|
||||
}
|
||||
else {
|
||||
sql=QString("select ")+
|
||||
"ID "+ // 00
|
||||
"from FEEDS where "+
|
||||
"KEY_NAME=\""+RDEscapeString(keyname)+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
ret=QString().sprintf("where PODCASTS.FEED_ID=%u ",q->value(0).toUInt());
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
ret+=RDCastSearchString(filter,unexp_only,active_only);
|
||||
|
||||
return ret;
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// SQL search clause for RDCastManager
|
||||
//
|
||||
// (C) Copyright 2009,2016 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2009-2020 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -21,9 +21,7 @@
|
||||
#ifndef RDCASTSEARCH_H
|
||||
#define RDCASTSEARCH_H
|
||||
|
||||
QString RDCastSearch(int feed_id,const QString &filter,bool unexp_only,
|
||||
bool active_only);
|
||||
QString RDCastSearch(const QString &keyname,const QString &filter,
|
||||
QString RDCastSearch(const QString &keyname,bool is_super,const QString &filter,
|
||||
bool unexp_only,bool active_only);
|
||||
|
||||
|
||||
|
@ -129,6 +129,24 @@ void RDFeed::setIsSuperfeed(bool state) const
|
||||
}
|
||||
|
||||
|
||||
QStringList RDFeed::isSubfeedOf() const
|
||||
{
|
||||
QStringList ret;
|
||||
|
||||
QString sql=QString("select ")+
|
||||
"KEY_NAME "+ // 00
|
||||
"from SUPERFEED_MAPS where "+
|
||||
"MEMBER_KEY_NAME=\""+RDEscapeString(keyName())+"\"";
|
||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
ret.push_back(q->value(0).toString());
|
||||
}
|
||||
delete q;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
bool RDFeed::audienceMetrics() const
|
||||
{
|
||||
return RDBool(RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,
|
||||
@ -636,6 +654,19 @@ bool RDFeed::postXml(QString *err_msg)
|
||||
}
|
||||
curl_easy_cleanup(curl);
|
||||
|
||||
//
|
||||
// Update Enclosing Superfeeds
|
||||
//
|
||||
QStringList superfeeds=isSubfeedOf();
|
||||
for(int i=0;i<superfeeds.size();i++) {
|
||||
QString err_msg2;
|
||||
RDFeed *feed=new RDFeed(superfeeds.at(i),feed_config,this);
|
||||
if(!feed->postXml(&err_msg2)) {
|
||||
*err_msg+="\n"+err_msg2;
|
||||
}
|
||||
delete feed;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -958,6 +989,22 @@ QString RDFeed::rssXml(QString *err_msg,bool *ok)
|
||||
//
|
||||
// Render Item XML
|
||||
//
|
||||
QString where;
|
||||
if(isSuperfeed()) {
|
||||
sql=QString("select ")+
|
||||
"MEMBER_FEED_ID "+
|
||||
"from SUPERFEED_MAPS where "+
|
||||
QString().sprintf("FEED_ID=%d",q->value(13).toUInt());
|
||||
q1=new RDSqlQuery(sql);
|
||||
while(q1->next()) {
|
||||
where+=QString().sprintf("(FEED_ID=%u) || ",q1->value(0).toUInt());
|
||||
}
|
||||
delete q1;
|
||||
where=("("+where.left(where.length()-4)+") && ");
|
||||
}
|
||||
else {
|
||||
where =QString().sprintf("(FEED_ID=%u)&&",q->value(13).toUInt());
|
||||
}
|
||||
sql=QString("select ")+
|
||||
"ITEM_TITLE,"+ // 00
|
||||
"ITEM_DESCRIPTION,"+ // 01
|
||||
@ -973,7 +1020,8 @@ QString RDFeed::rssXml(QString *err_msg,bool *ok)
|
||||
"EFFECTIVE_DATETIME,"+ // 11
|
||||
"ID "+ // 12
|
||||
"from PODCASTS where "+
|
||||
QString().sprintf("(FEED_ID=%d)&&",q->value(13).toUInt())+
|
||||
where+
|
||||
//QString().sprintf("(FEED_ID=%d)&&",q->value(13).toUInt())+
|
||||
QString().sprintf("(STATUS=%d) ",RDPodcast::StatusActive)+
|
||||
"order by ORIGIN_DATETIME";
|
||||
if(q->value(15).toString()=="N") {
|
||||
@ -1116,14 +1164,19 @@ unsigned RDFeed::create(const QString &keyname,bool enable_users,
|
||||
// Duplicate member feed references
|
||||
//
|
||||
if(q->value(0).toString()=="Y") {
|
||||
sql=QString("select MEMBER_KEY_NAME ")+
|
||||
"from FEED_KEY_NAMES where "+
|
||||
sql=QString("select ")+
|
||||
"MEMBER_KEY_NAME,"+ // 00
|
||||
"FEED_ID,"+ // 01
|
||||
"MEMBER_FEED_ID "+ // 02
|
||||
"from SUPERFEED_MAPS where "+
|
||||
"KEY_NAME=\""+RDEscapeString(exemplar)+"\"";
|
||||
q1=new RDSqlQuery(sql);
|
||||
while(q1->next()) {
|
||||
sql=QString("insert into FEED_KEY_NAMES set ")+
|
||||
sql=QString("insert into SUPERFEED_MAPS set ")+
|
||||
"KEY_NAME=\""+RDEscapeString(keyname)+"\","+
|
||||
"MEMBER_KEY_NAME=\""+RDEscapeString(q1->value(0).toString())+"\"";
|
||||
"MEMBER_KEY_NAME=\""+RDEscapeString(q1->value(0).toString())+"\","+
|
||||
QString().sprintf("FEED_ID=%u,",q1->value(1).toUInt())+
|
||||
QString().sprintf("MEMBER_FEED_ID=%u",q1->value(2).toUInt());
|
||||
RDSqlQuery::apply(sql);
|
||||
}
|
||||
delete q1;
|
||||
|
@ -46,6 +46,7 @@ class RDFeed : public QObject
|
||||
bool exists() const;
|
||||
bool isSuperfeed() const;
|
||||
void setIsSuperfeed(bool state) const;
|
||||
QStringList isSubfeedOf() const;
|
||||
bool audienceMetrics() const;
|
||||
void setAudienceMetrics(bool state);
|
||||
QString channelTitle() const;
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// Abstract a Rivendell Podcast Entry
|
||||
//
|
||||
// (C) Copyright 2002-2007,2016-2017 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -66,8 +66,6 @@ class RDPodcast
|
||||
void setShelfLife(unsigned days) const;
|
||||
RDPodcast::Status status() const;
|
||||
void setStatus(RDPodcast::Status status);
|
||||
//QString audioUploadCommand(const QString &srcfile) const;
|
||||
//QString audioPurgeCommand() const;
|
||||
bool removeAudio(RDFeed *feed,QString *err_text,bool log_debug) const;
|
||||
static QString guid(const QString &url,const QString &filename,
|
||||
unsigned feed_id,unsigned cast_id);
|
||||
|
@ -162,7 +162,7 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
|
||||
feed_purge_url_edit=new QLineEdit(this);
|
||||
feed_purge_url_edit->setMaxLength(255);
|
||||
feed_purge_url_label=
|
||||
new QLabel(feed_purge_url_edit,tr("Audio Upload URL:"),this);
|
||||
new QLabel(feed_purge_url_edit,tr("Upload URL")+":",this);
|
||||
feed_purge_url_label->setFont(labelFont());
|
||||
feed_purge_url_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
|
||||
@ -194,7 +194,7 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
|
||||
//
|
||||
feed_format_edit=new QLineEdit(this);
|
||||
feed_format_edit->setReadOnly(true);
|
||||
feed_format_label=new QLabel(feed_format_edit,tr("Upload Format:"),this);
|
||||
feed_format_label=new QLabel(feed_format_edit,tr("Audio Format:"),this);
|
||||
feed_format_label->setFont(labelFont());
|
||||
feed_format_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
feed_format_button=new QPushButton(this);
|
||||
@ -232,7 +232,7 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
|
||||
feed_base_url_edit=new QLineEdit(this);
|
||||
feed_base_url_edit->setMaxLength(255);
|
||||
feed_base_url_label=
|
||||
new QLabel(feed_base_url_edit,tr("Audio Download URL:"),this);
|
||||
new QLabel(feed_base_url_edit,tr("Download URL")+":",this);
|
||||
feed_base_url_label->setFont(labelFont());
|
||||
feed_base_url_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
|
||||
|
||||
@ -465,34 +465,34 @@ void EditFeed::isSuperfeedChangedData(int n)
|
||||
feed_redirect_url_label->setEnabled(redirected);
|
||||
feed_redirect_url_edit->setEnabled(redirected);
|
||||
|
||||
feed_base_url_edit->setDisabled(redirected||superfeed);
|
||||
feed_purge_url_edit->setDisabled(redirected||superfeed);
|
||||
feed_purge_username_label->setDisabled(redirected||superfeed);
|
||||
feed_purge_username_edit->setDisabled(redirected||superfeed);
|
||||
feed_purge_password_label->setDisabled(redirected||superfeed);
|
||||
feed_purge_password_edit->setDisabled(redirected||superfeed);
|
||||
feed_base_url_edit->setDisabled(redirected);
|
||||
feed_purge_url_edit->setDisabled(redirected);
|
||||
feed_purge_username_label->setDisabled(redirected);
|
||||
feed_purge_username_edit->setDisabled(redirected);
|
||||
feed_purge_password_label->setDisabled(redirected);
|
||||
feed_purge_password_edit->setDisabled(redirected);
|
||||
|
||||
feed_max_shelf_life_spin->setDisabled(redirected||superfeed);
|
||||
feed_autopost_box->setDisabled(redirected||superfeed);
|
||||
feed_keep_metadata_box->setDisabled(redirected||superfeed);
|
||||
feed_keep_metadata_box->setDisabled(redirected);
|
||||
feed_keep_metadata_label->setDisabled(redirected);
|
||||
feed_format_edit->setDisabled(redirected||superfeed);
|
||||
feed_normalize_box->setDisabled(redirected||superfeed);
|
||||
feed_extension_edit->setDisabled(redirected||superfeed);
|
||||
feed_castorder_box->setDisabled(redirected||superfeed);
|
||||
feed_castorder_box->setDisabled(redirected);
|
||||
feed_format_button->setDisabled(redirected||superfeed);
|
||||
feed_base_url_label->setDisabled(redirected||superfeed);
|
||||
feed_base_preamble_label->setDisabled(redirected||superfeed);
|
||||
feed_purge_url_label->setDisabled(redirected||superfeed);
|
||||
feed_base_url_label->setDisabled(redirected);
|
||||
feed_base_preamble_label->setDisabled(redirected);
|
||||
feed_purge_url_label->setDisabled(redirected);
|
||||
feed_max_shelf_life_label->setDisabled(redirected||superfeed);
|
||||
feed_max_shelf_life_unit_label->setDisabled(redirected||superfeed);
|
||||
feed_autopost_label->setDisabled(redirected||superfeed);
|
||||
feed_keep_metadata_label->setDisabled(redirected||superfeed);
|
||||
feed_format_label->setDisabled(redirected||superfeed);
|
||||
feed_normalize_check_label->setDisabled(redirected||superfeed);
|
||||
feed_normalize_unit_label->setDisabled(redirected||superfeed);
|
||||
feed_castorder_label->setDisabled(redirected||superfeed);
|
||||
feed_castorder_label->setDisabled(redirected);
|
||||
feed_extension_label->setDisabled(redirected||superfeed);
|
||||
feed_channel_section_groupbox->setDisabled(redirected||superfeed);
|
||||
feed_channel_section_groupbox->setDisabled(redirected);
|
||||
|
||||
feed_normalize_label->
|
||||
setDisabled(redirected||superfeed||(!feed_normalize_box->isChecked()));
|
||||
|
@ -23,6 +23,8 @@
|
||||
#include <rddb.h>
|
||||
#include <rdescape_string.h>
|
||||
|
||||
#include <qmap.h>
|
||||
|
||||
#include "edit_superfeed.h"
|
||||
|
||||
EditSuperfeed::EditSuperfeed(RDFeed *feed,QWidget *parent)
|
||||
@ -72,7 +74,9 @@ EditSuperfeed::EditSuperfeed(RDFeed *feed,QWidget *parent)
|
||||
//
|
||||
// Populate Fields
|
||||
//
|
||||
sql=QString("select MEMBER_KEY_NAME from FEED_KEY_NAMES where ")+
|
||||
sql=QString("select ")+
|
||||
"MEMBER_KEY_NAME "+ // 00
|
||||
"from SUPERFEED_MAPS where "+
|
||||
"KEY_NAME=\""+RDEscapeString(feed_feed->keyName())+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
@ -114,19 +118,34 @@ void EditSuperfeed::okData()
|
||||
RDSqlQuery *q;
|
||||
QString sql;
|
||||
|
||||
//
|
||||
// Feed ID Map
|
||||
//
|
||||
QMap<QString,unsigned> feed_ids;
|
||||
sql=QString("select KEY_NAME,ID from FEEDS");
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
feed_ids[q->value(0).toString()]=q->value(1).toUInt();
|
||||
}
|
||||
delete q;
|
||||
|
||||
//
|
||||
// Add New Groups
|
||||
//
|
||||
for(unsigned i=0;i<feed_host_sel->destCount();i++) {
|
||||
sql=QString("select MEMBER_KEY_NAME from FEED_KEY_NAMES where ")+
|
||||
sql=QString("select ")+
|
||||
"MEMBER_KEY_NAME " // 00
|
||||
"from SUPERFEED_MAPS where "+
|
||||
"KEY_NAME=\""+RDEscapeString(feed_feed->keyName())+"\" && "
|
||||
"MEMBER_KEY_NAME=\""+RDEscapeString(feed_host_sel->destText(i))+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->size()==0) {
|
||||
delete q;
|
||||
sql=QString("insert into FEED_KEY_NAMES (KEY_NAME,MEMBER_KEY_NAME) ")+
|
||||
"values (\""+RDEscapeString(feed_feed->keyName())+
|
||||
"\",\""+RDEscapeString(feed_host_sel->destText(i))+"\")";
|
||||
sql=QString("insert into SUPERFEED_MAPS set ")+
|
||||
"KEY_NAME=\""+RDEscapeString(feed_feed->keyName())+"\","+
|
||||
"MEMBER_KEY_NAME=\""+RDEscapeString(feed_host_sel->destText(i))+"\","+
|
||||
QString().sprintf("FEED_ID=%u,",feed_ids.value(feed_feed->keyName()))+
|
||||
QString().sprintf("MEMBER_FEED_ID=%u",feed_ids.value(feed_host_sel->destText(i)));
|
||||
q=new RDSqlQuery(sql);
|
||||
}
|
||||
delete q;
|
||||
@ -135,7 +154,7 @@ void EditSuperfeed::okData()
|
||||
//
|
||||
// Delete Old Groups
|
||||
//
|
||||
sql=QString("delete from FEED_KEY_NAMES where ")+
|
||||
sql=QString("delete from SUPERFEED_MAPS where ")+
|
||||
"KEY_NAME=\""+RDEscapeString(feed_feed->keyName())+"\"";
|
||||
for(unsigned i=0;i<feed_host_sel->destCount();i++) {
|
||||
sql+=QString(" && MEMBER_KEY_NAME<>\"")+
|
||||
|
@ -260,12 +260,14 @@ void ListFeeds::deleteData()
|
||||
//
|
||||
sql=QString("delete from FEED_PERMS where ")+
|
||||
"KEY_NAME=\""+RDEscapeString(feedname)+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
RDSqlQuery::apply(sql);
|
||||
sql=QString("delete from SUPERFEED_MAPS where ")+
|
||||
"KEY_NAME=\""+RDEscapeString(feedname)+"\" || "+
|
||||
"MEMBER_KEY_NAME=\""+RDEscapeString(feedname)+"\"";
|
||||
RDSqlQuery::apply(sql);
|
||||
sql=QString("delete from FEEDS where ")+
|
||||
"KEY_NAME=\""+RDEscapeString(feedname)+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
RDSqlQuery::apply(sql);
|
||||
RDDeleteFeedLog(feedname);
|
||||
item->setSelected(false);
|
||||
|
||||
|
@ -1473,7 +1473,7 @@ files, causing any whose files remain to be imported again.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Upload URL:</source>
|
||||
<translation>Adresa (URL) nahrání zvuku:</translation>
|
||||
<translation type="obsolete">Adresa (URL) nahrání zvuku:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
@ -1485,7 +1485,7 @@ files, causing any whose files remain to be imported again.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Format:</source>
|
||||
<translation>Formát nahrání:</translation>
|
||||
<translation type="obsolete">Formát nahrání:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>S&et</source>
|
||||
@ -1505,7 +1505,7 @@ files, causing any whose files remain to be imported again.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Download URL:</source>
|
||||
<translation>Adresa (URL) stažení zvuku:</translation>
|
||||
<translation type="obsolete">Adresa (URL) stažení zvuku:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep Expired Metadata</source>
|
||||
@ -1645,6 +1645,18 @@ Feeds</source>
|
||||
<source>Audio Upload URL has unsupported scheme!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1375,10 +1375,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>Description:</source>
|
||||
<translation type="unfinished">Beschreibung:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Upload URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
<translation type="unfinished">Benutzername:</translation>
|
||||
@ -1387,10 +1383,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>Password:</source>
|
||||
<translation type="unfinished">Passwort:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>S&et</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1407,10 +1399,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>dBFS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Download URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep Expired Metadata</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1540,6 +1528,18 @@ Feeds</source>
|
||||
<source>Audio Upload URL has unsupported scheme!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1471,7 +1471,7 @@ files, causing any whose files remain to be imported again.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Upload URL:</source>
|
||||
<translation>URL subida audio:</translation>
|
||||
<translation type="obsolete">URL subida audio:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
@ -1483,7 +1483,7 @@ files, causing any whose files remain to be imported again.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Format:</source>
|
||||
<translation>Formato de subida:</translation>
|
||||
<translation type="obsolete">Formato de subida:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>S&et</source>
|
||||
@ -1503,7 +1503,7 @@ files, causing any whose files remain to be imported again.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Download URL:</source>
|
||||
<translation>URL descarga audio:</translation>
|
||||
<translation type="obsolete">URL descarga audio:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep Expired Metadata</source>
|
||||
@ -1648,6 +1648,18 @@ Feeds</source>
|
||||
<source>Audio Upload URL has unsupported scheme!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1047,10 +1047,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>Description:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Upload URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1059,10 +1055,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>Password:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>S&et</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1079,10 +1071,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>dBFS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Download URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep Expired Metadata</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1212,6 +1200,18 @@ Feeds</source>
|
||||
<source>Audio Upload URL has unsupported scheme!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1337,10 +1337,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>Description:</source>
|
||||
<translation type="unfinished">Skildring:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Upload URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
<translation type="unfinished">Brukarnamn:</translation>
|
||||
@ -1349,10 +1345,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>Password:</source>
|
||||
<translation type="unfinished">Passord:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>S&et</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1369,10 +1361,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>dBFS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Download URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep Expired Metadata</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1502,6 +1490,18 @@ Feeds</source>
|
||||
<source>Audio Upload URL has unsupported scheme!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1337,10 +1337,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>Description:</source>
|
||||
<translation type="unfinished">Skildring:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Upload URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
<translation type="unfinished">Brukarnamn:</translation>
|
||||
@ -1349,10 +1345,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>Password:</source>
|
||||
<translation type="unfinished">Passord:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>S&et</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1369,10 +1361,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>dBFS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Download URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep Expired Metadata</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1502,6 +1490,18 @@ Feeds</source>
|
||||
<source>Audio Upload URL has unsupported scheme!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -1347,10 +1347,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>Description:</source>
|
||||
<translation type="unfinished">Descrição: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Upload URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Username:</source>
|
||||
<translation type="unfinished">Usuário:</translation>
|
||||
@ -1359,10 +1355,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>Password:</source>
|
||||
<translation type="unfinished">Senha:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>S&et</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1379,10 +1371,6 @@ files, causing any whose files remain to be imported again.</source>
|
||||
<source>dBFS</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Download URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Keep Expired Metadata</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@ -1512,6 +1500,18 @@ Feeds</source>
|
||||
<source>Audio Upload URL has unsupported scheme!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Format:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Upload URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Download URL</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EditFeedPerms</name>
|
||||
|
@ -40,10 +40,11 @@
|
||||
#include "../icons/greenball.xpm"
|
||||
#include "../icons/whiteball.xpm"
|
||||
|
||||
ListCasts::ListCasts(unsigned feed_id,QWidget *parent)
|
||||
ListCasts::ListCasts(unsigned feed_id,bool is_super,QWidget *parent)
|
||||
: RDDialog(parent)
|
||||
{
|
||||
list_feed_id=feed_id;
|
||||
list_is_superfeed=is_super;
|
||||
|
||||
//
|
||||
// Fix the Window Size
|
||||
@ -125,10 +126,14 @@ ListCasts::ListCasts(unsigned feed_id,QWidget *parent)
|
||||
list_casts_view->setColumnAlignment(4,Qt::AlignRight);
|
||||
list_casts_view->addColumn(tr("Description"));
|
||||
list_casts_view->setColumnAlignment(5,Qt::AlignLeft);
|
||||
|
||||
list_casts_view->addColumn(tr("Feed"));
|
||||
list_casts_view->setColumnAlignment(6,Qt::AlignLeft);
|
||||
|
||||
list_casts_view->addColumn(tr("Category"));
|
||||
list_casts_view->setColumnAlignment(6,Qt::AlignCenter);
|
||||
list_casts_view->addColumn(tr("Link"));
|
||||
list_casts_view->setColumnAlignment(7,Qt::AlignCenter);
|
||||
list_casts_view->addColumn(tr("Link"));
|
||||
list_casts_view->setColumnAlignment(8,Qt::AlignCenter);
|
||||
connect(list_casts_view,
|
||||
SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)),
|
||||
this,
|
||||
@ -427,7 +432,8 @@ void ListCasts::RefreshList()
|
||||
|
||||
list_casts_view->clear();
|
||||
sql=QString("select ID from PODCASTS ")+
|
||||
RDCastSearch(list_feed_id,list_filter_edit->text(),
|
||||
RDCastSearch(list_feed->keyName(),list_is_superfeed,
|
||||
list_filter_edit->text(),
|
||||
list_unexpired_check->isChecked(),
|
||||
list_active_check->isChecked())+
|
||||
" order by ORIGIN_DATETIME";
|
||||
@ -446,9 +452,19 @@ 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());
|
||||
sql=QString("select ")+
|
||||
"PODCASTS.STATUS,"+ // 00
|
||||
"PODCASTS.ITEM_TITLE,"+ // 01
|
||||
"PODCASTS.ORIGIN_DATETIME,"+ // 02
|
||||
"PODCASTS.SHELF_LIFE,"+ // 03
|
||||
"PODCASTS.AUDIO_TIME,"+ // 04
|
||||
"PODCASTS.ITEM_DESCRIPTION,"+ // 05
|
||||
"FEEDS.KEY_NAME,"+ // 06
|
||||
"PODCASTS.ITEM_CATEGORY,"+ // 07
|
||||
"PODCASTS.ITEM_LINK "+ // 08
|
||||
"from PODCASTS left join FEEDS "+
|
||||
"on PODCASTS.FEED_ID=FEEDS.ID where "+
|
||||
QString().sprintf("PODCASTS.ID=%d",item->id());
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
switch((RDPodcast::Status)q->value(0).toUInt()) {
|
||||
@ -478,6 +494,7 @@ void ListCasts::RefreshItem(RDListViewItem *item)
|
||||
item->setText(5,q->value(5).toString());
|
||||
item->setText(6,q->value(6).toString());
|
||||
item->setText(7,q->value(7).toString());
|
||||
item->setText(8,q->value(8).toString());
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ class ListCasts : public RDDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ListCasts(unsigned feed_id,QWidget *parent=0);
|
||||
ListCasts(unsigned feed_id,bool is_super,QWidget *parent=0);
|
||||
~ListCasts();
|
||||
QSize sizeHint() const;
|
||||
QSizePolicy sizePolicy() const;
|
||||
@ -78,6 +78,7 @@ class ListCasts : public RDDialog
|
||||
QCheckBox *list_active_check;
|
||||
QProgressDialog *list_progress_dialog;
|
||||
RDFeed *list_feed;
|
||||
bool list_is_superfeed;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// A PodCast Management Utility for Rivendell.
|
||||
//
|
||||
// (C) Copyright 2002-2019 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -110,15 +110,22 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
||||
SLOT(feedDoubleclickedData(Q3ListViewItem *,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->addColumn(tr("Superfeed"));
|
||||
cast_feed_list->setColumnAlignment(3,Qt::AlignCenter);
|
||||
|
||||
cast_feed_list->addColumn(tr("Description"));
|
||||
cast_feed_list->setColumnAlignment(4,Qt::AlignLeft);
|
||||
|
||||
cast_feed_list->addColumn(tr("Casts"));
|
||||
cast_feed_list->setColumnAlignment(5,Qt::AlignCenter);
|
||||
|
||||
//
|
||||
// Open Button
|
||||
//
|
||||
@ -169,7 +176,7 @@ void MainWidget::openData()
|
||||
if(item==NULL) {
|
||||
return;
|
||||
}
|
||||
ListCasts *casts=new ListCasts(item->id(),this);
|
||||
ListCasts *casts=new ListCasts(item->id(),item->text(3)=="Y",this);
|
||||
casts->exec();
|
||||
RefreshItem(item);
|
||||
delete casts;
|
||||
@ -208,14 +215,15 @@ void MainWidget::RefreshItem(RDListViewItem *item)
|
||||
|
||||
sql=QString("select ")+
|
||||
"CHANNEL_TITLE,"+ // 00
|
||||
"CHANNEL_DESCRIPTION,"+ // 01
|
||||
"ID "+ // 02
|
||||
"IS_SUPERFEED,"+ // 01
|
||||
"CHANNEL_DESCRIPTION,"+ // 02
|
||||
"ID "+ // 03
|
||||
"from FEEDS where "+
|
||||
"KEY_NAME=\""+RDEscapeString(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());
|
||||
q->value(3).toUInt());
|
||||
q1=new RDSqlQuery(sql);
|
||||
while(q1->next()) {
|
||||
total++;
|
||||
@ -238,7 +246,8 @@ void MainWidget::RefreshItem(RDListViewItem *item)
|
||||
}
|
||||
item->setText(2,q->value(0).toString());
|
||||
item->setText(3,q->value(1).toString());
|
||||
item->setText(4,QString().sprintf("%d / %d",active,total));
|
||||
item->setText(4,q->value(2).toString());
|
||||
item->setText(5,QString().sprintf("%d / %d",active,total));
|
||||
}
|
||||
delete q;
|
||||
}
|
||||
|
@ -297,6 +297,10 @@ Podcast trotzdem löschen?</translation>
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
@ -354,6 +358,10 @@ přívod</translation>
|
||||
<source>Unknown command option</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Superfeed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
|
@ -286,6 +286,10 @@ Podcast trotzdem löschen?</translation>
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
@ -343,6 +347,10 @@ Feed</translation>
|
||||
<source>Unknown command option</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Superfeed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
|
@ -237,6 +237,10 @@ Suscripción</translation>
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
@ -293,6 +297,10 @@ Feed</source>
|
||||
<source>Unknown command option</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Superfeed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
|
@ -232,6 +232,10 @@ Car&t/Cut</source>
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
@ -280,6 +284,10 @@ Feed</source>
|
||||
<source>Unknown command option</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Superfeed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
|
@ -285,6 +285,10 @@ Vil du halda fram med å sletta podkasten?</translation>
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
@ -342,6 +346,10 @@ straum</translation>
|
||||
<source>Unknown command option</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Superfeed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
|
@ -285,6 +285,10 @@ Vil du halda fram med å sletta podkasten?</translation>
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
@ -342,6 +346,10 @@ straum</translation>
|
||||
<source>Unknown command option</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Superfeed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
|
@ -251,6 +251,10 @@ Continuar deletando cast?</translation>
|
||||
</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Feed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWidget</name>
|
||||
@ -308,6 +312,10 @@ Feed</translation>
|
||||
<source>Unknown command option</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Superfeed</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PickReportDates</name>
|
||||
|
@ -560,7 +560,7 @@ void MainObject::ServeListCasts()
|
||||
"ITEM_CATEGORY,"+ // 05
|
||||
"AUDIO_TIME "+ // 06
|
||||
"from PODCASTS "+
|
||||
RDCastSearch(cast_feed_id,filter,unexp_only,active_only)+
|
||||
RDCastSearch(cast_key_name,false,filter,unexp_only,active_only)+
|
||||
" order by ORIGIN_DATETIME desc";
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user