preferencesAboutTextFull
Craig Watson 9 years ago
commit be0c3a6aaa
  1. 27
      TEST_OpenBoard_Win32.txt
  2. 239
      changes_porting_qt5.txt
  3. 99
      src/domain/UBGraphicsMediaItem.cpp
  4. 33
      src/domain/UBGraphicsMediaItem.h

@ -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 |
----------------------|--------------------|
| |
----------------------|--------------------|
| |
----------------------|--------------------|
| |
----------------------|--------------------|

@ -1,6 +1,7 @@
*******************************
* PORTING QT4->QT5 *
* 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 <QtGui> by #include <QtWidgets>
- 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 <QtGui> by #include <QtWidgets>
- 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 <QtGui> by #include <QtWidgets>.
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 <QtGui> by #include <QtWidgets>.
***************************
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.

@ -24,12 +24,10 @@
#include <QUrl>
#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<UBGraphicsMediaItemDelegate *>(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();

@ -28,11 +28,19 @@
#ifndef UBGRAPHICSMEDIAITEM_H
#define UBGRAPHICSMEDIAITEM_H
#include <QtWidgets/QGraphicsView>
#include "UBGraphicsProxyWidget.h"
//#include <phonon/AudioOutput>
//#include <phonon/MediaObject>
//#include <phonon/VideoWidget>
#include <QAudioOutput>
#include <QMediaObject>
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QMediaService>
#include "UBGraphicsProxyWidget.h"
#include <QtMultimediaWidgets/QVideoWidget>
#include <QtMultimedia/QVideoFrame>
#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;

Loading…
Cancel
Save