Wt examples  3.3.1
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
AttachmentEdit Class Reference

An edit field for an email attachment. More...

#include <AttachmentEdit.h>

Inheritance diagram for AttachmentEdit:
Inheritance graph
[legend]

Classes

class  UploadInfo
 

Public Member Functions

 AttachmentEdit (Composer *composer, WContainerWidget *parent=0)
 Creates an attachment edit field. More...
 
bool uploadNow ()
 Updates the file now. More...
 
bool uploadFailed () const
 Returns whether the upload failed. More...
 
std::vector< Attachmentattachments ()
 Returns the attachment. More...
 
Signal< void > & uploadDone ()
 Signal emitted when new attachment(s) have been uploaded (or failed to upload. More...
 
- Public Member Functions inherited from Wt::WWidget
virtual void setPositionScheme (PositionScheme scheme)=0
 
virtual PositionScheme positionScheme () const =0
 
virtual void setOffsets (const WLength &offset, WFlags< Side > sides=All)=0
 
virtual WLength offset (Side side) const =0
 
virtual void resize (const WLength &width, const WLength &height)
 
virtual WLength width () const =0
 
virtual WLength height () const =0
 
virtual void setMinimumSize (const WLength &width, const WLength &height)=0
 
virtual WLength minimumWidth () const =0
 
virtual WLength minimumHeight () const =0
 
virtual void setMaximumSize (const WLength &width, const WLength &height)=0
 
virtual WLength maximumWidth () const =0
 
virtual WLength maximumHeight () const =0
 
virtual void setLineHeight (const WLength &height)=0
 
virtual WLength lineHeight () const =0
 
virtual void setFloatSide (Side s)=0
 
virtual Side floatSide () const =0
 
virtual void setClearSides (WFlags< Side > sides)=0
 
virtual WFlags< SideclearSides () const =0
 
virtual void setMargin (const WLength &margin, WFlags< Side > sides=All)=0
 
virtual WLength margin (Side side) const =0
 
virtual void setHiddenKeepsGeometry (bool enabled)=0
 
virtual bool hiddenKeepsGeometry () const =0
 
virtual void setHidden (bool hidden, const WAnimation &animation=WAnimation())=0
 
virtual bool isHidden () const =0
 
virtual bool isVisible () const =0
 
virtual void setDisabled (bool disabled)=0
 
virtual bool isDisabled () const =0
 
virtual bool isEnabled () const =0
 
virtual void setPopup (bool popup)=0
 
virtual bool isPopup () const =0
 
virtual void setInline (bool inlined)=0
 
virtual bool isInline () const =0
 
virtual void setDecorationStyle (const WCssDecorationStyle &style)=0
 
virtual WCssDecorationStyledecorationStyle ()=0
 
virtual void setStyleClass (const WString &styleClass)=0
 
virtual WString styleClass () const =0
 
virtual void addStyleClass (const WString &styleClass, bool force=false)=0
 
virtual void removeStyleClass (const WString &styleClass, bool force=false)=0
 
virtual bool hasStyleClass (const WString &styleClass) const =0
 
virtual void setVerticalAlignment (AlignmentFlag alignment, const WLength &length=WLength::Auto)=0
 
virtual AlignmentFlag verticalAlignment () const =0
 
virtual WLength verticalAlignmentLength () const =0
 
virtual void setToolTip (const WString &text, TextFormat textFormat=PlainText)=0
 
virtual const WStringtoolTip () const =0
 
virtual void refresh ()
 
virtual void setAttributeValue (const std::string &name, const WString &value)=0
 
virtual WString attributeValue (const std::string &name) const =0
 
virtual void setJavaScriptMember (const std::string &name, const std::string &value)=0
 
virtual std::string javaScriptMember (const std::string &name) const =0
 
virtual void callJavaScriptMember (const std::string &name, const std::string &args)=0
 
virtual void load ()=0
 
virtual bool loaded () const =0
 
virtual void setTabIndex (int index)=0
 
virtual int tabIndex () const =0
 
virtual void setId (const std::string &id)=0
 
virtual WWidgetfind (const std::string &name)=0
 
virtual void setSelectable (bool selectable)=0
 
virtual void doJavaScript (const std::string &js)=0
 

Private Member Functions

void uploaded ()
 Slot triggered when the WFileUpload completed an upload. More...
 
void fileTooLarge (::int64_t size)
 Slot triggered when the WFileUpload received an oversized file. More...
 
void remove ()
 Slot triggered when the users wishes to remove this attachment edit. More...
 

Private Attributes

Composercomposer_
 
Signal< void > uploadDone_
 
WFileUploadupload_
 The WFileUpload control. More...
 
std::vector< UploadInfo * > uploadInfo_
 
WTexterror_
 The text box to display an error (empty or too big file) More...
 
Optionremove_
 The option to cancel the file upload. More...
 
bool uploadFailed_
 The state of the last upload process. More...
 

Additional Inherited Members

- Protected Member Functions inherited from Wt::WWidget
virtual void enableAjax ()=0
 
virtual void propagateSetEnabled (bool enabled)=0
 
virtual void render (WFlags< RenderFlag > flags)
 

Detailed Description

An edit field for an email attachment.

This widget managements one attachment edit: it shows a file upload control, handles the upload, and gives feed-back on the file uploaded.

This widget is part of the Wt composer example.

Definition at line 37 of file AttachmentEdit.h.

Constructor & Destructor Documentation

AttachmentEdit::AttachmentEdit ( Composer composer,
WContainerWidget parent = 0 
)

Creates an attachment edit field.

Definition at line 71 of file AttachmentEdit.C.

72  : WContainerWidget(parent),
73  composer_(composer),
74  uploadDone_(this),
75  uploadFailed_(false)
76 {
77  /*
78  * The file upload itself.
79  */
80  upload_ = new WFileUpload(this);
81  upload_->setMultiple(true);
83 
84  /*
85  * A progress bar
86  */
87  WProgressBar *progress = new WProgressBar();
88  progress->setFormat(WString::Empty);
89  progress->setVerticalAlignment(AlignMiddle);
90  upload_->setProgressBar(progress);
91 
92  /*
93  * The 'remove' option.
94  */
95  remove_ = new Option(tr("msg.remove"), this);
96  upload_->decorationStyle().font().setSize(WFont::Smaller);
97  upload_->setVerticalAlignment(AlignMiddle);
98  remove_->setMargin(5, Left);
99  remove_->item()->clicked().connect(this, &WWidget::hide);
100  remove_->item()->clicked().connect(this, &AttachmentEdit::remove);
101 
102  // The error message.
103  error_ = new WText("", this);
104  error_->setStyleClass("error");
105  error_->setMargin(WLength(5), Left);
106 
107  /*
108  * React to events.
109  */
110 
111  // Try to catch the fileupload change signal to trigger an upload.
112  // We could do like google and at a delay with a WTimer as well...
113  upload_->changed().connect(upload_, &WFileUpload::upload);
114 
115  // React to a succesfull upload.
117 
118  // React to a fileupload problem.
120 
121  /*
122  * Connect the uploadDone signal to the Composer's attachmentDone,
123  * so that the Composer can keep track of attachment upload progress,
124  * if it wishes.
125  */
127 }
virtual WCssDecorationStyle & decorationStyle()=0
A clickable option.
Definition: Option.h:31
void uploaded()
Slot triggered when the WFileUpload completed an upload.
Signal< void > uploadDone_
WInteractWidget * item()
Returns the clickable part.
Definition: Option.h:44
EventSignal & changed()
Option * remove_
The option to cancel the file upload.
void setSize(Size size, const WLength &length)
Wt::Signals::connection connect(const F &function)
void setFormat(const WString &format)
void setMultiple(bool multiple)
virtual void setMargin(const WLength &margin, WFlags< Side > sides=All)=0
WFileUpload * upload_
The WFileUpload control.
void remove()
Slot triggered when the users wishes to remove this attachment edit.
virtual void setVerticalAlignment(AlignmentFlag alignment, const WLength &length=WLength::Auto)=0
Signal< ::int64_t > & fileTooLarge()
void setFileTextSize(int chars)
EventSignal & uploaded()
void fileTooLarge(::int64_t size)
Slot triggered when the WFileUpload received an oversized file.
WText * error_
The text box to display an error (empty or too big file)
void attachmentDone()
Slotcalled when an attachment has been uploaded.
Definition: Composer.C:331
bool uploadFailed_
The state of the last upload process.
Composer * composer_
virtual Wt::Signals::connection connect(WObject *target, WObject::Method method)
virtual void setStyleClass(const WString &styleClass)=0
void setProgressBar(WProgressBar *progressBar)

Member Function Documentation

std::vector< Attachment > AttachmentEdit::attachments ( )

Returns the attachment.

Definition at line 191 of file AttachmentEdit.C.

192 {
193  std::vector<Attachment> result;
194 
195  for (unsigned i = 0; i < uploadInfo_.size(); ++i) {
196  if (uploadInfo_[i]->keep_->isChecked()) {
197  Http::UploadedFile& f = uploadInfo_[i]->info_;
198  f.stealSpoolFile();
199  result.push_back(Attachment
200  (WString::fromUTF8(f.clientFileName()),
201  WString::fromUTF8(f.contentType()),
202  f.spoolFileName()));
203  }
204  }
205 
206  return result;
207 }
const std::string & spoolFileName() const
An email attachment.
Definition: Attachment.h:19
const std::string & contentType() const
const std::string & clientFileName() const
void stealSpoolFile() const
std::vector< UploadInfo * > uploadInfo_
void AttachmentEdit::fileTooLarge ( ::int64_t  size)
private

Slot triggered when the WFileUpload received an oversized file.

Definition at line 178 of file AttachmentEdit.C.

179 {
180  error_->setText(tr("msg.file-too-large")
181  .arg(size / 1024)
182  .arg(WApplication::instance()->maximumRequestSize() / 1024));
183  uploadFailed_ = true;
184 
185  /*
186  * Signal to the Composer that a new asyncrhonous file upload was processed.
187  */
188  uploadDone_.emit();
189 }
void emit(A1 a1=NoClass::none, A2 a2=NoClass::none, A3 a3=NoClass::none, A4 a4=NoClass::none, A5 a5=NoClass::none, A6 a6=NoClass::none) const
Signal< void > uploadDone_
WText * error_
The text box to display an error (empty or too big file)
bool uploadFailed_
The state of the last upload process.
void AttachmentEdit::remove ( )
private

Slot triggered when the users wishes to remove this attachment edit.

Definition at line 173 of file AttachmentEdit.C.

174 {
176 }
void removeAttachment(AttachmentEdit *attachment)
Remove the given attachment edit.
Definition: Composer.C:264
Composer * composer_
Signal<void>& AttachmentEdit::uploadDone ( )
inline

Signal emitted when new attachment(s) have been uploaded (or failed to upload.

Definition at line 63 of file AttachmentEdit.h.

63 { return uploadDone_; }
Signal< void > uploadDone_
void AttachmentEdit::uploaded ( )
private

Slot triggered when the WFileUpload completed an upload.

Definition at line 145 of file AttachmentEdit.C.

146 {
147  std::vector<Http::UploadedFile> files = upload_->uploadedFiles();
148 
149  if (!files.empty()) {
150  /*
151  * Delete this widgets since we have a succesfull upload.
152  */
153  delete upload_;
154  upload_ = 0;
155  delete remove_;
156  remove_ = 0;
157  delete error_;
158  error_ = 0;
159 
160  for (unsigned i = 0; i < files.size(); ++i)
161  uploadInfo_.push_back(new UploadInfo(files[i], this));
162  } else {
163  error_->setText(tr("msg.file-empty"));
164  uploadFailed_ = true;
165  }
166 
167  /*
168  * Signal to the Composer that a new asynchronous file upload was processed.
169  */
170  uploadDone_.emit();
171 }
void emit(A1 a1=NoClass::none, A2 a2=NoClass::none, A3 a3=NoClass::none, A4 a4=NoClass::none, A5 a5=NoClass::none, A6 a6=NoClass::none) const
Signal< void > uploadDone_
Option * remove_
The option to cancel the file upload.
WFileUpload * upload_
The WFileUpload control.
const std::vector< Http::UploadedFile > & uploadedFiles() const
WText * error_
The text box to display an error (empty or too big file)
bool uploadFailed_
The state of the last upload process.
std::vector< UploadInfo * > uploadInfo_
bool AttachmentEdit::uploadFailed ( ) const
inline

Returns whether the upload failed.

Definition at line 54 of file AttachmentEdit.h.

54 { return uploadFailed_; }
bool uploadFailed_
The state of the last upload process.
bool AttachmentEdit::uploadNow ( )

Updates the file now.

Returns whether a new file will be uploaded. If so, the uploadDone signal will be signalled when the file is uploaded (or failed to upload).

Definition at line 129 of file AttachmentEdit.C.

130 {
131  /*
132  * See if this attachment still needs to be uploaded,
133  * and return if a new asynchronous upload is started.
134  */
135  if (upload_) {
136  if (upload_->canUpload()) {
137  upload_->upload();
138  return true;
139  } else
140  return false;
141  } else
142  return false;
143 }
bool canUpload() const
WFileUpload * upload_
The WFileUpload control.

Member Data Documentation

Composer* AttachmentEdit::composer_
private

Definition at line 66 of file AttachmentEdit.h.

WText* AttachmentEdit::error_
private

The text box to display an error (empty or too big file)

Definition at line 90 of file AttachmentEdit.h.

Option* AttachmentEdit::remove_
private

The option to cancel the file upload.

Definition at line 93 of file AttachmentEdit.h.

WFileUpload* AttachmentEdit::upload_
private

The WFileUpload control.

Definition at line 71 of file AttachmentEdit.h.

Signal<void> AttachmentEdit::uploadDone_
private

Definition at line 68 of file AttachmentEdit.h.

bool AttachmentEdit::uploadFailed_
private

The state of the last upload process.

Definition at line 96 of file AttachmentEdit.h.

std::vector<UploadInfo *> AttachmentEdit::uploadInfo_
private

Definition at line 87 of file AttachmentEdit.h.


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

Generated on Wed Jun 11 2014 for the C++ Web Toolkit (Wt) by doxygen 1.8.7