Sophie

Sophie

distrib > Fedora > 18 > x86_64 > by-pkgid > b3a1f4d91c26f535919e39e25606614a > files > 13

wt-doc-3.2.3-1.fc18.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Wt examples: /home/koen/project/wt/public-git/wt/examples/composer/AttachmentEdit.C Source File</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />



</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Wt examples
   &#160;<span id="projectnumber">3.2.3</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;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>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<div class="title">/home/koen/project/wt/public-git/wt/examples/composer/AttachmentEdit.C</div>  </div>
</div>
<div class="contents">
<a href="AttachmentEdit_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 
<a name="l00007"></a>00007 <span class="preprocessor">#include &lt;fstream&gt;</span>
<a name="l00008"></a>00008 <span class="preprocessor">#ifndef WIN32</span>
<a name="l00009"></a>00009 <span class="preprocessor"></span><span class="preprocessor">#include &lt;unistd.h&gt;</span>
<a name="l00010"></a>00010 <span class="preprocessor">#endif</span>
<a name="l00011"></a>00011 <span class="preprocessor"></span><span class="preprocessor">#include &lt;boost/lexical_cast.hpp&gt;</span>
<a name="l00012"></a>00012 
<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00014"></a>00014 
<a name="l00015"></a>00015 <span class="preprocessor">#include &lt;Wt/WAnchor&gt;</span>
<a name="l00016"></a>00016 <span class="preprocessor">#include &lt;Wt/WApplication&gt;</span>
<a name="l00017"></a>00017 <span class="preprocessor">#include &lt;Wt/WCheckBox&gt;</span>
<a name="l00018"></a>00018 <span class="preprocessor">#include &lt;Wt/WCssDecorationStyle&gt;</span>
<a name="l00019"></a>00019 <span class="preprocessor">#include &lt;Wt/WFileResource&gt;</span>
<a name="l00020"></a>00020 <span class="preprocessor">#include &lt;Wt/WFileUpload&gt;</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include &lt;Wt/WProgressBar&gt;</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include &lt;Wt/WText&gt;</span>
<a name="l00023"></a>00023 
<a name="l00024"></a>00024 <span class="preprocessor">#include &quot;<a class="code" href="Attachment_8h.html">Attachment.h</a>&quot;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &quot;<a class="code" href="AttachmentEdit_8h.html">AttachmentEdit.h</a>&quot;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &quot;<a class="code" href="Composer_8h.html">Composer.h</a>&quot;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &quot;<a class="code" href="Option_8h.html">Option.h</a>&quot;</span>
<a name="l00028"></a>00028 
<a name="l00029"></a><a class="code" href="classAttachmentEdit_1_1UploadInfo.html#ae6266b6977a64a366fddd9fc94a277ff">00029</a> <a class="code" href="classAttachmentEdit_1_1UploadInfo.html#ae6266b6977a64a366fddd9fc94a277ff">AttachmentEdit::UploadInfo::UploadInfo</a>(<span class="keyword">const</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html">Http::UploadedFile</a>&amp; f,
<a name="l00030"></a>00030                                        <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">WContainerWidget</a> *parent)
<a name="l00031"></a>00031   : <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">WContainerWidget</a>(parent),
<a name="l00032"></a>00032     info_(f)
<a name="l00033"></a>00033 {
<a name="l00034"></a>00034   <span class="comment">/*</span>
<a name="l00035"></a>00035 <span class="comment">   * Include the file ?</span>
<a name="l00036"></a>00036 <span class="comment">   */</span>
<a name="l00037"></a>00037   <a class="code" href="classAttachmentEdit_1_1UploadInfo.html#a2bdc455790096d63d594a0dd7fe47a6f" title="The check box to keep or discard the uploaded file.">keep_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WCheckBox.html">WCheckBox</a>(<span class="keyword">this</span>);
<a name="l00038"></a>00038   <a class="code" href="classAttachmentEdit_1_1UploadInfo.html#a2bdc455790096d63d594a0dd7fe47a6f" title="The check box to keep or discard the uploaded file.">keep_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WAbstractToggleButton.html#a6838c9a37f3e9e3c466e9f48bde55e62">setChecked</a>();
<a name="l00039"></a>00039 
<a name="l00040"></a>00040   <span class="comment">/*</span>
<a name="l00041"></a>00041 <span class="comment">   * Give information on the file uploaded.</span>
<a name="l00042"></a>00042 <span class="comment">   */</span>
<a name="l00043"></a>00043   std::streamsize fsize = 0;
<a name="l00044"></a>00044   {
<a name="l00045"></a>00045     std::ifstream theFile(<a class="code" href="classAttachmentEdit_1_1UploadInfo.html#acc43ca5ce401f8320154638602f3b536">info_</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html#a80453ce8dc7a06e12b5c1f622c027320">spoolFileName</a>().c_str());
<a name="l00046"></a>00046     theFile.seekg(0, std::ios_base::end);
<a name="l00047"></a>00047     fsize = theFile.tellg();
<a name="l00048"></a>00048     theFile.seekg(0);
<a name="l00049"></a>00049   }
<a name="l00050"></a>00050   std::wstring size;
<a name="l00051"></a>00051   <span class="keywordflow">if</span> (fsize &lt; 1024)
<a name="l00052"></a>00052     size = boost::lexical_cast&lt;std::wstring&gt;(fsize) + L<span class="stringliteral">&quot; bytes&quot;</span>;
<a name="l00053"></a>00053   <span class="keywordflow">else</span>
<a name="l00054"></a>00054     size = boost::lexical_cast&lt;std::wstring&gt;((int)(fsize / 1024))
<a name="l00055"></a>00055       + L<span class="stringliteral">&quot;kb&quot;</span>;
<a name="l00056"></a>00056 
<a name="l00057"></a>00057   std::wstring fn = <span class="keyword">static_cast&lt;</span>std::wstring<span class="keyword">&gt;</span>
<a name="l00058"></a>00058     (<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#a6cd1b8a84c7aaf72e5d44cb47ae90e9c">escapeText</a>(WString::fromUTF8(<a class="code" href="classAttachmentEdit_1_1UploadInfo.html#acc43ca5ce401f8320154638602f3b536">info_</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html#a6548081a259f55d572bf049d576bb2a3">clientFileName</a>())));
<a name="l00059"></a>00059 
<a name="l00060"></a>00060   <a class="code" href="classAttachmentEdit_1_1UploadInfo.html#ab7eba6ca0f514142e96fe3a4845f0361" title="Anchor referencing the file.">downloadLink_</a>
<a name="l00061"></a>00061     = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WAnchor.html">WAnchor</a>(<span class="stringliteral">&quot;&quot;</span>, fn + L<span class="stringliteral">&quot; (&lt;i&gt;&quot;</span> + WString::fromUTF8(<a class="code" href="classAttachmentEdit_1_1UploadInfo.html#acc43ca5ce401f8320154638602f3b536">info_</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html#a165bc88288a19a1134ecdf3922f86f25">contentType</a>())
<a name="l00062"></a>00062                   + L<span class="stringliteral">&quot;&lt;/i&gt;) &quot;</span> + size, <span class="keyword">this</span>);
<a name="l00063"></a>00063 
<a name="l00064"></a>00064   <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileResource.html">WFileResource</a> *res = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileResource.html">WFileResource</a>(<a class="code" href="classAttachmentEdit_1_1UploadInfo.html#acc43ca5ce401f8320154638602f3b536">info_</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html#a165bc88288a19a1134ecdf3922f86f25">contentType</a>(),
<a name="l00065"></a>00065                                          <a class="code" href="classAttachmentEdit_1_1UploadInfo.html#acc43ca5ce401f8320154638602f3b536">info_</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html#a80453ce8dc7a06e12b5c1f622c027320">spoolFileName</a>(),
<a name="l00066"></a>00066                                          <span class="keyword">this</span>);
<a name="l00067"></a>00067   res-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WResource.html#a30a0736f36f44b2a47ab25e9aa164851">suggestFileName</a>(<a class="code" href="classAttachmentEdit_1_1UploadInfo.html#acc43ca5ce401f8320154638602f3b536">info_</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html#a6548081a259f55d572bf049d576bb2a3">clientFileName</a>());
<a name="l00068"></a>00068   <a class="code" href="classAttachmentEdit_1_1UploadInfo.html#ab7eba6ca0f514142e96fe3a4845f0361" title="Anchor referencing the file.">downloadLink_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WAnchor.html#a90d1aa41c061bdc9e61fa42eb36b27d8">setLink</a>(res);
<a name="l00069"></a>00069 }
<a name="l00070"></a>00070 
<a name="l00071"></a><a class="code" href="classAttachmentEdit.html#aedd19941ecf64ef030eaa164eb34b85a">00071</a> <a class="code" href="classAttachmentEdit.html#aedd19941ecf64ef030eaa164eb34b85a" title="Creates an attachment edit field.">AttachmentEdit::AttachmentEdit</a>(<a class="code" href="classComposer.html" title="An E-mail composer widget.">Composer</a> *composer, <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">WContainerWidget</a> *<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#a3461e31818c4d2f516641bdaf508312a">parent</a>)
<a name="l00072"></a>00072   : <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WContainerWidget.html">WContainerWidget</a>(parent),
<a name="l00073"></a>00073     <a class="code" href="classAttachmentEdit.html#a403927978e9c841e64b62421458790e8">composer_</a>(composer),
<a name="l00074"></a>00074     <a class="code" href="classAttachmentEdit.html#a24ee0aca670036a7491a1c0114188cc7">uploadDone_</a>(this),
<a name="l00075"></a>00075     <a class="code" href="classAttachmentEdit.html#a6a19f364e7a82797bc5c18adb6a01530" title="The state of the last upload process.">uploadFailed_</a>(false)
<a name="l00076"></a>00076 {
<a name="l00077"></a>00077   <span class="comment">/*</span>
<a name="l00078"></a>00078 <span class="comment">   * The file upload itself.</span>
<a name="l00079"></a>00079 <span class="comment">   */</span>
<a name="l00080"></a>00080   <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileUpload.html">WFileUpload</a>(<span class="keyword">this</span>);
<a name="l00081"></a>00081   <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileUpload.html#a17f8e368c2ffc9836c65e470b311de9d">setMultiple</a>(<span class="keyword">true</span>);
<a name="l00082"></a>00082   <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileUpload.html#ac7ad1324c86d378da9da9740a631a662">setFileTextSize</a>(40);
<a name="l00083"></a>00083 
<a name="l00084"></a>00084   <span class="comment">/*</span>
<a name="l00085"></a>00085 <span class="comment">   * A progress bar</span>
<a name="l00086"></a>00086 <span class="comment">   */</span>
<a name="l00087"></a>00087   <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WProgressBar.html">WProgressBar</a> *progress = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WProgressBar.html">WProgressBar</a>();
<a name="l00088"></a>00088   progress-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WProgressBar.html#a6fb308103fbdad5d58c90450c657678a">setFormat</a>(WString::Empty);
<a name="l00089"></a>00089   progress-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#ac90979eca6488814ac3d44194ba9ac79">setVerticalAlignment</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/namespaceWt.html#ab8f772c69bc8180c31f9e4f4593b143fa2ed90f01dbf74049f428d33769d48e3f">AlignMiddle</a>);
<a name="l00090"></a>00090   <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileUpload.html#a6600c5a1232057418b3fe63d5db1c004">setProgressBar</a>(progress);
<a name="l00091"></a>00091 
<a name="l00092"></a>00092   <span class="comment">/*</span>
<a name="l00093"></a>00093 <span class="comment">   * The &#39;remove&#39; option.</span>
<a name="l00094"></a>00094 <span class="comment">   */</span>
<a name="l00095"></a>00095   <a class="code" href="classAttachmentEdit.html#a55484424d37b196d07035e245399ffae" title="The option to cancel the file upload.">remove_</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#aa651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">&quot;msg.remove&quot;</span>), <span class="keyword">this</span>);
<a name="l00096"></a>00096   <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#a9defbf26c8bc2310963e858613f25518">decorationStyle</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WCssDecorationStyle.html#a5e552350f0955212ea237994a98638dc">font</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFont.html#ab67fd247c1541c18a6b97f41007e5f4b">setSize</a>(WFont::Smaller);
<a name="l00097"></a>00097   <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#ac90979eca6488814ac3d44194ba9ac79">setVerticalAlignment</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/namespaceWt.html#ab8f772c69bc8180c31f9e4f4593b143fa2ed90f01dbf74049f428d33769d48e3f">AlignMiddle</a>);
<a name="l00098"></a>00098   <a class="code" href="classAttachmentEdit.html#a55484424d37b196d07035e245399ffae" title="The option to cancel the file upload.">remove_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#a9795c18e926b26b97fcbabc62a1dd4e3">setMargin</a>(5, <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/namespaceWt.html#a5a6f4636bcc6ab3c075165d249b3a5a3a6568fecac7c7d7223afaed240bcfdd9e">Left</a>);
<a name="l00099"></a>00099   <a class="code" href="classAttachmentEdit.html#a55484424d37b196d07035e245399ffae" title="The option to cancel the file upload.">remove_</a>-&gt;<a class="code" href="classOption.html#a31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#ae11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(<span class="keyword">this</span>, &amp;WWidget::hide);
<a name="l00100"></a>00100   <a class="code" href="classAttachmentEdit.html#a55484424d37b196d07035e245399ffae" title="The option to cancel the file upload.">remove_</a>-&gt;<a class="code" href="classOption.html#a31cd766f28605ceba53642d7d4e68c9e" title="Returns the clickable part.">item</a>()-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#ae11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(<span class="keyword">this</span>, &amp;<a class="code" href="classAttachmentEdit.html#a27277be62832ebbda987707b7a2d814e" title="Slot triggered when the users wishes to remove this attachment edit.">AttachmentEdit::remove</a>);
<a name="l00101"></a>00101 
<a name="l00102"></a>00102   <span class="comment">// The error message.</span>
<a name="l00103"></a>00103   <a class="code" href="classAttachmentEdit.html#a2c3fa5d63ec5feedc63f95295989cd4d" title="The text box to display an error (empty or too big file)">error_</a> = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">WText</a>(<span class="stringliteral">&quot;&quot;</span>, <span class="keyword">this</span>);
<a name="l00104"></a>00104   <a class="code" href="classAttachmentEdit.html#a2c3fa5d63ec5feedc63f95295989cd4d" title="The text box to display an error (empty or too big file)">error_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#afd3a3b359681111460a93d13979d17dd">setStyleClass</a>(<span class="stringliteral">&quot;error&quot;</span>);
<a name="l00105"></a>00105   <a class="code" href="classAttachmentEdit.html#a2c3fa5d63ec5feedc63f95295989cd4d" title="The text box to display an error (empty or too big file)">error_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#a9795c18e926b26b97fcbabc62a1dd4e3">setMargin</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WLength.html">WLength</a>(5), <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/namespaceWt.html#a5a6f4636bcc6ab3c075165d249b3a5a3a6568fecac7c7d7223afaed240bcfdd9e">Left</a>);
<a name="l00106"></a>00106 
<a name="l00107"></a>00107   <span class="comment">/*</span>
<a name="l00108"></a>00108 <span class="comment">   * React to events.</span>
<a name="l00109"></a>00109 <span class="comment">   */</span>
<a name="l00110"></a>00110 
<a name="l00111"></a>00111   <span class="comment">// Try to catch the fileupload change signal to trigger an upload.</span>
<a name="l00112"></a>00112   <span class="comment">// We could do like google and at a delay with a WTimer as well...</span>
<a name="l00113"></a>00113   <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileUpload.html#a3abaf94bdba04e7833aa18bc7e8d0f40">changed</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1EventSignal.html#a36896f54a4db342af24efa6e9d703455">connect</a>(<a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>, &amp;WFileUpload::upload);
<a name="l00114"></a>00114 
<a name="l00115"></a>00115   <span class="comment">// React to a succesfull upload.</span>
<a name="l00116"></a>00116   <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileUpload.html#aacb4622c8cd83d1635a8c0db13c8c0fe">uploaded</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1EventSignal.html#a36896f54a4db342af24efa6e9d703455">connect</a>(<span class="keyword">this</span>, &amp;<a class="code" href="classAttachmentEdit.html#a85d6892fe9c38394d17dc350ce678acd" title="Slot triggered when the WFileUpload completed an upload.">AttachmentEdit::uploaded</a>);
<a name="l00117"></a>00117 
<a name="l00118"></a>00118   <span class="comment">// React to a fileupload problem.</span>
<a name="l00119"></a>00119   <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileUpload.html#a84fd55ba7c74134970369d1f2cb8aae1">fileTooLarge</a>().connect(<span class="keyword">this</span>, &amp;<a class="code" href="classAttachmentEdit.html#ae2435ee247748851f9b02ae217260766" title="Slot triggered when the WFileUpload received an oversized file.">AttachmentEdit::fileTooLarge</a>);
<a name="l00120"></a>00120 
<a name="l00121"></a>00121   <span class="comment">/*</span>
<a name="l00122"></a>00122 <span class="comment">   * Connect the uploadDone signal to the Composer&#39;s attachmentDone,</span>
<a name="l00123"></a>00123 <span class="comment">   * so that the Composer can keep track of attachment upload progress,</span>
<a name="l00124"></a>00124 <span class="comment">   * if it wishes.</span>
<a name="l00125"></a>00125 <span class="comment">   */</span>
<a name="l00126"></a>00126   <a class="code" href="classAttachmentEdit.html#a24ee0aca670036a7491a1c0114188cc7">uploadDone_</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Signal.html#a15d1150af031537b492674ee651bf4a3">connect</a>(composer, &amp;<a class="code" href="classComposer.html#aaa2db4aef750f6533c53af1189c92144" title="Slotcalled when an attachment has been uploaded.">Composer::attachmentDone</a>);
<a name="l00127"></a>00127 }
<a name="l00128"></a>00128 
<a name="l00129"></a><a class="code" href="classAttachmentEdit.html#a172fff67913dc3e3adf8c1e4198d6ea6">00129</a> <span class="keywordtype">bool</span> <a class="code" href="classAttachmentEdit.html#a172fff67913dc3e3adf8c1e4198d6ea6" title="Updates the file now.">AttachmentEdit::uploadNow</a>()
<a name="l00130"></a>00130 {
<a name="l00131"></a>00131   <span class="comment">/*</span>
<a name="l00132"></a>00132 <span class="comment">   * See if this attachment still needs to be uploaded,</span>
<a name="l00133"></a>00133 <span class="comment">   * and return if a new asynchronous upload is started.</span>
<a name="l00134"></a>00134 <span class="comment">   */</span>
<a name="l00135"></a>00135   <span class="keywordflow">if</span> (<a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>) {
<a name="l00136"></a>00136     <span class="keywordflow">if</span> (<a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileUpload.html#a66376fb4668a037760a91abad9f83f8a">canUpload</a>()) {
<a name="l00137"></a>00137       <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileUpload.html#ac17094f2fd6ae8cac1035161f7d80b9c">upload</a>();
<a name="l00138"></a>00138       <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00139"></a>00139     } <span class="keywordflow">else</span>
<a name="l00140"></a>00140       <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00141"></a>00141   } <span class="keywordflow">else</span>
<a name="l00142"></a>00142     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00143"></a>00143 }
<a name="l00144"></a>00144 
<a name="l00145"></a><a class="code" href="classAttachmentEdit.html#a85d6892fe9c38394d17dc350ce678acd">00145</a> <span class="keywordtype">void</span> <a class="code" href="classAttachmentEdit.html#a85d6892fe9c38394d17dc350ce678acd" title="Slot triggered when the WFileUpload completed an upload.">AttachmentEdit::uploaded</a>()
<a name="l00146"></a>00146 {
<a name="l00147"></a>00147   std::vector&lt;Http::UploadedFile&gt; files = <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WFileUpload.html#ab1ffd4c3c203e6772f4a1b2e235888e3">uploadedFiles</a>();
<a name="l00148"></a>00148 
<a name="l00149"></a>00149   <span class="keywordflow">if</span> (!files.empty()) {
<a name="l00150"></a>00150     <span class="comment">/*</span>
<a name="l00151"></a>00151 <span class="comment">     * Delete this widgets since we have a succesfull upload.</span>
<a name="l00152"></a>00152 <span class="comment">     */</span>
<a name="l00153"></a>00153     <span class="keyword">delete</span> <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a>;
<a name="l00154"></a>00154     <a class="code" href="classAttachmentEdit.html#aa9a3945293cf0a30d35e8bc56312d430" title="The WFileUpload control.">upload_</a> = 0;
<a name="l00155"></a>00155     <span class="keyword">delete</span> <a class="code" href="classAttachmentEdit.html#a55484424d37b196d07035e245399ffae" title="The option to cancel the file upload.">remove_</a>;
<a name="l00156"></a>00156     <a class="code" href="classAttachmentEdit.html#a55484424d37b196d07035e245399ffae" title="The option to cancel the file upload.">remove_</a> = 0;
<a name="l00157"></a>00157     <span class="keyword">delete</span> <a class="code" href="classAttachmentEdit.html#a2c3fa5d63ec5feedc63f95295989cd4d" title="The text box to display an error (empty or too big file)">error_</a>;
<a name="l00158"></a>00158     <a class="code" href="classAttachmentEdit.html#a2c3fa5d63ec5feedc63f95295989cd4d" title="The text box to display an error (empty or too big file)">error_</a> = 0;
<a name="l00159"></a>00159 
<a name="l00160"></a>00160     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; files.size(); ++i)
<a name="l00161"></a>00161       <a class="code" href="classAttachmentEdit.html#ad3f98e98d3e5502fc275446dc5c6b762">uploadInfo_</a>.push_back(<span class="keyword">new</span> <a class="code" href="classAttachmentEdit_1_1UploadInfo.html">UploadInfo</a>(files[i], <span class="keyword">this</span>));
<a name="l00162"></a>00162   } <span class="keywordflow">else</span> {
<a name="l00163"></a>00163     <a class="code" href="classAttachmentEdit.html#a2c3fa5d63ec5feedc63f95295989cd4d" title="The text box to display an error (empty or too big file)">error_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html#a2f788aa524d51b3962642c9f565e66e6">setText</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#aa651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">&quot;msg.file-empty&quot;</span>));
<a name="l00164"></a>00164     <a class="code" href="classAttachmentEdit.html#a6a19f364e7a82797bc5c18adb6a01530" title="The state of the last upload process.">uploadFailed_</a> = <span class="keyword">true</span>;
<a name="l00165"></a>00165   }
<a name="l00166"></a>00166 
<a name="l00167"></a>00167   <span class="comment">/*</span>
<a name="l00168"></a>00168 <span class="comment">   * Signal to the Composer that a new asynchronous file upload was processed.</span>
<a name="l00169"></a>00169 <span class="comment">   */</span>
<a name="l00170"></a>00170   <a class="code" href="classAttachmentEdit.html#a24ee0aca670036a7491a1c0114188cc7">uploadDone_</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Signal.html#a8d9cf8a1e83634462fe2b492b3beb1c5">emit</a>();
<a name="l00171"></a>00171 }
<a name="l00172"></a>00172 
<a name="l00173"></a><a class="code" href="classAttachmentEdit.html#a27277be62832ebbda987707b7a2d814e">00173</a> <span class="keywordtype">void</span> <a class="code" href="classAttachmentEdit.html#a27277be62832ebbda987707b7a2d814e" title="Slot triggered when the users wishes to remove this attachment edit.">AttachmentEdit::remove</a>()
<a name="l00174"></a>00174 {
<a name="l00175"></a>00175   <a class="code" href="classAttachmentEdit.html#a403927978e9c841e64b62421458790e8">composer_</a>-&gt;<a class="code" href="classComposer.html#ab142f49c8de59da0f84185165eb6c1c1" title="Remove the given attachment edit.">removeAttachment</a>(<span class="keyword">this</span>);
<a name="l00176"></a>00176 }
<a name="l00177"></a>00177 
<a name="l00178"></a><a class="code" href="classAttachmentEdit.html#ae2435ee247748851f9b02ae217260766">00178</a> <span class="keywordtype">void</span> <a class="code" href="classAttachmentEdit.html#ae2435ee247748851f9b02ae217260766" title="Slot triggered when the WFileUpload received an oversized file.">AttachmentEdit::fileTooLarge</a>(::int64_t size)
<a name="l00179"></a>00179 {
<a name="l00180"></a>00180   <a class="code" href="classAttachmentEdit.html#a2c3fa5d63ec5feedc63f95295989cd4d" title="The text box to display an error (empty or too big file)">error_</a>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html#a2f788aa524d51b3962642c9f565e66e6">setText</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWidget.html#aa651f107ec7cf080faef6c435705fc44">tr</a>(<span class="stringliteral">&quot;msg.file-too-large&quot;</span>)
<a name="l00181"></a>00181                   .arg(size / 1024)
<a name="l00182"></a>00182                   .arg(WApplication::instance()-&gt;maximumRequestSize() / 1024));
<a name="l00183"></a>00183   <a class="code" href="classAttachmentEdit.html#a6a19f364e7a82797bc5c18adb6a01530" title="The state of the last upload process.">uploadFailed_</a> = <span class="keyword">true</span>;
<a name="l00184"></a>00184 
<a name="l00185"></a>00185   <span class="comment">/*</span>
<a name="l00186"></a>00186 <span class="comment">   * Signal to the Composer that a new asyncrhonous file upload was processed.</span>
<a name="l00187"></a>00187 <span class="comment">   */</span>
<a name="l00188"></a>00188   <a class="code" href="classAttachmentEdit.html#a24ee0aca670036a7491a1c0114188cc7">uploadDone_</a>.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Signal.html#a8d9cf8a1e83634462fe2b492b3beb1c5">emit</a>();
<a name="l00189"></a>00189 }
<a name="l00190"></a>00190 
<a name="l00191"></a><a class="code" href="classAttachmentEdit.html#aa6037eafc345a6a3358da421fc04045a">00191</a> std::vector&lt;Attachment&gt; <a class="code" href="classAttachmentEdit.html#aa6037eafc345a6a3358da421fc04045a" title="Returns the attachment.">AttachmentEdit::attachments</a>()
<a name="l00192"></a>00192 {
<a name="l00193"></a>00193   std::vector&lt;Attachment&gt; result;
<a name="l00194"></a>00194 
<a name="l00195"></a>00195   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; <a class="code" href="classAttachmentEdit.html#ad3f98e98d3e5502fc275446dc5c6b762">uploadInfo_</a>.size(); ++i) {
<a name="l00196"></a>00196     <span class="keywordflow">if</span> (<a class="code" href="classAttachmentEdit.html#ad3f98e98d3e5502fc275446dc5c6b762">uploadInfo_</a>[i]-&gt;keep_-&gt;isChecked()) {
<a name="l00197"></a>00197       <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html">Http::UploadedFile</a>&amp; f = <a class="code" href="classAttachmentEdit.html#ad3f98e98d3e5502fc275446dc5c6b762">uploadInfo_</a>[i]-&gt;info_;
<a name="l00198"></a>00198       f.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html#ab8cdd14724b871e71d3ec7d9530f9e29">stealSpoolFile</a>();
<a name="l00199"></a>00199       result.push_back(<a class="code" href="classAttachment.html" title="An email attachment.">Attachment</a>
<a name="l00200"></a>00200                        (WString::fromUTF8(f.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html#a6548081a259f55d572bf049d576bb2a3">clientFileName</a>()),
<a name="l00201"></a>00201                         WString::fromUTF8(f.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html#a165bc88288a19a1134ecdf3922f86f25">contentType</a>()),
<a name="l00202"></a>00202                         f.<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1Http_1_1UploadedFile.html#a80453ce8dc7a06e12b5c1f622c027320">spoolFileName</a>()));
<a name="l00203"></a>00203     }
<a name="l00204"></a>00204   }
<a name="l00205"></a>00205 
<a name="l00206"></a>00206   <span class="keywordflow">return</span> result;
<a name="l00207"></a>00207 }
</pre></div></div>
</div>
<hr size="1"><address style="text-align: right; margin: 3px"><small>
Generated on Thu Nov 1 2012 for <a href="http://www.webtoolkit.eu/wt">the
C++ Web Toolkit (Wt)</a> by&nbsp;<a
href="http://www.doxygen.org/index.html"><img src="doxygen.png"
alt="doxygen" border="0" style="vertical-align: middle; display:
inline-block; height: 2em"></a> 1.7.5.1</small></address>
</body>
</html>