Files
k7/PopupUploader.cpp

112 lines
3.0 KiB
C++
Raw Permalink Normal View History

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