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