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/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index 1468e753..f6501393 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; @@ -677,6 +679,10 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is { case eUBDockPaletteWidget_BOARD: { + // On Application start up the mAddItemPalette isn't initialized yet + if(mAddItemPalette){ + mAddItemPalette->setParent(UBApplication::boardController->controlContainer()); + } mLeftPalette->assignParent(mContainer); mRightPalette->assignParent(mContainer); mRightPalette->stackUnder(mStylusPalette); @@ -710,6 +716,7 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is case eUBDockPaletteWidget_DESKTOP: { + mAddItemPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView()); mLeftPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView()); mRightPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView()); mRightPalette->lower(); @@ -745,7 +752,7 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is mRightPalette->setAdditionalVOffset(30); #endif - if( !isInit ) + if(!isInit) UBApplication::applicationController->uninotesController()->TransparentWidgetResized(); if (mWebToolsCurrentPalette) @@ -755,6 +762,7 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is case eUBDockPaletteWidget_WEB: { + mAddItemPalette->setParent(UBApplication::mainWindow); if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL) { // tmp variable? diff --git a/src/board/UBFeaturesController.cpp b/src/board/UBFeaturesController.cpp index d5bbbcee..f8f329d0 100644 --- a/src/board/UBFeaturesController.cpp +++ b/src/board/UBFeaturesController.cpp @@ -265,17 +265,17 @@ UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) : trashDirectoryPath = QUrl::fromLocalFile(UBSettings::userTrashDirPath()); rootElement = UBFeature(QString(), QImage( ":images/libpalette/home.png" ), "root", QUrl()); - audiosElement = UBFeature( rootPath, QImage(":images/libpalette/AudiosCategory.svg"), "Audios" , mUserAudioDirectoryPath, FEATURE_CATEGORY); - moviesElement = UBFeature( rootPath, QImage(":images/libpalette/MoviesCategory.svg"), "Movies" , mUserVideoDirectoryPath, FEATURE_CATEGORY); - picturesElement = UBFeature( rootPath, QImage(":images/libpalette/PicturesCategory.svg"), "Pictures" , mUserPicturesDirectoryPath, FEATURE_CATEGORY); - flashElement = UBFeature( rootPath, QImage(":images/libpalette/FlashCategory.svg"), "Animations" , mUserAnimationDirectoryPath, FEATURE_CATEGORY); - interactElement = UBFeature( rootPath, QImage(":images/libpalette/InteractivesCategory.svg"), "Interactivities" , mLibInteractiveDirectoryPath, FEATURE_CATEGORY); - applicationsElement = UBFeature( rootPath, QImage(":images/libpalette/ApplicationsCategory.svg"), "Applications" , mUserInteractiveDirectoryPath, FEATURE_CATEGORY); - shapesElement = UBFeature( rootPath, QImage(":images/libpalette/ShapesCategory.svg"), "Shapes" , mLibShapesDirectoryPath, FEATURE_CATEGORY ); - favoriteElement = UBFeature( rootPath, QImage(":images/libpalette/FavoritesCategory.svg"), "Favorites", QUrl("favorites"), FEATURE_FAVORITE ); - webSearchElement = UBFeature( rootPath, QImage(":images/libpalette/WebSearchCategory.svg"), "Web search", mLibSearchDirectoryPath, FEATURE_CATEGORY); - - trashElement = UBFeature( rootPath, QImage(":images/libpalette/TrashCategory.svg"), "Trash", trashDirectoryPath, FEATURE_TRASH ); + audiosElement = UBFeature( rootPath, QImage(":images/libpalette/AudiosCategory.svg"), tr("Audios") , mUserAudioDirectoryPath, FEATURE_CATEGORY); + moviesElement = UBFeature( rootPath, QImage(":images/libpalette/MoviesCategory.svg"), tr("Movies") , mUserVideoDirectoryPath, FEATURE_CATEGORY); + picturesElement = UBFeature( rootPath, QImage(":images/libpalette/PicturesCategory.svg"), tr("Pictures") , mUserPicturesDirectoryPath, FEATURE_CATEGORY); + flashElement = UBFeature( rootPath, QImage(":images/libpalette/FlashCategory.svg"), tr("Animations") , mUserAnimationDirectoryPath, FEATURE_CATEGORY); + interactElement = UBFeature( rootPath, QImage(":images/libpalette/InteractivesCategory.svg"), tr("Interactivities") , mLibInteractiveDirectoryPath, FEATURE_CATEGORY); + applicationsElement = UBFeature( rootPath, QImage(":images/libpalette/ApplicationsCategory.svg"), tr("Applications") , mUserInteractiveDirectoryPath, FEATURE_CATEGORY); + shapesElement = UBFeature( rootPath, QImage(":images/libpalette/ShapesCategory.svg"), tr("Shapes") , mLibShapesDirectoryPath, FEATURE_CATEGORY ); + favoriteElement = UBFeature( rootPath, QImage(":images/libpalette/FavoritesCategory.svg"), tr("Favorites"), QUrl("favorites"), FEATURE_FAVORITE ); + webSearchElement = UBFeature( rootPath, QImage(":images/libpalette/WebSearchCategory.svg"), tr("Web search"), mLibSearchDirectoryPath, FEATURE_CATEGORY); + + trashElement = UBFeature( rootPath, QImage(":images/libpalette/TrashCategory.svg"), tr("Trash"), trashDirectoryPath, FEATURE_TRASH ); featuresList = new QList (); diff --git a/src/domain/UBGraphicsMediaItem.cpp b/src/domain/UBGraphicsMediaItem.cpp index b02c89b4..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()-3, height()-3, 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) { diff --git a/src/gui/UBFeaturesWidget.cpp b/src/gui/UBFeaturesWidget.cpp index ccc52c11..74b0600e 100644 --- a/src/gui/UBFeaturesWidget.cpp +++ b/src/gui/UBFeaturesWidget.cpp @@ -107,7 +107,7 @@ void UBFeaturesWidget::currentSelected(const QModelIndex ¤t) QString objName = sender()->objectName(); if (objName.isEmpty()) { - qWarning() << "incorrrect sender"; + qWarning() << "incorrect sender"; } else if (objName == objNamePathList) { //Calling to reset the model for listView. Maybe separate function needed controller->searchStarted("", centralWidget->listView()); @@ -478,12 +478,12 @@ UBFeaturesCentralWidget::UBFeaturesCentralWidget(QWidget *parent) : QWidget(pare //Used to show search bar on the search widget webView = new UBFeaturesWebView(this); - //filling stackwidget - mStackedWidget->addWidget(mNavigator); - mStackedWidget->addWidget(mFeatureProperties); - mStackedWidget->addWidget(webView); - mStackedWidget->setCurrentIndex(MainList); - mStackedWidget->setContentsMargins(0, 0, 0, 0); + //filling stackwidget + mStackedWidget->addWidget(mNavigator); + mStackedWidget->addWidget(mFeatureProperties); + mStackedWidget->addWidget(webView); + mStackedWidget->setCurrentIndex(MainList); + mStackedWidget->setContentsMargins(0, 0, 0, 0); mAdditionalDataContainer = new QStackedWidget(this); @@ -542,7 +542,7 @@ void UBFeaturesCentralWidget::setPropertiesThumbnail(const QPixmap &pix) UBFeature UBFeaturesCentralWidget::getCurElementFromProperties() { - return mFeatureProperties->getCurrentElement(); + return mFeatureProperties->getCurrentElement(); } void UBFeaturesCentralWidget::showAdditionalData(AddWidget pWidgetType, AddWidgetState pState) @@ -732,7 +732,7 @@ UBFeaturesWebView::UBFeaturesWebView(QWidget* parent, const char* name):QWidget( mpView->setObjectName("SearchEngineView"); mpSankoreAPI = new UBWidgetUniboardAPI(UBApplication::boardController->activeScene()); mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI); - + connect(mpView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared())); mpWebSettings = QWebSettings::globalSettings(); mpWebSettings->setAttribute(QWebSettings::JavaEnabled, true); mpWebSettings->setAttribute(QWebSettings::PluginsEnabled, true); @@ -767,6 +767,11 @@ UBFeaturesWebView::~UBFeaturesWebView() } } +void UBFeaturesWebView::javaScriptWindowObjectCleared() +{ + mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI); +} + void UBFeaturesWebView::showElement(const UBFeature &elem) { QString qsWidgetName; diff --git a/src/gui/UBFeaturesWidget.h b/src/gui/UBFeaturesWidget.h index ba782a3a..fda210cc 100644 --- a/src/gui/UBFeaturesWidget.h +++ b/src/gui/UBFeaturesWidget.h @@ -288,6 +288,7 @@ public: private slots: void onLoadFinished(bool ok); + void javaScriptWindowObjectCleared(); private: QWebView* mpView; 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/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(); } } 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 {