-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAxMailWrapper.h
187 lines (157 loc) · 7.23 KB
/
AxMailWrapper.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#ifndef __AxMailWrapper_H__
#define __AxMailWrapper_H__
//=============================================================================
/*
* See the file README in the main directory for a description of
* this software, copyright information, and how to reach the author.
*
* Author: alex
* Date: 28.06.2004
*
* Last modfied:
* $Author: alex $
* $Date: 2013-03-20 20:33:18 +0100 (Mi, 20 Mär 2013) $
*/
//=============================================================================
//=============================================================================
// includes
//=============================================================================
//----- qt --------------------------------------------------------------------
//----- CORBA -----------------------------------------------------------------
//----- C++ -------------------------------------------------------------------
#include <deque>
#include <vector>
//----- C ---------------------------------------------------------------------
//----- AxLib -----------------------------------------------------------------
//----- vdr -------------------------------------------------------------------
#include <vdr/font.h>
//----- local -----------------------------------------------------------------
//----- other includes --------------------------------------------------------
//=============================================================================
// forward declarations
//=============================================================================
namespace Ax {
namespace Mail {
class Mail;
class MailPart;
}
}
class AxPluginMailBox;
//=============================================================================
// class AxMailWrapper
//=============================================================================
class AxMailWrapper
{
public:
//-------------------------------------------------------------------------
// enums
//-------------------------------------------------------------------------
enum WrapMode
{
WM_FIRST = 0
, WM_NONE = WM_FIRST ///< let vdr do the word wrapping
, WM_QUOTE = 1 ///< continue quotes
, WM_FLOWED = 2 ///< honor 'format=flowed` (RFC 2646)
, WM_SMALL = 3 ///< continue lines which end and start with small chars
, WM_COUNT = 4
};
private:
//-------------------------------------------------------------------------
// struct AxLine
//-------------------------------------------------------------------------
struct AxLine
{
//-----------------------------------------------------------------------
AxLine(const std::string &theText = std::string(""), bool theFSep = false)
: Text(theText)
, fSep(theFSep)
{
}
//-----------------------------------------------------------------------
void clear()
{
Text = std::string("");
fSep = false;
}
//-----------------------------------------------------------------------
std::string Text;
bool fSep;
}; // class AxLine
//-------------------------------------------------------------------------
// typedefs
//-------------------------------------------------------------------------
typedef std::deque<AxLine> LineCltn;
public:
//-------------------------------------------------------------------------
// AxMailWrapper()
//-------------------------------------------------------------------------
AxMailWrapper( AxPluginMailBox *thePlugin
, const cFont *theFont
, int theWidth
);
//-------------------------------------------------------------------------
// ~AxMailWrapper()
//-------------------------------------------------------------------------
~AxMailWrapper();
//-------------------------------------------------------------------------
// getMailText()
//-------------------------------------------------------------------------
std::string getMailText( Ax::Mail::Mail *theMail
, WrapMode theWrapMode = WM_NONE
, bool theShowAllParts = false
);
private:
//-----------------------------------------------------------------------------
// getQuotes()
//-----------------------------------------------------------------------------
std::string getQuotes(const std::string &theStr) const;
//-------------------------------------------------------------------------
// cutLine()
//-------------------------------------------------------------------------
std::string cutLine(const std::string theSrc);
//-------------------------------------------------------------------------
// splitText()
//-------------------------------------------------------------------------
LineCltn splitText(const std::string &theStr);
//-------------------------------------------------------------------------
// getFlowedText()
//-------------------------------------------------------------------------
LineCltn getFlowedText(const LineCltn &theSrc);
//-------------------------------------------------------------------------
// improveWrap()
//-------------------------------------------------------------------------
LineCltn improveWrap(const LineCltn &theSrc);
//-------------------------------------------------------------------------
// wrapText()
//-------------------------------------------------------------------------
LineCltn wrapText(const LineCltn &theSrc);
//-------------------------------------------------------------------------
// convertHtml2Text()
//-------------------------------------------------------------------------
std::string convertHtml2Text(const Ax::Mail::MailPart *thePart);
//-------------------------------------------------------------------------
// collectParts()
//-------------------------------------------------------------------------
void collectParts(Ax::Mail::MailPartVector &thePartCltn, const Ax::Mail::MailPart *thePart);
//-------------------------------------------------------------------------
// addPartText()
//-------------------------------------------------------------------------
void addPartText(LineCltn &theDst, const Ax::Mail::MailPart *thePart);
//-------------------------------------------------------------------------
// dumpText()
//-------------------------------------------------------------------------
void dumpText(const std::string &theMsg, const LineCltn &theSrc);
//-------------------------------------------------------------------------
// attributes
//-------------------------------------------------------------------------
AxPluginMailBox *myPlugin ;
const cFont *myFont ;
int myWidth ;
WrapMode myWrapMode;
bool fShowPartInfo;
bool fHasOsdProps ;
bool fConvHtml ;
bool fShowAllParts;
bool fShowHeader ;
}; // class AxMailWrapper
#endif