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 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Wt examples: /home/koen/project/wt/public-git/wt/examples/composer/Composer.C Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>/home/koen/project/wt/public-git/wt/examples/composer/Composer.C</h1><a href="Composer_8C.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2008 Emweb bvba, Kessel-Lo, Belgium.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * See the LICENSE file for terms of use.</span>
<a name="l00005"></a>00005 <span class="comment"> */</span>
<a name="l00006"></a>00006 <span class="preprocessor">#include <iostream></span>
<a name="l00007"></a>00007
<a name="l00008"></a>00008 <span class="preprocessor">#include "<a class="code" href="AddresseeEdit_8h.html">AddresseeEdit.h</a>"</span>
<a name="l00009"></a>00009 <span class="preprocessor">#include "<a class="code" href="AttachmentEdit_8h.html">AttachmentEdit.h</a>"</span>
<a name="l00010"></a>00010 <span class="preprocessor">#include "<a class="code" href="Composer_8h.html">Composer.h</a>"</span>
<a name="l00011"></a>00011 <span class="preprocessor">#include "<a class="code" href="ContactSuggestions_8h.html">ContactSuggestions.h</a>"</span>
<a name="l00012"></a>00012 <span class="preprocessor">#include "<a class="code" href="Label_8h.html">Label.h</a>"</span>
<a name="l00013"></a>00013 <span class="preprocessor">#include "<a class="code" href="Option_8h.html">Option.h</a>"</span>
<a name="l00014"></a>00014 <span class="preprocessor">#include "<a class="code" href="OptionList_8h.html">OptionList.h</a>"</span>
<a name="l00015"></a>00015
<a name="l00016"></a>00016 <span class="preprocessor">#include <Wt/WContainerWidget></span>
<a name="l00017"></a>00017 <span class="preprocessor">#include <Wt/WImage></span>
<a name="l00018"></a>00018 <span class="preprocessor">#include <Wt/WLineEdit></span>
<a name="l00019"></a>00019 <span class="preprocessor">#include <Wt/WPushButton></span>
<a name="l00020"></a>00020 <span class="preprocessor">#include <Wt/WText></span>
<a name="l00021"></a>00021 <span class="preprocessor">#include <Wt/WTable></span>
<a name="l00022"></a>00022 <span class="preprocessor">#include <Wt/WTableCell></span>
<a name="l00023"></a>00023 <span class="preprocessor">#include <Wt/WStringUtil></span>
<a name="l00024"></a>00024
<a name="l00025"></a><a class="code" href="classComposer.html#084dec0bea86c87db2d711bfea72e47d">00025</a> <a class="code" href="classComposer.html#084dec0bea86c87db2d711bfea72e47d" title="Construct a new Composer.">Composer::Composer</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WContainerWidget.html">WContainerWidget</a> *parent)
<a name="l00026"></a>00026 : <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WCompositeWidget.html">WCompositeWidget</a>(parent),
<a name="l00027"></a>00027 saving_(false),
<a name="l00028"></a>00028 sending_(false)
<a name="l00029"></a>00029 {
<a name="l00030"></a>00030 <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WCompositeWidget.html#a5a3e93a551fd41b180c6b28fa169946">setImplementation</a>(<a class="code" href="classComposer.html#af13aa9b960e901cc97270350f4b7990">layout_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WContainerWidget.html">WContainerWidget</a>());
<a name="l00031"></a>00031
<a name="l00032"></a>00032 <a class="code" href="classComposer.html#d949df7a1910929fffb12a67b362508f">createUi</a>();
<a name="l00033"></a>00033 }
<a name="l00034"></a>00034
<a name="l00035"></a><a class="code" href="classComposer.html#875c536e6e8cc4c31b8cdb6b17e0c72c">00035</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#875c536e6e8cc4c31b8cdb6b17e0c72c" title="Set message To: contacts.">Composer::setTo</a>(<span class="keyword">const</span> std::vector<Contact>& <a class="code" href="classComposer.html#8d147821090f6e305111bd82187b929f" title="Get the To: contacts.">to</a>)
<a name="l00036"></a>00036 {
<a name="l00037"></a>00037 <a class="code" href="classComposer.html#5171d107b535bd670b72d6d3abe4b850" title="To: Addressees edit.">toEdit_</a>-><a class="code" href="classAddresseeEdit.html#dbf088c1a833e6bdc8d3f3f551d42a98" title="Set a list of addressees.">setAddressees</a>(to);
<a name="l00038"></a>00038 }
<a name="l00039"></a>00039
<a name="l00040"></a><a class="code" href="classComposer.html#af759051d0b21bcc4a285172f23edaaa">00040</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#af759051d0b21bcc4a285172f23edaaa" title="Set subject.">Composer::setSubject</a>(<span class="keyword">const</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WString.html">WString</a>& <a class="code" href="classComposer.html#09023bf88e8d7c566e27d489d28b3d50" title="Get the subject.">subject</a>)
<a name="l00041"></a>00041 {
<a name="l00042"></a>00042 <a class="code" href="classComposer.html#7bc919d444b2bb9ea8cfb7fd3db689df" title="The subject line edit.">subject_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WLineEdit.html#ddb99c6ab5483836adf44a2706a410af">setText</a>(subject);
<a name="l00043"></a>00043 }
<a name="l00044"></a>00044
<a name="l00045"></a><a class="code" href="classComposer.html#0b5002a67038461ec6ef3adf37800bf0">00045</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#0b5002a67038461ec6ef3adf37800bf0" title="Set the message.">Composer::setMessage</a>(<span class="keyword">const</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WString.html">WString</a>& <a class="code" href="classComposer.html#99572a1e5ee69bfbe804318fc28dae1b" title="Get the message.">message</a>)
<a name="l00046"></a>00046 {
<a name="l00047"></a>00047 <a class="code" href="classComposer.html#17dbbe76abbe0ed57d4c5928bcf24c42" title="WTextArea for the main message.">message_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTextArea.html#1f05060c037d13c2c6c26f51f1fb9640">setText</a>(message);
<a name="l00048"></a>00048 }
<a name="l00049"></a>00049
<a name="l00050"></a><a class="code" href="classComposer.html#8d147821090f6e305111bd82187b929f">00050</a> std::vector<Contact> <a class="code" href="classComposer.html#8d147821090f6e305111bd82187b929f" title="Get the To: contacts.">Composer::to</a>()<span class="keyword"> const</span>
<a name="l00051"></a>00051 <span class="keyword"></span>{
<a name="l00052"></a>00052 <span class="keywordflow">return</span> <a class="code" href="classComposer.html#5171d107b535bd670b72d6d3abe4b850" title="To: Addressees edit.">toEdit_</a>-><a class="code" href="classAddresseeEdit.html#b7dbde2bff2fef234d20617b7ae42e26" title="Get a list of addressees.">addressees</a>();
<a name="l00053"></a>00053 }
<a name="l00054"></a>00054
<a name="l00055"></a><a class="code" href="classComposer.html#fbabc511b2d7faf6e789d83e999886d1">00055</a> std::vector<Contact> <a class="code" href="classComposer.html#fbabc511b2d7faf6e789d83e999886d1" title="Get the Cc: contacts.">Composer::cc</a>()<span class="keyword"> const</span>
<a name="l00056"></a>00056 <span class="keyword"></span>{
<a name="l00057"></a>00057 <span class="keywordflow">return</span> <a class="code" href="classComposer.html#9d12e4daf1f221a8f387037fbcd147ae" title="Cc: Addressees edit.">ccEdit_</a>-><a class="code" href="classAddresseeEdit.html#b7dbde2bff2fef234d20617b7ae42e26" title="Get a list of addressees.">addressees</a>();
<a name="l00058"></a>00058 }
<a name="l00059"></a>00059
<a name="l00060"></a><a class="code" href="classComposer.html#d28ae55ec6069a08d86fc0e92387dccb">00060</a> std::vector<Contact> <a class="code" href="classComposer.html#d28ae55ec6069a08d86fc0e92387dccb" title="Get the Bc: contacts.">Composer::bcc</a>()<span class="keyword"> const</span>
<a name="l00061"></a>00061 <span class="keyword"></span>{
<a name="l00062"></a>00062 <span class="keywordflow">return</span> <a class="code" href="classComposer.html#e58f4078c8859022a18f9d4460894289" title="Bcc: Addressees edit.">bccEdit_</a>-><a class="code" href="classAddresseeEdit.html#b7dbde2bff2fef234d20617b7ae42e26" title="Get a list of addressees.">addressees</a>();
<a name="l00063"></a>00063 }
<a name="l00064"></a>00064
<a name="l00065"></a><a class="code" href="classComposer.html#c952c4e43c8dfb1ae46e83d84b381728">00065</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#c952c4e43c8dfb1ae46e83d84b381728" title="Set the address book, for autocomplete suggestions.">Composer::setAddressBook</a>(<span class="keyword">const</span> std::vector<Contact>& contacts)
<a name="l00066"></a>00066 {
<a name="l00067"></a>00067 <a class="code" href="classComposer.html#889f0931ce31c316b89201db6b146814" title="The suggestions popup for the addressee edits.">contactSuggestions_</a>-><a class="code" href="classContactSuggestions.html#bb65b3c75e64e050608d970d61b3fdcf" title="Set the address book.">setAddressBook</a>(contacts);
<a name="l00068"></a>00068 }
<a name="l00069"></a>00069
<a name="l00070"></a><a class="code" href="classComposer.html#09023bf88e8d7c566e27d489d28b3d50">00070</a> <span class="keyword">const</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WString.html">WString</a>& <a class="code" href="classComposer.html#09023bf88e8d7c566e27d489d28b3d50" title="Get the subject.">Composer::subject</a>()<span class="keyword"> const</span>
<a name="l00071"></a>00071 <span class="keyword"></span>{
<a name="l00072"></a>00072 <span class="keywordflow">return</span> <a class="code" href="classComposer.html#7bc919d444b2bb9ea8cfb7fd3db689df" title="The subject line edit.">subject_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WLineEdit.html#c74b58779cb635898cac13e81d8b0c7a">text</a>();
<a name="l00073"></a>00073 }
<a name="l00074"></a>00074
<a name="l00075"></a><a class="code" href="classComposer.html#84ca3fe36eddc04930ce0471de1ba7b8">00075</a> std::vector<Attachment> <a class="code" href="classComposer.html#84ca3fe36eddc04930ce0471de1ba7b8" title="Get the list of attachments.">Composer::attachments</a>()<span class="keyword"> const</span>
<a name="l00076"></a>00076 <span class="keyword"></span>{
<a name="l00077"></a>00077 std::vector<Attachment> <a class="code" href="classComposer.html#84ca3fe36eddc04930ce0471de1ba7b8" title="Get the list of attachments.">attachments</a>;
<a name="l00078"></a>00078
<a name="l00079"></a>00079 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < <a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.size() - 1; ++i) {
<a name="l00080"></a>00080 <span class="keywordflow">if</span> (<a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>[i]->include())
<a name="l00081"></a>00081 attachments.push_back(<a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>[i]->attachment());
<a name="l00082"></a>00082 }
<a name="l00083"></a>00083
<a name="l00084"></a>00084 <span class="keywordflow">return</span> attachments;
<a name="l00085"></a>00085 }
<a name="l00086"></a>00086
<a name="l00087"></a><a class="code" href="classComposer.html#99572a1e5ee69bfbe804318fc28dae1b">00087</a> <span class="keyword">const</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WString.html">WString</a>& <a class="code" href="classComposer.html#99572a1e5ee69bfbe804318fc28dae1b" title="Get the message.">Composer::message</a>()<span class="keyword"> const</span>
<a name="l00088"></a>00088 <span class="keyword"></span>{
<a name="l00089"></a>00089 <span class="keywordflow">return</span> <a class="code" href="classComposer.html#17dbbe76abbe0ed57d4c5928bcf24c42" title="WTextArea for the main message.">message_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTextArea.html#d8b89ce30df2b02894c53b6ed71fe4a6">text</a>();
<a name="l00090"></a>00090 }
<a name="l00091"></a>00091
<a name="l00092"></a><a class="code" href="classComposer.html#d949df7a1910929fffb12a67b362508f">00092</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#d949df7a1910929fffb12a67b362508f">Composer::createUi</a>()
<a name="l00093"></a>00093 {
<a name="l00094"></a>00094 <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WCompositeWidget.html#f9a8abf4e8b5be186a31cd951e60bdc6">setStyleClass</a>(<span class="stringliteral">"darker"</span>);
<a name="l00095"></a>00095
<a name="l00096"></a>00096 <span class="comment">// horizontal layout container, used for top and bottom buttons.</span>
<a name="l00097"></a>00097 <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WContainerWidget.html">WContainerWidget</a> *horiz;
<a name="l00098"></a>00098
<a name="l00099"></a>00099 <span class="comment">/*</span>
<a name="l00100"></a>00100 <span class="comment"> * Top buttons</span>
<a name="l00101"></a>00101 <span class="comment"> */</span>
<a name="l00102"></a>00102 horiz = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WContainerWidget.html">WContainerWidget</a>(<a class="code" href="classComposer.html#af13aa9b960e901cc97270350f4b7990">layout_</a>);
<a name="l00103"></a>00103 horiz-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WContainerWidget.html#fa5f6800e2170ae2f4586a25c72f8c34">setPadding</a>(5);
<a name="l00104"></a>00104 <a class="code" href="classComposer.html#476ad9498a617ce73199792d4ab727be">topSendButton_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.send"</span>), horiz);
<a name="l00105"></a>00105 <a class="code" href="classComposer.html#476ad9498a617ce73199792d4ab727be">topSendButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWebWidget.html#6fd43dced1a62f7e79bc3522eeb16216">setStyleClass</a>(<span class="stringliteral">"default"</span>); <span class="comment">// default action</span>
<a name="l00106"></a>00106 <a class="code" href="classComposer.html#2b4444c47fe4718e03661bb2af36102e">topSaveNowButton_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.savenow"</span>), horiz);
<a name="l00107"></a>00107 <a class="code" href="classComposer.html#7dc86db047a022086d644c825fa9588d">topDiscardButton_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.discard"</span>), horiz);
<a name="l00108"></a>00108
<a name="l00109"></a>00109 <span class="comment">// Text widget which shows status messages, next to the top buttons.</span>
<a name="l00110"></a>00110 <a class="code" href="classComposer.html#09067ffd913810f9d499570609e17674">statusMsg_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WText.html">WText</a>(horiz);
<a name="l00111"></a>00111 <a class="code" href="classComposer.html#09067ffd913810f9d499570609e17674">statusMsg_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWebWidget.html#07719d06da0dd17af2381c663e8fb0b7">setMargin</a>(15, <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/namespaceWt.html#5a6f4636bcc6ab3c075165d249b3a5a36568fecac7c7d7223afaed240bcfdd9e">Left</a>);
<a name="l00112"></a>00112
<a name="l00113"></a>00113 <span class="comment">/*</span>
<a name="l00114"></a>00114 <span class="comment"> * To, Cc, Bcc, Subject, Attachments</span>
<a name="l00115"></a>00115 <span class="comment"> *</span>
<a name="l00116"></a>00116 <span class="comment"> * They are organized in a two-column table: left column for</span>
<a name="l00117"></a>00117 <span class="comment"> * labels, and right column for the edit.</span>
<a name="l00118"></a>00118 <span class="comment"> */</span>
<a name="l00119"></a>00119 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html">WTable</a>(<a class="code" href="classComposer.html#af13aa9b960e901cc97270350f4b7990">layout_</a>);
<a name="l00120"></a>00120 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWebWidget.html#6fd43dced1a62f7e79bc3522eeb16216">setStyleClass</a>(<span class="stringliteral">"lighter"</span>);
<a name="l00121"></a>00121 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWebWidget.html#e1b84e31581405358b6d57ec14505234">resize</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WLength.html">WLength</a>(100, WLength::Percentage), WLength::Auto);
<a name="l00122"></a>00122 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(0, 0)-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWebWidget.html#e1b84e31581405358b6d57ec14505234">resize</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WLength.html">WLength</a>(1, WLength::Percentage),
<a name="l00123"></a>00123 WLength::Auto);
<a name="l00124"></a>00124
<a name="l00125"></a>00125 <span class="comment">/*</span>
<a name="l00126"></a>00126 <span class="comment"> * To, Cc, Bcc</span>
<a name="l00127"></a>00127 <span class="comment"> */</span>
<a name="l00128"></a>00128 <a class="code" href="classComposer.html#5171d107b535bd670b72d6d3abe4b850" title="To: Addressees edit.">toEdit_</a> = <span class="keyword">new</span> <a class="code" href="classAddresseeEdit.html" title="An edit field for an email addressee.">AddresseeEdit</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.to"</span>), <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(0, 1),
<a name="l00129"></a>00129 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(0, 0));
<a name="l00130"></a>00130 <span class="comment">// add some space above To:</span>
<a name="l00131"></a>00131 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(0, 1)-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWebWidget.html#07719d06da0dd17af2381c663e8fb0b7">setMargin</a>(5, <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/namespaceWt.html#5a6f4636bcc6ab3c075165d249b3a5a368b058364f8c2380c1d369a321f22f92">Top</a>);
<a name="l00132"></a>00132 <a class="code" href="classComposer.html#9d12e4daf1f221a8f387037fbcd147ae" title="Cc: Addressees edit.">ccEdit_</a> = <span class="keyword">new</span> <a class="code" href="classAddresseeEdit.html" title="An edit field for an email addressee.">AddresseeEdit</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.cc"</span>), <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(1, 1),
<a name="l00133"></a>00133 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(1, 0));
<a name="l00134"></a>00134 <a class="code" href="classComposer.html#e58f4078c8859022a18f9d4460894289" title="Bcc: Addressees edit.">bccEdit_</a> = <span class="keyword">new</span> <a class="code" href="classAddresseeEdit.html" title="An edit field for an email addressee.">AddresseeEdit</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.bcc"</span>), <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(2, 1),
<a name="l00135"></a>00135 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(2, 0));
<a name="l00136"></a>00136
<a name="l00137"></a>00137 <a class="code" href="classComposer.html#9d12e4daf1f221a8f387037fbcd147ae" title="Cc: Addressees edit.">ccEdit_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#0825c3ccbd4999afc1a88fafa6aa6fc7">hide</a>();
<a name="l00138"></a>00138 bccEdit_-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#0825c3ccbd4999afc1a88fafa6aa6fc7">hide</a>();
<a name="l00139"></a>00139
<a name="l00140"></a>00140 <span class="comment">/*</span>
<a name="l00141"></a>00141 <span class="comment"> * Addressbook suggestions popup</span>
<a name="l00142"></a>00142 <span class="comment"> */</span>
<a name="l00143"></a>00143 <a class="code" href="classComposer.html#889f0931ce31c316b89201db6b146814" title="The suggestions popup for the addressee edits.">contactSuggestions_</a> = <span class="keyword">new</span> <a class="code" href="classContactSuggestions.html" title="A suggestion popup suggesting contacts from an addressbook.">ContactSuggestions</a>(<a class="code" href="classComposer.html#af13aa9b960e901cc97270350f4b7990">layout_</a>);
<a name="l00144"></a>00144
<a name="l00145"></a>00145 <a class="code" href="classComposer.html#889f0931ce31c316b89201db6b146814" title="The suggestions popup for the addressee edits.">contactSuggestions_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WSuggestionPopup.html#94b623fc6500be6ae5d9cdf00247edc0">forEdit</a>(<a class="code" href="classComposer.html#5171d107b535bd670b72d6d3abe4b850" title="To: Addressees edit.">toEdit_</a>);
<a name="l00146"></a>00146 <a class="code" href="classComposer.html#889f0931ce31c316b89201db6b146814" title="The suggestions popup for the addressee edits.">contactSuggestions_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WSuggestionPopup.html#94b623fc6500be6ae5d9cdf00247edc0">forEdit</a>(<a class="code" href="classComposer.html#9d12e4daf1f221a8f387037fbcd147ae" title="Cc: Addressees edit.">ccEdit_</a>);
<a name="l00147"></a>00147 <a class="code" href="classComposer.html#889f0931ce31c316b89201db6b146814" title="The suggestions popup for the addressee edits.">contactSuggestions_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WSuggestionPopup.html#94b623fc6500be6ae5d9cdf00247edc0">forEdit</a>(bccEdit_);
<a name="l00148"></a>00148
<a name="l00149"></a>00149 <span class="comment">/*</span>
<a name="l00150"></a>00150 <span class="comment"> * We use an OptionList widget to show the expand options for</span>
<a name="l00151"></a>00151 <span class="comment"> * ccEdit_ and bccEdit_ nicely next to each other, separated</span>
<a name="l00152"></a>00152 <span class="comment"> * by pipe characters.</span>
<a name="l00153"></a>00153 <span class="comment"> */</span>
<a name="l00154"></a>00154 <a class="code" href="classComposer.html#ea60b95ef9d0053fcffe930e4865a958" title="OptionsList for editing Cc or Bcc.">options_</a> = <span class="keyword">new</span> <a class="code" href="classOptionList.html" title="A list of options, separated by &#39;|&#39;.">OptionList</a>(<a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(3, 1));
<a name="l00155"></a>00155
<a name="l00156"></a>00156 <a class="code" href="classComposer.html#ea60b95ef9d0053fcffe930e4865a958" title="OptionsList for editing Cc or Bcc.">options_</a>-><a class="code" href="classOptionList.html#358bf988ce23142cabf3e19dcbc2a158" title="Add an Option to the list.">add</a>(<a class="code" href="classComposer.html#c307d36403cab6ff70204c7822d9e149" title="Option for editing Cc:.">addcc_</a> = <span class="keyword">new</span> <a class="code" href="classOption.html" title="A clickable option.">Option</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.addcc"</span>)));
<a name="l00157"></a>00157 <a class="code" href="classComposer.html#ea60b95ef9d0053fcffe930e4865a958" title="OptionsList for editing Cc or Bcc.">options_</a>-><a class="code" href="classOptionList.html#358bf988ce23142cabf3e19dcbc2a158" title="Add an Option to the list.">add</a>(<a class="code" href="classComposer.html#9d102646eca2e3081886796cdb15a409" title="Option for editing Bcc:.">addbcc_</a> = <span class="keyword">new</span> <a class="code" href="classOption.html" title="A clickable option.">Option</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.addbcc"</span>)));
<a name="l00158"></a>00158
<a name="l00159"></a>00159 <span class="comment">/*</span>
<a name="l00160"></a>00160 <span class="comment"> * Subject</span>
<a name="l00161"></a>00161 <span class="comment"> */</span>
<a name="l00162"></a>00162 <span class="keyword">new</span> <a class="code" href="classLabel.html" title="A label.">Label</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.subject"</span>), <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(4, 0));
<a name="l00163"></a>00163 <a class="code" href="classComposer.html#7bc919d444b2bb9ea8cfb7fd3db689df" title="The subject line edit.">subject_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WLineEdit.html">WLineEdit</a>(<a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(4, 1));
<a name="l00164"></a>00164 subject_-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWebWidget.html#e1b84e31581405358b6d57ec14505234">resize</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WLength.html">WLength</a>(99, WLength::Percentage), WLength::Auto);
<a name="l00165"></a>00165
<a name="l00166"></a>00166 <span class="comment">/*</span>
<a name="l00167"></a>00167 <span class="comment"> * Attachments</span>
<a name="l00168"></a>00168 <span class="comment"> */</span>
<a name="l00169"></a>00169 <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WImage.html">WImage</a>(<span class="stringliteral">"icons/paperclip.png"</span>, <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(5, 0));
<a name="l00170"></a>00170 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(5, 0)-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WContainerWidget.html#ba13c9e62c74bcba53519ee9cf41f40a">setContentAlignment</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/namespaceWt.html#b8f772c69bc8180c31f9e4f4593b143fb250310385383f0b2f68d4e0ad5567e1">AlignRight</a> | <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/namespaceWt.html#b8f772c69bc8180c31f9e4f4593b143f58fe5182bd266132c59718c6d30945a9">AlignTop</a>);
<a name="l00171"></a>00171
<a name="l00172"></a>00172
<a name="l00173"></a>00173 <span class="comment">// Attachment edits: we always have the next attachmentedit ready</span>
<a name="l00174"></a>00174 <span class="comment">// but hidden. This improves the response time, since the show()</span>
<a name="l00175"></a>00175 <span class="comment">// and hide() slots are stateless.</span>
<a name="l00176"></a>00176 <a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.push_back(<span class="keyword">new</span> <a class="code" href="classComposer.html#a4bbd94229aa2788f3dd71177c1b1f34">AttachmentEdit</a>(<span class="keyword">this</span>, <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(5, 1)));
<a name="l00177"></a>00177 <a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.back()->hide();
<a name="l00178"></a>00178
<a name="l00179"></a>00179 <span class="comment">/*</span>
<a name="l00180"></a>00180 <span class="comment"> * Two options for attaching files. The first does not say 'another'.</span>
<a name="l00181"></a>00181 <span class="comment"> */</span>
<a name="l00182"></a>00182 <a class="code" href="classComposer.html#8e04ae3dc2b27ea08a803cbbb8ebd031" title="Option for attaching a file.">attachFile_</a> = <span class="keyword">new</span> <a class="code" href="classOption.html" title="A clickable option.">Option</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.attachfile"</span>),
<a name="l00183"></a>00183 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(5, 1));
<a name="l00184"></a>00184 <a class="code" href="classComposer.html#0ab2b9453f4787af299e72b4c2a2423d" title="Option for attaching another file.">attachOtherFile_</a> = <span class="keyword">new</span> <a class="code" href="classOption.html" title="A clickable option.">Option</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.attachanother"</span>),
<a name="l00185"></a>00185 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(5, 1));
<a name="l00186"></a>00186 attachOtherFile_-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#0825c3ccbd4999afc1a88fafa6aa6fc7">hide</a>();
<a name="l00187"></a>00187
<a name="l00188"></a>00188 <span class="comment">/*</span>
<a name="l00189"></a>00189 <span class="comment"> * Message</span>
<a name="l00190"></a>00190 <span class="comment"> */</span>
<a name="l00191"></a>00191 <a class="code" href="classComposer.html#17dbbe76abbe0ed57d4c5928bcf24c42" title="WTextArea for the main message.">message_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTextArea.html">WTextArea</a>(<a class="code" href="classComposer.html#af13aa9b960e901cc97270350f4b7990">layout_</a>);
<a name="l00192"></a>00192 <a class="code" href="classComposer.html#17dbbe76abbe0ed57d4c5928bcf24c42" title="WTextArea for the main message.">message_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTextArea.html#f429ed3a2b6011c97b4f9ea7f910e079">setColumns</a>(80);
<a name="l00193"></a>00193 <a class="code" href="classComposer.html#17dbbe76abbe0ed57d4c5928bcf24c42" title="WTextArea for the main message.">message_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTextArea.html#de46b47350f427f45c9b53ac7e41c5b2">setRows</a>(10); <span class="comment">// should be 20, but let's keep it smaller</span>
<a name="l00194"></a>00194 <a class="code" href="classComposer.html#17dbbe76abbe0ed57d4c5928bcf24c42" title="WTextArea for the main message.">message_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWebWidget.html#07719d06da0dd17af2381c663e8fb0b7">setMargin</a>(10);
<a name="l00195"></a>00195
<a name="l00196"></a>00196 <span class="comment">/*</span>
<a name="l00197"></a>00197 <span class="comment"> * Bottom buttons</span>
<a name="l00198"></a>00198 <span class="comment"> */</span>
<a name="l00199"></a>00199 horiz = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WContainerWidget.html">WContainerWidget</a>(<a class="code" href="classComposer.html#af13aa9b960e901cc97270350f4b7990">layout_</a>);
<a name="l00200"></a>00200 horiz-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WContainerWidget.html#fa5f6800e2170ae2f4586a25c72f8c34">setPadding</a>(5);
<a name="l00201"></a>00201 <a class="code" href="classComposer.html#66efb6563c5dfd378def156a91531b6b">botSendButton_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.send"</span>), horiz);
<a name="l00202"></a>00202 <a class="code" href="classComposer.html#66efb6563c5dfd378def156a91531b6b">botSendButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWebWidget.html#6fd43dced1a62f7e79bc3522eeb16216">setStyleClass</a>(<span class="stringliteral">"default"</span>);
<a name="l00203"></a>00203 <a class="code" href="classComposer.html#03113e5fe16b19f8108659d30da25a3c">botSaveNowButton_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.savenow"</span>), horiz);
<a name="l00204"></a>00204 <a class="code" href="classComposer.html#8ed76b62de2178118194a6672b18588a">botDiscardButton_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.discard"</span>), horiz);
<a name="l00205"></a>00205
<a name="l00206"></a>00206 <span class="comment">/*</span>
<a name="l00207"></a>00207 <span class="comment"> * Button events.</span>
<a name="l00208"></a>00208 <span class="comment"> */</span>
<a name="l00209"></a>00209 <a class="code" href="classComposer.html#476ad9498a617ce73199792d4ab727be">topSendButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<span class="keyword">this</span>, <a class="code" href="classComposer.html#06e0d72a05418d11d1cfec8a5fcb48b6" title="Slot attached to the Send button.">Composer::sendIt</a>));
<a name="l00210"></a>00210 <a class="code" href="classComposer.html#66efb6563c5dfd378def156a91531b6b">botSendButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<span class="keyword">this</span>, <a class="code" href="classComposer.html#06e0d72a05418d11d1cfec8a5fcb48b6" title="Slot attached to the Send button.">Composer::sendIt</a>));
<a name="l00211"></a>00211 <a class="code" href="classComposer.html#2b4444c47fe4718e03661bb2af36102e">topSaveNowButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<span class="keyword">this</span>, <a class="code" href="classComposer.html#5db93f098178964c68c1ecb287ff11ca" title="Slot attached to the Save now button.">Composer::saveNow</a>));
<a name="l00212"></a>00212 <a class="code" href="classComposer.html#03113e5fe16b19f8108659d30da25a3c">botSaveNowButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<span class="keyword">this</span>, <a class="code" href="classComposer.html#5db93f098178964c68c1ecb287ff11ca" title="Slot attached to the Save now button.">Composer::saveNow</a>));
<a name="l00213"></a>00213 <a class="code" href="classComposer.html#7dc86db047a022086d644c825fa9588d">topDiscardButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<span class="keyword">this</span>, <a class="code" href="classComposer.html#5880788a9a63a938572e6ca7e47a01ab" title="Slot attached to the Discard button.">Composer::discardIt</a>));
<a name="l00214"></a>00214 <a class="code" href="classComposer.html#8ed76b62de2178118194a6672b18588a">botDiscardButton_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<span class="keyword">this</span>, <a class="code" href="classComposer.html#5880788a9a63a938572e6ca7e47a01ab" title="Slot attached to the Discard button.">Composer::discardIt</a>));
<a name="l00215"></a>00215
<a name="l00216"></a>00216 <span class="comment">/*</span>
<a name="l00217"></a>00217 <span class="comment"> * Option events to show the cc or Bcc edit.</span>
<a name="l00218"></a>00218 <span class="comment"> *</span>
<a name="l00219"></a>00219 <span class="comment"> * Clicking on the option should both show the corresponding edit, and</span>
<a name="l00220"></a>00220 <span class="comment"> * hide the option itself.</span>
<a name="l00221"></a>00221 <span class="comment"> */</span>
<a name="l00222"></a>00222 <a class="code" href="classComposer.html#c307d36403cab6ff70204c7822d9e149" title="Option for editing Cc:.">addcc_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<a class="code" href="classComposer.html#9d12e4daf1f221a8f387037fbcd147ae" title="Cc: Addressees edit.">ccEdit_</a>, WWidget::show));
<a name="l00223"></a>00223 <a class="code" href="classComposer.html#c307d36403cab6ff70204c7822d9e149" title="Option for editing Cc:.">addcc_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<a class="code" href="classComposer.html#c307d36403cab6ff70204c7822d9e149" title="Option for editing Cc:.">addcc_</a>, WWidget::hide));
<a name="l00224"></a>00224 <a class="code" href="classComposer.html#c307d36403cab6ff70204c7822d9e149" title="Option for editing Cc:.">addcc_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<a class="code" href="classComposer.html#ea60b95ef9d0053fcffe930e4865a958" title="OptionsList for editing Cc or Bcc.">options_</a>, <a class="code" href="classOptionList.html#5b0013e09c5f269f33aa5c9bfb17e32b" title="Update the stateless implementations after an Option has been hidden or shown.">OptionList::update</a>));
<a name="l00225"></a>00225 <a class="code" href="classComposer.html#c307d36403cab6ff70204c7822d9e149" title="Option for editing Cc:.">addcc_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<a class="code" href="classComposer.html#9d12e4daf1f221a8f387037fbcd147ae" title="Cc: Addressees edit.">ccEdit_</a>, WFormWidget::setFocus));
<a name="l00226"></a>00226
<a name="l00227"></a>00227 <a class="code" href="classComposer.html#9d102646eca2e3081886796cdb15a409" title="Option for editing Bcc:.">addbcc_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(bccEdit_, WWidget::show));
<a name="l00228"></a>00228 <a class="code" href="classComposer.html#9d102646eca2e3081886796cdb15a409" title="Option for editing Bcc:.">addbcc_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<a class="code" href="classComposer.html#9d102646eca2e3081886796cdb15a409" title="Option for editing Bcc:.">addbcc_</a>, WWidget::hide));
<a name="l00229"></a>00229 <a class="code" href="classComposer.html#9d102646eca2e3081886796cdb15a409" title="Option for editing Bcc:.">addbcc_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<a class="code" href="classComposer.html#ea60b95ef9d0053fcffe930e4865a958" title="OptionsList for editing Cc or Bcc.">options_</a>, <a class="code" href="classOptionList.html#5b0013e09c5f269f33aa5c9bfb17e32b" title="Update the stateless implementations after an Option has been hidden or shown.">OptionList::update</a>));
<a name="l00230"></a>00230 <a class="code" href="classComposer.html#9d102646eca2e3081886796cdb15a409" title="Option for editing Bcc:.">addbcc_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(bccEdit_, WFormWidget::setFocus));
<a name="l00231"></a>00231
<a name="l00232"></a>00232 <span class="comment">/*</span>
<a name="l00233"></a>00233 <span class="comment"> * Option event to attach the first attachment.</span>
<a name="l00234"></a>00234 <span class="comment"> *</span>
<a name="l00235"></a>00235 <span class="comment"> * We show the first attachment, and call attachMore() to prepare the</span>
<a name="l00236"></a>00236 <span class="comment"> * next attachment edit that will be hidden.</span>
<a name="l00237"></a>00237 <span class="comment"> *</span>
<a name="l00238"></a>00238 <span class="comment"> * In addition, we need to show the 'attach More' option, and hide the</span>
<a name="l00239"></a>00239 <span class="comment"> * 'attach' option.</span>
<a name="l00240"></a>00240 <span class="comment"> */</span>
<a name="l00241"></a>00241 <a class="code" href="classComposer.html#8e04ae3dc2b27ea08a803cbbb8ebd031" title="Option for attaching a file.">attachFile_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.back(),
<a name="l00242"></a>00242 WWidget::show));
<a name="l00243"></a>00243 <a class="code" href="classComposer.html#8e04ae3dc2b27ea08a803cbbb8ebd031" title="Option for attaching a file.">attachFile_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(attachOtherFile_, WWidget::show));
<a name="l00244"></a>00244 <a class="code" href="classComposer.html#8e04ae3dc2b27ea08a803cbbb8ebd031" title="Option for attaching a file.">attachFile_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<a class="code" href="classComposer.html#8e04ae3dc2b27ea08a803cbbb8ebd031" title="Option for attaching a file.">attachFile_</a>, WWidget::hide));
<a name="l00245"></a>00245 <a class="code" href="classComposer.html#8e04ae3dc2b27ea08a803cbbb8ebd031" title="Option for attaching a file.">attachFile_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<span class="keyword">this</span>, <a class="code" href="classComposer.html#5ade97ee657c39f8576c8ca2a98a8731" title="Add an attachment edit.">Composer::attachMore</a>));
<a name="l00246"></a>00246 attachOtherFile_-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<span class="keyword">this</span>, <a class="code" href="classComposer.html#5ade97ee657c39f8576c8ca2a98a8731" title="Add an attachment edit.">Composer::attachMore</a>));
<a name="l00247"></a>00247 }
<a name="l00248"></a>00248
<a name="l00249"></a><a class="code" href="classComposer.html#5ade97ee657c39f8576c8ca2a98a8731">00249</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#5ade97ee657c39f8576c8ca2a98a8731" title="Add an attachment edit.">Composer::attachMore</a>()
<a name="l00250"></a>00250 {
<a name="l00251"></a>00251 <span class="comment">/*</span>
<a name="l00252"></a>00252 <span class="comment"> * Create and append the next AttachmentEdit, that will be hidden.</span>
<a name="l00253"></a>00253 <span class="comment"> */</span>
<a name="l00254"></a>00254 <a class="code" href="classAttachmentEdit.html" title="An edit field for an email attachment.">AttachmentEdit</a> *edit = <span class="keyword">new</span> <a class="code" href="classComposer.html#a4bbd94229aa2788f3dd71177c1b1f34">AttachmentEdit</a>(<span class="keyword">this</span>);
<a name="l00255"></a>00255 <a class="code" href="classComposer.html#9bcfcbfc8651cefaaa3c830d64a9ffb3">edits_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WTable.html#c4b59af9a44e185edb14e7f1f439d6c4">elementAt</a>(5, 1)-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WContainerWidget.html#1439877a32c4b082f312fee81d139665">insertBefore</a>(edit, <a class="code" href="classComposer.html#0ab2b9453f4787af299e72b4c2a2423d" title="Option for attaching another file.">attachOtherFile_</a>);
<a name="l00256"></a>00256 <a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.push_back(edit);
<a name="l00257"></a>00257 <a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.back()->hide();
<a name="l00258"></a>00258
<a name="l00259"></a>00259 <span class="comment">// Connect the attachOtherFile_ option to show this attachment.</span>
<a name="l00260"></a>00260 <a class="code" href="classComposer.html#0ab2b9453f4787af299e72b4c2a2423d" title="Option for attaching another file.">attachOtherFile_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.back(),
<a name="l00261"></a>00261 WWidget::show));
<a name="l00262"></a>00262 }
<a name="l00263"></a>00263
<a name="l00264"></a><a class="code" href="classComposer.html#b142f49c8de59da0f84185165eb6c1c1">00264</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#b142f49c8de59da0f84185165eb6c1c1" title="Remove the given attachment edit.">Composer::removeAttachment</a>(<a class="code" href="classAttachmentEdit.html" title="An edit field for an email attachment.">AttachmentEdit</a> *attachment)
<a name="l00265"></a>00265 {
<a name="l00266"></a>00266 <span class="comment">/*</span>
<a name="l00267"></a>00267 <span class="comment"> * Remove the given attachment from the attachments list.</span>
<a name="l00268"></a>00268 <span class="comment"> */</span>
<a name="l00269"></a>00269 std::vector<AttachmentEdit *>::iterator i
<a name="l00270"></a>00270 = std::find(<a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.begin(), <a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.end(), attachment);
<a name="l00271"></a>00271
<a name="l00272"></a>00272 <span class="keywordflow">if</span> (i != <a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.end()) {
<a name="l00273"></a>00273 <a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.erase(i);
<a name="l00274"></a>00274 <span class="keyword">delete</span> attachment;
<a name="l00275"></a>00275
<a name="l00276"></a>00276 <span class="keywordflow">if</span> (<a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.size() == 1) {
<a name="l00277"></a>00277 <span class="comment">/*</span>
<a name="l00278"></a>00278 <span class="comment"> * This was the last visible attachment, thus, we should switch</span>
<a name="l00279"></a>00279 <span class="comment"> * the option control again.</span>
<a name="l00280"></a>00280 <span class="comment"> */</span>
<a name="l00281"></a>00281 <a class="code" href="classComposer.html#0ab2b9453f4787af299e72b4c2a2423d" title="Option for attaching another file.">attachOtherFile_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#0825c3ccbd4999afc1a88fafa6aa6fc7">hide</a>();
<a name="l00282"></a>00282 <a class="code" href="classComposer.html#8e04ae3dc2b27ea08a803cbbb8ebd031" title="Option for attaching a file.">attachFile_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#52dcef5a385ddfa0a8c3e6c20000f181">show</a>();
<a name="l00283"></a>00283 <a class="code" href="classComposer.html#8e04ae3dc2b27ea08a803cbbb8ebd031" title="Option for attaching a file.">attachFile_</a>-><a class="code" href="classOption.html#31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WInteractWidget.html#e11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(SLOT(<a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.back(),
<a name="l00284"></a>00284 WWidget::show));
<a name="l00285"></a>00285 }
<a name="l00286"></a>00286 }
<a name="l00287"></a>00287 }
<a name="l00288"></a>00288
<a name="l00289"></a><a class="code" href="classComposer.html#06e0d72a05418d11d1cfec8a5fcb48b6">00289</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#06e0d72a05418d11d1cfec8a5fcb48b6" title="Slot attached to the Send button.">Composer::sendIt</a>()
<a name="l00290"></a>00290 {
<a name="l00291"></a>00291 <span class="keywordflow">if</span> (!<a class="code" href="classComposer.html#a079baf3b2fcec4ceabda3457cf28de4">sending_</a>) {
<a name="l00292"></a>00292 <a class="code" href="classComposer.html#a079baf3b2fcec4ceabda3457cf28de4">sending_</a> = <span class="keyword">true</span>;
<a name="l00293"></a>00293
<a name="l00294"></a>00294 <span class="comment">/*</span>
<a name="l00295"></a>00295 <span class="comment"> * First save -- this will check for the sending_ state</span>
<a name="l00296"></a>00296 <span class="comment"> * signal if successfull.</span>
<a name="l00297"></a>00297 <span class="comment"> */</span>
<a name="l00298"></a>00298 <a class="code" href="classComposer.html#5db93f098178964c68c1ecb287ff11ca" title="Slot attached to the Save now button.">saveNow</a>();
<a name="l00299"></a>00299 }
<a name="l00300"></a>00300 }
<a name="l00301"></a>00301
<a name="l00302"></a><a class="code" href="classComposer.html#5db93f098178964c68c1ecb287ff11ca">00302</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#5db93f098178964c68c1ecb287ff11ca" title="Slot attached to the Save now button.">Composer::saveNow</a>()
<a name="l00303"></a>00303 {
<a name="l00304"></a>00304 <span class="keywordflow">if</span> (!<a class="code" href="classComposer.html#75988a529863cd5e90138e46056aae9f" title="state when waiting asyncrhonously for attachments to be uploaded">saving_</a>) {
<a name="l00305"></a>00305 <a class="code" href="classComposer.html#75988a529863cd5e90138e46056aae9f" title="state when waiting asyncrhonously for attachments to be uploaded">saving_</a> = <span class="keyword">true</span>;
<a name="l00306"></a>00306
<a name="l00307"></a>00307 <span class="comment">/*</span>
<a name="l00308"></a>00308 <span class="comment"> * Check if any attachments still need to be uploaded.</span>
<a name="l00309"></a>00309 <span class="comment"> * This may be the case when fileupload change events could not</span>
<a name="l00310"></a>00310 <span class="comment"> * be caught (for example in Konqueror).</span>
<a name="l00311"></a>00311 <span class="comment"> */</span>
<a name="l00312"></a>00312 <a class="code" href="classComposer.html#818abbb226340284e5998daa1d10a72c" title="number of attachments waiting to be uploaded during saving">attachmentsPending_</a> = 0;
<a name="l00313"></a>00313
<a name="l00314"></a>00314 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < <a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.size() - 1; ++i) {
<a name="l00315"></a>00315 <span class="keywordflow">if</span> (<a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>[i]->uploadNow()) {
<a name="l00316"></a>00316 ++<a class="code" href="classComposer.html#818abbb226340284e5998daa1d10a72c" title="number of attachments waiting to be uploaded during saving">attachmentsPending_</a>;
<a name="l00317"></a>00317
<a name="l00318"></a>00318 <span class="comment">// this will trigger attachmentDone() when done, see</span>
<a name="l00319"></a>00319 <span class="comment">// the AttachmentEdit constructor.</span>
<a name="l00320"></a>00320 }
<a name="l00321"></a>00321 }
<a name="l00322"></a>00322
<a name="l00323"></a>00323 std::cerr << <span class="stringliteral">"Attachments pending: "</span> << <a class="code" href="classComposer.html#818abbb226340284e5998daa1d10a72c" title="number of attachments waiting to be uploaded during saving">attachmentsPending_</a> << std::endl;
<a name="l00324"></a>00324 <span class="keywordflow">if</span> (<a class="code" href="classComposer.html#818abbb226340284e5998daa1d10a72c" title="number of attachments waiting to be uploaded during saving">attachmentsPending_</a>)
<a name="l00325"></a>00325 <a class="code" href="classComposer.html#5163d3b98235d9c8d8d5aff82738ca57" title="Set the status, and apply the given style.">setStatus</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.uploading"</span>), <span class="stringliteral">"status"</span>);
<a name="l00326"></a>00326 <span class="keywordflow">else</span>
<a name="l00327"></a>00327 <a class="code" href="classComposer.html#1097d72401283f58dfd79dbfb47a30a5" title="All attachments have been processed, determine the result of saving the message.">saved</a>();
<a name="l00328"></a>00328 }
<a name="l00329"></a>00329 }
<a name="l00330"></a>00330
<a name="l00331"></a><a class="code" href="classComposer.html#aa2db4aef750f6533c53af1189c92144">00331</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#aa2db4aef750f6533c53af1189c92144" title="Slotcalled when an attachment has been uploaded.">Composer::attachmentDone</a>()
<a name="l00332"></a>00332 {
<a name="l00333"></a>00333 <span class="keywordflow">if</span> (<a class="code" href="classComposer.html#75988a529863cd5e90138e46056aae9f" title="state when waiting asyncrhonously for attachments to be uploaded">saving_</a>) {
<a name="l00334"></a>00334 --<a class="code" href="classComposer.html#818abbb226340284e5998daa1d10a72c" title="number of attachments waiting to be uploaded during saving">attachmentsPending_</a>;
<a name="l00335"></a>00335 std::cerr << <span class="stringliteral">"Attachments still: "</span> << <a class="code" href="classComposer.html#818abbb226340284e5998daa1d10a72c" title="number of attachments waiting to be uploaded during saving">attachmentsPending_</a> << std::endl;
<a name="l00336"></a>00336
<a name="l00337"></a>00337 <span class="keywordflow">if</span> (<a class="code" href="classComposer.html#818abbb226340284e5998daa1d10a72c" title="number of attachments waiting to be uploaded during saving">attachmentsPending_</a> == 0)
<a name="l00338"></a>00338 <a class="code" href="classComposer.html#1097d72401283f58dfd79dbfb47a30a5" title="All attachments have been processed, determine the result of saving the message.">saved</a>();
<a name="l00339"></a>00339 }
<a name="l00340"></a>00340 }
<a name="l00341"></a>00341
<a name="l00342"></a><a class="code" href="classComposer.html#5163d3b98235d9c8d8d5aff82738ca57">00342</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#5163d3b98235d9c8d8d5aff82738ca57" title="Set the status, and apply the given style.">Composer::setStatus</a>(<span class="keyword">const</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WString.html">WString</a>& text, <span class="keyword">const</span> <a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WString.html">WString</a>& style)
<a name="l00343"></a>00343 {
<a name="l00344"></a>00344 <a class="code" href="classComposer.html#09067ffd913810f9d499570609e17674">statusMsg_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WText.html#2f788aa524d51b3962642c9f565e66e6">setText</a>(text);
<a name="l00345"></a>00345 <a class="code" href="classComposer.html#09067ffd913810f9d499570609e17674">statusMsg_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWebWidget.html#6fd43dced1a62f7e79bc3522eeb16216">setStyleClass</a>(style);
<a name="l00346"></a>00346 }
<a name="l00347"></a>00347
<a name="l00348"></a><a class="code" href="classComposer.html#1097d72401283f58dfd79dbfb47a30a5">00348</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#1097d72401283f58dfd79dbfb47a30a5" title="All attachments have been processed, determine the result of saving the message.">Composer::saved</a>()
<a name="l00349"></a>00349 {
<a name="l00350"></a>00350 <span class="comment">/*</span>
<a name="l00351"></a>00351 <span class="comment"> * All attachments have been processed.</span>
<a name="l00352"></a>00352 <span class="comment"> */</span>
<a name="l00353"></a>00353
<a name="l00354"></a>00354 <span class="keywordtype">bool</span> attachmentsFailed = <span class="keyword">false</span>;
<a name="l00355"></a>00355 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < <a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>.size() - 1; ++i)
<a name="l00356"></a>00356 <span class="keywordflow">if</span> (<a class="code" href="classComposer.html#9616ef08dd2e3f16b63cec7b1d1cbf2c" title="Array which holds all the attachments, including one extra invisible one.">attachments_</a>[i]->uploadFailed()) {
<a name="l00357"></a>00357 attachmentsFailed = <span class="keyword">true</span>;
<a name="l00358"></a>00358 <span class="keywordflow">break</span>;
<a name="l00359"></a>00359 }
<a name="l00360"></a>00360
<a name="l00361"></a>00361 <span class="keywordflow">if</span> (attachmentsFailed) {
<a name="l00362"></a>00362 <a class="code" href="classComposer.html#5163d3b98235d9c8d8d5aff82738ca57" title="Set the status, and apply the given style.">setStatus</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.attachment.failed"</span>), <span class="stringliteral">"error"</span>);
<a name="l00363"></a>00363 } <span class="keywordflow">else</span> {
<a name="l00364"></a>00364 <span class="preprocessor">#ifndef WIN32</span>
<a name="l00365"></a>00365 <span class="preprocessor"></span> time_t t = time(0);
<a name="l00366"></a>00366 <span class="keyword">struct </span>tm td;
<a name="l00367"></a>00367 gmtime_r(&t, &td);
<a name="l00368"></a>00368 <span class="keywordtype">char</span> buffer[100];
<a name="l00369"></a>00369 strftime(buffer, 100, <span class="stringliteral">"%H:%M"</span>, &td);
<a name="l00370"></a>00370 <span class="preprocessor">#else</span>
<a name="l00371"></a>00371 <span class="preprocessor"></span> <span class="keywordtype">char</span> buffer[] = <span class="stringliteral">"server"</span>; <span class="comment">// Should fix this; for now just make sense</span>
<a name="l00372"></a>00372 <span class="preprocessor">#endif</span>
<a name="l00373"></a>00373 <span class="preprocessor"></span> <a class="code" href="classComposer.html#5163d3b98235d9c8d8d5aff82738ca57" title="Set the status, and apply the given style.">setStatus</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WWidget.html#a651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">"msg.ok"</span>), <span class="stringliteral">"status"</span>);
<a name="l00374"></a>00374 <a class="code" href="classComposer.html#09067ffd913810f9d499570609e17674">statusMsg_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1WText.html#2f788aa524d51b3962642c9f565e66e6">setText</a>(std::string(<span class="stringliteral">"Draft saved at "</span>) + buffer);
<a name="l00375"></a>00375
<a name="l00376"></a>00376 <span class="keywordflow">if</span> (<a class="code" href="classComposer.html#a079baf3b2fcec4ceabda3457cf28de4">sending_</a>) {
<a name="l00377"></a>00377 <a class="code" href="classComposer.html#523271b083a60c433f044018f3c0d02a" title="The message is ready to be sent...">send</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1Signal.html#b9ec97260c79e7b546b7235ad2ffd627">emit</a>();
<a name="l00378"></a>00378 <span class="keywordflow">return</span>;
<a name="l00379"></a>00379 }
<a name="l00380"></a>00380 }
<a name="l00381"></a>00381
<a name="l00382"></a>00382 <a class="code" href="classComposer.html#75988a529863cd5e90138e46056aae9f" title="state when waiting asyncrhonously for attachments to be uploaded">saving_</a> = <span class="keyword">false</span>;
<a name="l00383"></a>00383 <a class="code" href="classComposer.html#a079baf3b2fcec4ceabda3457cf28de4">sending_</a> = <span class="keyword">false</span>;
<a name="l00384"></a>00384 }
<a name="l00385"></a>00385
<a name="l00386"></a><a class="code" href="classComposer.html#5880788a9a63a938572e6ca7e47a01ab">00386</a> <span class="keywordtype">void</span> <a class="code" href="classComposer.html#5880788a9a63a938572e6ca7e47a01ab" title="Slot attached to the Discard button.">Composer::discardIt</a>()
<a name="l00387"></a>00387 {
<a name="l00388"></a>00388 <a class="code" href="classComposer.html#93eb63c5e90cf794a710348a847b9c0a" title="The message must be discarded.">discard</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html/" href="../../reference/html/classWt_1_1Signal.html#b9ec97260c79e7b546b7235ad2ffd627">emit</a>();
<a name="l00389"></a>00389 }
</pre></div></div>
<hr size="1"><address style="align: right;"><small>
Generated on Fri Mar 26 17:12:12 2010 for <a href="http://www.webtoolkit.eu/wt/">Wt</a> by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6</small></address>
</body>
</html>
|