kmail
antispamwizard.hGo to the documentation of this file.00001
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 <kconfig.h>
00033 #include <klistbox.h>
00034 #include <kwizard.h>
00035
00036 #include <qcheckbox.h>
00037 #include <qdict.h>
00038 #include <qlayout.h>
00039
00040 class KActionCollection;
00041 class KMFolder;
00042 class KMFolderTree;
00043 class QLabel;
00044
00045 namespace KMail {
00046
00047 class SimpleFolderTree;
00048 class FolderRequester;
00049
00050 class ASWizInfoPage;
00051 class ASWizSpamRulesPage;
00052 class ASWizVirusRulesPage;
00053 class ASWizSummaryPage;
00054
00055
00103 class AntiSpamWizard : public KWizard
00104 {
00105 Q_OBJECT
00106
00107 public:
00111 enum WizardMode { AntiSpam, AntiVirus };
00112
00121 AntiSpamWizard( WizardMode mode,
00122 QWidget * parent, KMFolderTree * mainFolderTree );
00123
00124 protected:
00130 class SpamToolConfig
00131 {
00132 public:
00133 SpamToolConfig() {}
00134 SpamToolConfig( QString toolId, int configVersion, int prio,
00135 QString name, QString exec, QString url, QString filter,
00136 QString detection, QString spam, QString ham,
00137 QString header, QString pattern, QString pattern2,
00138 QString serverPattern,
00139 bool detectionOnly, bool regExp, bool bayesFilter,
00140 bool tristateDetection, WizardMode type );
00141
00142 int getVersion() const { return mVersion; }
00143 int getPrio() const { return mPrio; }
00144 QString getId() const { return mId; }
00145 QString getVisibleName() const { return mVisibleName; }
00146 QString getExecutable() const { return mExecutable; }
00147 QString getWhatsThisText() const { return mWhatsThisText; }
00148 QString getFilterName() const { return mFilterName; }
00149 QString getDetectCmd() const { return mDetectCmd; }
00150 QString getSpamCmd() const { return mSpamCmd; }
00151 QString getHamCmd() const { return mHamCmd; }
00152 QString getDetectionHeader() const { return mDetectionHeader; }
00153 QString getDetectionPattern() const { return mDetectionPattern; }
00154 QString getDetectionPattern2() const { return mDetectionPattern2; }
00155 QString getServerPattern() const { return mServerPattern; }
00156 bool isServerBased() const;
00157 bool isDetectionOnly() const { return mDetectionOnly; }
00158 bool isUseRegExp() const { return mUseRegExp; }
00159 bool useBayesFilter() const { return mSupportsBayesFilter; }
00160 bool hasTristateDetection() const { return mSupportsUnsure; }
00161 WizardMode getType() const { return mType; }
00162
00163 bool isSpamTool() const { return ( mType == AntiSpam ); }
00164 bool isVirusTool() const { return ( mType == AntiVirus ); }
00165
00166 private:
00167
00168 QString mId;
00169
00170
00171 int mVersion;
00172
00173 int mPrio;
00174
00175 QString mVisibleName;
00176
00177 QString mExecutable;
00178
00179 QString mWhatsThisText;
00180
00181 QString mFilterName;
00182
00183 QString mDetectCmd;
00184
00185 QString mSpamCmd;
00186
00187 QString mHamCmd;
00188
00189 QString mDetectionHeader;
00190
00191 QString mDetectionPattern;
00192
00193 QString mDetectionPattern2;
00194
00195 QString mServerPattern;
00196
00197 bool mDetectionOnly;
00198
00199 bool mUseRegExp;
00200
00201 bool mSupportsBayesFilter;
00202
00203 bool mSupportsUnsure;
00204
00205 WizardMode mType;
00206 };
00207
00213 class ConfigReader
00214 {
00215 public:
00216 ConfigReader( WizardMode mode,
00217 QValueList<SpamToolConfig> & configList );
00218 ~ConfigReader( );
00219
00220 QValueList<SpamToolConfig> & getToolList() { return mToolList; }
00221
00222 void readAndMergeConfig();
00223
00224 private:
00225 QValueList<SpamToolConfig> & mToolList;
00226 KConfig *mConfig;
00227 WizardMode mMode;
00228
00229 SpamToolConfig readToolConfig( KConfigGroup & configGroup );
00230 SpamToolConfig createDummyConfig();
00231
00232 void mergeToolConfig( SpamToolConfig config );
00233 void sortToolList();
00234 };
00235
00237 void accept();
00238
00239 protected slots:
00241 void checkProgramsSelections();
00243 void checkVirusRulesSelections();
00245 void checkToolAvailability();
00247 void slotHelpClicked();
00249 void slotBuildSummary();
00250
00251 private:
00252
00253 int checkForProgram( const QString &executable );
00254
00255 bool anyVirusOptionChecked();
00256
00257 const QString uniqueNameFor( const QString & name );
00258
00259 void sortFilterOnExistance( const QString & intendedFilterName,
00260 QString & newFilters,
00261 QString & replaceFilters );
00262
00263
00264 ASWizInfoPage * mInfoPage;
00265 ASWizSpamRulesPage * mSpamRulesPage;
00266 ASWizVirusRulesPage * mVirusRulesPage;
00267 ASWizSummaryPage * mSummaryPage;
00268
00269
00270 QValueList<SpamToolConfig> mToolList;
00271
00272
00273 bool mSpamToolsUsed;
00274
00275 bool mVirusToolsUsed;
00276
00277 WizardMode mMode;
00278 };
00279
00280
00281
00282 class ASWizPage : public QWidget
00283 {
00284 public:
00285 ASWizPage( QWidget *parent, const char *name,
00286 const QString *bannerName = 0);
00287
00288 protected:
00289 QBoxLayout *mLayout;
00290
00291 private:
00292 QPixmap *mPixmap;
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
|