You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
5.6 KiB
218 lines
5.6 KiB
/*
|
|
* Copyright (C) 2015-2018 Département de l'Instruction Publique (DIP-SEM)
|
|
*
|
|
* Copyright (C) 2013 Open Education Foundation
|
|
*
|
|
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour
|
|
* l'Education Numérique en Afrique (GIP ENA)
|
|
*
|
|
* This file is part of OpenBoard.
|
|
*
|
|
* OpenBoard is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, version 3 of the License,
|
|
* with a specific linking exception for the OpenSSL project's
|
|
* "OpenSSL" library (or with modified versions of it that use the
|
|
* same license as the "OpenSSL" library).
|
|
*
|
|
* OpenBoard is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with OpenBoard. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include <QFileDialog>
|
|
|
|
#include "UBUpdateDlg.h"
|
|
#include "core/UBApplication.h"
|
|
#include "UBMainWindow.h"
|
|
|
|
#include "core/memcheck.h"
|
|
|
|
UBUpdateDlg::UBUpdateDlg(QWidget *parent, int nbFiles, const QString& bkpPath)
|
|
: QDialog(parent)
|
|
, mMainLayout(NULL)
|
|
, mNbFilesLabel(NULL)
|
|
, mBkpLabel(NULL)
|
|
, mBkpPath(NULL)
|
|
, mBrowseBttn(NULL)
|
|
, mpDlgBttn(NULL)
|
|
, mLayout(NULL)
|
|
, mHLayout(NULL)
|
|
, mStackedWidget(NULL)
|
|
, mDialogWidget(NULL)
|
|
, mProgressWidget(NULL)
|
|
, mProgressLayout(NULL)
|
|
, mProgressLabel(NULL)
|
|
|
|
{
|
|
mDialogWidget = new QWidget(this);
|
|
mProgressWidget = new QWidget(this);
|
|
|
|
mStackedWidget = new QStackedWidget(this);
|
|
mStackedWidget->addWidget(mDialogWidget);
|
|
mStackedWidget->addWidget(mProgressWidget);
|
|
|
|
setFixedSize(450, 110);
|
|
setModal(true);
|
|
setWindowTitle(tr("Document updater"));
|
|
mLayout = new QVBoxLayout();
|
|
setLayout(mLayout);
|
|
|
|
QString str = QString::number(nbFiles);
|
|
str.append(tr(" files require an update."));
|
|
mNbFilesLabel = new QLabel(mDialogWidget);
|
|
mNbFilesLabel->setText(str);
|
|
|
|
mLayout->addWidget(mNbFilesLabel);
|
|
|
|
mBkpLabel = new QLabel(mDialogWidget);
|
|
mBkpLabel->setText(tr("Backup path: "));
|
|
|
|
mBkpPath = new QLineEdit(mDialogWidget);
|
|
mBkpPath->setText(bkpPath);
|
|
|
|
mBrowseBttn = new QPushButton(mDialogWidget);
|
|
mBrowseBttn->setText(tr("Browse"));
|
|
|
|
mHLayout = new QHBoxLayout();
|
|
mHLayout->addWidget(mBkpLabel);
|
|
mHLayout->addWidget(mBkpPath, 1);
|
|
mHLayout->addWidget(mBrowseBttn);
|
|
|
|
mLayout->addLayout(mHLayout);
|
|
|
|
mpDlgBttn = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, mDialogWidget);
|
|
mLayout->addWidget(mpDlgBttn);
|
|
|
|
mpDlgBttn->button(QDialogButtonBox::Ok)->setText(tr("Update"));
|
|
mpDlgBttn->button(QDialogButtonBox::Cancel)->setText(tr("Remind me later"));
|
|
|
|
QObject::connect(mBrowseBttn, SIGNAL(clicked()), this, SLOT(onBrowse()));
|
|
QObject::connect(mpDlgBttn, SIGNAL(accepted()), this, SLOT(onUpdate()));
|
|
QObject::connect(mpDlgBttn, SIGNAL(rejected()), this, SLOT(reject()));
|
|
mDialogWidget->setLayout(mLayout);
|
|
mStackedWidget->setCurrentWidget(mDialogWidget);
|
|
|
|
mMainLayout = new QVBoxLayout();
|
|
this->setLayout(mMainLayout);
|
|
mMainLayout->addWidget(mStackedWidget);
|
|
}
|
|
|
|
UBUpdateDlg::~UBUpdateDlg()
|
|
{
|
|
if (NULL != mpDlgBttn)
|
|
{
|
|
delete mpDlgBttn;
|
|
mpDlgBttn = NULL;
|
|
}
|
|
|
|
if (mNbFilesLabel) {
|
|
delete mNbFilesLabel;
|
|
mNbFilesLabel = NULL;
|
|
}
|
|
|
|
if (mBkpLabel) {
|
|
delete mBkpLabel;
|
|
mBkpLabel = NULL;
|
|
}
|
|
|
|
if (mBkpPath) {
|
|
delete mBkpPath;
|
|
mBkpPath = NULL;
|
|
}
|
|
|
|
if (mBrowseBttn) {
|
|
delete mBrowseBttn;
|
|
mBrowseBttn = NULL;
|
|
}
|
|
|
|
if (mProgressLabel) {
|
|
delete mProgressLabel;
|
|
mProgressLabel = NULL;
|
|
}
|
|
|
|
if (mHLayout) {
|
|
delete mHLayout;
|
|
mHLayout = NULL;
|
|
}
|
|
|
|
if (mLayout) {
|
|
delete mLayout;
|
|
mLayout = NULL;
|
|
}
|
|
|
|
if (mProgressLayout) {
|
|
delete mProgressLayout;
|
|
mProgressLayout = NULL;
|
|
}
|
|
|
|
if (mDialogWidget) {
|
|
delete mDialogWidget;
|
|
mDialogWidget = NULL;
|
|
}
|
|
|
|
if (mProgressWidget) {
|
|
delete mProgressWidget;
|
|
mProgressWidget = NULL;
|
|
}
|
|
|
|
if (mStackedWidget) {
|
|
delete mStackedWidget;
|
|
mStackedWidget = NULL;
|
|
}
|
|
|
|
if (mMainLayout) {
|
|
delete mMainLayout;
|
|
mMainLayout = NULL;
|
|
}
|
|
}
|
|
|
|
void UBUpdateDlg::onBrowse()
|
|
{
|
|
QString qsSelectedDir;
|
|
qsSelectedDir = QFileDialog::getExistingDirectory(this, tr("Select a backup folder"), mBkpPath->text());
|
|
mBkpPath->setText(qsSelectedDir);
|
|
}
|
|
|
|
void UBUpdateDlg::onUpdate()
|
|
{
|
|
mProgressLabel = new QLabel(mProgressWidget);
|
|
mProgressLabel->setText(tr("Please wait the import process will start soon..."));
|
|
mProgressLayout = new QHBoxLayout();
|
|
mProgressLayout->addWidget(mProgressLabel);
|
|
mProgressWidget->setLayout(mProgressLayout);
|
|
mStackedWidget->setCurrentWidget(mProgressWidget);
|
|
emit updateFiles();
|
|
}
|
|
|
|
void UBUpdateDlg::onFilesUpdated(bool bResult)
|
|
{
|
|
this->hide();
|
|
QString qsMsg;
|
|
|
|
if (bResult) {
|
|
qsMsg = tr("Files update successful!\nPlease reboot the application to access the updated documents.");
|
|
}
|
|
else {
|
|
qsMsg = tr("An error occured during the update. The files have not been affected.");
|
|
}
|
|
UBApplication::mainWindow->information(tr("Files update results"), qsMsg);
|
|
}
|
|
|
|
QString UBUpdateDlg::backupPath()
|
|
{
|
|
return mBkpPath->text();
|
|
}
|
|
|
|
void UBUpdateDlg::transitioningFile(QString fileName)
|
|
{
|
|
mProgressLabel->setText(tr("Updating file ") + fileName);
|
|
}
|
|
|
|
|