Exporting to CFF mechanism was appended by storing warnings about exporting items content.

If warnings was appeared - dialog with warnings details appeared. Each warning is a separate QTextEdit.

That mechanism is general for UBExportAdaptor and can be simple implemented and used in any import or export adaptor.
preferencesAboutTextFull
Aleksei Kanash 12 years ago
parent 0b8014ee11
commit 16a9d0d7d0
  1. 16
      plugins/cffadaptor/src/UBCFFAdaptor.cpp
  2. 7
      plugins/cffadaptor/src/UBCFFAdaptor.h
  3. 1
      plugins/cffadaptor/src/UBCFFConstants.h
  4. 11
      src/adaptors/UBExportAdaptor.cpp
  5. 2
      src/adaptors/UBExportAdaptor.h
  6. 1
      src/adaptors/UBExportCFF.cpp
  7. 56
      src/gui/UBMessagesDialog.cpp
  8. 37
      src/gui/UBMessagesDialog.h
  9. 6
      src/gui/gui.pri

@ -47,7 +47,12 @@ bool UBCFFAdaptor::convertUBZToIWB(const QString &from, const QString &to)
qDebug() << "The convertrer class is invalid, stopping conversion. Error message" << tmpConvertrer.lastErrStr();
return false;
}
if (!tmpConvertrer.parse()) {
bool bParceRes = tmpConvertrer.parse();
mConversionMessages << tmpConvertrer.getMessages();
if (!bParceRes) {
return false;
}
@ -299,6 +304,12 @@ bool UBCFFAdaptor::deleteDir(const QString& pDirPath) const
return dir.rmdir(pDirPath);
}
QList<QString> UBCFFAdaptor::getConversionMessages()
{
return mConversionMessages;
}
bool UBCFFAdaptor::freeDir(const QString &dir)
{
bool result = true;
@ -1110,6 +1121,9 @@ bool UBCFFAdaptor::UBToCFFConverter::setContentFromUBZ(const QDomElement &ubzEle
}
}else
{
addLastExportError(QObject::tr("Element ID = ") + QString("%1 \r\n").arg(ubzElement.attribute(aUBZUuid))
+ QString("Source file = ") + QString("%1 \r\n").arg(ubzElement.attribute(aUBZSource))
+ QObject::tr("Content is not supported in destination format."));
bRet = false;
}

@ -20,6 +20,7 @@ public:
bool convertUBZToIWB(const QString &from, const QString &to);
bool deleteDir(const QString& pDirPath) const;
QList<QString> getConversionMessages();
private:
QString uncompressZip(const QString &zipFile);
@ -33,6 +34,7 @@ private:
private:
QStringList tmpDirs;
QList<QString> mConversionMessages;
private:
@ -46,8 +48,12 @@ private:
bool isValid() const;
QString lastErrStr() const {return errorStr;}
bool parse();
QList<QString> getMessages() {return mExportErrorList;}
private:
void addLastExportError(QString error) {mExportErrorList.append(error);}
void fillNamespaces();
bool parseMetadata();
@ -119,6 +125,7 @@ private:
QString contentIWBFileName() const;
private:
QList<QString> mExportErrorList;
QMap<QString, QString> iwbSVGItemsAttributes;
QDomDocument *mDataModel; //model for reading indata
QXmlStreamWriter *mIWBContentWriter; //stream to write outdata

@ -74,6 +74,7 @@ const QString aRef = "ref"; // as reference for applying additional attributes
const QString aSVGHref = "xlink:href"; // reference to file
const QString aIWBHref = "ref"; // reference to element ID
const QString aUBZHref = "href";
const QString aUBZSource = "source";
const QString aSrc = "src";
const QString aSVGRequiredExtension = "requiredExtensions";

@ -24,6 +24,7 @@
#include "core/UBApplication.h"
#include "gui/UBMainWindow.h"
#include "gui/UBMessagesDialog.h"
#include "core/memcheck.h"
@ -103,3 +104,13 @@ QString UBExportAdaptor::askForDirName(UBDocumentProxy* pDocument, const QString
return dirname;
}
void UBExportAdaptor::showErrorsList(QList<QString> errorsList)
{
if (errorsList.count())
{
UBMessagesDialog *dialog = new UBMessagesDialog(tr("Warnings during export was appeared"), UBApplication::mainWindow);
dialog->setMessages(errorsList);
dialog->show();
}
}

@ -46,6 +46,8 @@ class UBExportAdaptor : public QObject
QString askForFileName(UBDocumentProxy* pDocument, const QString& pDialogTitle);
QString askForDirName(UBDocumentProxy* pDocument, const QString& pDialogTitle);
void showErrorsList(QList<QString> errorsList);
bool mIsVerbose;
};

@ -52,6 +52,7 @@ void UBExportCFF::persist(UBDocumentProxy* pDocument)
if (mIsVerbose)
UBApplication::showMessage(tr("Export failed."));
showErrorsList(toIWBExporter.getConversionMessages());
QApplication::restoreOverrideCursor();

@ -0,0 +1,56 @@
/*
* This program 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, either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "UBMessagesDialog.h"
UBMessagesDialog::UBMessagesDialog(QString windowTitle, QWidget *parent)
: QWidget(parent)
{
resize(400, 0);
setWindowTitle(windowTitle);
setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint);
}
void UBMessagesDialog::setMessages(const QList<QString> messages)
{
mMessages = messages;
if (mMessages.count())
{
QVBoxLayout *messagesLayout = new QVBoxLayout(this);
foreach (QString message, mMessages)
{
QTextEdit *messageBox = new QTextEdit(this);
messageBox->setMinimumHeight(55);
messageBox->setReadOnly(true);
messageBox->setFocusPolicy(Qt::NoFocus);
messageBox->setText(message);
messagesLayout->addWidget(messageBox);
}
QPushButton *closeButton = new QPushButton(tr("Close"), this);
connect(closeButton, SIGNAL(clicked(bool)), this, SLOT(dispose()));
messagesLayout->addWidget(closeButton);
setLayout(messagesLayout);
}
}
void UBMessagesDialog::dispose()
{
delete this;
}

@ -0,0 +1,37 @@
/*
* This program 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, either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef UB_MESSAGES_DIALOG_H_
#define UB_MESSAGES_DIALOG_H_
#include <QtGui>
class UBMessagesDialog : public QWidget
{
Q_OBJECT
public:
UBMessagesDialog(QString windowTitle, QWidget *parent = NULL);
void setMessages(const QList<QString> messages);
private slots:
void dispose();
private:
QList<QString> mMessages;
int mMessagesFontSize;
};
#endif UB_MESSAGES_DIALOG_H_

@ -50,7 +50,8 @@ HEADERS += src/gui/UBThumbnailView.h \
src/gui/UBFeaturesActionBar.h \
src/gui/UBDockTeacherGuideWidget.h \
src/gui/UBTeacherGuideWidget.h \
src/gui/UBTeacherGuideWidgetsTools.h
src/gui/UBTeacherGuideWidgetsTools.h \
src/gui/UBMessagesDialog.h
SOURCES += src/gui/UBThumbnailView.cpp \
src/gui/UBFloatingPalette.cpp \
@ -103,7 +104,8 @@ SOURCES += src/gui/UBThumbnailView.cpp \
src/gui/UBFeaturesActionBar.cpp \
src/gui/UBDockTeacherGuideWidget.cpp \
src/gui/UBTeacherGuideWidget.cpp \
src/gui/UBTeacherGuideWidgetsTools.cpp
src/gui/UBTeacherGuideWidgetsTools.cpp \
src/gui/UBMessagesDialog.cpp
win32 {

Loading…
Cancel
Save