diff --git a/TEST_OpenBoard_Win32.txt b/TEST_OpenBoard_Win32.txt new file mode 100644 index 00000000..92c418a0 --- /dev/null +++ b/TEST_OpenBoard_Win32.txt @@ -0,0 +1,27 @@ + + + + **************************** + * TEST OpenBoard * + * under Win32 (Windows 7) * + * * + **************************** + + +======================|====================| + Modules | Status | +======================|====================| +Network Manager | web OK | +----------------------|--------------------| + the video media |.avi not working | + | .mp4 works in small| + | format | +----------------------|--------------------| + audio | OK | +----------------------|--------------------| + | | +----------------------|--------------------| + | | +----------------------|--------------------| + | | +----------------------|--------------------| diff --git a/changes_porting_qt5.txt b/changes_porting_qt5.txt index 3702136e..0819c3f7 100644 --- a/changes_porting_qt5.txt +++ b/changes_porting_qt5.txt @@ -1,6 +1,7 @@ ******************************* * PORTING QT4->QT5 * - * CHANGES * + * CHANGES * + * win32 compilaton &exec * ******************************* @@ -373,8 +374,6 @@ UBOEmbedParser.cpp -replace toAscii--> toLatin1 qurl.setEncodedUrl(url.toLatin1()); (line 230) --replace - WBSqueezeLabel.h ----------------- @@ -394,7 +393,6 @@ UBOEmbedParser.cpp - replace //qurl.setEncodedUrl(url.toAscii()); by qurl.setUrl(url.toLatin1(),QUrl::TolerantMode); - WBChaseWidget.cpp ------------------ @@ -629,16 +627,241 @@ UBWindowCaptureDelegate_win.h qtsingleapplication.cpp ------------------------ -- replace the old verison by the sources files repository +- replace the content by the source file repository (CW) qtsingleapplication.h ------------------------ -- add the snippet code: - // Obsolete: - void initialize(bool dummy = true) - { isRunning(); Q_UNUSED(dummy) } +- replace the content by the source file repository (CW) + + + +UBWindowCaptureDelegate_win.cpp +-------------------------------- + + +************************************************ + TODO +************************************************ + +- solve the // mCapturedPixmap = QPixmap::grabWindow(mCurrentWindow); => pb of conversion between HWND and WId. + + +qtlockedfile_win.cpp +--------------------- + +- add #if QT_VERSION >= 0x050000 +#define QT_WA(unicode, ansi) unicode +#endif + +qtsingleapplication.cpp +------------------------- + +- remove the contentfrom source repository(CW). + +qtsingleapplication.h +------------------------- + +- remove the contentfrom source repository(CW). + +qtlocalpeer.h +------------- + +- replace the content by the old basis source repository (OpenBoard-Third-party) + +qtlocalpeer.cpp +--------------- +- replace the content by the old basis source repository (OpenBoard-Third-party) + + +UBNetworkAccessManager.cpp +-------------------------- +- replace //#include by #include + + +- replace // introMessage = introMessage.arg(Qt::escape(reply->url().toString())).arg(Qt::escape(reply->url().toString())); by : + + introMessage = introMessage.arg(QString(reply->url().toString())).toHtmlEscaped().arg(QString(reply->url().toString())).toHtmlEscaped(); + + +WBHistory.cpp +-------------- +- replace //#include by #include + +- replace reset() by beginResetModel(); + m_sourceRowCache.clear(); + endResetModel(); (Line 1213,1268,) + + +-replace //reset(); by + beginResetModel(); + endResetModel(); (Line 999,1006..) +} + +- replace createIndex(row, column, 0); by (Line 969,1131,1140) + createIndex(row, column); + +WBHistory.h +------------ + +- replace class WBHistoryFilterModel : public QAbstractProxyModel, by +class WBHistoryFilterModel : public QAbstractProxyModel, public QAbstractItemModel + + + +- ?? pb at the level of compiler error: + + +UBBoardView.cpp +---------------- + +************************************************ + TODO done cf below +************************************************ + +SOLVE THE ItemAt + +- comment the mouseReleaseEvent method +- comment the mousePressEvent method + + + + +WBHistory.cpp +-------------- + +- comment and remove //beginResetModel(); and //endResetModel(); (Line 247) +- comment and remove //beginResetModel(); and //endResetModel(); (Line 837-843) + + +UBApplication.cpp +------------------ + +-remove and comment //QApplication::setStyle(new UBStyle()); // Style is owned and deleted by the application. + + +UBTrapFlashController.h +----------------------- + +- replace //#include by #include . + +UBTrapFlashController.cpp +------------------------- +- replace //#ifdef Q_WS_WIN // Defined on Windows. by#ifdef Q_OS_WIN // Defined on Windows. + + +UBPodcastController.cpp +------------------------- + +-replace QDesktopServices::storageLocation. (Line 715) + +-replace by QStandardPaths::writableLocation. + +- replace repaintRect = repaintRect.unite(mSceneRepaintRectQueue.dequeue()); by repaintRect = repaintRect.united(mSceneRepaintRectQueue.dequeue()); + +- replace QRectF maxRect = rect.intersect(viewportRect); by RectF maxRect = rect.intersected(viewportRect); + +- replace repaintRect = repaintRect.unite(mWidgetRepaintRectQueue.dequeue()); by repaintRect = repaintRect.united(mWidgetRepaintRectQueue.dequeue()); + + + + +main.cpp +---------- + + +- move QMessageLogContext context_m; on line 58 + +- replace // qt_message_output(type, msg); by qt_message_output(type,context_m, msg); + + +*************************** +COMPILATION IN DEBUG MODE : +*************************** + +- compile all libraries (freetype.lib quazip.lib,xpdf.lib) with success +- issue: error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' + +=> 1st solution: compilation in RELEASE MODE + + +***************************** +COMPILATION IN RELEASE MODE : +***************************** + +- problem : LINK : fatal error LNK1123: échec lors de la conversion en fichier COFF msvc 2010 qt 5.2 +=> solution : +Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1 + +- install the followin tools in your computer quth the msvc 2010 config: + cf https://support.microsoft.com/fr-fr/kb/2934068 : + + + support microsoft : " Erreur se produit lorsque vous installez le Kit de développement logiciel Windows pour Windows 7 et.NET Framework 4 " + +steps : +------ +1) remove and reinstall Microsoft Visual C++ 2010 SP1 Redistributable Package (x32) : vcredist_x32.exe + +2) remove and reinstall Microsoft Visual C++ 2010 SP1 Redistributable Package (x64) : vcredist_x64.exe + +3) install Microsoft Windows SDK for Windows 7 and .NET Framework 4 (ISO). + +4) reinstall Microsoft Visual Studio 2010 Service Pack 1 (Installer) download the iso from the link https://www.microsoft.com/en-us/download/confirmation.aspx?id=23691 + +cf link : https://msdn.microsoft.com/fr-fr/library/7dz62kfh.aspx + +cf http://stackoverflow.com/questions/10888391/error-link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-inval + +=> solution : the tools cvtres.exe was broken so copy C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe + +into C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe + + +The compilation works with success except warning message as following : + +- UBExportCFF.obj : warning LNK4217: locally defined symbol ??1UBCFFAdaptor@@QAE@XZ (public: __thiscall UBCFFAdaptor::~UBCFFAdaptor(void)) +imported in function "public: virtual void __thiscall UBExportCFF::persist(class UBDocumentProxy *)" +(?persist@UBExportCFF@@UAEXPAVUBDocumentProxy@@@Z). + + +OpenBoard.pro +-------------- +- pb: fatal error LNK1123: échec lors de la conversion en fichier COFF vs 2010 qt 5.2 => add QMAKE_LFLAGS += /INCREMENTAL:NO + +UBBoardView.cpp +---------------- + +the ItemAt issue was solved by the last update methods from the repository. + + +UBGraphicsTextItem.cpp +---------------------- + +- replace //#include by #include . + +*************************** +COMPILATION IN DEBUG MODE : +*************************** + +issue: error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' + +solution : replace the following config libraries by debug_release flag (quazip.pro,xpdf.pro) + + +freetype.pro +-------- +- replace CONFIG += staticlib release by CONFIG += staticlib debug_and_release. + +quazip.pro +---------- + +- replace CONFIG += staticlib release by CONFIG += staticlib debug_and_release. + +xpdf.pro +-------- +- replace CONFIG += staticlib release by CONFIG += staticlib debug_and_release. diff --git a/src/domain/UBGraphicsMediaItem.cpp b/src/domain/UBGraphicsMediaItem.cpp index e9636a52..e4ea11a8 100644 --- a/src/domain/UBGraphicsMediaItem.cpp +++ b/src/domain/UBGraphicsMediaItem.cpp @@ -24,12 +24,10 @@ -#include #include "UBGraphicsGroupContainerItem.h" #include "UBGraphicsMediaItem.h" #include "UBGraphicsMediaItemDelegate.h" -#include "UBGraphicsItemDelegate.h" #include "UBGraphicsScene.h" #include "UBGraphicsDelegateFrame.h" #include "document/UBDocumentProxy.h" @@ -51,7 +49,13 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte { update(); - mMediaPlayer = new QMediaPlayer(this); + + //mMediaObject = new Phonon::MediaObject(this); + mMediaObject = new QMediaPlayer(this); + + //playlist = new QMediaPlaylist; + //mMediaObject->setPlaylist(playlist); + QString mediaPath = pMediaFileUrl.toString(); if ("" == mediaPath) @@ -61,11 +65,23 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte { mMediaType = mediaType_Video; - mAudioOutput = new QAudioOutput(QAudioFormat(), this); - mMediaPlayer->setNotifyInterval(50); - mVideoWidget = new QVideoWidget(); + //mAudioOutput = new Phonon::AudioOutput(Phonon::VideoCategory, this); + QAudioFormat format; // to define + format.setByteOrder(QAudioFormat::LittleEndian); + format.setSampleType(QAudioFormat::UnSignedInt); + + //mAudioOutput = new QAudioOutput(format, this); + mAudioOutput = new QMediaPlayer; + + //mMediaObject->setTickInterval(50); + mMediaObject->setPosition(50); + - mMediaPlayer->setVideoOutput(mVideoWidget); + //mVideoWidget = new Phonon::VideoWidget(); // owned and destructed by the scene ... + mVideoWidget = new QVideoWidget(); // owned and destructed by the scene ... + + //Phonon::createPath(mMediaObject, mVideoWidget); + mMediaObject->setVideoOutput(mVideoWidget); if(mVideoWidget->sizeHint() == QSize(1,1)){ mVideoWidget->resize(320,240); @@ -75,11 +91,19 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte haveLinkedImage = true; } - else if (mediaPath.toLower().contains("audios")){ + else if (mediaPath.toLower().contains("audios")) + { mMediaType = mediaType_Audio; - mAudioOutput = new QAudioOutput(QAudioFormat(), this); - mMediaPlayer->setNotifyInterval(1000); + QAudioFormat format; + format.setByteOrder(QAudioFormat::LittleEndian); + format.setSampleType(QAudioFormat::UnSignedInt); + + // mAudioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this); + //mAudioOutput = new QMediaPlayer(format, this); + mAudioOutput = new QMediaPlayer; + + //mMediaObject->setTickInterval(1000); mAudioWidget = new QWidget(); mAudioWidget->resize(320,26); mAudioWidget->setMinimumSize(150,26); @@ -87,8 +111,16 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte haveLinkedImage = false; } + //Phonon::createPath(mMediaObject, mAudioOutput); + //mSource = Phonon::MediaSource(pMediaFileUrl); + + //mMediaObject->setCurrentSource(mSource); + mMediaObject->setMedia(pMediaFileUrl); + + // we should create delegate after media objects because delegate uses his properties at creation. - setDelegate(new UBGraphicsMediaItemDelegate(this, mMediaPlayer)); + setDelegate(new UBGraphicsMediaItemDelegate(this, mMediaObject)); + // delegate should be created earler because we setWidget calls resize event for graphics proxy widgt. // resize uses delegate. @@ -109,18 +141,15 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly - connect(Delegate(), &UBGraphicsItemDelegate::showOnDisplayChanged, - this, &UBGraphicsMediaItem::showOnDisplayChanged); - - connect(mMediaPlayer, &QMediaPlayer::videoAvailableChanged, - this, &UBGraphicsMediaItem::hasMediaChanged); + connect(Delegate(), SIGNAL(showOnDisplayChanged(bool)), this, SLOT(showOnDisplayChanged(bool))); + connect(mMediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasMediaChanged(bool))); } UBGraphicsMediaItem::~UBGraphicsMediaItem() { - if (mMediaPlayer) - mMediaPlayer->stop(); + if (mMediaObject) + mMediaObject->stop(); } @@ -142,13 +171,13 @@ QVariant UBGraphicsMediaItem::itemChange(GraphicsItemChange change, const QVaria || (change == QGraphicsItem::ItemSceneChange) || (change == QGraphicsItem::ItemVisibleChange)) { - if (mMediaPlayer && (!isEnabled() || !isVisible() || !scene())) - mMediaPlayer->pause(); + if (mMediaObject && (!isEnabled() || !isVisible() || !scene())) + mMediaObject->pause(); } else if (change == QGraphicsItem::ItemSceneHasChanged) { if (!scene()) - mMediaPlayer->stop(); + mMediaObject->stop(); else { QString absoluteMediaFilename; @@ -158,7 +187,11 @@ QVariant UBGraphicsMediaItem::itemChange(GraphicsItemChange change, const QVaria absoluteMediaFilename = mMediaFileUrl.toLocalFile(); if (absoluteMediaFilename.length() > 0) - mMediaPlayer->setMedia(QUrl::fromLocalFile(absoluteMediaFilename)); + //mMediaObject->setCurrentSource(QMediaSource(absoluteMediaFilename)); + mMediaObject->setMedia(QUrl::fromLocalFile(absoluteMediaFilename)); + + + } } @@ -192,12 +225,7 @@ void UBGraphicsMediaItem::toggleMute() void UBGraphicsMediaItem::setMute(bool bMute) { mMuted = bMute; - - if (bMute) - mAudioOutput->setVolume(0); - else - mAudioOutput->setVolume(mVolume); - + mAudioOutput->setMuted(mMuted); mMutedByUserAction = mMuted; sIsMutedByDefault = mMuted; } @@ -205,9 +233,11 @@ void UBGraphicsMediaItem::setMute(bool bMute) void UBGraphicsMediaItem::hasMediaChanged(bool hasMedia) { - if(hasMedia && mMediaPlayer->isSeekable()) + if(hasMedia && mMediaObject->isSeekable()) { - mMediaPlayer->setPosition(mInitialPos); + //mMediaObject->seek(mInitialPos); + mMediaObject->setPosition(mInitialPos); + UBGraphicsMediaItemDelegate *med = dynamic_cast(Delegate()); if (med) med->updateTicker(initialPos()); @@ -224,7 +254,7 @@ UBGraphicsScene* UBGraphicsMediaItem::scene() void UBGraphicsMediaItem::activeSceneChanged() { if (UBApplication::boardController->activeScene() != scene()) - mMediaPlayer->pause(); + mMediaObject->pause(); } @@ -233,12 +263,12 @@ void UBGraphicsMediaItem::showOnDisplayChanged(bool shown) if (!shown) { mMuted = true; - mAudioOutput->setVolume(0); + mAudioOutput->setMuted(mMuted); } else if (!mMutedByUserAction) { mMuted = false; - mAudioOutput->setVolume(mVolume); + mAudioOutput->setMuted(mMuted); } } @@ -322,7 +352,8 @@ void UBGraphicsMediaItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) QPointF eventPos = mapFromScene( event->scenePos()); QPointF translation = eventPos - mouseMovePos; - setTransform(QTransform::fromTranslate(translation.x(), translation.y()), true); + //translate(translation.x(), translation.y()); + setPos(translation.x(), translation.y()); } mMouseMovePos = event->scenePos(); diff --git a/src/domain/UBGraphicsMediaItem.h b/src/domain/UBGraphicsMediaItem.h index 4b0aed26..31ea7175 100644 --- a/src/domain/UBGraphicsMediaItem.h +++ b/src/domain/UBGraphicsMediaItem.h @@ -28,11 +28,19 @@ #ifndef UBGRAPHICSMEDIAITEM_H #define UBGRAPHICSMEDIAITEM_H +#include +#include "UBGraphicsProxyWidget.h" +//#include +//#include +//#include + #include +#include #include -#include +#include -#include "UBGraphicsProxyWidget.h" +#include +#include #include "core/UBApplication.h" #include "board/UBBoardController.h" @@ -65,9 +73,11 @@ public: virtual void mediaFileUrl(QUrl url){mMediaFileUrl=url;} + //Phonon::MediaObject* mediaObject() const QMediaPlayer* mediaObject() const + { - return mMediaPlayer; + return mMediaObject; } void setInitialPos(qint64 p) { @@ -82,7 +92,9 @@ public: return mMuted; } + // Phonon::VideoWidget* videoWidget() const QVideoWidget* videoWidget() const + { return mVideoWidget; } @@ -117,9 +129,17 @@ protected: virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); virtual void clearSource(); - QMediaPlayer* mMediaPlayer; - QVideoWidget* mVideoWidget; - QAudioOutput* mAudioOutput; + //Phonon::MediaObject *mMediaObject; + //Phonon::VideoWidget *mVideoWidget; + //Phonon::AudioOutput *mAudioOutput; + //Phonon::MediaSource mSource; + + QMediaPlayer *mMediaObject; + QMediaPlaylist *playlist; + QVideoWidget *mVideoWidget; +// QAudioOutput *mAudioOutput; + QMediaPlayer *mAudioOutput; + QMediaService *mSource; QWidget *mAudioWidget; @@ -128,7 +148,6 @@ private: bool mMuted; bool mMutedByUserAction; static bool sIsMutedByDefault; - qreal mVolume; QUrl mMediaFileUrl; QString mMediaSource;