|
|
|
/*
|
|
|
|
* configaccess.cpp
|
|
|
|
*
|
|
|
|
* Copyright (c) 2001 Frerich Raabe <raabe@kde.org>
|
|
|
|
*
|
|
|
|
* 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. For licensing and distribution details, check the
|
|
|
|
* accompanying file 'COPYING'.
|
|
|
|
*/
|
|
|
|
#include "configaccess.h"
|
|
|
|
#include "newsengine.h"
|
|
|
|
|
|
|
|
#include <tqregexp.h>
|
|
|
|
|
|
|
|
#include <kdebug.h>
|
|
|
|
#include <tdeglobal.h>
|
|
|
|
#include <tdeglobalsettings.h>
|
|
|
|
|
|
|
|
static NewsSourceBase::Data NewsSourceDefault[DEFAULT_NEWSSOURCES] = {
|
|
|
|
// Arts ---------------
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Bureau 42"),
|
|
|
|
TQString::fromLatin1("http://www.bureau42.com/feed"),
|
|
|
|
TQString::fromLatin1("http://www.bureau42.com/favicon.ico"),
|
|
|
|
NewsSourceBase::Arts, 5, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("eFilmCritic"),
|
|
|
|
TQString::fromLatin1("http://efilmcritic.com/fo.rdf"),
|
|
|
|
TQString::fromLatin1("http://efilmcritic.com/favicon.ico"),
|
|
|
|
NewsSourceBase::Arts, 3, false, false),
|
|
|
|
// Business -----------
|
|
|
|
// Computers ----------
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Trinity Desktop Environment news"),
|
|
|
|
TQString::fromLatin1("https://www.trinitydesktop.org/rss.php"),
|
|
|
|
TQString::fromLatin1("http://www.trinitydesktop.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, true, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Debian news"),
|
|
|
|
TQString::fromLatin1("https://www.debian.org/News/news"),
|
|
|
|
TQString::fromLatin1("http://www.debian.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, true, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Fedora news"),
|
|
|
|
TQString::fromLatin1("http://planet.fedoraproject.org/rss20.xml"),
|
|
|
|
TQString::fromLatin1("http://planet.fedoraproject.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, true, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("OpenSuse news"),
|
|
|
|
TQString::fromLatin1("http://news.opensuse.org/feed/"),
|
|
|
|
TQString::fromLatin1("http://www.opensuse.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, true, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Arch news"),
|
|
|
|
TQString::fromLatin1("https://www.archlinux.org/feeds/news/"),
|
|
|
|
TQString::fromLatin1("http://www.archlinux.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, true, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("XFCE news"),
|
|
|
|
TQString::fromLatin1("http://www.xfce.org/feed?lang=en"),
|
|
|
|
TQString::fromLatin1("http://www.xfce.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("LXDE news"),
|
|
|
|
TQString::fromLatin1("http://www.lxde.org/rss.xml"),
|
|
|
|
TQString::fromLatin1("http://www.lxde.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("FreeBSD Project News"),
|
|
|
|
TQString::fromLatin1("http://www.freebsd.org/news/news.rdf"),
|
|
|
|
TQString::fromLatin1("http://www.freebsd.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("KDE news"),
|
|
|
|
TQString::fromLatin1("http://www.kde.org/dotkdeorg.rdf"),
|
|
|
|
TQString::fromLatin1("http://www.kde.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Planet GNOME news"),
|
|
|
|
TQString::fromLatin1("http://planet.gnome.org/rss20.xml"),
|
|
|
|
TQString::fromLatin1("http://planet.gnome.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Slashdot"),
|
|
|
|
TQString::fromLatin1("http://slashdot.org/slashdot.rdf"),
|
|
|
|
TQString::fromLatin1("http://slashdot.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Ask Slashdot"),
|
|
|
|
TQString::fromLatin1("http://slashdot.org/askslashdot.rdf"),
|
|
|
|
TQString::fromLatin1("http://slashdot.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Slashdot: Features"),
|
|
|
|
TQString::fromLatin1("http://slashdot.org/features.rdf"),
|
|
|
|
TQString::fromLatin1("http://slashdot.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Slashdot: Apache"),
|
|
|
|
TQString::fromLatin1("http://slashdot.org/apache.rdf"),
|
|
|
|
TQString::fromLatin1("http://slashdot.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Slashdot: Books"),
|
|
|
|
TQString::fromLatin1("http://slashdot.org/books.rdf"),
|
|
|
|
TQString::fromLatin1("http://slashdot.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Linux Weekly News"),
|
|
|
|
TQString::fromLatin1("http://www.lwn.net/headlines/rss"),
|
|
|
|
TQString::fromLatin1("http://www.lwn.net/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, true, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("heise online news"),
|
|
|
|
TQString::fromLatin1("http://www.heise.de/newsticker/heise.rdf"),
|
|
|
|
TQString::fromLatin1("http://www.heise.de/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false, TQString::fromLatin1("de")),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("RUS-CERT Ticker"),
|
|
|
|
TQString::fromLatin1("http://cert.uni-stuttgart.de/ticker/rus-cert.rdf"),
|
|
|
|
TQString::fromLatin1("http://cert.uni-stuttgart.de/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false, TQString::fromLatin1("de")),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("RUS-CERT Elsewhere"),
|
|
|
|
TQString::fromLatin1("http://cert.uni-stuttgart.de/ticker/rus-cert-elsewhere.rdf"),
|
|
|
|
TQString::fromLatin1("http://cert.uni-stuttgart.de/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false, TQString::fromLatin1("de")),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Prolinux"),
|
|
|
|
TQString::fromLatin1("http://www.pl-forum.de/backend/pro-linux.rdf"),
|
|
|
|
TQString::fromLatin1("http://www.prolinux.de/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false, TQString::fromLatin1("de")),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("LinuxSecurity.com"),
|
|
|
|
TQString::fromLatin1("http://www.linuxsecurity.com/linuxsecurity_hybrid.rdf"),
|
|
|
|
TQString(),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("use Perl;"),
|
|
|
|
TQString::fromLatin1("http://use.perl.org/useperl.rdf"),
|
|
|
|
TQString(),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Root prompt"),
|
|
|
|
TQString::fromLatin1("http://www.rootprompt.org/rss/"),
|
|
|
|
TQString::fromLatin1("http://www.rootprompt.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("SecurityFocus"),
|
|
|
|
TQString::fromLatin1("http://www.securityfocus.com/rss/news.xml"),
|
|
|
|
TQString::fromLatin1("http://www.securityfocus.com/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Arstechnica"),
|
|
|
|
TQString::fromLatin1("http://feeds.arstechnica.com/arstechnica/index?format=xml"),
|
|
|
|
TQString::fromLatin1("http://arstechnica.com/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("amiga-news.de - deutschsprachige Amiga Nachrichten"),
|
|
|
|
TQString::fromLatin1("http://www.amiga-news.de/de/backends/news/index.rss"),
|
|
|
|
TQString::fromLatin1("http://www.amiga-news.de/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false, TQString::fromLatin1("de")),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("amiga-news.de - english Amiga news"),
|
|
|
|
TQString::fromLatin1("http://www.amiga-news.de/en/backends/news/index.rss"),
|
|
|
|
TQString::fromLatin1("http://www.amiga-news.de/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("RadioTux"),
|
|
|
|
TQString::fromLatin1("http://blog.radiotux.de/index.php?/feeds/index.rss2"),
|
|
|
|
TQString(),
|
|
|
|
NewsSourceBase::Computers, 10, false, false, TQString::fromLatin1("de")),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("FreshPorts - the place for ports"),
|
|
|
|
TQString::fromLatin1("http://www.freshports.org/news.php"),
|
|
|
|
TQString::fromLatin1("http://www.freshports.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 20, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("FreshSource - the place for source"),
|
|
|
|
TQString::fromLatin1("http://www.freshsource.org/news.php"),
|
|
|
|
TQString::fromLatin1("http://www.freshsource.org/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 20, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("OSNews.com"),
|
|
|
|
TQString::fromLatin1("http://www.osnews.com/files/recent.rdf"),
|
|
|
|
TQString::fromLatin1("http://www.osnews.com/favicon.ico"),
|
|
|
|
NewsSourceBase::Computers, 10, false, false),
|
|
|
|
// Miscellaneous ------
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("tagesschau.de"),
|
|
|
|
TQString::fromLatin1("http://www.tagesschau.de/newsticker.rdf"),
|
|
|
|
TQString::fromLatin1("http://www.tagesschau.de/favicon.ico"),
|
|
|
|
NewsSourceBase::Misc, 10, true, false, TQString::fromLatin1("de")),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("N24.de"),
|
|
|
|
TQString::fromLatin1("http://feeds.n24.de/n24/homepage?format=xml"),
|
|
|
|
TQString::fromLatin1("http://www.n24.de/favicon.ico"),
|
|
|
|
NewsSourceBase::Misc, 10, true, false, TQString::fromLatin1("de")),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("BBC News"),
|
|
|
|
TQString::fromLatin1("http://feeds.bbci.co.uk/news/rss.xml?edition=int"),
|
|
|
|
TQString::fromLatin1("http://www.bbc.com/favicon.ico"),
|
|
|
|
NewsSourceBase::Misc, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("CNN top stories"),
|
|
|
|
TQString::fromLatin1("http://rss.cnn.com/rss/edition.rss"),
|
|
|
|
TQString::fromLatin1("http://www.cnn.com/favicon.ico"),
|
|
|
|
NewsSourceBase::Misc, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("HotWired"),
|
|
|
|
TQString::fromLatin1("http://feeds.wired.com/wired/index"),
|
|
|
|
TQString::fromLatin1("http://www.hotwired.com/favicon.ico"),
|
|
|
|
NewsSourceBase::Misc, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("The Register"),
|
|
|
|
TQString::fromLatin1("http://www.theregister.co.uk/tonys/slashdot.rdf"),
|
|
|
|
TQString::fromLatin1("http://www.theregister.co.uk/favicon.ico"),
|
|
|
|
NewsSourceBase::Misc, 10, false, false),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1( "Christian Science Monitor" ),
|
|
|
|
TQString::fromLatin1( "http://www.csmonitor.com/rss/csm.rss"),
|
|
|
|
TQString::fromLatin1( "http://www.csmonitor.com/favicon.ico"),
|
|
|
|
NewsSourceBase::Misc, 10, false, false ),
|
|
|
|
// Magazines ------
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("Spiegel.de"),
|
|
|
|
TQString::fromLatin1("http://www.spiegel.de/schlagzeilen/rss/0,5291,,00.xml"),
|
|
|
|
TQString::fromLatin1("http://www.spiegel.de/favicon.ico"),
|
|
|
|
NewsSourceBase::Magazines, 10, false, false, TQString::fromLatin1("de")),
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1("FAZ.de"),
|
|
|
|
TQString::fromLatin1("http://www.faz.net/s/Rub/Tpl~Epartner~SRss_.xml"),
|
|
|
|
TQString::fromLatin1("http://www.faz.net/favicon.ico"),
|
|
|
|
NewsSourceBase::Magazines, 10, false, false, TQString::fromLatin1("de")),
|
|
|
|
// Recreation
|
|
|
|
// Society
|
|
|
|
NewsSourceBase::Data(
|
|
|
|
TQString::fromLatin1( "Quintessenz" ),
|
|
|
|
TQString::fromLatin1( "http://quintessenz.at/cgi-bin/rdf"),
|
|
|
|
TQString::fromLatin1( "http://quintessenz.at/favicon.ico"),
|
|
|
|
NewsSourceBase::Society, 9, false, false, TQString::fromLatin1( "de" ))
|
|
|
|
};
|
|
|
|
|
|
|
|
ArticleFilter::ArticleFilter(const TQString &action, const TQString &newsSource,
|
|
|
|
const TQString &condition, const TQString &expression, bool enabled)
|
|
|
|
: m_action(action),
|
|
|
|
m_newsSource(newsSource),
|
|
|
|
m_condition(condition),
|
|
|
|
m_expression(expression),
|
|
|
|
m_enabled(enabled)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
bool ArticleFilter::matches(Article::Ptr a) const
|
|
|
|
{
|
|
|
|
if (!enabled() ||
|
|
|
|
(a->newsSource()->data().name != newsSource() &&
|
|
|
|
newsSource() != i18n("all news sources")))
|
|
|
|
return false;
|
|
|
|
|
|
|
|
bool matches;
|
|
|
|
|
|
|
|
if (condition() == i18n("contain"))
|
|
|
|
matches = a->headline().contains(expression());
|
|
|
|
else if (condition() == i18n("do not contain"))
|
|
|
|
matches = !a->headline().contains(expression());
|
|
|
|
else if (condition() == i18n("equal"))
|
|
|
|
matches = (a->headline() == expression());
|
|
|
|
else if (condition() == i18n("do not equal"))
|
|
|
|
matches = (a->headline() != expression());
|
|
|
|
else { // condition() == i18n("match")
|
|
|
|
TQRegExp regexp = TQRegExp(expression());
|
|
|
|
matches = regexp.exactMatch(a->headline());
|
|
|
|
}
|
|
|
|
|
|
|
|
if (action() == i18n("Show"))
|
|
|
|
matches = !matches;
|
|
|
|
|
|
|
|
return matches;
|
|
|
|
}
|
|
|
|
|
|
|
|
ConfigAccess::ConfigAccess()
|
|
|
|
: m_defaultCfg(new TDEConfig(TQString(), true, false))
|
|
|
|
{
|
|
|
|
m_cfg = m_defaultCfg;
|
|
|
|
}
|
|
|
|
|
|
|
|
ConfigAccess::ConfigAccess(TDEConfig *config)
|
|
|
|
: m_cfg(config), m_defaultCfg(0L)
|
|
|
|
{
|
|
|
|
m_cfg->setGroup("KNewsTicker");
|
|
|
|
}
|
|
|
|
|
|
|
|
ConfigAccess::~ConfigAccess()
|
|
|
|
{
|
|
|
|
delete m_defaultCfg;
|
|
|
|
}
|
|
|
|
|
|
|
|
unsigned int ConfigAccess::interval() const
|
|
|
|
{
|
|
|
|
return m_cfg->readNumEntry("Update interval", 30);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setInterval(const unsigned int interval)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Update interval", interval);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
unsigned int ConfigAccess::mouseWheelSpeed() const
|
|
|
|
{
|
|
|
|
return m_cfg->readNumEntry("Mouse wheel speed", 5);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setMouseWheelSpeed(const unsigned int mouseWheelSpeed)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Mouse wheel speed", mouseWheelSpeed);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
TQFont ConfigAccess::font() const
|
|
|
|
{
|
|
|
|
TQFont font = TDEGlobalSettings::fixedFont();
|
|
|
|
return m_cfg->readFontEntry("Font", &font);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setFont(const TQFont &font)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Font", font);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool ConfigAccess::customNames() const
|
|
|
|
{
|
|
|
|
return m_cfg->readBoolEntry("Custom names", false);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setCustomNames(bool customNames)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Custom names", customNames);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool ConfigAccess::scrollMostRecentOnly() const
|
|
|
|
{
|
|
|
|
return m_cfg->readBoolEntry("Scroll most recent headlines only", false);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setScrollMostRecentOnly(bool scrollMostRecentOnly)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Scroll most recent headlines only", scrollMostRecentOnly);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool ConfigAccess::offlineMode() const
|
|
|
|
{
|
|
|
|
return m_cfg->readBoolEntry("Offline mode", false);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setOfflineMode(bool offlineMode)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Offline mode", offlineMode);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
TQStringList ConfigAccess::newsSources() const
|
|
|
|
{
|
|
|
|
TQStringList tempList = m_cfg->readListEntry("News sources");
|
|
|
|
if (tempList.isEmpty())
|
|
|
|
for (unsigned int i = 0; i < DEFAULT_NEWSSOURCES; i++)
|
|
|
|
tempList << NewsSourceDefault[i].name;
|
|
|
|
return tempList;
|
|
|
|
}
|
|
|
|
|
|
|
|
ArticleFilter::List ConfigAccess::filters() const
|
|
|
|
{
|
|
|
|
return m_cfg->readIntListEntry("Filters");
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setNewsSources(const TQStringList &newsSources)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("News sources", newsSources);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setFilters(const ArticleFilter::List &filters)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Filters", filters);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
unsigned int ConfigAccess::scrollingSpeed() const
|
|
|
|
{
|
|
|
|
return m_cfg->readNumEntry("Scrolling speed", 20);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setScrollingSpeed(const unsigned int scrollingSpeed)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Scrolling speed", scrollingSpeed);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
unsigned int ConfigAccess::scrollingDirection() const
|
|
|
|
{
|
|
|
|
return m_cfg->readNumEntry("Scrolling direction", 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setScrollingDirection(const unsigned int scrollingDirection)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Scrolling direction", scrollingDirection);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
TQColor ConfigAccess::foregroundColor() const
|
|
|
|
{
|
|
|
|
return m_cfg->readColorEntry("Foreground color", &TQt::black);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setForegroundColor(const TQColor &foregroundColor)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Foreground color", foregroundColor);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
TQColor ConfigAccess::backgroundColor() const
|
|
|
|
{
|
|
|
|
return m_cfg->readColorEntry("Background color", &TQt::white);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setBackgroundColor(const TQColor &backgroundColor)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Background color", backgroundColor);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
TQColor ConfigAccess::highlightedColor() const
|
|
|
|
{
|
|
|
|
return m_cfg->readColorEntry("Highlighted color", &TQt::red);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setHighlightedColor(const TQColor &highlightedColor)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Highlighted color", highlightedColor);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool ConfigAccess::underlineHighlighted() const
|
|
|
|
{
|
|
|
|
return m_cfg->readBoolEntry("Underline highlighted headlines", true);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setUnderlineHighlighted(bool underlineHighlighted)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Underline highlighted headlines", underlineHighlighted);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
NewsSourceBase *ConfigAccess::newsSource(const TQString &newsSource)
|
|
|
|
{
|
|
|
|
NewsSourceBase::Data nsd;
|
|
|
|
|
|
|
|
if (m_cfg->hasGroup(newsSource)) {
|
|
|
|
m_cfg->setGroup(newsSource);
|
|
|
|
nsd.name = newsSource;
|
|
|
|
nsd.sourceFile = m_cfg->readPathEntry("Source file");
|
|
|
|
nsd.isProgram = m_cfg->readBoolEntry("Is program", false);
|
|
|
|
nsd.subject = static_cast<NewsSourceBase::Subject>
|
|
|
|
(m_cfg->readNumEntry("Subject", NewsSourceBase::Computers));
|
|
|
|
nsd.icon = m_cfg->readEntry("Icon");
|
|
|
|
nsd.maxArticles = m_cfg->readNumEntry("Max articles", 10);
|
|
|
|
nsd.enabled = m_cfg->readBoolEntry("Enabled", true);
|
|
|
|
nsd.language = m_cfg->readEntry("Language", TQString::fromLatin1("C"));
|
|
|
|
m_cfg->setGroup("KNewsTicker");
|
|
|
|
} else for (unsigned int i = 0; i < DEFAULT_NEWSSOURCES; i++)
|
|
|
|
if (NewsSourceDefault[i].name == newsSource) {
|
|
|
|
nsd = NewsSourceDefault[i];
|
|
|
|
if (nsd.enabled)
|
|
|
|
nsd.enabled = (nsd.language == TQString::fromLatin1("C") ||
|
|
|
|
TDEGlobal::locale()->languageList().contains(nsd.language));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (nsd.isProgram)
|
|
|
|
return new ProgramNewsSource(nsd, this);
|
|
|
|
else
|
|
|
|
return new SourceFileNewsSource(nsd, this);
|
|
|
|
|
|
|
|
return 0L;
|
|
|
|
}
|
|
|
|
|
|
|
|
ArticleFilter ConfigAccess::filter(const unsigned int filterNo) const
|
|
|
|
{
|
|
|
|
ArticleFilter f;
|
|
|
|
f.setId(filterNo);
|
|
|
|
|
|
|
|
if (m_cfg->hasGroup(TQString::fromLatin1("Filter #%1").arg(filterNo))) {
|
|
|
|
m_cfg->setGroup(TQString::fromLatin1("Filter #%1").arg(filterNo));
|
|
|
|
f.setAction(m_cfg->readEntry("Action", i18n("Show")));
|
|
|
|
f.setNewsSource(m_cfg->readEntry("News source", i18n("all news sources")));
|
|
|
|
f.setCondition(m_cfg->readEntry("Condition", i18n("contain")));
|
|
|
|
f.setExpression(m_cfg->readEntry("Expression"));
|
|
|
|
f.setEnabled(m_cfg->readBoolEntry("Enabled", true));
|
|
|
|
m_cfg->setGroup("KNewsTicker");
|
|
|
|
}
|
|
|
|
|
|
|
|
return f;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setNewsSource(const NewsSourceBase::Data &ns)
|
|
|
|
{
|
|
|
|
m_cfg->setGroup(ns.name);
|
|
|
|
m_cfg->writePathEntry("Source file", ns.sourceFile);
|
|
|
|
m_cfg->writeEntry("Is program", ns.isProgram);
|
|
|
|
m_cfg->writeEntry("Max articles", ns.maxArticles);
|
|
|
|
m_cfg->writeEntry("Subject", ns.subject);
|
|
|
|
m_cfg->writeEntry("Icon", ns.icon);
|
|
|
|
m_cfg->writeEntry("Enabled", ns.enabled);
|
|
|
|
m_cfg->writeEntry("Language", ns.language);
|
|
|
|
m_cfg->setGroup("KNewsTicker");
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setFilter(const ArticleFilter &f)
|
|
|
|
{
|
|
|
|
m_cfg->setGroup(TQString::fromLatin1("Filter #%1").arg(f.id()));
|
|
|
|
m_cfg->writeEntry("Action", f.action());
|
|
|
|
m_cfg->writeEntry("News source", f.newsSource());
|
|
|
|
m_cfg->writeEntry("Condition", f.condition());
|
|
|
|
m_cfg->writeEntry("Expression", f.expression());
|
|
|
|
m_cfg->writeEntry("Enabled", f.enabled());
|
|
|
|
m_cfg->setGroup("KNewsTicker");
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool ConfigAccess::showIcons() const
|
|
|
|
{
|
|
|
|
return m_cfg->readBoolEntry("Show icons", true);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setShowIcons(bool showIcons)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Show icons", showIcons);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool ConfigAccess::slowedScrolling() const
|
|
|
|
{
|
|
|
|
return m_cfg->readBoolEntry("Slowed scrolling", false);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ConfigAccess::setSlowedScrolling(bool slowedScrolling)
|
|
|
|
{
|
|
|
|
m_cfg->writeEntry("Slowed scrolling", slowedScrolling);
|
|
|
|
m_cfg->sync();
|
|
|
|
}
|
|
|
|
|