/* * File: PopupUploader.cpp * Author: SET - nmset@yandex.com * License : GPL v2 * Copyright SET - © 2019 * * Created on 13 octobre 2019, 18:48 */ #include "PopupUploader.h" #include "global.h" #include #include using namespace std; Uploader::Uploader(WWidget * anchorWidget, TransientMessageWidget * txtMessage, const WLength& width) : WPopupWidget(cpp14::make_unique()) { m_tmwMessage = txtMessage; m_upload = NULL; m_cwMain = NULL; m_cbConfirm = NULL; m_cbReConfirm = NULL; m_btnUpload = NULL; setTransient(true); setAnchorWidget(anchorWidget); setWidth(width); } Uploader::~Uploader() { } void Uploader::Create() { m_upload = new WFileUpload(); m_upload->setFileTextSize(10240); // Is really approximate m_upload->setMultiple(false); m_cwMain = static_cast (implementation()); // White in css file, like default background color. m_cwMain->setStyleClass("popup"); WVBoxLayout * vblMain = new WVBoxLayout(); m_cwMain->setLayout(unique_ptr (vblMain)); vblMain->addWidget(unique_ptr (m_upload)); m_cbConfirm = new WCheckBox(TR("Confirm")); vblMain->addWidget(unique_ptr (m_cbConfirm)); m_cbReConfirm = new WCheckBox(TR("ReConfirm")); vblMain->addWidget(unique_ptr (m_cbReConfirm)); m_btnUpload = new WPushButton(TR("Upload")); vblMain->addWidget(unique_ptr (m_btnUpload)); m_cbReConfirm->hide(); m_cbConfirm->hide(); m_btnUpload->hide(); m_cbConfirm->changed().connect(this, &Uploader::OnCbConfirm); m_cbReConfirm->changed().connect(this, &Uploader::OnCbReConfirm); m_btnUpload->clicked().connect(this, &Uploader::DoUpload); m_upload->uploaded().connect(this, &Uploader::OnUploadDone); m_upload->fileTooLarge().connect(this, &Uploader::OnFileTooLarge); m_upload->changed().connect(this, &Uploader::Reset); this->hidden().connect(this, &Uploader::Reset); } void Uploader::Reset() { m_btnUpload->hide(); m_cbReConfirm->setUnChecked(); m_cbReConfirm->hide(); m_cbConfirm->setUnChecked(); m_cbConfirm->show(); m_btnUpload->enable(); } void Uploader::OnCbConfirm() { m_cbReConfirm->setHidden(m_cbConfirm->checkState() != CheckState::Checked); m_cbReConfirm->setUnChecked(); m_btnUpload->setHidden(m_cbReConfirm->checkState() != CheckState::Checked); } void Uploader::OnCbReConfirm() { m_btnUpload->setHidden(m_cbReConfirm->checkState() != CheckState::Checked); } void Uploader::DoUpload() { if (m_upload->canUpload()) { m_btnUpload->disable(); m_upload->upload(); } else { m_tmwMessage->SetText(TR("CantUpload")); } } void Uploader::OnUploadDone() { m_sigUploadDone.emit(m_upload->spoolFileName()); m_btnUpload->enable(); } void Uploader::OnFileTooLarge() { m_tmwMessage->SetText(TR("FileTooLarge")); m_btnUpload->enable(); }