Page Menu
Home
GnuPG
Search
Configure Global Search
Log In
Files
F34184643
emailviewer.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
3 KB
Subscribers
None
emailviewer.cpp
View Options
// SPDX-FileCopyrightText: 2024 g10 code GmbH
// SPDX-Contributor: Carl Schwan <carl.schwan@gnupg.com>
// SPDX-License-Identifier: GPL-2.0-or-later
#include
"emailviewer.h"
#include
"editor/composerwindow.h"
#include
"editor/composerwindowfactory.h"
#include
"websocketclient.h"
#include
<KLocalizedString>
#include
<QMenuBar>
#include
<QToolBar>
#include
<QToolButton>
using
namespace
Qt
::
Literals
::
StringLiterals
;
static
KMime
::
Message
::
Ptr
toMessage
(
const
QString
&
content
)
{
KMime
::
Message
::
Ptr
message
(
new
KMime
::
Message
());
message
->
setContent
(
KMime
::
CRLFtoLF
(
content
.
toUtf8
()));
message
->
parse
();
return
message
;
}
EmailViewer
::
EmailViewer
(
const
QString
&
content
,
const
QString
&
accountEmail
,
const
QString
&
displayName
,
const
QByteArray
&
ewsAccessToken
)
:
MimeTreeParser
::
Widgets
::
MessageViewerWindow
()
,
m_email
(
accountEmail
)
,
m_displayName
(
displayName
)
,
m_ewsAccessToken
(
ewsAccessToken
)
{
setMessages
({
toMessage
(
content
)});
const
auto
message
=
messages
().
at
(
0
);
toolBar
()
->
show
();
// spacer
QWidget
*
spacer
=
new
QWidget
();
spacer
->
setSizePolicy
(
QSizePolicy
::
Expanding
,
QSizePolicy
::
Expanding
);
toolBar
()
->
addWidget
(
spacer
);
auto
messageMenu
=
menuBar
()
->
findChild
<
QMenu
*>
(
"messageMenu"
);
Q_ASSERT
(
messageMenu
);
messageMenu
->
addSeparator
();
// reply
auto
replyAction
=
new
QAction
(
QIcon
::
fromTheme
(
u
"mail-reply-sender-symbolic"
_s
),
i18nc
(
"@action:button"
,
"Reply"
),
toolBar
());
connect
(
replyAction
,
&
QAction
::
triggered
,
this
,
[
message
,
this
](
bool
)
{
auto
dialog
=
ComposerWindowFactory
::
self
().
create
(
m_email
,
m_displayName
,
m_ewsAccessToken
);
dialog
->
reply
(
message
);
dialog
->
show
();
dialog
->
activateWindow
();
dialog
->
raise
();
});
toolBar
()
->
addAction
(
replyAction
);
messageMenu
->
addAction
(
replyAction
);
auto
widget
=
qobject_cast
<
QToolButton
*>
(
toolBar
()
->
widgetForAction
(
replyAction
));
widget
->
setToolButtonStyle
(
Qt
::
ToolButtonTextBesideIcon
);
// forward
auto
forwardAction
=
new
QAction
(
QIcon
::
fromTheme
(
u
"mail-forward-symbolic"
_s
),
i18nc
(
"@action:button"
,
"Forward"
),
toolBar
());
connect
(
forwardAction
,
&
QAction
::
triggered
,
this
,
[
message
,
this
](
bool
)
{
auto
dialog
=
ComposerWindowFactory
::
self
().
create
(
m_email
,
m_displayName
,
m_ewsAccessToken
);
dialog
->
reply
(
message
);
dialog
->
show
();
dialog
->
activateWindow
();
dialog
->
raise
();
});
toolBar
()
->
addAction
(
forwardAction
);
messageMenu
->
addAction
(
forwardAction
);
widget
=
qobject_cast
<
QToolButton
*>
(
toolBar
()
->
widgetForAction
(
forwardAction
));
widget
->
setToolButtonStyle
(
Qt
::
ToolButtonTextBesideIcon
);
}
void
EmailViewer
::
closeEvent
(
QCloseEvent
*
event
)
{
MimeTreeParser
::
Widgets
::
MessageViewerWindow
::
closeEvent
(
event
);
WebsocketClient
::
self
().
sendViewerClosed
(
m_email
);
}
void
EmailViewer
::
showEvent
(
QShowEvent
*
event
)
{
MimeTreeParser
::
Widgets
::
MessageViewerWindow
::
showEvent
(
event
);
WebsocketClient
::
self
().
sendViewerOpened
(
m_email
);
}
void
EmailViewer
::
view
(
const
QString
&
content
,
const
QString
&
accountEmail
,
const
QString
&
displayName
,
const
QByteArray
&
ewsAccessToken
)
{
m_email
=
accountEmail
;
m_displayName
=
displayName
;
m_ewsAccessToken
=
ewsAccessToken
;
setMessages
({
toMessage
(
content
)});
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Sun, Dec 14, 3:18 PM (1 d, 18 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
47/2d/e295335e8e1428b0a318bd68d626
Attached To
rOJ GpgOL.js
Event Timeline
Log In to Comment