Fixed #53.
This commit is contained in:
parent
a8cc0f7949
commit
7498565be8
130 changed files with 278 additions and 215 deletions
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# This file is part of RSS Guard.
|
# This file is part of RSS Guard.
|
||||||
#
|
#
|
||||||
# Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
# Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
#
|
#
|
||||||
# RSS Guard is free software: you can redistribute it and/or modify
|
# RSS Guard is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -71,8 +71,8 @@ project(rssguard)
|
||||||
|
|
||||||
set(APP_NAME "RSS Guard")
|
set(APP_NAME "RSS Guard")
|
||||||
set(APP_LOW_NAME "rssguard")
|
set(APP_LOW_NAME "rssguard")
|
||||||
set(APP_VERSION "2.1.0")
|
set(APP_VERSION "2.2.0")
|
||||||
set(FILE_VERSION "2,1,0,0")
|
set(FILE_VERSION "2,2,0,0")
|
||||||
set(APP_AUTHOR "Martin Rotter")
|
set(APP_AUTHOR "Martin Rotter")
|
||||||
set(APP_URL "http://bitbucket.org/skunkos/rssguard")
|
set(APP_URL "http://bitbucket.org/skunkos/rssguard")
|
||||||
set(APP_URL_ISSUES "http://bitbucket.org/skunkos/rssguard/issues")
|
set(APP_URL_ISSUES "http://bitbucket.org/skunkos/rssguard/issues")
|
||||||
|
@ -221,26 +221,24 @@ add_definitions(-DQT_USE_QSTRINGBUILDER)
|
||||||
# Force Unicode.
|
# Force Unicode.
|
||||||
add_definitions(-DUNICODE -D_UNICODE)
|
add_definitions(-DUNICODE -D_UNICODE)
|
||||||
|
|
||||||
if(${USE_QT_5})
|
# Check for C++ 11 features availability.
|
||||||
# Check for C++ 11 features availability.
|
# See http://stackoverflow.com/questions/10984442/how-to-detect-c11-support-of-a-compiler-with-cmake
|
||||||
# See http://stackoverflow.com/questions/10984442/how-to-detect-c11-support-of-a-compiler-with-cmake
|
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
|
||||||
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION
|
COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
if(NOT (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7))
|
if(GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)
|
||||||
message(FATAL_ERROR "[${APP_LOW_NAME}] Your C++ compiler does not support C++ 11.")
|
|
||||||
else(NOT (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7))
|
|
||||||
add_definitions(-std=c++11)
|
add_definitions(-std=c++11)
|
||||||
endif(NOT (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7))
|
else(GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)
|
||||||
|
|
||||||
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
|
||||||
add_definitions(-std=c++11 -stdlib=libc++)
|
|
||||||
elseif(${MSVC_VERSION} VERSION_LESS 1600)
|
|
||||||
message(FATAL_ERROR "[${APP_LOW_NAME}] Your C++ compiler does not support C++ 11.")
|
message(FATAL_ERROR "[${APP_LOW_NAME}] Your C++ compiler does not support C++ 11.")
|
||||||
endif("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
|
endif(GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)
|
||||||
endif(${USE_QT_5})
|
|
||||||
|
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
||||||
|
add_definitions(-std=c++11 -stdlib=libc++)
|
||||||
|
elseif(${MSVC_VERSION} VERSION_LESS 1600)
|
||||||
|
message(FATAL_ERROR "[${APP_LOW_NAME}] Your C++ compiler does not support C++ 11.")
|
||||||
|
endif("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
|
||||||
|
|
||||||
# Setup librar ies.
|
# Setup librar ies.
|
||||||
if(${USE_QT_5})
|
if(${USE_QT_5})
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
; This file is part of RSS Guard.
|
; This file is part of RSS Guard.
|
||||||
;
|
;
|
||||||
; Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
; Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
;
|
;
|
||||||
; RSS Guard is free software: you can redistribute it and/or modify
|
; RSS Guard is free software: you can redistribute it and/or modify
|
||||||
; it under the terms of the GNU General Public License as published by
|
; it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,4 +1,16 @@
|
||||||
<body>
|
<body>
|
||||||
|
<center><h2>2.2.0</h2></center>
|
||||||
|
|
||||||
|
Fixed:
|
||||||
|
<ul>
|
||||||
|
<li>Fixed issue #53 - removing of duplicate messages. Feature is available globally in "Settings -> Messages".</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
Added:
|
||||||
|
<ul>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr/>
|
||||||
<center><h2>2.1.0</h2></center>
|
<center><h2>2.1.0</h2></center>
|
||||||
|
|
||||||
Fixed:
|
Fixed:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -794,7 +794,7 @@ void FeedsModel::loadFromDatabase() {
|
||||||
while (query_categories.next()) {
|
while (query_categories.next()) {
|
||||||
CategoryAssignmentItem pair;
|
CategoryAssignmentItem pair;
|
||||||
pair.first = query_categories.value(CAT_DB_PARENT_ID_INDEX).toInt();
|
pair.first = query_categories.value(CAT_DB_PARENT_ID_INDEX).toInt();
|
||||||
pair.second = FeedsModelCategory::loadFromRecord(query_categories.record());
|
pair.second = new FeedsModelCategory(query_categories.record());
|
||||||
|
|
||||||
categories << pair;
|
categories << pair;
|
||||||
}
|
}
|
||||||
|
@ -818,7 +818,7 @@ void FeedsModel::loadFromDatabase() {
|
||||||
case FeedsModelFeed::Rss2X: {
|
case FeedsModelFeed::Rss2X: {
|
||||||
FeedAssignmentItem pair;
|
FeedAssignmentItem pair;
|
||||||
pair.first = query_feeds.value(FDS_DB_CATEGORY_INDEX).toInt();
|
pair.first = query_feeds.value(FDS_DB_CATEGORY_INDEX).toInt();
|
||||||
pair.second = FeedsModelFeed::loadFromRecord(query_feeds.record());
|
pair.second = new FeedsModelFeed(query_feeds.record());
|
||||||
pair.second->setType(type);
|
pair.second->setType(type);
|
||||||
|
|
||||||
feeds << pair;
|
feeds << pair;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -141,14 +141,10 @@ bool FeedsModelCategory::removeItself() {
|
||||||
return query_remove.exec();
|
return query_remove.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
FeedsModelCategory *FeedsModelCategory::loadFromRecord(const QSqlRecord &record) {
|
FeedsModelCategory::FeedsModelCategory(const QSqlRecord &record) : FeedsModelCategory() {
|
||||||
FeedsModelCategory *category = new FeedsModelCategory(NULL);
|
setId(record.value(CAT_DB_ID_INDEX).toInt());
|
||||||
|
setTitle(record.value(CAT_DB_TITLE_INDEX).toString());
|
||||||
category->setId(record.value(CAT_DB_ID_INDEX).toInt());
|
setDescription(record.value(CAT_DB_DESCRIPTION_INDEX).toString());
|
||||||
category->setTitle(record.value(CAT_DB_TITLE_INDEX).toString());
|
setCreationDate(TextFactory::parseDateTime(record.value(CAT_DB_DCREATED_INDEX).value<qint64>()).toLocalTime());
|
||||||
category->setDescription(record.value(CAT_DB_DESCRIPTION_INDEX).toString());
|
setIcon(qApp->icons()->fromByteArray(record.value(CAT_DB_ICON_INDEX).toByteArray()));
|
||||||
category->setCreationDate(TextFactory::parseDateTime(record.value(CAT_DB_DCREATED_INDEX).value<qint64>()).toLocalTime());
|
|
||||||
category->setIcon(qApp->icons()->fromByteArray(record.value(CAT_DB_ICON_INDEX).toByteArray()));
|
|
||||||
|
|
||||||
return category;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -36,6 +36,7 @@ class FeedsModelCategory : public FeedsModelRootItem {
|
||||||
// Constructors and destructors
|
// Constructors and destructors
|
||||||
explicit FeedsModelCategory(FeedsModelRootItem *parent_item = NULL);
|
explicit FeedsModelCategory(FeedsModelRootItem *parent_item = NULL);
|
||||||
explicit FeedsModelCategory(const FeedsModelCategory &other);
|
explicit FeedsModelCategory(const FeedsModelCategory &other);
|
||||||
|
explicit FeedsModelCategory(const QSqlRecord &record);
|
||||||
virtual ~FeedsModelCategory();
|
virtual ~FeedsModelCategory();
|
||||||
|
|
||||||
// Returns the actual data representation of standard category.
|
// Returns the actual data representation of standard category.
|
||||||
|
@ -44,9 +45,6 @@ class FeedsModelCategory : public FeedsModelRootItem {
|
||||||
// Removes category and all its children from persistent
|
// Removes category and all its children from persistent
|
||||||
// database.
|
// database.
|
||||||
bool removeItself();
|
bool removeItself();
|
||||||
|
|
||||||
// Loads particular "standard category" from given sql record.
|
|
||||||
static FeedsModelCategory *loadFromRecord(const QSqlRecord &record);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FEEDSMODELCLASSICCATEGORY_H
|
#endif // FEEDSMODELCLASSICCATEGORY_H
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -114,9 +114,9 @@ QString FeedsModelFeed::typeToString(FeedsModelFeed::Type type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedsModelFeed::updateCounts(bool including_total_count, bool update_feed_statuses) {
|
void FeedsModelFeed::updateCounts(bool including_total_count, bool update_feed_statuses) {
|
||||||
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed",
|
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed", DatabaseFactory::FromSettings);
|
||||||
DatabaseFactory::FromSettings);
|
|
||||||
QSqlQuery query_all(database);
|
QSqlQuery query_all(database);
|
||||||
|
|
||||||
query_all.setForwardOnly(true);
|
query_all.setForwardOnly(true);
|
||||||
|
|
||||||
if (including_total_count) {
|
if (including_total_count) {
|
||||||
|
@ -137,26 +137,6 @@ void FeedsModelFeed::updateCounts(bool including_total_count, bool update_feed_s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FeedsModelFeed *FeedsModelFeed::loadFromRecord(const QSqlRecord &record) {
|
|
||||||
FeedsModelFeed *feed = new FeedsModelFeed();
|
|
||||||
|
|
||||||
feed->setTitle(record.value(FDS_DB_TITLE_INDEX).toString());
|
|
||||||
feed->setId(record.value(FDS_DB_ID_INDEX).toInt());
|
|
||||||
feed->setDescription(record.value(FDS_DB_DESCRIPTION_INDEX).toString());
|
|
||||||
feed->setCreationDate(TextFactory::parseDateTime(record.value(FDS_DB_DCREATED_INDEX).value<qint64>()).toLocalTime());
|
|
||||||
feed->setIcon(qApp->icons()->fromByteArray(record.value(FDS_DB_ICON_INDEX).toByteArray()));
|
|
||||||
feed->setEncoding(record.value(FDS_DB_ENCODING_INDEX).toString());
|
|
||||||
feed->setUrl(record.value(FDS_DB_URL_INDEX).toString());
|
|
||||||
feed->setPasswordProtected(record.value(FDS_DB_PROTECTED_INDEX).toBool());
|
|
||||||
feed->setUsername(record.value(FDS_DB_USERNAME_INDEX).toString());
|
|
||||||
feed->setPassword(record.value(FDS_DB_PASSWORD_INDEX).toString());
|
|
||||||
feed->setAutoUpdateType(static_cast<FeedsModelFeed::AutoUpdateType>(record.value(FDS_DB_UPDATE_TYPE_INDEX).toInt()));
|
|
||||||
feed->setAutoUpdateInitialInterval(record.value(FDS_DB_UPDATE_INTERVAL_INDEX).toInt());
|
|
||||||
feed->updateCounts();
|
|
||||||
|
|
||||||
return feed;
|
|
||||||
}
|
|
||||||
|
|
||||||
QPair<FeedsModelFeed*, QNetworkReply::NetworkError> FeedsModelFeed::guessFeed(const QString &url,
|
QPair<FeedsModelFeed*, QNetworkReply::NetworkError> FeedsModelFeed::guessFeed(const QString &url,
|
||||||
const QString &username,
|
const QString &username,
|
||||||
const QString &password) {
|
const QString &password) {
|
||||||
|
@ -390,12 +370,12 @@ QVariant FeedsModelFeed::data(int column, int role) const {
|
||||||
void FeedsModelFeed::update() {
|
void FeedsModelFeed::update() {
|
||||||
QByteArray feed_contents;
|
QByteArray feed_contents;
|
||||||
int download_timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
|
int download_timeout = qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::UpdateTimeout)).toInt();
|
||||||
m_networkError = NetworkFactory::downloadFeedFile(url(), download_timeout, feed_contents, passwordProtected(), username(), password()).first;
|
m_networkError = NetworkFactory::downloadFeedFile(url(), download_timeout, feed_contents,
|
||||||
|
passwordProtected(), username(), password()).first;
|
||||||
|
|
||||||
if (m_networkError != QNetworkReply::NoError) {
|
if (m_networkError != QNetworkReply::NoError) {
|
||||||
qWarning("Error during fetching of new messages for feed '%s' (id %d).", qPrintable(url()), id());
|
qWarning("Error during fetching of new messages for feed '%s' (id %d).", qPrintable(url()), id());
|
||||||
m_status = NetworkError;
|
m_status = NetworkError;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -440,8 +420,7 @@ void FeedsModelFeed::update() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FeedsModelFeed::removeItself() {
|
bool FeedsModelFeed::removeItself() {
|
||||||
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed",
|
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed", DatabaseFactory::FromSettings);
|
||||||
DatabaseFactory::FromSettings);
|
|
||||||
QSqlQuery query_remove(database);
|
QSqlQuery query_remove(database);
|
||||||
|
|
||||||
query_remove.setForwardOnly(true);
|
query_remove.setForwardOnly(true);
|
||||||
|
@ -461,17 +440,30 @@ bool FeedsModelFeed::removeItself() {
|
||||||
return query_remove.exec();
|
return query_remove.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* postup zpracování zpráv:
|
||||||
|
* 1. Kontrola, zda existují již v DB zprávy se stejným NAZVEM, AUTOREM, URL ze stejneho kanalu.
|
||||||
|
* a. KONEC: Pokud neexistují, pak se aktuální nová zpráva přidá do DB.
|
||||||
|
* b. Pokud existují, jde se na krok 2.
|
||||||
|
* 2. Pokud má uživatel nastaveno mazání duplicitních zpráv, pak udělej a. Jinak jdi na krok 3.
|
||||||
|
* a. Vymaž všechny zprávy, které byly nalezeny ve kroku 1.
|
||||||
|
* b. Přidej tuto novou zprávu, nastav ji status přečtena na true.
|
||||||
|
* 3. Uživatel nemá nastaveno mazani dupl zpráv. Novou zprávu přidáme do DB tehdy když zpráva
|
||||||
|
* má datum získané z kanálu a zároveň identická zpráva s takovým datumem ještě v DB není.
|
||||||
|
* */
|
||||||
|
|
||||||
|
|
||||||
void FeedsModelFeed::updateMessages(const QList<Message> &messages) {
|
void FeedsModelFeed::updateMessages(const QList<Message> &messages) {
|
||||||
int feed_id = id();
|
int feed_id = id();
|
||||||
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed",
|
QSqlDatabase database = qApp->database()->connection("FeedsModelFeed", DatabaseFactory::FromSettings);
|
||||||
DatabaseFactory::FromSettings);
|
bool remove_duplicates = qApp->settings()->value(GROUP(Messages), SETTING(Messages::RemoveDuplicates)).toBool();
|
||||||
|
|
||||||
// Prepare queries.
|
// Prepare queries.
|
||||||
QSqlQuery query_select(database);
|
QSqlQuery query_select(database);
|
||||||
|
QSqlQuery query_update(database);
|
||||||
QSqlQuery query_insert(database);
|
QSqlQuery query_insert(database);
|
||||||
|
|
||||||
// Used to check if give feed contains with message with given
|
// Used to check if given feed contains any message with given title, url and date_created.
|
||||||
// title, url and date_created.
|
|
||||||
// WARNING: One feed CANNOT contain two (or more) messages with same AUTHOR AND TITLE AND URL AND DATE_CREATED.
|
// WARNING: One feed CANNOT contain two (or more) messages with same AUTHOR AND TITLE AND URL AND DATE_CREATED.
|
||||||
query_select.setForwardOnly(true);
|
query_select.setForwardOnly(true);
|
||||||
query_select.prepare("SELECT id, feed, date_created FROM Messages "
|
query_select.prepare("SELECT id, feed, date_created FROM Messages "
|
||||||
|
@ -483,6 +475,11 @@ void FeedsModelFeed::updateMessages(const QList<Message> &messages) {
|
||||||
"(feed, title, url, author, date_created, contents) "
|
"(feed, title, url, author, date_created, contents) "
|
||||||
"VALUES (:feed, :title, :url, :author, :date_created, :contents);");
|
"VALUES (:feed, :title, :url, :author, :date_created, :contents);");
|
||||||
|
|
||||||
|
if (remove_duplicates) {
|
||||||
|
query_update.setForwardOnly(true);
|
||||||
|
query_update.prepare("UPDATE Messages SET contents = :contents WHERE id = :id;");
|
||||||
|
}
|
||||||
|
|
||||||
if (!database.transaction()) {
|
if (!database.transaction()) {
|
||||||
database.rollback();
|
database.rollback();
|
||||||
qDebug("Transaction start for message downloader failed.");
|
qDebug("Transaction start for message downloader failed.");
|
||||||
|
@ -490,8 +487,7 @@ void FeedsModelFeed::updateMessages(const QList<Message> &messages) {
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (Message message, messages) {
|
foreach (Message message, messages) {
|
||||||
// Check if messages contain relative URLs and if they do,
|
// Check if messages contain relative URLs and if they do, then replace them.
|
||||||
// then replace them.
|
|
||||||
if (message.m_url.startsWith('/')) {
|
if (message.m_url.startsWith('/')) {
|
||||||
QString new_message_url = url();
|
QString new_message_url = url();
|
||||||
int last_slash = new_message_url.lastIndexOf('/');
|
int last_slash = new_message_url.lastIndexOf('/');
|
||||||
|
@ -511,19 +507,17 @@ void FeedsModelFeed::updateMessages(const QList<Message> &messages) {
|
||||||
query_select.exec();
|
query_select.exec();
|
||||||
|
|
||||||
QList<qint64> datetime_stamps;
|
QList<qint64> datetime_stamps;
|
||||||
|
QList<int> ids;
|
||||||
|
|
||||||
while (query_select.next()) {
|
while (query_select.next()) {
|
||||||
|
ids << query_select.value(0).toInt();
|
||||||
datetime_stamps << query_select.value(2).value<qint64>();
|
datetime_stamps << query_select.value(2).value<qint64>();
|
||||||
}
|
}
|
||||||
|
|
||||||
query_select.finish();
|
query_select.finish();
|
||||||
|
|
||||||
if (datetime_stamps.isEmpty() ||(message.m_createdFromFeed && !datetime_stamps.contains(message.m_created.toMSecsSinceEpoch()))) {
|
if (datetime_stamps.isEmpty()) {
|
||||||
// Message is not fetched in this feed yet
|
// Message is not fetched in this feed yet.
|
||||||
// or it is. If it is, then go
|
|
||||||
// through datetime stamps of stored messages
|
|
||||||
// and check if new (not auto-generated timestamp
|
|
||||||
// is among them and add this message if it is not.
|
|
||||||
query_insert.bindValue(":feed", feed_id);
|
query_insert.bindValue(":feed", feed_id);
|
||||||
query_insert.bindValue(":title", message.m_title);
|
query_insert.bindValue(":title", message.m_title);
|
||||||
query_insert.bindValue(":url", message.m_url);
|
query_insert.bindValue(":url", message.m_url);
|
||||||
|
@ -536,6 +530,38 @@ void FeedsModelFeed::updateMessages(const QList<Message> &messages) {
|
||||||
}
|
}
|
||||||
|
|
||||||
query_insert.finish();
|
query_insert.finish();
|
||||||
|
|
||||||
|
qDebug("Adding new message '%s' to DB.", qPrintable(message.m_title));
|
||||||
|
}
|
||||||
|
else if (message.m_createdFromFeed && !datetime_stamps.contains(message.m_created.toMSecsSinceEpoch())) {
|
||||||
|
if (remove_duplicates && datetime_stamps.size() == 1) {
|
||||||
|
// Message is already in feed and new message has new unique time but user wishes to update existing
|
||||||
|
// messages and there is exactly ONE existing duplicate.
|
||||||
|
query_update.bindValue(":id", ids.at(0));
|
||||||
|
query_update.bindValue(":contents", message.m_contents);
|
||||||
|
query_update.exec();
|
||||||
|
query_update.finish();
|
||||||
|
|
||||||
|
qDebug("Updating contents of duplicate message '%s'.", qPrintable(message.m_title));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Message with same title, author and url exists, but new message has new unique time and
|
||||||
|
// user does not wish to update duplicates.
|
||||||
|
query_insert.bindValue(":feed", feed_id);
|
||||||
|
query_insert.bindValue(":title", message.m_title);
|
||||||
|
query_insert.bindValue(":url", message.m_url);
|
||||||
|
query_insert.bindValue(":author", message.m_author);
|
||||||
|
query_insert.bindValue(":date_created", message.m_created.toMSecsSinceEpoch());
|
||||||
|
query_insert.bindValue(":contents", message.m_contents);
|
||||||
|
|
||||||
|
if (query_insert.exec() && query_insert.numRowsAffected() == 1) {
|
||||||
|
setStatus(NewMessages);
|
||||||
|
}
|
||||||
|
|
||||||
|
query_insert.finish();
|
||||||
|
|
||||||
|
qDebug("Adding new duplicate (with potentially updated contents) message '%s' to DB.", qPrintable(message.m_title));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -549,3 +575,20 @@ void FeedsModelFeed::updateMessages(const QList<Message> &messages) {
|
||||||
QNetworkReply::NetworkError FeedsModelFeed::networkError() const {
|
QNetworkReply::NetworkError FeedsModelFeed::networkError() const {
|
||||||
return m_networkError;
|
return m_networkError;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FeedsModelFeed::FeedsModelFeed(const QSqlRecord &record) : FeedsModelFeed() {
|
||||||
|
setTitle(record.value(FDS_DB_TITLE_INDEX).toString());
|
||||||
|
setId(record.value(FDS_DB_ID_INDEX).toInt());
|
||||||
|
setDescription(record.value(FDS_DB_DESCRIPTION_INDEX).toString());
|
||||||
|
setCreationDate(TextFactory::parseDateTime(record.value(FDS_DB_DCREATED_INDEX).value<qint64>()).toLocalTime());
|
||||||
|
setIcon(qApp->icons()->fromByteArray(record.value(FDS_DB_ICON_INDEX).toByteArray()));
|
||||||
|
setEncoding(record.value(FDS_DB_ENCODING_INDEX).toString());
|
||||||
|
setUrl(record.value(FDS_DB_URL_INDEX).toString());
|
||||||
|
setPasswordProtected(record.value(FDS_DB_PROTECTED_INDEX).toBool());
|
||||||
|
setUsername(record.value(FDS_DB_USERNAME_INDEX).toString());
|
||||||
|
setPassword(record.value(FDS_DB_PASSWORD_INDEX).toString());
|
||||||
|
setAutoUpdateType(static_cast<FeedsModelFeed::AutoUpdateType>(record.value(FDS_DB_UPDATE_TYPE_INDEX).toInt()));
|
||||||
|
setAutoUpdateInitialInterval(record.value(FDS_DB_UPDATE_INTERVAL_INDEX).toInt());
|
||||||
|
updateCounts();
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -64,6 +64,7 @@ class FeedsModelFeed : public FeedsModelRootItem {
|
||||||
// Constructors and destructors.
|
// Constructors and destructors.
|
||||||
explicit FeedsModelFeed(FeedsModelRootItem *parent_item = NULL);
|
explicit FeedsModelFeed(FeedsModelRootItem *parent_item = NULL);
|
||||||
explicit FeedsModelFeed(const FeedsModelFeed &other);
|
explicit FeedsModelFeed(const FeedsModelFeed &other);
|
||||||
|
explicit FeedsModelFeed(const QSqlRecord &record);
|
||||||
virtual ~FeedsModelFeed();
|
virtual ~FeedsModelFeed();
|
||||||
|
|
||||||
// Returns 0, feeds have no children.
|
// Returns 0, feeds have no children.
|
||||||
|
@ -171,9 +172,6 @@ class FeedsModelFeed : public FeedsModelRootItem {
|
||||||
|
|
||||||
QNetworkReply::NetworkError networkError() const;
|
QNetworkReply::NetworkError networkError() const;
|
||||||
|
|
||||||
// Loads standard feed object from given SQL record.
|
|
||||||
static FeedsModelFeed *loadFromRecord(const QSqlRecord &record);
|
|
||||||
|
|
||||||
// Tries to guess feed hidden under given URL
|
// Tries to guess feed hidden under given URL
|
||||||
// and uses given credentials.
|
// and uses given credentials.
|
||||||
// Returns pointer to guessed feed (if at least partially
|
// Returns pointer to guessed feed (if at least partially
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
@ -191,6 +191,7 @@ void FormSettings::loadFeedsMessages() {
|
||||||
m_ui->m_checkUpdateAllFeedsOnStartup->setChecked(settings->value(GROUP(Feeds), SETTING(Feeds::FeedsUpdateOnStartup)).toBool());
|
m_ui->m_checkUpdateAllFeedsOnStartup->setChecked(settings->value(GROUP(Feeds), SETTING(Feeds::FeedsUpdateOnStartup)).toBool());
|
||||||
m_ui->m_cmbCountsFeedList->addItems(QStringList() << "(%unread)" << "[%unread]" << "%unread/%all" << "%unread-%all" << "[%unread|%all]");
|
m_ui->m_cmbCountsFeedList->addItems(QStringList() << "(%unread)" << "[%unread]" << "%unread/%all" << "%unread-%all" << "[%unread|%all]");
|
||||||
m_ui->m_cmbCountsFeedList->setEditText(settings->value(GROUP(Feeds), SETTING(Feeds::CountFormat)).toString());
|
m_ui->m_cmbCountsFeedList->setEditText(settings->value(GROUP(Feeds), SETTING(Feeds::CountFormat)).toString());
|
||||||
|
m_ui->m_checkRemoveDuplicateMessages->setChecked(settings->value(GROUP(Messages), SETTING(Messages::RemoveDuplicates)).toBool());
|
||||||
|
|
||||||
initializeMessageDateFormats();
|
initializeMessageDateFormats();
|
||||||
|
|
||||||
|
@ -227,6 +228,7 @@ void FormSettings::saveFeedsMessages() {
|
||||||
settings->setValue(GROUP(Messages), Messages::UseCustomDate, m_ui->m_checkMessagesDateTimeFormat->isChecked());
|
settings->setValue(GROUP(Messages), Messages::UseCustomDate, m_ui->m_checkMessagesDateTimeFormat->isChecked());
|
||||||
settings->setValue(GROUP(Messages), Messages::CustomDateFormat,
|
settings->setValue(GROUP(Messages), Messages::CustomDateFormat,
|
||||||
m_ui->m_cmbMessagesDateTimeFormat->itemData(m_ui->m_cmbMessagesDateTimeFormat->currentIndex()).toString());
|
m_ui->m_cmbMessagesDateTimeFormat->itemData(m_ui->m_cmbMessagesDateTimeFormat->currentIndex()).toString());
|
||||||
|
settings->setValue(GROUP(Messages), Messages::RemoveDuplicates, m_ui->m_checkRemoveDuplicateMessages->isChecked());
|
||||||
|
|
||||||
qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->updateAutoUpdateStatus();
|
qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->updateAutoUpdateStatus();
|
||||||
qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->sourceModel()->reloadWholeLayout();
|
qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->sourceModel()->reloadWholeLayout();
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -93,7 +93,7 @@
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QStackedWidget" name="m_stackedSettings">
|
<widget class="QStackedWidget" name="m_stackedSettings">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="m_pageGeneral">
|
<widget class="QWidget" name="m_pageGeneral">
|
||||||
<layout class="QFormLayout" name="formLayout_5">
|
<layout class="QFormLayout" name="formLayout_5">
|
||||||
|
@ -397,8 +397,8 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>707</width>
|
<width>100</width>
|
||||||
<height>451</height>
|
<height>30</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
|
@ -475,8 +475,8 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>701</width>
|
<width>167</width>
|
||||||
<height>425</height>
|
<height>219</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
@ -1160,7 +1160,7 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTabWidget" name="m_tabFeedsMessages">
|
<widget class="QTabWidget" name="m_tabFeedsMessages">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>1</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="m_tabFeeds">
|
<widget class="QWidget" name="m_tabFeeds">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
|
@ -1269,21 +1269,21 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
<property name="fieldGrowthPolicy">
|
<property name="fieldGrowthPolicy">
|
||||||
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QCheckBox" name="m_checkRemoveReadMessagesOnExit">
|
<widget class="QCheckBox" name="m_checkRemoveReadMessagesOnExit">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Remove all read messages from all standard feeds on application exit</string>
|
<string>Remove all read messages from all feeds on application exit</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QCheckBox" name="m_checkKeppMessagesInTheMiddle">
|
<widget class="QCheckBox" name="m_checkKeppMessagesInTheMiddle">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Keep message selection in the middle of the message list viewport</string>
|
<string>Keep message selection in the middle of the message list viewport</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="4" column="0">
|
||||||
<widget class="QCheckBox" name="m_checkMessagesDateTimeFormat">
|
<widget class="QCheckBox" name="m_checkMessagesDateTimeFormat">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Use custom date/time format (overrides format loaded from active localization)</string>
|
<string>Use custom date/time format (overrides format loaded from active localization)</string>
|
||||||
|
@ -1296,9 +1296,19 @@ Authors of this application are NOT responsible for lost data.</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="4" column="1">
|
||||||
<widget class="QComboBox" name="m_cmbMessagesDateTimeFormat"/>
|
<widget class="QComboBox" name="m_cmbMessagesDateTimeFormat"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QCheckBox" name="m_checkRemoveDuplicateMessages">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>When new message arrives from feed and duplicate exists, then its content is updated and new message is dropped.</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Remove duplicate messages</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// This file is part of RSS Guard.
|
// This file is part of RSS Guard.
|
||||||
//
|
//
|
||||||
// Copyright (C) 2011-2014 by Martin Rotter <rotter.martinos@gmail.com>
|
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
|
||||||
//
|
//
|
||||||
// RSS Guard is free software: you can redistribute it and/or modify
|
// RSS Guard is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue