You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/kmailcvt/filters.h

146 lines
4.1 KiB

/***************************************************************************
filters.h - description
-------------------
begin : Fri Jun 30 2000
copyright : (C) 2000 by Hans Dijkema
email : kmailcvt@hum.org
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#ifndef FILTERS_H
#define FILTERS_H
#ifndef MAX_LINE
#define MAX_LINE 4096
#endif
#include <tqcombobox.h>
#include <tqprogressbar.h>
#include <tqptrlist.h>
#include <tqlistbox.h>
#include <tqlabel.h>
#include "kimportpagedlg.h"
class FilterInfo
{
public:
FilterInfo(KImportPageDlg *dlg, TQWidget *parent, bool _removeDupMsg);
~FilterInfo();
void setStatusMsg( const TQString& status );
void setFrom( const TQString& from );
void setTo( const TQString& to );
void setCurrent( const TQString& current );
void setCurrent( int percent = 0 );
void setOverall( int percent = 0 );
void addLog( const TQString& log );
void clear();
void alert( const TQString& message );
static void terminateASAP();
bool shouldTerminate();
TQWidget *parent() { return m_parent; }
bool removeDupMsg;
private:
KImportPageDlg *m_dlg;
TQWidget *m_parent;
static bool s_terminateASAP;
};
class Filter
{
public:
Filter( const TQString& name, const TQString& author,
const TQString& info = TQString() );
virtual ~Filter() {}
virtual void import( FilterInfo* ) = 0;
TQString author() const { return m_author; }
TQString name() const { return m_name; }
TQString info() const { return m_info; }
virtual bool needsSecondPage();
int count_duplicates; //to count all duplicate messages
protected:
void showKMailImportArchiveDialog( FilterInfo* info );
bool addMessage( FilterInfo* info,
const TQString& folder,
const TQString& msgFile,
const TQString& msgStatusFlags = TQString());
bool addMessage_fastImport( FilterInfo* info,
const TQString& folder,
const TQString& msgFile,
const TQString& msgStatusFlags = TQString());
private:
TQString m_name;
TQString m_author;
TQString m_info;
};
/**
* Glorified TQString[N] for (a) understandability (b) older gcc compatibility.
*/
template <unsigned int size> class FolderStructureBase
{
public:
typedef TQString NString[size];
/** Constructor. Need a default constructor for TQValueList. */
FolderStructureBase() {} ;
/** Constructor. Turn N TQStrings into a folder structure
* description.
*/
FolderStructureBase(const NString &s)
{
for(unsigned int i=0; i<size; i++) d[i]=s[i];
} ;
/** Copy Constructor. */
FolderStructureBase(const FolderStructureBase &s)
{
for(unsigned int i=0; i<size; i++) d[i]=s[i];
} ;
/** Assignment operator. Does the same thing as
* the copy constructor.
*/
FolderStructureBase &operator =(const FolderStructureBase &s)
{
for(unsigned int i=0; i<size; i++) d[i]=s[i];
return *this;
} ;
/** Access the different fields. There doesn't seem to
* be a real semantics for the fields.
*/
const TQString operator [](unsigned int i) const
{
if (i<size) return d[i]; else return TQString();
} ;
/** Access the different fields, for writing. */
TQString &operator [](unsigned int i)
{
Q_ASSERT(i<size);
if (i<size) return d[i]; else return d[0];
} ;
private:
TQString d[size];
} ;
#endif