Wt examples: Composer Class Reference

Wt examples 4.10.4

Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | Friends | List of all members
Composer Class Reference
Composer example

An E-mail composer widget. More...

`#include <Composer.h>`

Inheritance diagram for Composer:
[legend]

## Public Member Functions
| Composer ()
| Construct a new Composer.
void | setTo (const std::vector< Contact > &to)
| Set message To: contacts.
void | setSubject (const WString &subject)
| Set subject.
void | setMessage (const WString &message)
| Set the message.
void | setAddressBook (const std::vector< Contact > &addressBook)
| Set the address book, for autocomplete suggestions.
std::vector< Contact > | to () const
| Get the To: contacts.
std::vector< Contact > | cc () const
| Get the Cc: contacts.
std::vector< Contact > | bcc () const
| Get the Bc: contacts.
const WString & | subject () const
| Get the subject.
std::vector< Attachment > | attachments () const
| Get the list of attachments.
const WString & | message () const
| Get the message.

## Public Attributes
Wt::Signal | send
| The message is ready to be sent...
Wt::Signal | discard
| The message must be discarded.

## Private Member Functions
void | attachMore ()
| Add an attachment edit.
void | removeAttachment (AttachmentEdit *attachment)
| Remove the given attachment edit.
void | sendIt ()
| Slot attached to the Send button.
void | saveNow ()
| Slot attached to the Save now button.
void | discardIt ()
| Slot attached to the Discard button.
void | attachmentDone ()
| Slotcalled when an attachment has been uploaded.
void | createUi ()
void | saved ()
| All attachments have been processed, determine the result of saving the message.
void | setStatus (const WString &text, const WString &style)
| Set the status, and apply the given style.

## Private Attributes
WContainerWidget * | layout_
WPushButton * | topSendButton_
WPushButton * | topSaveNowButton_
WPushButton * | topDiscardButton_
WPushButton * | botSendButton_
WPushButton * | botSaveNowButton_
WPushButton * | botDiscardButton_
WText * | statusMsg_
WTable * | edits_
AddresseeEdit * | toEdit_
| To: Addressees edit.
AddresseeEdit * | ccEdit_
| Cc: Addressees edit.
AddresseeEdit * | bccEdit_
| Bcc: Addressees edit.
ContactSuggestions * | contactSuggestions_
| The suggestions popup for the addressee edits.
WLineEdit * | subject_
| The subject line edit.
OptionList * | options_
| OptionsList for editing Cc or Bcc.
Option * | addcc_
| Option for editing Cc:
Option * | addbcc_
| Option for editing Bcc:
Option * | attachFile_
| Option for attaching a file.
Option * | attachOtherFile_
| Option for attaching another file.
std::vector< AttachmentEdit * > | attachments_
| Array which holds all the attachments, including one extra invisible one.
WTextArea * | message_
| WTextArea for the main message.
bool | saving_
| state when waiting asyncrhonously for attachments to be uploaded
bool | sending_
int | attachmentsPending_
| number of attachments waiting to be uploaded during saving

## Friends
class | AttachmentEdit

## Detailed Description

An E-mail composer widget.

This widget is part of the Wt composer example.

Definition at line 40 of file Composer.h.

## Constructor & Destructor Documentation

## ◆ Composer()

Composer::Composer | ( |  | ) |

Construct a new Composer.

Definition at line 27 of file Composer.C.

28 : WCompositeWidget(),
29 saving_(false),
30 sending_(false)
31{
32 std::unique_ptr<WContainerWidget> layout
33 = std::make_unique<WContainerWidget>();
34 layout_ = layout.get();
35 setImplementation(std::move(layout));
36
37 createUi();
38}
Composer::saving_
bool saving_
state when waiting asyncrhonously for attachments to be uploaded
Definition Composer.h:140
Composer::sending_
bool sending_
Definition Composer.h:140
Composer::layout_
WContainerWidget * layout_
Definition Composer.h:100
Composer::createUi
void createUi()
Definition Composer.C:98

## Member Function Documentation

## ◆ attachmentDone()

void Composer::attachmentDone | ( |  | ) |
| private

Slotcalled when an attachment has been uploaded.

This used during while saving the email and waiting for remaining attachments to be uploaded. It is connected to the AttachmentEdit control signals that are emitted when an attachment has been processed.

Definition at line 338 of file Composer.C.

339{
340 if (saving_) {
341 --attachmentsPending_;
342 std::cerr << "Attachments still: " << attachmentsPending_ << std::endl;
343
344 if (attachmentsPending_ == 0)
345 saved();
346 }
347}
Composer::saved
void saved()
All attachments have been processed, determine the result of saving the message.
Definition Composer.C:355
Composer::attachmentsPending_
int attachmentsPending_
number of attachments waiting to be uploaded during saving
Definition Composer.h:143

## ◆ attachments()

std::vector< Attachment > Composer::attachments | ( |  | ) | const

Get the list of attachments.

The ownership of the attachment spool files is transferred to the caller as well, be sure to delete them !

Definition at line 80 of file Composer.C.

81{
82 std::vector<Attachment> attachments;
83
84 for (unsigned i = 0; i < attachments_.size() - 1; ++i) {
85 std::vector<Attachment> toadd = attachments_[i]->attachments();
86
87 attachments.insert(attachments.end(), toadd.begin(), toadd.end());
88 }
89
90 return attachments;
91}
Composer::attachments_
std::vector< AttachmentEdit * > attachments_
Array which holds all the attachments, including one extra invisible one.
Definition Composer.h:134
Composer::attachments
std::vector< Attachment > attachments() const
Get the list of attachments.
Definition Composer.C:80

## ◆ attachMore()

void Composer::attachMore | ( |  | ) |
| private

Add an attachment edit.

Definition at line 254 of file Composer.C.

255{
256 /*
257 * Create and append the next AttachmentEdit, that will be hidden.
258 */
259 std::unique_ptr<AttachmentEdit> edit
260 = std::make_unique<AttachmentEdit>(this);
261 AttachmentEdit *editPtr = edit.get();
262 edits_->elementAt(5, 1)->insertBefore(std::move(edit), attachOtherFile_);
263 attachments_.push_back(editPtr);
264 attachments_.back()->hide();
265
266 // Connect the attachOtherFile_ option to show this attachment.
267 attachOtherFile_->item()->clicked()
268 .connect(attachments_.back(), &WWidget::show);
269}
AttachmentEdit
An edit field for an email attachment.
Definition AttachmentEdit.h:38
Composer::attachOtherFile_
Option * attachOtherFile_
Option for attaching another file.
Definition Composer.h:131
Composer::edits_
WTable * edits_
Definition Composer.h:106
Option::item
WInteractWidget * item()
Returns the clickable part.
Definition Option.h:44

## ◆ bcc()

std::vector< Contact > Composer::bcc | ( |  | ) | const

Get the Bc: contacts.

Definition at line 65 of file Composer.C.

66{
67 return bccEdit_->addressees();
68}
AddresseeEdit::addressees
std::vector< Contact > addressees() const
Get a list of addressees.
Definition AddresseeEdit.C:74
Composer::bccEdit_
AddresseeEdit * bccEdit_
Bcc: Addressees edit.
Definition Composer.h:113

## ◆ cc()

std::vector< Contact > Composer::cc | ( |  | ) | const

Get the Cc: contacts.

Definition at line 60 of file Composer.C.

61{
62 return ccEdit_->addressees();
63}
Composer::ccEdit_
AddresseeEdit * ccEdit_
Cc: Addressees edit.
Definition Composer.h:111

## ◆ createUi()

void Composer::createUi | ( |  | ) |
| private

Definition at line 98 of file Composer.C.

99{
100 setStyleClass("darker");
101
102 // horizontal layout container, used for top and bottom buttons.
103 WContainerWidget *horiz;
104
105 /*
106 * Top buttons
107 */
108 horiz = layout_->addWidget(std::make_unique<WContainerWidget>());
109 horiz->setPadding(5);
110 topSendButton_ = horiz->addWidget(std::make_unique<WPushButton>(tr("msg.send")));
111 topSendButton_->setStyleClass("default"); // default action
112 topSaveNowButton_ = horiz->addWidget(std::make_unique<WPushButton>(tr("msg.savenow")));
113 topDiscardButton_ = horiz->addWidget(std::make_unique<WPushButton>(tr("msg.discard")));
114
115 // Text widget which shows status messages, next to the top buttons.
116 statusMsg_ = horiz->addWidget(std::make_unique<WText>());
117 statusMsg_->setMargin(15, Side::Left);
118
119 /*
120 * To, Cc, Bcc, Subject, Attachments
121 *
122 * They are organized in a two-column table: left column for
123 * labels, and right column for the edit.
124 */
125 edits_ = layout_->addWidget(std::make_unique<WTable>());
126 edits_->setStyleClass("lighter");
127 edits_->resize(WLength(100, LengthUnit::Percentage), WLength::Auto);
128 edits_->elementAt(0, 0)->resize(WLength(1, LengthUnit::Percentage),
129 WLength::Auto);
130
131 /*
132 * To, Cc, Bcc
133 */
134 toEdit_ = edits_->elementAt(0,1)->addWidget(std::make_unique<AddresseeEdit>(tr("msg.to"), edits_->elementAt(0, 0)));
135 // add some space above To:
136 edits_->elementAt(0, 1)->setMargin(5, Side::Top);
137 ccEdit_ = edits_->elementAt(1,1)->addWidget(std::make_unique<AddresseeEdit>(tr("msg.cc"), edits_->elementAt(1, 0)));
138 bccEdit_ = edits_->elementAt(2,1)->addWidget(std::make_unique<AddresseeEdit>(tr("msg.bcc"), edits_->elementAt(2, 0)));
139
140 ccEdit_->hide();
141 bccEdit_->hide();
142
143 /*
144 * Addressbook suggestions popup
145 */
146 contactSuggestions_ = layout_->addChild(std::make_unique<ContactSuggestions>());
147
148 contactSuggestions_->forEdit(toEdit_);
149 contactSuggestions_->forEdit(ccEdit_);
150 contactSuggestions_->forEdit(bccEdit_);
151
152 /*
153 * We use an OptionList widget to show the expand options for
154 * ccEdit_ and bccEdit_ nicely next to each other, separated
155 * by pipe characters.
156 */
157 options_ = edits_->elementAt(3, 1)->addWidget(std::make_unique<OptionList>());
158 std::unique_ptr<Option> addcc(new Option(tr("msg.addcc")));
159 addcc_ = addcc.get();
160 std::unique_ptr<Option> addbcc(new Option(tr("msg.addbcc")));
161 addbcc_ = addbcc.get();
162
163 options_->add(std::move(addcc));
164 options_->add(std::move(addbcc));
165
166 /*
167 * Subject
168 */
169 edits_->elementAt(4, 0)->addWidget(std::make_unique<Label>(tr("msg.subject"), edits_->elementAt(4, 0)));
170 subject_ = edits_->elementAt(4, 1)->addWidget(std::make_unique<WLineEdit>());
171 subject_->resize(WLength(99, LengthUnit::Percentage), WLength::Auto);
172
173 /*
174 * Attachments
175 */
176 edits_->elementAt(5, 0)->addWidget(std::make_unique<WImage>("icons/paperclip.png"));
177 edits_->elementAt(5, 0)->setContentAlignment(AlignmentFlag::Right | AlignmentFlag::Top);
178 edits_->elementAt(5, 0)->setPadding(3);
179
180 // Attachment edits: we always have the next attachmentedit ready
181 // but hidden. This improves the response time, since the show()
182 // and hide() slots are stateless.
183 AttachmentEdit *attachmentEdit = edits_->elementAt(5, 1)->addWidget(std::make_unique<AttachmentEdit>(this));
184 attachments_.push_back(attachmentEdit);
185 attachments_.back()->hide();
186
187 /*
188 * Two options for attaching files. The first does not say 'another'.
189 */
190 attachFile_ = edits_->elementAt(5, 1)->addWidget(std::make_unique<Option>(tr("msg.attachfile")));
191 attachOtherFile_ = edits_->elementAt(5, 1)->addWidget(std::make_unique<Option>(tr("msg.attachanother")));
192 attachOtherFile_->hide();
193
194 /*
195 * Message
196 */
197 message_ = layout_->addWidget(std::make_unique<WTextArea>());
198 message_->setColumns(80);
199 message_->setRows(10); // should be 20, but let's keep it smaller
200 message_->setMargin(10);
201
202 /*
203 * Bottom buttons
204 */
205 horiz = layout_->addWidget(std::make_unique<WContainerWidget>());
206 horiz->setPadding(5);
207 botSendButton_ = horiz->addWidget(std::make_unique<WPushButton>(tr("msg.send")));
208 botSendButton_->setStyleClass("default");
209 botSaveNowButton_ = horiz->addWidget(std::make_unique<WPushButton>(tr("msg.savenow")));
210 botDiscardButton_ = horiz->addWidget(std::make_unique<WPushButton>(tr("msg.discard")));
211
212 /*
213 * Button events.
214 */
215 topSendButton_->clicked().connect(this, &Composer::sendIt);
216 botSendButton_->clicked().connect(this, &Composer::sendIt);
217 topSaveNowButton_->clicked().connect(this, &Composer::saveNow);
218 botSaveNowButton_->clicked().connect(this, &Composer::saveNow);
219 topDiscardButton_->clicked().connect(this, &Composer::discardIt);
220 botDiscardButton_->clicked().connect(this, &Composer::discardIt);
221
222 /*
223 * Option events to show the cc or Bcc edit.
224 *
225 * Clicking on the option should both show the corresponding edit, and
226 * hide the option itself.
227 */
228 addcc_->item()->clicked().connect(ccEdit_, &WWidget::show);
229 addcc_->item()->clicked().connect(addcc_, &WWidget::hide);
230 addcc_->item()->clicked().connect(options_, &OptionList::update);
231 addcc_->item()->clicked().connect(ccEdit_, &WWidget::setFocus);
232
233 addbcc_->item()->clicked().connect(bccEdit_, &WWidget::show);
234 addbcc_->item()->clicked().connect(addbcc_, &WWidget::hide);
235 addbcc_->item()->clicked().connect(options_, &OptionList::update);
236 addbcc_->item()->clicked().connect(bccEdit_, &WWidget::setFocus);
237
238 /*
239 * Option event to attach the first attachment.
240 *
241 * We show the first attachment, and call attachMore() to prepare the
242 * next attachment edit that will be hidden.
243 *
244 * In addition, we need to show the 'attach More' option, and hide the
245 * 'attach' option.
246 */
247 attachFile_->item()->clicked().connect(attachments_.back(), &WWidget::show);
248 attachFile_->item()->clicked().connect(attachOtherFile_, &WWidget::show);
249 attachFile_->item()->clicked().connect(attachFile_, &WWidget::hide);
250 attachFile_->item()->clicked().connect(this, &Composer::attachMore);
251 attachOtherFile_->item()->clicked().connect(this, &Composer::attachMore);
252}
Composer::botSaveNowButton_
WPushButton * botSaveNowButton_
Definition Composer.h:103
Composer::sendIt
void sendIt()
Slot attached to the Send button.
Definition Composer.C:296
Composer::statusMsg_
WText * statusMsg_
Definition Composer.h:104
Composer::message_
WTextArea * message_
WTextArea for the main message.
Definition Composer.h:137
Composer::topSaveNowButton_
WPushButton * topSaveNowButton_
Definition Composer.h:102
Composer::topSendButton_
WPushButton * topSendButton_
Definition Composer.h:102
Composer::toEdit_
AddresseeEdit * toEdit_
To: Addressees edit.
Definition Composer.h:109
Composer::discardIt
void discardIt()
Slot attached to the Discard button.
Definition Composer.C:385
Composer::attachMore
void attachMore()
Add an attachment edit.
Definition Composer.C:254
Composer::saveNow
void saveNow()
Slot attached to the Save now button.
Definition Composer.C:309
Composer::botSendButton_
WPushButton * botSendButton_
Definition Composer.h:103
Composer::subject_
WLineEdit * subject_
The subject line edit.
Definition Composer.h:119
Composer::topDiscardButton_
WPushButton * topDiscardButton_
Definition Composer.h:102
Composer::contactSuggestions_
ContactSuggestions * contactSuggestions_
The suggestions popup for the addressee edits.
Definition Composer.h:116
Composer::attachFile_
Option * attachFile_
Option for attaching a file.
Definition Composer.h:129
Composer::botDiscardButton_
WPushButton * botDiscardButton_
Definition Composer.h:103
Composer::addbcc_
Option * addbcc_
Option for editing Bcc:
Definition Composer.h:127
Composer::addcc_
Option * addcc_
Option for editing Cc:
Definition Composer.h:125
Composer::options_
OptionList * options_
OptionsList for editing Cc or Bcc.
Definition Composer.h:122
OptionList::update
void update()
Updates the stateless implementations after an Option has been hidden or shown.
Definition OptionList.C:31
OptionList::add
void add(std::unique_ptr< Option > option)
Add an Option to the list.
Definition OptionList.C:18
Option
A clickable option.
Definition Option.h:32

## ◆ discardIt()

void Composer::discardIt | ( |  | ) |
| private

Slot attached to the Discard button.

Discards the current message: emits the discard event.

Definition at line 385 of file Composer.C.

386{
387 discard.emit();
388}
Composer::discard
Wt::Signal discard
The message must be discarded.
Definition Composer.h:97

## ◆ message()

const WString & Composer::message | ( |  | ) | const

Get the message.

Definition at line 93 of file Composer.C.

94{
95 return message_->text();
96}

## ◆ removeAttachment()

void Composer::removeAttachment | ( | AttachmentEdit * | attachment | ) |
| private

Remove the given attachment edit.

Definition at line 271 of file Composer.C.

272{
273 /*
274 * Remove the given attachment from the attachments list.
275 */
276 std::vector<AttachmentEdit *>::iterator i
277 = std::find(attachments_.begin(), attachments_.end(), attachment);
278
279 if (i != attachments_.end()) {
280 attachments_.erase(i);
281 attachment->removeFromParent();
282
283 if (attachments_.size() == 1) {
284 /*
285 * This was the last visible attachment, thus, we should switch
286 * the option control again.
287 */
288 attachOtherFile_->hide();
289 attachFile_->show();
290 attachFile_->item()->clicked()
291 .connect(attachments_.back(), &WWidget::show);
292 }
293 }
294}

## ◆ saved()

void Composer::saved | ( |  | ) |
| private

All attachments have been processed, determine the result of saving the message.

Definition at line 355 of file Composer.C.

356{
357 /*
358 * All attachments have been processed.
359 */
360
361 bool attachmentsFailed = false;
362 for (unsigned i = 0; i < attachments_.size() - 1; ++i)
363 if (attachments_[i]->uploadFailed()) {
364 attachmentsFailed = true;
365 break;
366 }
367
368 if (attachmentsFailed) {
369 setStatus(tr("msg.attachment.failed"), "error");
370 } else {
371 setStatus(tr("msg.ok"), "status");
372 WString timeStr = Wt::WLocalDateTime::currentDateTime().toString("HH:mm");
373 statusMsg_->setText(Wt::utf8("Draft saved at {1}").arg(timeStr));
374
375 if (sending_) {
376 send.emit();
377 return;
378 }
379 }
380
381 saving_ = false;
382 sending_ = false;
383}
Composer::send
Wt::Signal send
The message is ready to be sent...
Definition Composer.h:93
Composer::setStatus
void setStatus(const WString &text, const WString &style)
Set the status, and apply the given style.
Definition Composer.C:349

## ◆ saveNow()

void Composer::saveNow | ( |  | ) |
| private

Slot attached to the Save now button.

Tries to save the mail message, and gives feedback on failure and on success.

Definition at line 309 of file Composer.C.

310{
311 if (!saving_) {
312 saving_ = true;
313
314 /*
315 * Check if any attachments still need to be uploaded.
316 * This may be the case when fileupload change events could not
317 * be caught (for example in Konqueror).
318 */
319 attachmentsPending_ = 0;
320
321 for (unsigned i = 0; i < attachments_.size() - 1; ++i) {
322 if (attachments_[i]->uploadNow()) {
323 ++attachmentsPending_;
324
325 // this will trigger attachmentDone() when done, see
326 // the AttachmentEdit constructor.
327 }
328 }
329
330 std::cerr << "Attachments pending: " << attachmentsPending_ << std::endl;
331 if (attachmentsPending_)
332 setStatus(tr("msg.uploading"), "status");
333 else
334 saved();
335 }
336}

## ◆ sendIt()

void Composer::sendIt | ( |  | ) |
| private

Slot attached to the Send button.

Tries to save the mail message, and if succesfull, sends it.

Definition at line 296 of file Composer.C.

297{
298 if (!sending_) {
299 sending_ = true;
300
301 /*
302 * First save -- this will check for the sending_ state
303 * signal if successfull.
304 */
305 saveNow();
306 }
307}

## ◆ setAddressBook()

void Composer::setAddressBook | ( | const std::vector< Contact > & | addressBook | ) |

Set the address book, for autocomplete suggestions.

Definition at line 70 of file Composer.C.

71{
72 contactSuggestions_->setAddressBook(contacts);
73}
ContactSuggestions::setAddressBook
void setAddressBook(const std::vector< Contact > &contacts)
Set the address book.
Definition ContactSuggestions.C:31

## ◆ setMessage()

void Composer::setMessage | ( | const WString & | message | ) |

Set the message.

Definition at line 50 of file Composer.C.

51{
52 message_->setText(message);
53}
Composer::message
const WString & message() const
Get the message.
Definition Composer.C:93

## ◆ setStatus()

void Composer::setStatus | ( | const WString & | text,
|  | const WString & | style )
| private

Set the status, and apply the given style.

Definition at line 349 of file Composer.C.

350{
351 statusMsg_->setText(text);
352 statusMsg_->setStyleClass(style);
353}

## ◆ setSubject()

void Composer::setSubject | ( | const WString & | subject | ) |

Set subject.

Definition at line 45 of file Composer.C.

46{
47 subject_->setText(subject);
48}
Composer::subject
const WString & subject() const
Get the subject.
Definition Composer.C:75

## ◆ setTo()

void Composer::setTo | ( | const std::vector< Contact > & | to | ) |

Set message To: contacts.

Definition at line 40 of file Composer.C.

41{
42 toEdit_->setAddressees(to);
43}
AddresseeEdit::setAddressees
void setAddressees(const std::vector< Contact > &contacts)
Set a list of addressees.
Definition AddresseeEdit.C:27
Composer::to
std::vector< Contact > to() const
Get the To: contacts.
Definition Composer.C:55

## ◆ subject()

const WString & Composer::subject | ( |  | ) | const

Get the subject.

Definition at line 75 of file Composer.C.

76{
77 return subject_->text();
78}

## ◆ to()

std::vector< Contact > Composer::to | ( |  | ) | const

Get the To: contacts.

Definition at line 55 of file Composer.C.

56{
57 return toEdit_->addressees();
58}

## Friends And Related Symbol Documentation

## ◆ AttachmentEdit

friend class AttachmentEdit
| friend

Definition at line 194 of file Composer.h.

## Member Data Documentation

## ◆ addbcc_

Option* Composer::addbcc_
| private

Option for editing Bcc:

Definition at line 127 of file Composer.h.

## ◆ addcc_

Option* Composer::addcc_
| private

Option for editing Cc:

Definition at line 125 of file Composer.h.

## ◆ attachFile_

Option* Composer::attachFile_
| private

Option for attaching a file.

Definition at line 129 of file Composer.h.

## ◆ attachments_

std::vector<AttachmentEdit *> Composer::attachments_
| private

Array which holds all the attachments, including one extra invisible one.

Definition at line 134 of file Composer.h.

## ◆ attachmentsPending_

int Composer::attachmentsPending_
| private

number of attachments waiting to be uploaded during saving

Definition at line 143 of file Composer.h.

## ◆ attachOtherFile_

Option* Composer::attachOtherFile_
| private

Option for attaching another file.

Definition at line 131 of file Composer.h.

## ◆ bccEdit_

AddresseeEdit* Composer::bccEdit_
| private

Bcc: Addressees edit.

Definition at line 113 of file Composer.h.

## ◆ botDiscardButton_

WPushButton * Composer::botDiscardButton_
| private

Definition at line 103 of file Composer.h.

## ◆ botSaveNowButton_

WPushButton * Composer::botSaveNowButton_
| private

Definition at line 103 of file Composer.h.

## ◆ botSendButton_

WPushButton* Composer::botSendButton_
| private

Definition at line 103 of file Composer.h.

## ◆ ccEdit_

AddresseeEdit* Composer::ccEdit_
| private

Cc: Addressees edit.

Definition at line 111 of file Composer.h.

## ◆ contactSuggestions_

ContactSuggestions* Composer::contactSuggestions_
| private

The suggestions popup for the addressee edits.

Definition at line 116 of file Composer.h.

## ◆ discard

Wt::Signal Composer::discard

The message must be discarded.

Definition at line 97 of file Composer.h.

## ◆ edits_

WTable* Composer::edits_
| private

Definition at line 106 of file Composer.h.

## ◆ layout_

WContainerWidget* Composer::layout_
| private

Definition at line 100 of file Composer.h.

## ◆ message_

WTextArea* Composer::message_
| private

WTextArea for the main message.

Definition at line 137 of file Composer.h.

## ◆ options_

OptionList* Composer::options_
| private

OptionsList for editing Cc or Bcc.

Definition at line 122 of file Composer.h.

## ◆ saving_

bool Composer::saving_
| private

state when waiting asyncrhonously for attachments to be uploaded

Definition at line 140 of file Composer.h.

## ◆ send

Wt::Signal Composer::send

The message is ready to be sent...

Definition at line 93 of file Composer.h.

## ◆ sending_

bool Composer::sending_
| private

Definition at line 140 of file Composer.h.

## ◆ statusMsg_

WText* Composer::statusMsg_
| private

Definition at line 104 of file Composer.h.

## ◆ subject_

WLineEdit* Composer::subject_
| private

The subject line edit.

Definition at line 119 of file Composer.h.

## ◆ toEdit_

AddresseeEdit* Composer::toEdit_
| private

To: Addressees edit.

Definition at line 109 of file Composer.h.

## ◆ topDiscardButton_

WPushButton * Composer::topDiscardButton_
| private

Definition at line 102 of file Composer.h.

## ◆ topSaveNowButton_

WPushButton * Composer::topSaveNowButton_
| private

Definition at line 102 of file Composer.h.

## ◆ topSendButton_

WPushButton* Composer::topSendButton_
| private

Definition at line 102 of file Composer.h.

The documentation for this class was generated from the following files:

- composer/Composer.h
- composer/Composer.C