summaryrefslogtreecommitdiffstats
path: root/knode/knconfig.h
diff options
context:
space:
mode:
Diffstat (limited to 'knode/knconfig.h')
-rw-r--r--knode/knconfig.h566
1 files changed, 566 insertions, 0 deletions
diff --git a/knode/knconfig.h b/knode/knconfig.h
new file mode 100644
index 000000000..2248a361c
--- /dev/null
+++ b/knode/knconfig.h
@@ -0,0 +1,566 @@
+/*
+ KNode, the KDE newsreader
+ Copyright (c) 1999-2005 the KNode authors.
+ See file AUTHORS for details
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
+*/
+
+#ifndef KNCONFIG_H
+#define KNCONFIG_H
+
+#include <qasciidict.h>
+#include <qcolor.h>
+#include <qdatetime.h>
+#include <qfont.h>
+#include <qobject.h>
+#include <qpixmap.h>
+
+#include <kconfig.h>
+
+#include <kmime_util.h>
+
+class KScoringRule;
+class KProcess;
+class KSpellConfig;
+namespace Kpgp {
+ class Config;
+}
+
+class KNNntpAccount;
+class KNAccountManager;
+class KNArticleFilter;
+class KNFilterManager;
+class KNDisplayedHeader;
+class KNServerInfo;
+class KNScoringManager;
+namespace KNConfig {
+ class IdentityWidget;
+}
+
+namespace KNConfig {
+
+class Base {
+
+ public:
+ Base() : d_irty(false) {}
+ virtual ~Base() {}
+
+ virtual void save() {}
+
+ bool dirty()const { return d_irty; }
+ void setDirty(bool b) { d_irty=b; }
+
+ protected:
+ bool d_irty;
+
+};
+
+
+class KDE_EXPORT Identity : public QObject, public Base {
+
+Q_OBJECT
+
+ friend class IdentityWidget;
+
+ public:
+ Identity(bool g=true);
+ ~Identity();
+
+ void loadConfig(KConfigBase *c);
+ void saveConfig(KConfigBase *c);
+ void save();
+ bool isEmpty();
+ bool isGlobal()const { return g_lobal; }
+
+ //personal information
+ bool hasName() { return (!n_ame.isEmpty()); }
+ QString name() const { return n_ame; }
+ void setName(const QString &s) { n_ame=s; }
+ bool emailIsValid();
+ bool hasEmail() { return (!e_mail.isEmpty()); }
+ QString email() { return e_mail; }
+ void setEmail(const QCString &s) { e_mail=s; }
+ bool hasReplyTo() { return (!r_eplyTo.isEmpty()); }
+ QString replyTo() { return r_eplyTo; }
+ void setReplyTo(const QString &s) { r_eplyTo=s; }
+ bool hasMailCopiesTo() { return (!m_ailCopiesTo.isEmpty()); }
+ QString mailCopiesTo() { return m_ailCopiesTo; }
+ void setMailCopiesTo(const QString &s) { m_ailCopiesTo=s; }
+ bool hasOrga() { return (!o_rga.isEmpty()); }
+ QString orga() const { return o_rga; }
+ void setOrga(const QString &s) { o_rga=s; }
+
+ // OpenPGP signing key
+ bool hasSigningKey() { return (!s_igningKey.isEmpty()); }
+ QCString signingKey() { return s_igningKey; }
+ void setSigningKey(const QCString &s) { s_igningKey=s;}
+
+ //signature
+ bool hasSignature() { return ( (u_seSigFile && !s_igPath.isEmpty()) || !s_igText.isEmpty() ); }
+ bool useSigFile() const { return u_seSigFile; }
+ bool useSigGenerator()const { return u_seSigGenerator; }
+ QString sigPath()const { return s_igPath; }
+ QString sigText()const { return s_igText; }
+ QString getSignature();
+ QString getSigGeneratorStdErr() { return s_igStdErr; }
+
+
+ protected slots:
+ void slotReceiveStdout(KProcess *proc, char *buffer, int buflen);
+ void slotReceiveStderr(KProcess *proc, char *buffer, int buflen);
+
+ protected:
+ QString n_ame,
+ e_mail,
+ o_rga,
+ r_eplyTo,
+ m_ailCopiesTo,
+ s_igText,
+ s_igContents,
+ s_igStdErr,
+ s_igPath;
+ QCString s_igningKey;
+ bool u_seSigFile,
+ u_seSigGenerator,
+ g_lobal;
+};
+
+
+class KDE_EXPORT Appearance : public Base {
+
+#define COL_CNT 16
+#define FNT_CNT 5
+#define HEX_CNT 4
+#define ICON_CNT 14
+
+ friend class AppearanceWidget;
+
+ public:
+ enum ColorIndex { background=0, alternateBackground=1, normalText=2, quoted1=3,
+ quoted2=4, quoted3=5, url=6, unreadThread=7, readThread=8,
+ unreadArticle=9, readArticle=10, signOkKeyOk=11, signOkKeyBad=12,
+ signWarn=13, signErr=14, htmlWarning=15 };
+
+ enum FontIndex { article=0, articleFixed=1, composer=2, groupList=3, articleList=4 };
+
+ enum IconIndex { greyBall=0, redBall=1, greyBallChkd=2,
+ redBallChkd=3, newFups=4, eyes=5,
+ ignore=6, mail=7, posting=8,
+ canceledPosting=9, savedRemote=10, group=11,
+ sendErr=12, null=13 };
+ Appearance();
+ ~Appearance();
+
+ void save();
+
+ QColor backgroundColor() const;
+ QColor alternateBackgroundColor() const;
+ QColor textColor() const;
+ QColor quoteColor( int depth ) const;
+ QColor linkColor() const;
+ QColor unreadThreadColor() const;
+ QColor readThreadColor() const;
+ QColor unreadArticleColor() const;
+ QColor readArticleColor() const;
+ QColor signOkKeyOkColor() const { return u_seColors ? c_olors[signOkKeyOk] : defaultColor( signOkKeyOk ); }
+ QColor signOkKeyBadColor() const { return u_seColors ? c_olors[signOkKeyBad] : defaultColor( signOkKeyBad ); }
+ QColor signWarnColor() const { return u_seColors ? c_olors[signWarn] : defaultColor( signWarn ); }
+ QColor signErrColor() const { return u_seColors ? c_olors[signErr] : defaultColor( signErr ); }
+ QColor htmlWarningColor() const { return u_seColors ? c_olors[htmlWarning] : defaultColor( htmlWarning ); }
+
+ QFont articleFont() const;
+ QFont articleFixedFont() const;
+ QFont composerFont() const;
+ QFont groupListFont() const;
+ QFont articleListFont() const;
+
+ const QPixmap& icon(IconIndex i) { return i_cons[i]; }
+
+ protected:
+ const QColor& color( int i ) const { return c_olors[i]; }
+ const QString& colorName( int i ) const { return c_olorNames[i]; }
+ int colorCount() const { return COL_CNT; }
+ QColor defaultColor(int i) const;
+
+ const QFont& font(int i) const { return f_onts[i]; }
+ const QString& fontName(int i) const { return f_ontNames[i]; }
+ int fontCount() const { return FNT_CNT; }
+ QFont defaultFont(int) const;
+
+ void recreateLVIcons();
+
+ bool u_seColors,
+ u_seFonts;
+ QColor c_olors[COL_CNT];
+ QString c_olorNames[COL_CNT];
+ QFont f_onts[FNT_CNT];
+ QString f_ontNames[FNT_CNT];
+ QPixmap i_cons[ICON_CNT];
+
+};
+
+
+class KDE_EXPORT ReadNewsGeneral : public Base {
+
+ friend class ReadNewsGeneralWidget;
+
+ public:
+ ReadNewsGeneral();
+ ~ReadNewsGeneral();
+
+ void save();
+
+ bool autoCheckGroups()const { return a_utoCheck; }
+ int maxToFetch()const { return m_axFetch; }
+ bool autoMark()const { return a_utoMark; }
+ int autoMarkSeconds()const { return m_arkSecs; }
+ bool markCrossposts()const { return m_arkCrossposts; }
+
+ bool smartScrolling()const { return s_martScrolling; }
+ bool totalExpandThreads()const { return t_otalExpand; }
+ bool defaultToExpandedThreads()const { return d_efaultExpand; }
+ bool showLines()const { return s_howLines; }
+ bool showScore()const { return s_howScore; }
+ bool showUnread()const { return s_howUnread; }
+
+ int collCacheSize()const { return c_ollCacheSize; }
+ int artCacheSize()const { return a_rtCacheSize; }
+
+ bool showThreads()const { return s_howThreads; }
+ void setShowThreads(bool b) { d_irty=true; s_howThreads=b;}
+
+ KMime::DateFormatter::FormatType dateFormat() const { return mDateFormat; }
+ QString dateCustomFormat() const { return mDateCustomFormat; }
+
+ void setShowLines( bool show ) { d_irty = true; s_howLines = show; }
+ void setShowScore( bool show ) { d_irty = true; s_howScore = show; }
+
+ protected:
+ bool a_utoCheck,
+ a_utoMark,
+ m_arkCrossposts,
+ s_martScrolling,
+ t_otalExpand,
+ d_efaultExpand,
+ s_howLines,
+ s_howScore,
+ s_howUnread,
+ s_howThreads;
+
+ int m_axFetch,
+ m_arkSecs,
+ c_ollCacheSize,
+ a_rtCacheSize;
+
+ KMime::DateFormatter::FormatType mDateFormat;
+ QString mDateCustomFormat;
+
+};
+
+
+class KDE_EXPORT ReadNewsNavigation : public Base {
+
+ friend class ReadNewsNavigationWidget;
+
+ public:
+ ReadNewsNavigation();
+ ~ReadNewsNavigation();
+
+ void save();
+
+ bool markAllReadGoNext()const { return m_arkAllReadGoNext; }
+ bool markThreadReadGoNext() const { return m_arkThreadReadGoNext; }
+ bool markThreadReadCloseThread()const { return m_arkThreadReadCloseThread; }
+ bool ignoreThreadGoNext()const { return i_gnoreThreadGoNext; }
+ bool ignoreThreadCloseThread()const { return i_gnoreThreadCloseThread; }
+ bool leaveGroupMarkAsRead() const { return mLeaveGroupMarkAsRead; }
+
+ protected:
+ bool m_arkAllReadGoNext,
+ m_arkThreadReadGoNext,
+ m_arkThreadReadCloseThread,
+ i_gnoreThreadGoNext,
+ i_gnoreThreadCloseThread,
+ mLeaveGroupMarkAsRead;
+
+};
+
+
+class KDE_EXPORT ReadNewsViewer : public Base {
+
+ friend class ReadNewsViewerWidget;
+
+ public:
+ ReadNewsViewer();
+ ~ReadNewsViewer();
+
+ void save();
+
+ bool rewrapBody()const { return r_ewrapBody; }
+ bool removeTrailingNewlines()const { return r_emoveTrailingNewlines; }
+ bool showSignature()const { return s_howSig; }
+ bool interpretFormatTags()const { return i_nterpretFormatTags; }
+ void setInterpretFormatTags( bool f ) { d_irty = true; i_nterpretFormatTags = f; }
+ QString quoteCharacters()const { return q_uoteCharacters; }
+
+ bool openAttachmentsOnClick()const { return o_penAtt; }
+ bool showAlternativeContents()const { return s_howAlts; }
+
+ bool useFixedFont() const { return u_seFixedFont; }
+ void setUseFixedFont(bool b) { d_irty = true; u_seFixedFont=b; }
+
+ bool showRefBar() const { return mShowRefBar; }
+ void setShowRefBar( bool b ) { d_irty = true; mShowRefBar = b; }
+
+ bool alwaysShowHTML() const { return mAlwaysShowHTML; }
+ void setAlwaysShowHTML( bool b ) { d_irty = true; mAlwaysShowHTML = b; }
+
+ protected:
+ bool r_ewrapBody,
+ r_emoveTrailingNewlines,
+ s_howSig,
+ i_nterpretFormatTags,
+ o_penAtt,
+ s_howAlts,
+ u_seFixedFont,
+ mShowRefBar,
+ mAlwaysShowHTML;
+ QString q_uoteCharacters;
+};
+
+
+class KDE_EXPORT DisplayedHeaders : public Base
+{
+ public:
+ DisplayedHeaders();
+ ~DisplayedHeaders();
+
+ void save();
+
+ KNDisplayedHeader* createNewHeader();
+ void remove(KNDisplayedHeader *h);
+ void up(KNDisplayedHeader *h);
+ void down(KNDisplayedHeader *h);
+
+ QValueList<KNDisplayedHeader*> headers() const { return mHeaderList; }
+
+
+ protected:
+ QValueList<KNDisplayedHeader*> mHeaderList;
+
+};
+
+
+class KDE_EXPORT Scoring : public Base {
+
+ friend class ScoringWidget;
+
+ public:
+ Scoring();
+ ~Scoring();
+
+ void save();
+
+ int ignoredThreshold() { return i_gnoredThreshold; }
+ int watchedThreshold() { return w_atchedThreshold; }
+
+ protected:
+ int i_gnoredThreshold,
+ w_atchedThreshold;
+
+};
+
+
+class KDE_EXPORT XHeader {
+
+ public:
+ XHeader() {}
+ XHeader(const QString &s);
+ XHeader(const XHeader &s) { n_ame=s.n_ame; v_alue=s.v_alue; }
+ ~XHeader() {}
+
+ XHeader& operator=(const XHeader &s) { n_ame=s.n_ame; v_alue=s.v_alue; return (*this); }
+
+ QCString name() { return n_ame; }
+ QString value() { return v_alue; }
+ QString header() { return (QString::fromLatin1(("X-"+n_ame+": "))+v_alue); }
+
+ protected:
+ QCString n_ame;
+ QString v_alue;
+
+};
+typedef QValueList<XHeader> XHeaders;
+
+
+class KDE_EXPORT PostNewsTechnical : public Base {
+
+ friend class PostNewsTechnicalWidget;
+ friend class SmtpAccountWidget;
+
+ public:
+ PostNewsTechnical();
+ ~PostNewsTechnical();
+
+ void save();
+
+ QCString charset() const { return c_harset; }
+ QStringList composerCharsets() { return c_omposerCharsets; }
+ int indexForCharset(const QCString &str);
+ QCString findComposerCharset(QCString cs);
+
+ bool allow8BitBody() const { return a_llow8BitBody; }
+ bool useOwnCharset() const { return u_seOwnCharset; }
+ bool generateMessageID()const { return g_enerateMID; }
+ QCString hostname()const { return h_ostname; }
+ XHeaders& xHeaders() { return x_headers; }
+ bool noUserAgent()const { return d_ontIncludeUA; }
+ bool useExternalMailer()const { return u_seExternalMailer; }
+
+ protected:
+ QCString c_harset,
+ h_ostname;
+ QStringList c_omposerCharsets;
+
+ bool a_llow8BitBody,
+ u_seOwnCharset,
+ g_enerateMID,
+ d_ontIncludeUA,
+ u_seExternalMailer;
+
+ XHeaders x_headers;
+
+ QAsciiDict<QCString> findComposerCSCache;
+};
+
+
+class PostNewsComposer : public Base {
+
+ friend class PostNewsComposerWidget;
+
+ public:
+ PostNewsComposer();
+ ~PostNewsComposer();
+
+ void save();
+
+ bool wordWrap()const { return w_ordWrap; }
+ int maxLineLength()const { return m_axLen; }
+ bool appendOwnSignature()const { return a_ppSig; }
+
+ QString intro()const { return i_ntro; }
+ bool rewrap()const { return r_ewrap; }
+ bool includeSignature()const { return i_ncSig; }
+ bool cursorOnTop()const { return c_ursorOnTop; }
+
+ QString externalEditor()const { return e_xternalEditor; }
+ bool useExternalEditor()const { return u_seExtEditor; }
+
+
+ protected:
+ int m_axLen;
+ bool w_ordWrap,
+ a_ppSig,
+ r_ewrap,
+ i_ncSig,
+ c_ursorOnTop,
+ u_seExtEditor;
+ QString i_ntro,
+ e_xternalEditor;
+
+};
+
+
+//BEGIN: Cleanup configuration -----------------------------------------------
+
+class KDE_EXPORT Cleanup : public Base {
+
+ friend class CleanupWidget;
+ friend class GroupCleanupWidget;
+
+ public:
+ Cleanup( bool global = true );
+ ~Cleanup() {}
+
+ void loadConfig( KConfigBase *conf );
+ void saveConfig( KConfigBase *conf );
+ void save();
+
+ //expire
+ int maxAgeForRead() const { return r_eadMaxAge; }
+ int maxAgeForUnread() const { return u_nreadMaxAge; }
+ bool removeUnavailable() const { return r_emoveUnavailable; }
+ bool preserveThreads() const { return p_reserveThr; }
+ bool isGlobal() const { return mGlobal; }
+ bool useDefault() const { return mDefault; }
+ bool expireToday();
+ void setLastExpireDate();
+
+ void setUseDefault( bool def ) { mDefault = def; }
+
+ //compact
+ bool compactToday();
+ void setLastCompactDate();
+
+
+ protected:
+ bool d_oExpire,
+ r_emoveUnavailable,
+ p_reserveThr,
+ d_oCompact;
+ int e_xpireInterval,
+ r_eadMaxAge,
+ u_nreadMaxAge,
+ c_ompactInterval;
+
+ private:
+ /** global vs. per account or per group configuration */
+ bool mGlobal;
+ /** use default cleanup configuration */
+ bool mDefault;
+ /** last expiration and last comapction date */
+ QDateTime mLastExpDate, mLastCompDate;
+
+};
+
+//END: Cleanup configuration -------------------------------------------------
+
+
+/*class Cache : public Base {
+
+ friend class CacheWidget;
+
+ public:
+ Cache();
+ ~Cache();
+
+ void save();
+
+ // memory-cache
+ int memoryMaxArticles() { return m_emMaxArt; }
+ int memoryMaxKBytes() { return m_emMaxKB; }
+
+ // disk-cache
+ int diskMaxArticles() { return d_iskMaxArt; }
+ int diskMaxKBytes() { return d_iskMaxKB; }
+
+
+ protected:
+ int m_emMaxArt,
+ m_emMaxKB,
+ d_iskMaxArt,
+ d_iskMaxKB;
+
+};*/
+
+
+} //KNConfig
+
+#endif //KNCONFIG_H