[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdepim] /: Add menu to define html format option for specific email (asked by David)
From: Montel Laurent <montel () kde ! org>
Date: 2013-09-09 19:17:43
Message-ID: E1VJ6xz-00032j-BJ () scm ! kde ! org
[Download RAW message or body]
Git commit 0c73a85796945014766b628e4a674e6f052cdef0 by Montel Laurent.
Committed on 09/09/2013 at 19:16.
Pushed by mlaurent into branch 'master'.
Add menu to define html format option for specific email (asked by David)
M +3 -0 kmail/kmmainwidget.cpp
M +3 -1 kmail/kmreadermainwin.cpp
M +39 -1 kmail/kmreaderwin.cpp
M +22 -4 kmail/kmreaderwin.h
M +31 -8 libkdepim/job/addemaildisplayjob.cpp
M +4 -3 libkdepim/job/addemaildisplayjob.h
http://commits.kde.org/kdepim/0c73a85796945014766b628e4a674e6f052cdef0
diff --git a/kmail/kmmainwidget.cpp b/kmail/kmmainwidget.cpp
index 84ddbbd..b80cc73 100644
--- a/kmail/kmmainwidget.cpp
+++ b/kmail/kmmainwidget.cpp
@@ -2877,6 +2877,9 @@ void KMMainWidget::showMessagePopup(const Akonadi::Item&msg ,const KUrl&url,cons
} else {
menu->addAction( mMsgView->addAddrBookAction() );
}
+ menu->addSeparator();
+ menu->addMenu(mMsgView->viewHtmlOption());
+ menu->addSeparator();
menu->addAction( mMsgView->copyURLAction() );
urlMenuAdded = true;
} else if ( url.protocol() != QLatin1String( "attachment" ) ) {
diff --git a/kmail/kmreadermainwin.cpp b/kmail/kmreadermainwin.cpp
index dfd10b6..9b5af22 100644
--- a/kmail/kmreadermainwin.cpp
+++ b/kmail/kmreadermainwin.cpp
@@ -477,7 +477,9 @@ void KMReaderMainWin::showMessagePopup(const Akonadi::Item&msg ,const KUrl&url,c
} else {
menu->addAction( mReaderWin->addAddrBookAction() );
}
-
+ menu->addSeparator();
+ menu->addMenu(mReaderWin->viewHtmlOption());
+ menu->addSeparator();
menu->addAction( mReaderWin->copyURLAction() );
copyAdded = true;
urlMenuAdded = true;
diff --git a/kmail/kmreaderwin.cpp b/kmail/kmreaderwin.cpp
index 0217f73..21dadcc 100644
--- a/kmail/kmreaderwin.cpp
+++ b/kmail/kmreaderwin.cpp
@@ -31,6 +31,7 @@
#include <kpimutils/email.h>
#include <libkdepim/job/addemailaddressjob.h>
#include <libkdepim/job/openemailaddressjob.h>
+#include <libkdepim/job/addemaildisplayjob.h>
#include <libkdepim/misc/broadcaststatus.h>
#include "kmcommands.h"
#include "mailcommon/mdn/sendmdnhandler.h"
@@ -74,6 +75,7 @@ using MessageComposer::MessageFactory;
#include <kservice.h>
#include <KActionCollection>
#include <KMessageBox>
+#include <KMenu>
#include <QClipboard>
@@ -216,6 +218,19 @@ void KMReaderWin::createActions()
mImageUrlSaveAsAction->setShortcutConfigurable( false );
connect( mImageUrlSaveAsAction, SIGNAL(triggered(bool)), SLOT(slotSaveImageOnDisk()) );
+ // View html options
+ mViewHtmlOptions = new KMenu(i18n("Show HTML Format"));
+ mViewAsHtml = new KAction( i18n("Show HTML format when mail comes from this contact"), \
mViewHtmlOptions); + mViewAsHtml->setShortcutConfigurable( false );
+ connect( mViewAsHtml, SIGNAL(triggered(bool)), SLOT(slotContactHtmlOptions()));
+ mViewAsHtml->setCheckable(true);
+ mViewHtmlOptions->addAction(mViewAsHtml);
+
+ mLoadExternalReference = new KAction( i18n("Load external reference when mail comes for this \
contact"), mViewHtmlOptions); + mLoadExternalReference->setShortcutConfigurable( false );
+ connect(mLoadExternalReference, SIGNAL(triggered(bool)), SLOT(slotContactHtmlOptions()));
+ mLoadExternalReference->setCheckable(true);
+ mViewHtmlOptions->addAction(mLoadExternalReference);
}
void KMReaderWin::setUseFixedFont( bool useFixedFont )
@@ -533,7 +548,6 @@ void KMReaderWin::slotMailtoReply()
command->start();
}
-
CSSHelper* KMReaderWin::cssHelper() const
{
return mViewer->cssHelper();
@@ -752,6 +766,30 @@ void KMReaderWin::slotPrintComposeResult( KJob *job )
void KMReaderWin::setContactItem(const Akonadi::Item& contact)
{
mSearchedContact = contact;
+ updateHtmlActions();
+}
+
+void KMReaderWin::updateHtmlActions()
+{
+ if (mSearchedContact.isValid()) {
+ mLoadExternalReference->setChecked(false);
+ mViewAsHtml->setChecked(false);
+ } else {
+ //TODO
+ }
+}
+
+void KMReaderWin::slotContactHtmlOptions()
+{
+ const KUrl url = urlClicked();
+ if( url.isEmpty() )
+ return;
+ const QString emailString = KPIMUtils::decodeMailtoUrl( url ).toLower();
+
+ KPIM::AddEmailDiplayJob *job = new KPIM::AddEmailDiplayJob( emailString, mMainWindow, this );
+ job->setRemoteContent(mLoadExternalReference->isChecked());
+ job->setShowAsHTML(mViewAsHtml->isChecked());
+ job->start();
}
void KMReaderWin::slotEditContact()
diff --git a/kmail/kmreaderwin.h b/kmail/kmreaderwin.h
index a5731fa..c9b6545 100644
--- a/kmail/kmreaderwin.h
+++ b/kmail/kmreaderwin.h
@@ -1,6 +1,7 @@
/* -*- 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>
+ Copyright (c) 2013 Laurent Montel <montel@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
@@ -28,6 +29,7 @@
class KActionCollection;
class KAction;
class KToggleAction;
+class KMenu;
namespace MessageViewer {
class HeaderStrategy;
class HeaderStyle;
@@ -149,7 +151,9 @@ public:
KAction *saveMessageDisplayFormatAction();
KAction *resetMessageDisplayFormatAction();
- KAction* editContactAction() const { return mEditContactAction; }
+ KAction *editContactAction() const { return mEditContactAction; }
+
+ KMenu *viewHtmlOption() const { return mViewHtmlOptions; }
Akonadi::Item message() const;
@@ -199,20 +203,34 @@ public slots:
void contactStored( const Akonadi::Item &item );
void slotContactEditorError(const QString &error);
-protected:
+ void slotContactHtmlOptions();
+protected:
KUrl urlClicked() const;
KUrl imageUrlClicked() const;
private:
void createActions();
+ void updateHtmlActions();
+
private:
Akonadi::Item mSearchedContact;
QWidget *mMainWindow;
KActionCollection *mActionCollection;
- KAction *mMailToComposeAction, *mMailToReplyAction, *mMailToForwardAction,
- *mAddAddrBookAction, *mOpenAddrBookAction, *mUrlSaveAsAction, \
*mAddBookmarksAction,*mImageUrlSaveAsAction, *mEditContactAction; + KAction *mMailToComposeAction;
+ KAction *mMailToReplyAction;
+ KAction *mMailToForwardAction;
+ KAction *mAddAddrBookAction;
+ KAction *mOpenAddrBookAction;
+ KAction *mUrlSaveAsAction;
+ KAction *mAddBookmarksAction;
+ KAction *mImageUrlSaveAsAction;
+ KAction *mEditContactAction;
+ KAction *mViewAsHtml;
+ KAction *mLoadExternalReference;
+
+ KMenu *mViewHtmlOptions;
MessageViewer::Viewer *mViewer;
diff --git a/libkdepim/job/addemaildisplayjob.cpp b/libkdepim/job/addemaildisplayjob.cpp
index 69cbfe5..41e21ec 100644
--- a/libkdepim/job/addemaildisplayjob.cpp
+++ b/libkdepim/job/addemaildisplayjob.cpp
@@ -71,6 +71,20 @@ public:
createContact();
}
+ void modifyContact()
+ {
+ //TODO
+ /*
+ Akonadi::Item item = contact;
+ KABC::Addressee contact = searchJob->contacts()[0];
+ contact.insertCustom( QLatin1String( "KADDRESSBOOK" ), QLatin1String( "MailPreferedFormatting" \
), mShowAsHTML ? QLatin1String("HTML") : QLatin1String("TEXT") ); + contact.insertCustom( \
QLatin1String( "KADDRESSBOOK" ), QLatin1String( "MailAllowToRemoteContent" ), mRemoteContent ? \
QLatin1String( "TRUE" ) : QLatin1String( "FALSE" ) ); + item.setPayload<KABC::Addressee>( contact \
); + Akonadi::ItemModifyJob *job = new Akonadi::ItemModifyJob( item );
+ q->connect( job, SIGNAL(result(KJob*)), SLOT(slotAddModifyContactDone(KJob*)) );
+ */
+ }
+
void slotSearchDone( KJob *job )
{
if ( job->error() ) {
@@ -220,6 +234,7 @@ public:
}
AddEmailDiplayJob *q;
+ Akonadi::Item contact;
bool mShowAsHTML;
bool mRemoteContent;
QString mCompleteAddress;
@@ -238,25 +253,33 @@ AddEmailDiplayJob::~AddEmailDiplayJob()
delete d;
}
-void AddEmailDiplayJob::showAsHTML(bool html)
+void AddEmailDiplayJob::setShowAsHTML(bool html)
{
d->mShowAsHTML = html;
}
-void AddEmailDiplayJob::remoteContent(bool b)
+void AddEmailDiplayJob::setRemoteContent(bool b)
{
d->mRemoteContent = b;
}
+void AddEmailDiplayJob::setContact(const Akonadi::Item &contact)
+{
+ d->contact = contact;
+}
void AddEmailDiplayJob::start()
{
- // first check whether a contact with the same email exists already
- Akonadi::ContactSearchJob *searchJob = new Akonadi::ContactSearchJob( this );
- searchJob->setLimit( 1 );
- searchJob->setQuery( Akonadi::ContactSearchJob::Email, d->mEmail,
- Akonadi::ContactSearchJob::ExactMatch );
- connect( searchJob, SIGNAL(result(KJob*)), SLOT(slotSearchDone(KJob*)) );
+ if (d->contact.isValid()) {
+ d->modifyContact();
+ } else {
+ // first check whether a contact with the same email exists already
+ Akonadi::ContactSearchJob *searchJob = new Akonadi::ContactSearchJob( this );
+ searchJob->setLimit( 1 );
+ searchJob->setQuery( Akonadi::ContactSearchJob::Email, d->mEmail,
+ Akonadi::ContactSearchJob::ExactMatch );
+ connect( searchJob, SIGNAL(result(KJob*)), SLOT(slotSearchDone(KJob*)) );
+ }
}
#include "addemaildisplayjob.moc"
diff --git a/libkdepim/job/addemaildisplayjob.h b/libkdepim/job/addemaildisplayjob.h
index 59b6895..8813889 100644
--- a/libkdepim/job/addemaildisplayjob.h
+++ b/libkdepim/job/addemaildisplayjob.h
@@ -35,11 +35,12 @@ class KDEPIM_EXPORT AddEmailDiplayJob : public KJob
Q_OBJECT
public:
- AddEmailDiplayJob( const QString &email, QWidget *parentWidget, QObject *parent = 0 );
+ explicit AddEmailDiplayJob( const QString &email, QWidget *parentWidget, QObject *parent = 0 );
~AddEmailDiplayJob();
- void showAsHTML(bool html);
- void remoteContent(bool b);
+ void setShowAsHTML(bool html);
+ void setRemoteContent(bool b);
+ void setContact(const Akonadi::Item &contact);
virtual void start();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic