1
0
mirror of https://github.com/ElvishArtisan/rivendell.git synced 2025-04-11 23:32:38 +02:00

2020-02-11 Fred Gleason <fredg@paravelsys tems.com>

* Added a 'FEEDS.IS_SUPERFEED' field to the database.
	* Added a 'FEED_KEY_NAMES' table to the database.
	* Incremented the database version to 315.
	* Added a 'Superfeed' column to the feed list in the 'Rivendell
	Feed List' dialog in rdadmin(1).
	* Added an 'Is Superfeed' dropdown to the 'Feed' dialog in
	rdadmin(1).
	* Added a 'Select Member Feeds' button to the 'Feed' dialog in
	rdadmin(1).
	* Added an 'RSS Superfeed' selection dialog to rdadmin(1).
This commit is contained in:
Fred Gleason 2020-02-11 09:44:10 -05:00
parent 03f4a4752d
commit b5c6e2e7a6
23 changed files with 746 additions and 172 deletions

@ -19542,3 +19542,14 @@
2020-02-10 Fred Gleason <fredg@paravelsys tems.com>
* Cleaned up UI alignment in the 'Rivendell Feed List' dialog in
rdadmin(1).
2020-02-11 Fred Gleason <fredg@paravelsys tems.com>
* Added a 'FEEDS.IS_SUPERFEED' field to the database.
* Added a 'FEED_KEY_NAMES' table to the database.
* Incremented the database version to 315.
* Added a 'Superfeed' column to the feed list in the 'Rivendell
Feed List' dialog in rdadmin(1).
* Added an 'Is Superfeed' dropdown to the 'Feed' dialog in
rdadmin(1).
* Added a 'Select Member Feeds' button to the 'Feed' dialog in
rdadmin(1).
* Added an 'RSS Superfeed' selection dialog to rdadmin(1).

@ -52,6 +52,7 @@ EXTRA_DIST = audio_cards.txt\
extended_panels.txt\
feed_perms.txt\
feeds.txt\
feeds_key_names.txt\
gpio_events.txt\
gpis.txt\
gpos.txt\

@ -0,0 +1,10 @@
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)

@ -6,6 +6,7 @@ FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary key, auto increment
KEY_NAME varchar(8) Unique
IS_SUPERFEED enum('N','Y')
CHANNEL_TITLE varchar(191)
CHANNEL_DESCRIPTION text
CHANNEL_CATEGORY varchar(64)

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

@ -81,6 +81,20 @@ bool RDFeed::exists() const
}
bool RDFeed::isSuperfeed() const
{
return RDBool(RDGetSqlValue("FEEDS","KEY_NAME",feed_keyname,"IS_SUPERFEED").
toString());
}
void RDFeed::setIsSuperfeed(bool state) const
{
SetRow("IS_SUPERFEED",RDYesNo(state));
}
QString RDFeed::keyName() const
{
return feed_keyname;

@ -43,6 +43,8 @@ class RDFeed : public QObject
QString keyName() const;
unsigned id() const;
bool exists() const;
bool isSuperfeed() const;
void setIsSuperfeed(bool state) const;
QString channelTitle() const;
void setChannelTitle(const QString &str) const;
QString channelDescription() const;

@ -2,7 +2,7 @@
##
## Automake.am for rivendell/rdadmin
##
## (C) Copyright 2002-2018 Fred Gleason <fredg@paravelsystems.com>
## (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License version 2 as
@ -88,6 +88,7 @@ dist_rdadmin_SOURCES = add_feed.cpp add_feed.h\
edit_schedcodes.cpp edit_schedcodes.h\
edit_settings.cpp edit_settings.h\
edit_station.cpp edit_station.h\
edit_superfeed.cpp edit_superfeed.h\
edit_svc.cpp edit_svc.h\
edit_svc_perms.cpp edit_svc_perms.h\
edit_ttys.cpp edit_ttys.h\
@ -168,6 +169,7 @@ nodist_rdadmin_SOURCES = global_credits.c\
moc_edit_schedcodes.cpp\
moc_edit_settings.cpp\
moc_edit_station.cpp\
moc_edit_superfeed.cpp\
moc_edit_svc.cpp\
moc_edit_svc_perms.cpp\
moc_edit_ttys.cpp\

@ -31,20 +31,17 @@
#include <rdexport_settings_dialog.h>
#include "edit_feed.h"
#include "edit_superfeed.h"
#include "globals.h"
EditFeed::EditFeed(const QString &feed,QWidget *parent)
: RDDialog(parent)
{
setModal(true);
//
// Fix the Window Size
//
setMinimumWidth(sizeHint().width());
setMaximumWidth(sizeHint().width());
setMinimumHeight(sizeHint().height());
setMaximumHeight(sizeHint().height());
setMinimumSize(sizeHint());
setMaximumSize(sizeHint());
feed_feed=new RDFeed(feed,rda->config(),this);
@ -54,30 +51,39 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Feed Name
//
feed_keyname_edit=new QLineEdit(this);
feed_keyname_edit->setGeometry(115,11,100,19);
feed_keyname_edit->setMaxLength(8);
feed_keyname_edit->setReadOnly(true);
QLabel *feed_keyname_label=new QLabel(feed_keyname_edit,tr("Key Name:"),this);
feed_keyname_label->setGeometry(10,11,100,19);
feed_keyname_label=new QLabel(feed_keyname_edit,tr("Key Name:"),this);
feed_keyname_label->setFont(labelFont());
feed_keyname_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
feed_is_superfeed_box=new QComboBox(this);
feed_is_superfeed_box->insertItem(0,tr("No"));
feed_is_superfeed_box->insertItem(1,tr("Yes"));
connect(feed_is_superfeed_box,SIGNAL(activated(int)),
this,SLOT(isSuperfeedChangedData(int)));
feed_is_superfeed_label=new QLabel(tr("Is Superfeed")+":",this);
feed_is_superfeed_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
feed_is_superfeed_label->setFont(labelFont());
feed_is_superfeed_button=new QPushButton(tr("Select Member\nFeeds"),this);
feed_is_superfeed_button->setFont(buttonFont());
connect(feed_is_superfeed_button,SIGNAL(clicked()),
this,SLOT(selectSubfeedsData()));
//
// Channel Section
//
feed_channel_section_groupbox=new QGroupBox(tr("Channel Values"),this);
feed_channel_section_groupbox->setFont(labelFont());
feed_channel_section_groupbox->setGeometry(10,45,sizeHint().width()/2-10,227);
//
// Channel Title
//
feed_channel_title_edit=new QLineEdit(this);
feed_channel_title_edit->setGeometry(115,60,375,19);
feed_channel_title_edit->setMaxLength(255);
feed_channel_title_label=
new QLabel(feed_channel_title_edit,tr("Title:"),this);
feed_channel_title_label->setGeometry(20,60,90,19);
feed_channel_title_label->setFont(labelFont());
feed_channel_title_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -85,11 +91,9 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Channel Category
//
feed_channel_category_edit=new QLineEdit(this);
feed_channel_category_edit->setGeometry(115,82,375,19);
feed_channel_category_edit->setMaxLength(64);
feed_channel_category_label=
new QLabel(feed_channel_category_edit,tr("Category:"),this);
feed_channel_category_label->setGeometry(20,82,90,19);
feed_channel_category_label->setFont(labelFont());
feed_channel_category_label->
setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -98,11 +102,9 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Channel Link
//
feed_channel_link_edit=new QLineEdit(this);
feed_channel_link_edit->setGeometry(115,104,375,19);
feed_channel_link_edit->setMaxLength(255);
feed_channel_link_label=
new QLabel(feed_channel_link_edit,tr("Link:"),this);
feed_channel_link_label->setGeometry(20,104,90,19);
feed_channel_link_label->setFont(labelFont());
feed_channel_link_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -110,11 +112,9 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Channel Copyright
//
feed_channel_copyright_edit=new QLineEdit(this);
feed_channel_copyright_edit->setGeometry(115,126,375,19);
feed_channel_copyright_edit->setMaxLength(64);
feed_channel_copyright_label=
new QLabel(feed_channel_copyright_edit,tr("Copyright:"),this);
feed_channel_copyright_label->setGeometry(20,126,90,19);
feed_channel_copyright_label->setFont(labelFont());
feed_channel_copyright_label->
setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -123,11 +123,9 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Channel Webmaster
//
feed_channel_webmaster_edit=new QLineEdit(this);
feed_channel_webmaster_edit->setGeometry(115,148,375,19);
feed_channel_webmaster_edit->setMaxLength(64);
feed_channel_webmaster_label=
new QLabel(feed_channel_webmaster_edit,tr("Webmaster:"),this);
feed_channel_webmaster_label->setGeometry(20,148,90,19);
feed_channel_webmaster_label->setFont(labelFont());
feed_channel_webmaster_label->
setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -136,12 +134,9 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Channel Language
//
feed_channel_language_edit=new QLineEdit(this);
feed_channel_language_edit->
setGeometry(115,170,60,19);
feed_channel_language_edit->setMaxLength(5);
feed_channel_language_label=
new QLabel(feed_channel_language_edit,tr("Language:"),this);
feed_channel_language_label->setGeometry(20,170,90,19);
feed_channel_language_label->setFont(labelFont());
feed_channel_language_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -150,10 +145,8 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
//
feed_channel_description_edit=new QTextEdit(this);
feed_channel_description_edit->setAcceptRichText(false);
feed_channel_description_edit->setGeometry(115,192,375,76);
feed_channel_description_label=
new QLabel(feed_channel_description_edit,tr("Description:"),this);
feed_channel_description_label->setGeometry(20,192,90,19);
feed_channel_description_label->setFont(labelFont());
feed_channel_description_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -161,13 +154,11 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Purge Audio URL
//
feed_purge_url_edit=new QLineEdit(this);
feed_purge_url_edit->setGeometry(155,280,335,19);
feed_purge_url_edit->setMaxLength(255);
connect(feed_purge_url_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(purgeUrlChangedData(const QString &)));
feed_purge_url_label=
new QLabel(feed_purge_url_edit,tr("Audio Upload URL:"),this);
feed_purge_url_label->setGeometry(20,280,130,19);
feed_purge_url_label->setFont(labelFont());
feed_purge_url_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -175,13 +166,11 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Purge Username
//
feed_purge_username_edit=new QLineEdit(this);
feed_purge_username_edit->setGeometry(225,302,95,19);
feed_purge_username_edit->setMaxLength(64);
connect(feed_purge_username_edit,SIGNAL(textChanged(const QString &)),
this,SLOT(purgeUsernameChangedData(const QString &)));
feed_purge_username_label=
new QLabel(feed_purge_username_edit,tr("Username:"),this);
feed_purge_username_label->setGeometry(40,302,180,19);
feed_purge_username_label->setFont(labelFont());
feed_purge_username_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -189,12 +178,10 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Purge Password
//
feed_purge_password_edit=new QLineEdit(this);
feed_purge_password_edit->setGeometry(395,302,95,19);
feed_purge_password_edit->setMaxLength(64);
feed_purge_password_edit->setEchoMode(QLineEdit::Password);
feed_purge_password_label=
new QLabel(feed_purge_password_edit,tr("Password:"),this);
feed_purge_password_label->setGeometry(320,302,70,19);
feed_purge_password_label->setFont(labelFont());
feed_purge_password_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -202,14 +189,11 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Audio Format
//
feed_format_edit=new QLineEdit(this);
feed_format_edit->setGeometry(155,324,285,20);
feed_format_edit->setReadOnly(true);
feed_format_label=new QLabel(feed_format_edit,tr("Upload Format:"),this);
feed_format_label->setGeometry(5,324,145,20);
feed_format_label->setFont(labelFont());
feed_format_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
feed_format_button=new QPushButton(this);
feed_format_button->setGeometry(450,324,40,24);
feed_format_button->setFont(subButtonFont());
feed_format_button->setText(tr("S&et"));
connect(feed_format_button,SIGNAL(clicked()),this,SLOT(setFormatData()));
@ -218,11 +202,9 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Normalize Check Box
//
feed_normalize_box=new QCheckBox(this);
feed_normalize_box->setGeometry(155,348,15,15);
feed_normalize_box->setChecked(true);
feed_normalize_check_label=
new QLabel(feed_normalize_box,tr("Normalize"),this);
feed_normalize_check_label->setGeometry(175,346,83,20);
feed_normalize_check_label->setFont(labelFont());
feed_normalize_check_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
connect(feed_normalize_box,SIGNAL(toggled(bool)),
@ -232,14 +214,11 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Normalize Level
//
feed_normalize_spin=new QSpinBox(this);
feed_normalize_spin->setGeometry(295,346,40,20);
feed_normalize_spin->setRange(-30,-1);
feed_normalize_label=new QLabel(feed_normalize_spin,tr("Level:"),this);
feed_normalize_label->setGeometry(245,346,45,20);
feed_normalize_label->setFont(labelFont());
feed_normalize_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
feed_normalize_unit_label=new QLabel(tr("dBFS"),this);
feed_normalize_unit_label->setGeometry(340,346,40,20);
feed_normalize_unit_label->setFont(labelFont());
feed_normalize_unit_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
@ -247,11 +226,9 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Base Audio URL
//
feed_base_url_edit=new QLineEdit(this);
feed_base_url_edit->setGeometry(155,368,335,19);
feed_base_url_edit->setMaxLength(255);
feed_base_url_label=
new QLabel(feed_base_url_edit,tr("Audio Download URL:"),this);
feed_base_url_label->setGeometry(20,368,130,19);
feed_base_url_label->setFont(labelFont());
feed_base_url_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -259,10 +236,8 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Keep Expired Metadata Checkbox
//
feed_keep_metadata_box=new QCheckBox(this);
feed_keep_metadata_box->setGeometry(155,390,15,15);
feed_keep_metadata_label=
new QLabel(feed_keep_metadata_box,tr("Keep Expired Metadata"),this);
feed_keep_metadata_label->setGeometry(175,390,180,19);
feed_keep_metadata_label->setFont(labelFont());
feed_keep_metadata_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
@ -270,10 +245,8 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// AutoPost Checkbox
//
feed_autopost_box=new QCheckBox(this);
feed_autopost_box->setGeometry(365,390,15,15);
feed_autopost_label=
new QLabel(feed_autopost_box,tr("Enable AutoPost"),this);
feed_autopost_label->setGeometry(385,390,200,19);
feed_autopost_label->setFont(labelFont());
feed_autopost_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
@ -281,11 +254,9 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Enclosure Preamble
//
feed_base_preamble_edit=new QLineEdit(this);
feed_base_preamble_edit->setGeometry(155,412,335,19);
feed_base_preamble_edit->setMaxLength(255);
feed_base_preamble_label=
new QLabel(feed_base_preamble_edit,tr("Enclosure Preamble:"),this);
feed_base_preamble_label->setGeometry(20,412,130,19);
feed_base_preamble_label->setFont(labelFont());
feed_base_preamble_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -293,11 +264,9 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Audio File Extension
//
feed_extension_edit=new QLineEdit(this);
feed_extension_edit->setGeometry(155,434,70,19);
feed_extension_edit->setMaxLength(16);
feed_extension_label=
new QLabel(feed_extension_edit,tr("Audio Extension:"),this);
feed_extension_label->setGeometry(20,434,130,19);
feed_extension_label->setFont(labelFont());
feed_extension_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -305,18 +274,15 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Maximum Shelf Life
//
feed_max_shelf_life_spin=new QSpinBox(this);
feed_max_shelf_life_spin->setGeometry(155,456,60,19);
feed_max_shelf_life_spin->setRange(0,365);
feed_max_shelf_life_spin->setSpecialValueText(tr("None"));
feed_max_shelf_life_label=
new QLabel(feed_max_shelf_life_spin,tr("Maximum Shelf Life:"),this);
feed_max_shelf_life_label->setGeometry(20,456,130,19);
feed_max_shelf_life_label->setFont(labelFont());
feed_max_shelf_life_label->
setAlignment(Qt::AlignRight|Qt::AlignVCenter);
feed_max_shelf_life_unit_label=
new QLabel(feed_max_shelf_life_spin,tr("days"),this);
feed_max_shelf_life_unit_label->setGeometry(220,456,50,19);
feed_max_shelf_life_unit_label->setFont(labelFont());
feed_max_shelf_life_unit_label->
setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
@ -325,12 +291,10 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Episode Order
//
feed_castorder_box=new QComboBox(this);
feed_castorder_box->setGeometry(155,478,100,19);
feed_castorder_box->insertItem(tr("Descending"));
feed_castorder_box->insertItem(tr("Ascending"));
feed_castorder_label=
new QLabel(feed_castorder_box,tr("Episode Sort Order:"),this);
feed_castorder_label->setGeometry(20,478,130,19);
feed_castorder_label->setFont(labelFont());
feed_castorder_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -338,13 +302,11 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Media Link Mode
//
feed_media_link_mode_box=new QComboBox(this);
feed_media_link_mode_box->setGeometry(155,500,100,19);
feed_media_link_mode_box->insertItem(tr("None"));
feed_media_link_mode_box->insertItem(tr("Direct"));
feed_media_link_mode_box->insertItem(tr("Counted"));
feed_media_link_mode_label=
new QLabel(feed_media_link_mode_box,tr("Media Link Mode:"),this);
feed_media_link_mode_label->setGeometry(20,500,130,19);
feed_media_link_mode_label->setFont(labelFont());
feed_media_link_mode_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -352,28 +314,22 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
// Feed Redirection
//
feed_redirect_check=new QCheckBox(this);
feed_redirect_check->setGeometry(20,532,15,15);
QLabel *label=
feed_redirect_label=
new QLabel(feed_redirect_check,tr("Enable Feed Redirection"),this);
label->setGeometry(40,532,200,19);
label->setFont(labelFont());
label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
feed_redirect_edit=new QLineEdit(this);
feed_redirect_edit->setGeometry(85,552,405,20);
feed_redirect_label=new QLabel(feed_redirect_edit,tr("URL:"),this);
feed_redirect_label->setGeometry(40,552,40,19);
feed_redirect_label->setFont(labelFont());
feed_redirect_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
feed_redirect_label->setAlignment(Qt::AlignLeft|Qt::AlignVCenter);
feed_redirect_url_edit=new QLineEdit(this);
feed_redirect_url_label=new QLabel(feed_redirect_url_edit,tr("URL:"),this);
feed_redirect_url_label->setFont(labelFont());
feed_redirect_url_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Header XML
//
feed_header_xml_edit=new QTextEdit(this);
feed_header_xml_edit->setAcceptRichText(false);
feed_header_xml_edit->setGeometry(615,10,365,76);
feed_header_xml_label=new QLabel(feed_header_xml_edit,tr("Header XML:"),this);
feed_header_xml_label->setGeometry(520,10,90,19);
feed_header_xml_label->setFont(labelFont());
feed_header_xml_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -382,10 +338,8 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
//
feed_channel_xml_edit=new QTextEdit(this);
feed_channel_xml_edit->setAcceptRichText(false);
feed_channel_xml_edit->setGeometry(615,88,365,176);
feed_channel_xml_label=
new QLabel(feed_channel_xml_edit,tr("Channel XML:"),this);
feed_channel_xml_label->setGeometry(520,88,90,19);
feed_channel_xml_label->setFont(labelFont());
feed_channel_xml_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
@ -394,36 +348,32 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
//
feed_item_xml_edit=new QTextEdit(this);
feed_item_xml_edit->setAcceptRichText(false);
feed_item_xml_edit->setGeometry(615,270,365,250);
feed_item_xml_label=new QLabel(feed_item_xml_edit,tr("Item XML:"),this);
feed_item_xml_label->setGeometry(520,270,90,19);
feed_item_xml_label->setFont(labelFont());
feed_item_xml_label->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
//
// Ok Button
//
QPushButton *ok_button=new QPushButton(this);
ok_button->setGeometry(sizeHint().width()-180,sizeHint().height()-60,80,50);
ok_button->setDefault(true);
ok_button->setFont(buttonFont());
ok_button->setText(tr("&OK"));
connect(ok_button,SIGNAL(clicked()),this,SLOT(okData()));
feed_ok_button=new QPushButton(this);
feed_ok_button->setDefault(true);
feed_ok_button->setFont(buttonFont());
feed_ok_button->setText(tr("&OK"));
connect(feed_ok_button,SIGNAL(clicked()),this,SLOT(okData()));
//
// Cancel Button
//
QPushButton *cancel_button=new QPushButton(this);
cancel_button->
setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50);
cancel_button->setFont(buttonFont());
cancel_button->setText(tr("&Cancel"));
connect(cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
feed_cancel_button=new QPushButton(this);
feed_cancel_button->setFont(buttonFont());
feed_cancel_button->setText(tr("&Cancel"));
connect(feed_cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
//
// Populate Values
//
feed_keyname_edit->setText(feed_feed->keyName());
feed_is_superfeed_box->setCurrentIndex(feed_feed->isSuperfeed());
feed_channel_title_edit->setText(feed_feed->channelTitle());
feed_channel_category_edit->setText(feed_feed->channelCategory());
feed_channel_link_edit->setText(feed_feed->channelLink());
@ -458,11 +408,11 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
}
feed_castorder_box->setCurrentItem(feed_feed->castOrder());
feed_media_link_mode_box->setCurrentItem((int)feed_feed->mediaLinkMode());
feed_redirect_edit->setText(feed_feed->redirectPath());
feed_redirect_check->setChecked(!feed_redirect_edit->text().isEmpty());
feed_redirect_url_edit->setText(feed_feed->redirectPath());
feed_redirect_check->setChecked(!feed_redirect_url_edit->text().isEmpty());
normalizeCheckData(feed_normalize_box->isChecked());
RedirectChanged(feed_redirect_check->isChecked());
isSuperfeedChangedData(0);
connect(feed_redirect_check,SIGNAL(toggled(bool)),
this,SLOT(redirectToggledData(bool)));
}
@ -470,7 +420,7 @@ EditFeed::EditFeed(const QString &feed,QWidget *parent)
QSize EditFeed::sizeHint() const
{
return QSize(1000,591);
return QSize(1000,621);
}
@ -480,6 +430,90 @@ QSizePolicy EditFeed::sizePolicy() const
}
void EditFeed::isSuperfeedChangedData(int n)
{
bool superfeed=feed_is_superfeed_box->currentIndex();
bool redirected=feed_redirect_check->isChecked();
feed_is_superfeed_label->setDisabled(redirected);
feed_is_superfeed_box->setDisabled(redirected);
feed_is_superfeed_button->setDisabled(redirected||(!superfeed));
feed_channel_title_edit->setDisabled(redirected);
feed_channel_description_edit->setDisabled(redirected);
feed_channel_category_edit->setDisabled(redirected);
feed_channel_link_edit->setDisabled(redirected);
feed_channel_copyright_edit->setDisabled(redirected);
feed_channel_webmaster_edit->setDisabled(redirected);
feed_channel_language_edit->setDisabled(redirected);
feed_channel_title_label->setDisabled(redirected);
feed_channel_category_label->setDisabled(redirected);
feed_channel_link_label->setDisabled(redirected);
feed_channel_copyright_label->setDisabled(redirected);
feed_channel_webmaster_label->setDisabled(redirected);
feed_channel_language_label->setDisabled(redirected);
feed_channel_description_label->setDisabled(redirected);
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_max_shelf_life_spin->setDisabled(redirected||superfeed);
feed_autopost_box->setDisabled(redirected||superfeed);
feed_keep_metadata_box->setDisabled(redirected||superfeed);
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_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_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_extension_label->setDisabled(redirected||superfeed);
feed_channel_section_groupbox->setDisabled(redirected||superfeed);
feed_normalize_label->
setDisabled(redirected||superfeed||(!feed_normalize_box->isChecked()));
feed_normalize_spin->
setDisabled(redirected||superfeed||(!feed_normalize_box->isChecked()));
feed_normalize_unit_label->
setDisabled(redirected||superfeed||(!feed_normalize_box->isChecked()));
feed_media_link_mode_box->setDisabled(redirected||superfeed);
feed_media_link_mode_label->setDisabled(redirected||superfeed);
feed_header_xml_label->setDisabled(redirected);
feed_header_xml_edit->setDisabled(redirected);
feed_channel_xml_label->setDisabled(redirected);
feed_channel_xml_edit->setDisabled(redirected);
feed_item_xml_label->setDisabled(redirected|superfeed);
feed_item_xml_edit->setDisabled(redirected||superfeed);
}
void EditFeed::selectSubfeedsData()
{
EditSuperfeed *d=new EditSuperfeed(feed_feed,this);
d->exec();
delete d;
}
void EditFeed::purgeUrlChangedData(const QString &str)
{
QUrl url(str);
@ -538,12 +572,27 @@ void EditFeed::redirectToggledData(bool state)
return;
}
}
RedirectChanged(state);
isSuperfeedChangedData(0);
}
void EditFeed::okData()
{
if(feed_redirect_check->isChecked()) {
QUrl url(feed_redirect_url_edit->text());
if(url.isValid()&&(!url.isRelative()&&(!url.host().isEmpty()))) {
feed_feed->setRedirectPath(url.toString());
}
else {
QMessageBox::information(this,"RDAdmin - "+tr("Error"),
tr("The Feed Redirection URL is invalid!"));
return;
}
}
else {
feed_feed->setRedirectPath("");
}
feed_feed->setIsSuperfeed(feed_is_superfeed_box->currentItem());
feed_feed->setChannelTitle(feed_channel_title_edit->text());
feed_feed->setChannelCategory(feed_channel_category_edit->text());
feed_feed->setChannelLink(feed_channel_link_edit->text());
@ -579,12 +628,6 @@ void EditFeed::okData()
feed_feed->setCastOrder(feed_castorder_box->currentItem());
feed_feed->setMediaLinkMode((RDFeed::MediaLinkMode)feed_media_link_mode_box->
currentItem());
if(feed_redirect_check->isChecked()) {
feed_feed->setRedirectPath(feed_redirect_edit->text());
}
else {
feed_feed->setRedirectPath("");
}
done(0);
}
@ -596,62 +639,85 @@ void EditFeed::cancelData()
}
void EditFeed::RedirectChanged(bool state)
void EditFeed::resizeEvent(QResizeEvent *e)
{
feed_redirect_label->setEnabled(state);
feed_redirect_edit->setEnabled(state);
feed_channel_title_edit->setDisabled(state);
feed_channel_description_edit->setDisabled(state);
feed_channel_category_edit->setDisabled(state);
feed_channel_link_edit->setDisabled(state);
feed_channel_copyright_edit->setDisabled(state);
feed_channel_webmaster_edit->setDisabled(state);
feed_channel_language_edit->setDisabled(state);
feed_base_url_edit->setDisabled(state);
feed_purge_url_edit->setDisabled(state);
feed_purge_username_label->setDisabled(state);
feed_purge_username_edit->setDisabled(state);
feed_purge_password_label->setDisabled(state);
feed_purge_password_edit->setDisabled(state);
feed_header_xml_edit->setDisabled(state);
feed_channel_xml_edit->setDisabled(state);
feed_item_xml_edit->setDisabled(state);
feed_max_shelf_life_spin->setDisabled(state);
feed_autopost_box->setDisabled(state);
feed_keep_metadata_box->setDisabled(state);
feed_format_edit->setDisabled(state);
feed_normalize_box->setDisabled(state);
feed_extension_edit->setDisabled(state);
feed_castorder_box->setDisabled(state);
feed_format_button->setDisabled(state);
feed_channel_title_label->setDisabled(state);
feed_channel_category_label->setDisabled(state);
feed_channel_link_label->setDisabled(state);
feed_channel_copyright_label->setDisabled(state);
feed_channel_webmaster_label->setDisabled(state);
feed_channel_language_label->setDisabled(state);
feed_channel_description_label->setDisabled(state);
feed_base_url_label->setDisabled(state);
feed_base_preamble_label->setDisabled(state);
feed_purge_url_label->setDisabled(state);
feed_max_shelf_life_label->setDisabled(state);
feed_max_shelf_life_unit_label->setDisabled(state);
feed_autopost_label->setDisabled(state);
feed_keep_metadata_label->setDisabled(state);
feed_format_label->setDisabled(state);
feed_normalize_check_label->setDisabled(state);
feed_normalize_unit_label->setDisabled(state);
feed_castorder_label->setDisabled(state);
feed_extension_label->setDisabled(state);
feed_channel_section_groupbox->setDisabled(state);
feed_header_xml_label->setDisabled(state);
feed_channel_xml_label->setDisabled(state);
feed_item_xml_label->setDisabled(state);
feed_normalize_label->setDisabled(state||(!feed_normalize_box->isChecked()));
feed_normalize_spin->setDisabled(state||(!feed_normalize_box->isChecked()));
feed_normalize_unit_label->
setDisabled(state||(!feed_normalize_box->isChecked()));
feed_media_link_mode_box->setDisabled(state);
feed_media_link_mode_label->setDisabled(state);
purgeUrlChangedData(feed_purge_url_edit->text());
feed_keyname_edit->setGeometry(115,11,100,19);
feed_keyname_label->setGeometry(10,11,100,19);
feed_is_superfeed_box->setGeometry(115,33,60,19);
feed_is_superfeed_label->setGeometry(10,33,100,19);
feed_is_superfeed_button->setGeometry(185,33,160,38);
feed_channel_section_groupbox->setGeometry(10,75,sizeHint().width()/2-10,227);
feed_channel_title_edit->setGeometry(115,90,375,19);
feed_channel_title_label->setGeometry(20,90,90,19);
feed_channel_category_edit->setGeometry(115,112,375,19);
feed_channel_category_label->setGeometry(20,112,90,19);
feed_channel_link_edit->setGeometry(115,134,375,19);
feed_channel_link_label->setGeometry(20,134,90,19);
feed_channel_copyright_edit->setGeometry(115,156,375,19);
feed_channel_copyright_label->setGeometry(20,156,90,19);
feed_channel_webmaster_edit->setGeometry(115,178,375,19);
feed_channel_webmaster_label->setGeometry(20,178,90,19);
feed_channel_language_edit->
setGeometry(115,200,60,19);
feed_channel_language_label->setGeometry(20,200,90,19);
feed_channel_description_edit->setGeometry(115,222,375,76);
feed_channel_description_label->setGeometry(20,222,90,19);
feed_purge_url_edit->setGeometry(155,310,335,19);
feed_purge_url_label->setGeometry(20,310,130,19);
feed_purge_username_edit->setGeometry(225,332,95,19);
feed_purge_username_label->setGeometry(40,332,180,19);
feed_purge_password_edit->setGeometry(395,332,95,19);
feed_purge_password_label->setGeometry(320,332,70,19);
feed_format_edit->setGeometry(155,354,285,20);
feed_format_label->setGeometry(5,354,145,20);
feed_format_button->setGeometry(450,354,40,24);
feed_normalize_box->setGeometry(155,378,15,15);
feed_normalize_check_label->setGeometry(175,376,83,20);
feed_normalize_spin->setGeometry(295,376,40,20);
feed_normalize_label->setGeometry(245,376,45,20);
feed_normalize_unit_label->setGeometry(340,376,40,20);
feed_base_url_edit->setGeometry(155,398,335,19);
feed_base_url_label->setGeometry(5,398,145,19);
feed_keep_metadata_box->setGeometry(155,420,15,15);
feed_keep_metadata_label->setGeometry(175,420,180,19);
feed_autopost_box->setGeometry(365,420,15,15);
feed_autopost_label->setGeometry(385,420,200,19);
feed_base_preamble_edit->setGeometry(155,442,335,19);
feed_base_preamble_label->setGeometry(20,442,130,19);
feed_extension_edit->setGeometry(155,464,70,19);
feed_extension_label->setGeometry(20,464,130,19);
feed_max_shelf_life_spin->setGeometry(155,486,60,19);
feed_max_shelf_life_label->setGeometry(20,486,130,19);
feed_max_shelf_life_unit_label->setGeometry(220,486,50,19);
feed_castorder_box->setGeometry(155,508,100,19);
feed_castorder_label->setGeometry(20,508,130,19);
feed_media_link_mode_box->setGeometry(155,530,100,19);
feed_media_link_mode_label->setGeometry(20,530,130,19);
feed_redirect_check->setGeometry(20,562,15,15);
feed_redirect_label->setGeometry(40,562,200,19);
feed_redirect_url_edit->setGeometry(85,582,405,20);
feed_redirect_url_label->setGeometry(40,582,40,19);
feed_header_xml_edit->setGeometry(615,10,365,76);
feed_header_xml_label->setGeometry(520,10,90,19);
feed_channel_xml_edit->setGeometry(615,88,365,176);
feed_channel_xml_label->setGeometry(520,88,90,19);
feed_item_xml_edit->setGeometry(615,270,365,250);
feed_item_xml_label->setGeometry(520,270,90,19);
feed_ok_button->setGeometry(size().width()-180,size().height()-60,80,50);
feed_cancel_button->setGeometry(size().width()-90,size().height()-60,80,50);
}

@ -44,6 +44,8 @@ class EditFeed : public RDDialog
QSizePolicy sizePolicy() const;
private slots:
void isSuperfeedChangedData(int n);
void selectSubfeedsData();
void purgeUrlChangedData(const QString &str);
void purgeUsernameChangedData(const QString &username);
void setFormatData();
@ -51,11 +53,17 @@ class EditFeed : public RDDialog
void redirectToggledData(bool state);
void okData();
void cancelData();
protected:
void resizeEvent(QResizeEvent *e);
private:
void RedirectChanged(bool state);
RDFeed *feed_feed;
QLabel *feed_keyname_label;
QLineEdit *feed_keyname_edit;
QLabel *feed_is_superfeed_label;
QPushButton *feed_is_superfeed_button;
QComboBox *feed_is_superfeed_box;
QLineEdit *feed_channel_title_edit;
QTextEdit *feed_channel_description_edit;
QLineEdit *feed_channel_category_edit;
@ -84,9 +92,10 @@ class EditFeed : public RDDialog
QLineEdit *feed_extension_edit;
QComboBox *feed_castorder_box;
QComboBox *feed_media_link_mode_box;
QCheckBox *feed_redirect_check;
QLabel *feed_redirect_label;
QLineEdit *feed_redirect_edit;
QCheckBox *feed_redirect_check;
QLabel *feed_redirect_url_label;
QLineEdit *feed_redirect_url_edit;
QPushButton *feed_format_button;
QGroupBox *feed_channel_section_groupbox;
QLabel *feed_channel_title_label;
@ -109,6 +118,8 @@ class EditFeed : public RDDialog
QLabel *feed_castorder_label;
QLabel *feed_media_link_mode_label;
QLabel *feed_extension_label;
QPushButton *feed_ok_button;
QPushButton *feed_cancel_button;
QLabel *feed_header_xml_label;
QLabel *feed_channel_xml_label;
QLabel *feed_item_xml_label;

153
rdadmin/edit_superfeed.cpp Normal file

@ -0,0 +1,153 @@
// edit_superfeed.cpp
//
// Edit Rivendell Superfeed
//
// (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
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include <qpushbutton.h>
#include <rddb.h>
#include <rdescape_string.h>
#include "edit_superfeed.h"
EditSuperfeed::EditSuperfeed(RDFeed *feed,QWidget *parent)
: RDDialog(parent)
{
QString sql;
RDSqlQuery *q;
feed_feed=feed;
//
// Fix the Window Size
//
setMinimumSize(sizeHint());
setMaximumSize(sizeHint());
setWindowTitle("RDAdmin - "+tr("RSS Superfeed")+": "+feed_feed->keyName());
//
// Feed Selector
//
feed_host_sel=new RDListSelector(this);
feed_host_sel->sourceSetLabel(tr("Available Feeds"));
feed_host_sel->destSetLabel(tr("Member Feeds"));
feed_host_sel->setGeometry(10,10,380,130);
//
// Ok Button
//
QPushButton *ok_button=new QPushButton(this);
ok_button->setGeometry(sizeHint().width()-180,sizeHint().height()-60,80,50);
ok_button->setDefault(true);
ok_button->setFont(buttonFont());
ok_button->setText(tr("&OK"));
connect(ok_button,SIGNAL(clicked()),this,SLOT(okData()));
//
// Cancel Button
//
QPushButton *cancel_button=new QPushButton(this);
cancel_button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,
80,50);
cancel_button->setFont(buttonFont());
cancel_button->setText(tr("&Cancel"));
connect(cancel_button,SIGNAL(clicked()),this,SLOT(cancelData()));
//
// Populate Fields
//
sql=QString("select MEMBER_KEY_NAME from FEED_KEY_NAMES where ")+
"KEY_NAME=\""+RDEscapeString(feed_feed->keyName())+"\"";
q=new RDSqlQuery(sql);
while(q->next()) {
feed_host_sel->destInsertItem(q->value(0).toString());
}
delete q;
sql=QString("select KEY_NAME from FEEDS where ")+
"IS_SUPERFEED='N'";
q=new RDSqlQuery(sql);
while(q->next()) {
if(feed_host_sel->destFindItem(q->value(0).toString())==0) {
feed_host_sel->sourceInsertItem(q->value(0).toString());
}
}
delete q;
}
EditSuperfeed::~EditSuperfeed()
{
}
QSize EditSuperfeed::sizeHint() const
{
return QSize(400,212);
}
QSizePolicy EditSuperfeed::sizePolicy() const
{
return QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
}
void EditSuperfeed::okData()
{
RDSqlQuery *q;
QString sql;
//
// Add New Groups
//
for(unsigned i=0;i<feed_host_sel->destCount();i++) {
sql=QString("select MEMBER_KEY_NAME from FEED_KEY_NAMES 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))+"\")";
q=new RDSqlQuery(sql);
}
delete q;
}
//
// Delete Old Groups
//
sql=QString("delete from FEED_KEY_NAMES where ")+
"KEY_NAME=\""+RDEscapeString(feed_feed->keyName())+"\"";
for(unsigned i=0;i<feed_host_sel->destCount();i++) {
sql+=QString(" && MEMBER_KEY_NAME<>\"")+
RDEscapeString(feed_host_sel->destText(i))+"\"";
}
q=new RDSqlQuery(sql);
delete q;
done(0);
}
void EditSuperfeed::cancelData()
{
done(1);
}

48
rdadmin/edit_superfeed.h Normal file

@ -0,0 +1,48 @@
// edit_superfeed.h
//
// Edit Rivendell Superfeed
//
// (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
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#ifndef EDIT_SUPERFEED_H
#define EDIT_SUPERFEED_H
#include <rddialog.h>
#include <rdlistselector.h>
#include <rdfeed.h>
class EditSuperfeed : public RDDialog
{
Q_OBJECT
public:
EditSuperfeed(RDFeed *feed,QWidget *parent=0);
~EditSuperfeed();
QSize sizeHint() const;
QSizePolicy sizePolicy() const;
private slots:
void okData();
void cancelData();
private:
RDListSelector *feed_host_sel;
RDFeed *feed_feed;
};
#endif // EDIT_SUPERFEED_H

@ -2,7 +2,7 @@
//
// List Rivendell Feeds
//
// (C) Copyright 2002-2019 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@ -92,12 +92,14 @@ ListFeeds::ListFeeds(QWidget *parent)
list_feeds_view->setColumnAlignment(0,Qt::AlignCenter|Qt::AlignVCenter);
list_feeds_view->addColumn(tr("Title"));
list_feeds_view->setColumnAlignment(1,Qt::AlignLeft|Qt::AlignVCenter);
list_feeds_view->addColumn(tr("AutoPost"));
list_feeds_view->addColumn(tr("Superfeed"));
list_feeds_view->setColumnAlignment(2,Qt::AlignCenter|Qt::AlignVCenter);
list_feeds_view->addColumn(tr("Keep Metadata"));
list_feeds_view->addColumn(tr("AutoPost"));
list_feeds_view->setColumnAlignment(3,Qt::AlignCenter|Qt::AlignVCenter);
list_feeds_view->addColumn(tr("Creation Date"));
list_feeds_view->addColumn(tr("Keep Metadata"));
list_feeds_view->setColumnAlignment(4,Qt::AlignCenter|Qt::AlignVCenter);
list_feeds_view->addColumn(tr("Creation Date"));
list_feeds_view->setColumnAlignment(5,Qt::AlignCenter|Qt::AlignVCenter);
QLabel *list_box_label=new QLabel(list_feeds_view,tr("&Feeds:"),this);
list_box_label->setFont(labelFont());
list_box_label->setGeometry(14,11,85,19);
@ -117,7 +119,7 @@ ListFeeds::~ListFeeds()
QSize ListFeeds::sizeHint() const
{
return QSize(400,280);
return QSize(500,280);
}
@ -293,9 +295,16 @@ void ListFeeds::RefreshList()
RDListViewItem *item;
list_feeds_view->clear();
q=new
RDSqlQuery("select ID,KEY_NAME,CHANNEL_TITLE,ENABLE_AUTOPOST,\
KEEP_METADATA,ORIGIN_DATETIME from FEEDS");
sql=QString("select ")+
"ID,"+ // 00
"KEY_NAME,"+ // 01
"CHANNEL_TITLE,"+ // 02
"IS_SUPERFEED,"+ // 03
"ENABLE_AUTOPOST,"+ // 04
"KEEP_METADATA,"+ // 05
"ORIGIN_DATETIME "+ // 06
"from FEEDS";
q=new RDSqlQuery(sql);
while (q->next()) {
item=new RDListViewItem(list_feeds_view);
item->setId(q->value(0).toInt());
@ -303,7 +312,8 @@ void ListFeeds::RefreshList()
item->setText(1,q->value(2).toString());
item->setText(2,q->value(3).toString());
item->setText(3,q->value(4).toString());
item->setText(4,q->value(5).toDateTime().toString("MM/dd/yyyy"));
item->setText(4,q->value(5).toString());
item->setText(5,q->value(6).toDateTime().toString("MM/dd/yyyy"));
}
delete q;
}
@ -314,16 +324,23 @@ void ListFeeds::RefreshItem(RDListViewItem *item)
QString sql;
RDSqlQuery *q;
sql=QString().sprintf("select KEY_NAME,CHANNEL_TITLE,ENABLE_AUTOPOST,\
KEEP_METADATA,ORIGIN_DATETIME from FEEDS \
where ID=%d",item->id());
sql=QString("select ")+
"KEY_NAME,"+ // 00
"CHANNEL_TITLE,"+ // 01
"IS_SUPERFEED,"+ // 02
"ENABLE_AUTOPOST,"+ // 03
"KEEP_METADATA,"+ // 04
"ORIGIN_DATETIME "+ // 05
"from FEEDS where "+
QString().sprintf("ID=%d",item->id());
q=new RDSqlQuery(sql);
if(q->next()) {
item->setText(0,q->value(0).toString());
item->setText(1,q->value(1).toString());
item->setText(2,q->value(2).toString());
item->setText(3,q->value(3).toString());
item->setText(4,q->value(4).toDateTime().toString("MM/dd/yyyy"));
item->setText(4,q->value(4).toString());
item->setText(5,q->value(5).toDateTime().toString("MM/dd/yyyy"));
}
delete q;
}

@ -1604,6 +1604,31 @@ Pořád ještě chcete povolit přesměrování?</translation>
<source>Channel Values</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished">Ne</translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished">Ano</translation>
</message>
<message>
<source>Is Superfeed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Feed Redirection URL is invalid!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Member
Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4998,6 +5023,10 @@ Stále ještě jej chcete smazat?</translation>
<source>Deleting</source>
<translation>Mazání</translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

@ -1503,6 +1503,31 @@ Do you still want to enable redireciton?</source>
<source>Channel Values</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished">Nein</translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished">Ja</translation>
</message>
<message>
<source>Is Superfeed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Feed Redirection URL is invalid!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Member
Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4844,6 +4869,10 @@ Wollen Sie ihn immernoch löschen?</translation>
<source>Deleting</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

@ -1607,6 +1607,31 @@ al URL especificado.
<source>Channel Values</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished">No</translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Is Superfeed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Feed Redirection URL is invalid!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Member
Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4965,6 +4990,10 @@ Do you still want to delete it?</source>
<source>Deleting</source>
<translation>Borrando</translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

@ -1175,6 +1175,31 @@ Do you still want to enable redireciton?</source>
<source>Channel Values</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Is Superfeed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Feed Redirection URL is invalid!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Member
Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -3994,6 +4019,10 @@ Permissions</source>
<source>Deleting</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

@ -1465,6 +1465,31 @@ Do you still want to enable redireciton?</source>
<source>Channel Values</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished">Nei</translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished">Ja</translation>
</message>
<message>
<source>Is Superfeed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Feed Redirection URL is invalid!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Member
Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4701,6 +4726,10 @@ Klikk på &quot;Lisens&quot;-knappen for fleire opplysningar.</translation>
<source>Deleting</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

@ -1465,6 +1465,31 @@ Do you still want to enable redireciton?</source>
<source>Channel Values</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished">Nei</translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished">Ja</translation>
</message>
<message>
<source>Is Superfeed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Feed Redirection URL is invalid!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Member
Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4701,6 +4726,10 @@ Klikk på &quot;Lisens&quot;-knappen for fleire opplysningar.</translation>
<source>Deleting</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

@ -1475,6 +1475,31 @@ Do you still want to enable redireciton?</source>
<source>Channel Values</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No</source>
<translation type="unfinished">Não</translation>
</message>
<message>
<source>Yes</source>
<translation type="unfinished">Sim</translation>
</message>
<message>
<source>Is Superfeed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The Feed Redirection URL is invalid!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select Member
Feeds</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditFeedPerms</name>
@ -4824,6 +4849,10 @@ Você ainda quer Deletar?</translation>
<source>Deleting</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Superfeed</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ListGpis</name>

@ -40,6 +40,17 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// NEW SCHEMA REVERSIONS GO HERE...
//
// Revert 315
//
if((cur_schema==315)&&(set_schema<cur_schema)) {
DropTable("FEED_KEY_NAMES");
DropIndex("FEEDS","IS_SUPERFEED_IDX");
DropColumn("FEEDS","IS_SUPERFEED");
WriteSchemaVersion(--cur_schema);
}
//
// Revert 314
//

@ -159,7 +159,7 @@ void MainObject::InitializeSchemaMap() {
global_version_map["3.0"]=308;
global_version_map["3.1"]=310;
global_version_map["3.2"]=311;
global_version_map["3.3"]=314;
global_version_map["3.3"]=315;
}

@ -9903,6 +9903,30 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
WriteSchemaVersion(++cur_schema);
}
if((cur_schema<315)&&(set_schema>cur_schema)) {
sql=QString("alter table FEEDS add column ")+
"IS_SUPERFEED enum('N','Y') default 'N' after KEY_NAME";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table FEEDS add index IS_SUPERFEED_IDX(IS_SUPERFEED)");
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("create table FEED_KEY_NAMES (")+
"KEY_NAME varchar(8) not null,"+
"MEMBER_KEY_NAME varchar(8) not null,"+
"index KEY_NAME_IDX(KEY_NAME),"+
"index MEMBER_KEY_NAME_IDX(MEMBER_KEY_NAME))";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
WriteSchemaVersion(++cur_schema);
}
// NEW SCHEMA UPDATES GO HERE...