kmail
antispamwizard.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef KMAIL_ANTISPAMWIZARD_H
00030 #define KMAIL_ANTISPAMWIZARD_H
00031
00032 #include "simplefoldertree.h"
00033
00034 #include <kconfig.h>
00035 #include <klistbox.h>
00036 #include <kwizard.h>
00037
00038 #include <qcheckbox.h>
00039 #include <qdict.h>
00040 #include <qlayout.h>
00041
00042 class KActionCollection;
00043 class KMFolder;
00044 class KMFolderTree;
00045 class QLabel;
00046
00047 namespace KMail {
00048
00049 class FolderRequester;
00050
00051 class ASWizInfoPage;
00052 class ASWizSpamRulesPage;
00053 class ASWizVirusRulesPage;
00054 class ASWizSummaryPage;
00055
00056
00104 class AntiSpamWizard : public KWizard
00105 {
00106 Q_OBJECT
00107
00108 public:
00112 enum WizardMode { AntiSpam, AntiVirus };
00113
00122 AntiSpamWizard( WizardMode mode,
00123 QWidget * parent, KMFolderTree * mainFolderTree );
00124
00125 protected:
00131 class SpamToolConfig
00132 {
00133 public:
00134 SpamToolConfig() {}
00135 SpamToolConfig( QString toolId, int configVersion, int prio,
00136 QString name, QString exec, QString url, QString filter,
00137 QString detection, QString spam, QString ham,
00138 QString header, QString pattern, QString pattern2,
00139 QString serverPattern,
00140 bool detectionOnly, bool regExp, bool bayesFilter,
00141 bool tristateDetection, WizardMode type );
00142
00143 int getVersion() const { return mVersion; }
00144 int getPrio() const { return mPrio; }
00145 QString getId() const { return mId; }
00146 QString getVisibleName() const { return mVisibleName; }
00147 QString getExecutable() const { return mExecutable; }
00148 QString getWhatsThisText() const { return mWhatsThisText; }
00149 QString getFilterName() const { return mFilterName; }
00150 QString getDetectCmd() const { return mDetectCmd; }
00151 QString getSpamCmd() const { return mSpamCmd; }
00152 QString getHamCmd() const { return mHamCmd; }
00153 QString getDetectionHeader() const { return mDetectionHeader; }
00154 QString getDetectionPattern() const { return mDetectionPattern; }
00155 QString getDetectionPattern2() const { return mDetectionPattern2; }
00156 QString getServerPattern() const { return mServerPattern; }
00157 bool isServerBased() const;
00158 bool isDetectionOnly() const { return mDetectionOnly; }
00159 bool isUseRegExp() const { return mUseRegExp; }
00160 bool useBayesFilter() const { return mSupportsBayesFilter; }
00161 bool hasTristateDetection() const { return mSupportsUnsure; }
00162 WizardMode getType() const { return mType; }
00163
00164 bool isSpamTool() const { return ( mType == AntiSpam ); }
00165 bool isVirusTool() const { return ( mType == AntiVirus ); }
00166
00167 private:
00168
00169 QString mId;
00170
00171
00172 int mVersion;
00173
00174 int mPrio;
00175
00176 QString mVisibleName;
00177
00178 QString mExecutable;
00179
00180 QString mWhatsThisText;
00181
00182 QString mFilterName;
00183
00184 QString mDetectCmd;
00185
00186 QString mSpamCmd;
00187
00188 QString mHamCmd;
00189
00190 QString mDetectionHeader;
00191
00192 QString mDetectionPattern;
00193
00194 QString mDetectionPattern2;
00195
00196 QString mServerPattern;
00197
00198 bool mDetectionOnly;
00199
00200 bool mUseRegExp;
00201
00202 bool mSupportsBayesFilter;
00203
00204 bool mSupportsUnsure;
00205
00206 WizardMode mType;
00207 };
00208
00214 class ConfigReader
00215 {
00216 public:
00217 ConfigReader( WizardMode mode,
00218 QValueList<SpamToolConfig> & configList );
00219 ~ConfigReader( );
00220
00221 QValueList<SpamToolConfig> & getToolList() { return mToolList; }
00222
00223 void readAndMergeConfig();
00224
00225 private:
00226 QValueList<SpamToolConfig> & mToolList;
00227 KConfig *mConfig;
00228 WizardMode mMode;
00229
00230 SpamToolConfig readToolConfig( KConfigGroup & configGroup );
00231 SpamToolConfig createDummyConfig();
00232
00233 void mergeToolConfig( SpamToolConfig config );
00234 void sortToolList();
00235 };
00236
00238 void accept();
00239
00240 protected slots:
00242 void checkProgramsSelections();
00244 void checkVirusRulesSelections();
00246 void checkToolAvailability();
00248 void slotHelpClicked();
00250 void slotBuildSummary();
00251
00252 private:
00253
00254 int checkForProgram( const QString &executable );
00255
00256 bool anyVirusOptionChecked();
00257
00258 const QString uniqueNameFor( const QString & name );
00259
00260 void sortFilterOnExistance( const QString & intendedFilterName,
00261 QString & newFilters,
00262 QString & replaceFilters );
00263
00264
00265 ASWizInfoPage * mInfoPage;
00266 ASWizSpamRulesPage * mSpamRulesPage;
00267 ASWizVirusRulesPage * mVirusRulesPage;
00268 ASWizSummaryPage * mSummaryPage;
00269
00270
00271 QValueList<SpamToolConfig> mToolList;
00272
00273
00274 bool mSpamToolsUsed;
00275
00276 bool mVirusToolsUsed;
00277
00278 WizardMode mMode;
00279 };
00280
00281
00282
00283 class ASWizPage : public QWidget
00284 {
00285 public:
00286 ASWizPage( QWidget *parent, const char *name,
00287 const QString *bannerName = 0);
00288
00289 protected:
00290 QBoxLayout *mLayout;
00291
00292 private:
00293 QLabel *mBannerLabel;
00294 };
00295
00296
00297
00298 class ASWizInfoPage : public ASWizPage
00299 {
00300 Q_OBJECT
00301
00302 public:
00303 ASWizInfoPage( AntiSpamWizard::WizardMode mode,
00304 QWidget *parent, const char *name );
00305
00306 void setScanProgressText( const QString &toolName );
00307 void addAvailableTool( const QString &visibleName );
00308 bool isProgramSelected( const QString &visibleName );
00309
00310 private slots:
00311 void processSelectionChange();
00312
00313 signals:
00314 void selectionChanged();
00315
00316 private:
00317 QLabel *mIntroText;
00318 QLabel *mScanProgressText;
00319 QLabel *mSelectionHint;
00320 KListBox *mToolsList;
00321 };
00322
00323
00324 class ASWizSpamRulesPage : public ASWizPage
00325 {
00326 Q_OBJECT
00327
00328 public:
00329 ASWizSpamRulesPage( QWidget * parent, const char * name, KMFolderTree * mainFolderTree );
00330
00331 bool markAsReadSelected() const;
00332 bool moveSpamSelected() const;
00333 bool moveUnsureSelected() const;
00334
00335 QString selectedSpamFolderName() const;
00336 QString selectedUnsureFolderName() const;
00337
00338 void allowUnsureFolderSelection( bool enabled );
00339
00340 private slots:
00341 void processSelectionChange();
00342 void processSelectionChange( KMFolder* );
00343
00344 signals:
00345 void selectionChanged();
00346
00347 private:
00348 QCheckBox * mMarkRules;
00349 QCheckBox * mMoveSpamRules;
00350 QCheckBox * mMoveUnsureRules;
00351 FolderRequester *mFolderReqForSpamFolder;
00352 FolderRequester *mFolderReqForUnsureFolder;
00353 };
00354
00355
00356 class ASWizVirusRulesPage : public ASWizPage
00357 {
00358 Q_OBJECT
00359
00360 public:
00361 ASWizVirusRulesPage( QWidget * parent, const char * name, KMFolderTree * mainFolderTree );
00362
00363 bool pipeRulesSelected() const;
00364 bool moveRulesSelected() const;
00365 bool markReadRulesSelected() const;
00366
00367 QString selectedFolderName() const;
00368
00369 private slots:
00370 void processSelectionChange();
00371 signals:
00372 void selectionChanged();
00373
00374 private:
00375 QCheckBox * mPipeRules;
00376 QCheckBox * mMoveRules;
00377 SimpleFolderTree *mFolderTree;
00378 QCheckBox * mMarkRules;
00379 };
00380
00381
00382 class ASWizSummaryPage : public ASWizPage
00383 {
00384 Q_OBJECT
00385
00386 public:
00387 ASWizSummaryPage( QWidget * parent, const char * name );
00388
00389 void setSummaryText( const QString & text );
00390
00391 private:
00392 QLabel * mSummaryText;
00393 };
00394
00395
00396 }
00397
00398 #endif // KMAIL_ANTISPAMWIZARD_H
|