Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include <Wt/WApplication>
00008 #include <Wt/WBreak>
00009 #include <Wt/WText>
00010 #include <Wt/WPushButton>
00011 #include <Wt/WContainerWidget>
00012 #include <Wt/WStringUtil>
00013 #ifndef WIN32
00014 #include <unistd.h>
00015 #endif
00016
00017 #include "Composer.h"
00018 #include "ComposeExample.h"
00019 #include "Contact.h"
00020
00021 ComposeExample::ComposeExample(WContainerWidget *parent)
00022 : WContainerWidget(parent)
00023 {
00024 composer_ = new Composer(this);
00025
00026 std::vector<Contact> addressBook;
00027 addressBook.push_back(Contact(L"Koen Deforche",
00028 L"koen.deforche@gmail.com"));
00029 addressBook.push_back(Contact(L"Koen alias1",
00030 L"koen.alias1@yahoo.com"));
00031 addressBook.push_back(Contact(L"Koen alias2",
00032 L"koen.alias2@yahoo.com"));
00033 addressBook.push_back(Contact(L"Koen alias3",
00034 L"koen.alias3@yahoo.com"));
00035 addressBook.push_back(Contact(L"Bartje",
00036 L"jafar@hotmail.com"));
00037 composer_->setAddressBook(addressBook);
00038
00039 std::vector<Contact> contacts;
00040 contacts.push_back(Contact(L"Koen Deforche", L"koen.deforche@gmail.com"));
00041
00042 composer_->setTo(contacts);
00043 composer_->setSubject("That's cool! Want to start your own google?");
00044
00045 composer_->send.connect(SLOT(this, ComposeExample::send));
00046 composer_->discard.connect(SLOT(this, ComposeExample::discard));
00047
00048 details_ = new WContainerWidget(this);
00049
00050 new WText(tr("example.info"), details_);
00051 }
00052
00053 void ComposeExample::send()
00054 {
00055 WContainerWidget *feedback = new WContainerWidget(this);
00056 feedback->setStyleClass(L"feedback");
00057
00058 WContainerWidget *horiz = new WContainerWidget(feedback);
00059 new WText(L"<p>We could have, but did not send the following email:</p>",
00060 horiz);
00061
00062 std::vector<Contact> contacts = composer_->to();
00063 if (!contacts.empty())
00064 horiz = new WContainerWidget(feedback);
00065 for (unsigned i = 0; i < contacts.size(); ++i) {
00066 new WText(L"To: \"" + contacts[i].name + L"\" <"
00067 + contacts[i].email + L">", PlainText, horiz);
00068 new WBreak(horiz);
00069 }
00070
00071 contacts = composer_->cc();
00072 if (!contacts.empty())
00073 horiz = new WContainerWidget(feedback);
00074 for (unsigned i = 0; i < contacts.size(); ++i) {
00075 new WText(L"Cc: \"" + contacts[i].name + L"\" <"
00076 + contacts[i].email + L">", PlainText, horiz);
00077 new WBreak(horiz);
00078 }
00079
00080 contacts = composer_->bcc();
00081 if (!contacts.empty())
00082 horiz = new WContainerWidget(feedback);
00083 for (unsigned i = 0; i < contacts.size(); ++i) {
00084 new WText(L"Bcc: \"" + contacts[i].name + L"\" <"
00085 + contacts[i].email + L">", PlainText, horiz);
00086 new WBreak(horiz);
00087 }
00088
00089 horiz = new WContainerWidget(feedback);
00090 WText *t = new WText("Subject: \"" + composer_->subject() + "\"",
00091 PlainText, horiz);
00092
00093 std::vector<Attachment> attachments = composer_->attachments();
00094 if (!attachments.empty())
00095 horiz = new WContainerWidget(feedback);
00096 for (unsigned i = 0; i < attachments.size(); ++i) {
00097 new WText(L"Attachment: \""
00098 + attachments[i].fileName
00099 + L"\" (" + attachments[i].contentDescription
00100 + L")", PlainText, horiz);
00101
00102 unlink(attachments[i].spoolFileName.c_str());
00103
00104 new WText(", was in spool file: "
00105 + attachments[i].spoolFileName, horiz);
00106 new WBreak(horiz);
00107 }
00108
00109 std::wstring message = composer_->message();
00110
00111 horiz = new WContainerWidget(feedback);
00112 t = new WText("Message body: ", horiz);
00113 new WBreak(horiz);
00114
00115 if (!message.empty()) {
00116 t = new WText(message, PlainText, horiz);
00117 } else
00118 t = new WText("<i>(empty)</i>", horiz);
00119
00120 delete composer_;
00121 delete details_;
00122
00123 wApp->quit();
00124 }
00125
00126 void ComposeExample::discard()
00127 {
00128 WContainerWidget *feedback = new WContainerWidget(this);
00129 feedback->setStyleClass("feedback");
00130
00131 WContainerWidget *horiz = new WContainerWidget(feedback);
00132 new WText("<p>Wise decision! Everyone's mailbox is already full anyway.</p>",
00133 horiz);
00134
00135 delete composer_;
00136 delete details_;
00137
00138 wApp->quit();
00139 }
00140
00141 WApplication *createApplication(const WEnvironment& env)
00142 {
00143 WApplication *app = new WApplication(env);
00144
00145
00146
00147 app->messageResourceBundle().use("composer");
00148
00149
00150
00151 app->useStyleSheet("composer.css");
00152
00153 app->setTitle("Composer example");
00154
00155 app->root()->addWidget(new ComposeExample());
00156
00157 return app;
00158 }
00159
00160 int main(int argc, char **argv)
00161 {
00162 return WRun(argc, argv, &createApplication);
00163 }
00164