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.
 
 
 

223 lines
7.0 KiB

/* -*- mode: C++; c-file-style: "gnu" -*-
This file is part of KMail, the KDE mail client.
Copyright (c) 1997 Markus Wuebben <markus.wuebben@kde.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.
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. See the
GNU General Public License for more details.
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, USA.
*/
#ifndef KMREADERWIN_H
#define KMREADERWIN_H
#include <QWidget>
#include <kurl.h>
#include <messageviewer/viewer/viewer.h>
#include <messageviewer/interfaces/bodypart.h>
#include <Akonadi/Item>
class KActionCollection;
class KAction;
class KToggleAction;
namespace MessageViewer {
class HeaderStrategy;
class HeaderStyle;
class Viewer;
class CSSHelper;
class AttachmentStrategy;
}
class KJob;
/**
This class implements a "reader window", that is a window
used for reading or viewing messages.
*/
class KMReaderWin: public QWidget {
Q_OBJECT
public:
explicit KMReaderWin( QWidget *parent, QWidget *mainWindow,
KActionCollection *actionCollection, Qt::WindowFlags f = 0 );
virtual ~KMReaderWin();
/** Read settings from app's config file. */
void readConfig();
MessageViewer::HeaderStyle * headerStyle() const;
/** Set the header style and strategy. We only want them to be set
together. */
void setHeaderStyleAndStrategy( MessageViewer::HeaderStyle * style,
MessageViewer::HeaderStrategy * strategy );
/** Getthe message header strategy. */
const MessageViewer::HeaderStrategy * headerStrategy() const;
/** Get/set the message attachment strategy. */
const MessageViewer::AttachmentStrategy * attachmentStrategy() const;
void setAttachmentStrategy( const MessageViewer::AttachmentStrategy * strategy );
/** Get selected override character encoding.
@return The encoding selected by the user or an empty string if auto-detection
is selected. */
QString overrideEncoding() const;
/** Set the override character encoding. */
void setOverrideEncoding( const QString & encoding );
virtual void setPrinting(bool enable );
void setMessage( const Akonadi::Item& item, MessageViewer::Viewer::UpdateMode updateMode = MessageViewer::Viewer::Delayed);
void setMessage( KMime::Message::Ptr message );
/** Instead of settings a message to be shown sets a message part
to be shown */
void setMsgPart( KMime::Content* aMsgPart );
/** Clear the reader and discard the current message. */
void clear(bool force = false);
void update(bool force = false);
/** Return selected text */
QString copyText() const;
/** Override default html mail setting */
bool htmlOverride() const;
void setHtmlOverride( bool override );
/** Override default load external references setting */
bool htmlLoadExtOverride() const;
void setHtmlLoadExtOverride( bool override );
/** Is html mail to be supported? Takes into account override */
bool htmlMail() const;
/** Is loading ext. references to be supported? Takes into account override */
bool htmlLoadExternal();
/** Returns the MD5 hash for the list of new features */
static QString newFeaturesMD5();
/** Display a generic HTML splash page instead of a message */
void displaySplashPage( const QString &info );
/** Display the about page instead of a message */
void displayAboutPage();
/** Display the 'please wait' page instead of a message */
void displayBusyPage();
/** Display the 'we are currently in offline mode' page instead of a message */
void displayOfflinePage();
void displayResourceOfflinePage();
bool isFixedFont() const;
void setUseFixedFont( bool useFixedFont );
MessageViewer::Viewer *viewer() { return mViewer; }
KToggleAction *toggleFixFontAction();
KAction *mailToComposeAction() { return mMailToComposeAction; }
KAction *mailToReplyAction() { return mMailToReplyAction; }
KAction *mailToForwardAction() { return mMailToForwardAction; }
KAction *addAddrBookAction() { return mAddAddrBookAction; }
KAction *openAddrBookAction() { return mOpenAddrBookAction; }
KAction *copyAction();
KAction *selectAllAction();
KAction *copyURLAction();
KAction *copyImageLocation();
KAction *urlOpenAction();
KAction *urlSaveAsAction() { return mUrlSaveAsAction; }
KAction *addBookmarksAction() { return mAddBookmarksAction;}
KAction *toggleMimePartTreeAction();
KAction *speakTextAction();
KAction* translateAction();
KAction* downloadImageToDiskAction() const;
KAction *viewSourceAction();
KAction *findInMessageAction();
KAction *saveAsAction();
KAction *saveMessageDisplayFormatAction();
KAction *resetMessageDisplayFormatAction();
KAction* editContactAction() const { return mEditContactAction; }
Akonadi::Item message() const;
QWidget* mainWindow() { return mMainWindow; }
/** Enforce message decryption. */
void setDecryptMessageOverwrite( bool overwrite = true );
MessageViewer::CSSHelper* cssHelper() const;
bool printSelectedText(bool preview);
void setContactItem(const Akonadi::Item& contact);
signals:
/** Emitted after parsing of a message to have it stored
in unencrypted state in it's folder. */
void replaceMsgByUnencryptedVersion();
void showStatusBarMessage( const QString &message );
public slots:
/** Force update even if message is the same */
void clearCache();
/** The user selected "Find" from the menu. */
void slotFind();
/** Copy the selected text to the clipboard */
void slotCopySelectedText();
/** Operations on mailto: URLs. */
void slotMailtoReply();
void slotMailtoCompose();
void slotMailtoForward();
void slotMailtoAddAddrBook();
void slotMailtoOpenAddrBook();
/** Save the page to a file */
void slotUrlSave();
void slotAddBookmarks();
void slotUrlClicked( const Akonadi::Item &, const KUrl& );
void slotShowReader( KMime::Content* , bool, const QString& );
void slotShowMessage( KMime::Message::Ptr message, const QString& encoding );
void slotDeleteMessage( const Akonadi::Item& );
void slotSaveImageOnDisk();
void slotPrintComposeResult( KJob *job );
void slotEditContact();
void contactStored( const Akonadi::Item &item );
void slotContactEditorError(const QString &error);
protected:
KUrl urlClicked() const;
KUrl imageUrlClicked() const;
private:
void createActions();
private:
Akonadi::Item mSearchedContact;
QWidget *mMainWindow;
KActionCollection *mActionCollection;
KAction *mMailToComposeAction, *mMailToReplyAction, *mMailToForwardAction,
*mAddAddrBookAction, *mOpenAddrBookAction, *mUrlSaveAsAction, *mAddBookmarksAction,*mImageUrlSaveAsAction, *mEditContactAction;
MessageViewer::Viewer *mViewer;
};
#endif