From 16a9d0d7d0e77ca0f6f8a03fec9b31187e83b137 Mon Sep 17 00:00:00 2001 From: Aleksei Kanash Date: Thu, 16 Aug 2012 18:04:13 +0300 Subject: [PATCH 1/3] 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. --- plugins/cffadaptor/src/UBCFFAdaptor.cpp | 16 ++++++- plugins/cffadaptor/src/UBCFFAdaptor.h | 7 ++++ plugins/cffadaptor/src/UBCFFConstants.h | 1 + src/adaptors/UBExportAdaptor.cpp | 11 +++++ src/adaptors/UBExportAdaptor.h | 2 + src/adaptors/UBExportCFF.cpp | 1 + src/gui/UBMessagesDialog.cpp | 56 +++++++++++++++++++++++++ src/gui/UBMessagesDialog.h | 37 ++++++++++++++++ src/gui/gui.pri | 6 ++- 9 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 src/gui/UBMessagesDialog.cpp create mode 100644 src/gui/UBMessagesDialog.h diff --git a/plugins/cffadaptor/src/UBCFFAdaptor.cpp b/plugins/cffadaptor/src/UBCFFAdaptor.cpp index ed59738c..e9dae78f 100644 --- a/plugins/cffadaptor/src/UBCFFAdaptor.cpp +++ b/plugins/cffadaptor/src/UBCFFAdaptor.cpp @@ -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 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; } diff --git a/plugins/cffadaptor/src/UBCFFAdaptor.h b/plugins/cffadaptor/src/UBCFFAdaptor.h index 385df3cc..d9891460 100644 --- a/plugins/cffadaptor/src/UBCFFAdaptor.h +++ b/plugins/cffadaptor/src/UBCFFAdaptor.h @@ -20,6 +20,7 @@ public: bool convertUBZToIWB(const QString &from, const QString &to); bool deleteDir(const QString& pDirPath) const; + QList getConversionMessages(); private: QString uncompressZip(const QString &zipFile); @@ -33,6 +34,7 @@ private: private: QStringList tmpDirs; + QList mConversionMessages; private: @@ -46,8 +48,12 @@ private: bool isValid() const; QString lastErrStr() const {return errorStr;} bool parse(); + QList 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 mExportErrorList; QMap iwbSVGItemsAttributes; QDomDocument *mDataModel; //model for reading indata QXmlStreamWriter *mIWBContentWriter; //stream to write outdata diff --git a/plugins/cffadaptor/src/UBCFFConstants.h b/plugins/cffadaptor/src/UBCFFConstants.h index 9d7707ee..3243f72f 100644 --- a/plugins/cffadaptor/src/UBCFFConstants.h +++ b/plugins/cffadaptor/src/UBCFFConstants.h @@ -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"; diff --git a/src/adaptors/UBExportAdaptor.cpp b/src/adaptors/UBExportAdaptor.cpp index 63843bb2..ffa5b8de 100644 --- a/src/adaptors/UBExportAdaptor.cpp +++ b/src/adaptors/UBExportAdaptor.cpp @@ -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 errorsList) +{ + if (errorsList.count()) + { + UBMessagesDialog *dialog = new UBMessagesDialog(tr("Warnings during export was appeared"), UBApplication::mainWindow); + dialog->setMessages(errorsList); + dialog->show(); + } +} \ No newline at end of file diff --git a/src/adaptors/UBExportAdaptor.h b/src/adaptors/UBExportAdaptor.h index edffaaf5..9051d496 100644 --- a/src/adaptors/UBExportAdaptor.h +++ b/src/adaptors/UBExportAdaptor.h @@ -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 errorsList); + bool mIsVerbose; }; diff --git a/src/adaptors/UBExportCFF.cpp b/src/adaptors/UBExportCFF.cpp index bc97a730..8691fdf7 100644 --- a/src/adaptors/UBExportCFF.cpp +++ b/src/adaptors/UBExportCFF.cpp @@ -52,6 +52,7 @@ void UBExportCFF::persist(UBDocumentProxy* pDocument) if (mIsVerbose) UBApplication::showMessage(tr("Export failed.")); + showErrorsList(toIWBExporter.getConversionMessages()); QApplication::restoreOverrideCursor(); diff --git a/src/gui/UBMessagesDialog.cpp b/src/gui/UBMessagesDialog.cpp new file mode 100644 index 00000000..22828d36 --- /dev/null +++ b/src/gui/UBMessagesDialog.cpp @@ -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 . +*/ + +#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 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; +} \ No newline at end of file diff --git a/src/gui/UBMessagesDialog.h b/src/gui/UBMessagesDialog.h new file mode 100644 index 00000000..d5d3efaa --- /dev/null +++ b/src/gui/UBMessagesDialog.h @@ -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 . + */ + +#ifndef UB_MESSAGES_DIALOG_H_ +#define UB_MESSAGES_DIALOG_H_ + +#include + +class UBMessagesDialog : public QWidget +{ + Q_OBJECT + +public: + UBMessagesDialog(QString windowTitle, QWidget *parent = NULL); + void setMessages(const QList messages); + + private slots: + void dispose(); + +private: + QList mMessages; + int mMessagesFontSize; +}; + +#endif UB_MESSAGES_DIALOG_H_ \ No newline at end of file diff --git a/src/gui/gui.pri b/src/gui/gui.pri index 52939d44..61583d04 100644 --- a/src/gui/gui.pri +++ b/src/gui/gui.pri @@ -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 { From 1e93409dcf668e964fe1417898db70f4203704eb Mon Sep 17 00:00:00 2001 From: Aleksei Kanash Date: Thu, 16 Aug 2012 18:35:57 +0300 Subject: [PATCH 2/3] Zoom palette is on top now. --- src/board/UBBoardPaletteManager.cpp | 2 ++ src/gui/UBZoomPalette.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index 1468e753..7c19320a 100644 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -269,6 +269,8 @@ void UBBoardPaletteManager::setupPalettes() mZoomPalette = new UBZoomPalette(mContainer); + mStylusPalette->stackUnder(mZoomPalette); + QList backgroundsActions; backgroundsActions << UBApplication::mainWindow->actionPlainLightBackground; diff --git a/src/gui/UBZoomPalette.cpp b/src/gui/UBZoomPalette.cpp index 352c706e..4a039f81 100644 --- a/src/gui/UBZoomPalette.cpp +++ b/src/gui/UBZoomPalette.cpp @@ -109,5 +109,6 @@ void UBZoomPalette::refreshPalette() else { show(); + raise(); } } From dc4bb2eb454d8883eae598b640c670364d3ce0dc Mon Sep 17 00:00:00 2001 From: Aleksei Kanash Date: Thu, 16 Aug 2012 19:17:38 +0300 Subject: [PATCH 3/3] Mask was removed from AudioPresentationWidget. Border is 2px now. --- src/domain/UBGraphicsMediaItem.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/domain/UBGraphicsMediaItem.cpp b/src/domain/UBGraphicsMediaItem.cpp index 10818e56..76bbbd53 100644 --- a/src/domain/UBGraphicsMediaItem.cpp +++ b/src/domain/UBGraphicsMediaItem.cpp @@ -36,15 +36,13 @@ void UBAudioPresentationWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.fillRect(rect(), QBrush(Qt::white)); - painter.drawRoundedRect(1,1, width()-2, height()-2, height()/5, height()/5); - - QImage mask_img(size(), QImage::Format_Mono); - mask_img.fill(0xff); - QPainter mask_painter(&mask_img); - mask_painter.setBrush(QBrush( QColor(0, 0, 0))); - mask_painter.drawRoundedRect(1,1, width()-2, height()-2, height()/5, height()/5); + + QPen borderPen; + borderPen.setWidth(2); + borderPen.setColor(QColor(Qt::black)); - setMask(QBitmap::fromImage(mask_img)); + painter.setPen(borderPen); + painter.drawRect(0,0, width(), height()); if (QString() != mTitle) {