Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpenBoard
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lifo
Nicolas Ollinger
OpenBoard
Commits
54d392a7
Commit
54d392a7
authored
May 23, 2012
by
Ivan Ilyin
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:Sankore/Sankore-3.1
parents
7a2df029
e4d33322
Changes
32
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
1443 additions
and
1112 deletions
+1443
-1112
UBCFFSubsetAdaptor.cpp
src/adaptors/UBCFFSubsetAdaptor.cpp
+3
-4
UBSvgSubsetAdaptor.cpp
src/adaptors/UBSvgSubsetAdaptor.cpp
+62
-35
UBSvgSubsetAdaptor.h
src/adaptors/UBSvgSubsetAdaptor.h
+5
-6
UBBoardController.cpp
src/board/UBBoardController.cpp
+26
-27
UBBoardController.h
src/board/UBBoardController.h
+3
-2
UBBoardView.cpp
src/board/UBBoardView.cpp
+3
-5
UBLibraryController.cpp
src/board/UBLibraryController.cpp
+2
-2
UB.h
src/core/UB.h
+1
-2
UBPersistenceManager.cpp
src/core/UBPersistenceManager.cpp
+0
-1
UBGraphicsAudioItem.cpp
src/domain/UBGraphicsAudioItem.cpp
+0
-128
UBGraphicsAudioItem.h
src/domain/UBGraphicsAudioItem.h
+0
-66
UBGraphicsAudioItemDelegate.cpp
src/domain/UBGraphicsAudioItemDelegate.cpp
+0
-123
UBGraphicsDelegateFrame.cpp
src/domain/UBGraphicsDelegateFrame.cpp
+4
-1
UBGraphicsGroupContainerItem.cpp
src/domain/UBGraphicsGroupContainerItem.cpp
+43
-2
UBGraphicsGroupContainerItem.h
src/domain/UBGraphicsGroupContainerItem.h
+5
-0
UBGraphicsGroupContainerItemDelegate.cpp
src/domain/UBGraphicsGroupContainerItemDelegate.cpp
+3
-3
UBGraphicsGroupContainerItemDelegate.h
src/domain/UBGraphicsGroupContainerItemDelegate.h
+0
-0
UBGraphicsItemDelegate.cpp
src/domain/UBGraphicsItemDelegate.cpp
+588
-41
UBGraphicsItemDelegate.h
src/domain/UBGraphicsItemDelegate.h
+81
-7
UBGraphicsMediaItem.cpp
src/domain/UBGraphicsMediaItem.cpp
+165
-6
UBGraphicsMediaItem.h
src/domain/UBGraphicsMediaItem.h
+40
-0
UBGraphicsMediaItemDelegate.cpp
src/domain/UBGraphicsMediaItemDelegate.cpp
+231
-0
UBGraphicsMediaItemDelegate.h
src/domain/UBGraphicsMediaItemDelegate.h
+70
-0
UBGraphicsScene.cpp
src/domain/UBGraphicsScene.cpp
+34
-53
UBGraphicsScene.h
src/domain/UBGraphicsScene.h
+4
-2
UBGraphicsTextItem.cpp
src/domain/UBGraphicsTextItem.cpp
+25
-0
UBGraphicsTextItemDelegate.cpp
src/domain/UBGraphicsTextItemDelegate.cpp
+36
-1
UBGraphicsVideoItem.cpp
src/domain/UBGraphicsVideoItem.cpp
+0
-149
UBGraphicsVideoItem.h
src/domain/UBGraphicsVideoItem.h
+0
-76
UBGraphicsVideoItemDelegate.cpp
src/domain/UBGraphicsVideoItemDelegate.cpp
+0
-351
domain.pri
src/domain/domain.pri
+7
-12
UBCoreGraphicsScene.cpp
src/frameworks/UBCoreGraphicsScene.cpp
+2
-7
No files found.
src/adaptors/UBCFFSubsetAdaptor.cpp
View file @
54d392a7
...
...
@@ -26,8 +26,7 @@
#include "domain/UBGraphicsTextItem.h"
#include "domain/UBGraphicsSvgItem.h"
#include "domain/UBGraphicsPixmapItem.h"
#include "domain/UBGraphicsVideoItem.h"
#include "domain/UBGraphicsAudioItem.h"
#include "domain/UBGraphicsMediaItem.h"
#include "domain/UBGraphicsWidgetItem.h"
#include "domain/UBGraphicsTextItem.h"
#include "domain/UBGraphicsTextItemDelegate.h"
...
...
@@ -823,7 +822,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgAudio(const QDomElement &ele
->
addAudioFileToDocument
(
mCurrentScene
->
document
(),
concreteUrl
.
toLocalFile
(),
uuid
));
#endif
UBGraphics
Audio
Item
*
audioItem
=
mCurrentScene
->
addAudio
(
concreteUrl
,
false
);
UBGraphics
Media
Item
*
audioItem
=
mCurrentScene
->
addAudio
(
concreteUrl
,
false
);
QTransform
transform
;
QString
textTransform
=
parentOfAudio
.
attribute
(
aTransform
);
...
...
@@ -866,7 +865,7 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgVideo(const QDomElement &ele
->
addVideoFileToDocument
(
mCurrentScene
->
document
(),
concreteUrl
.
toLocalFile
(),
uuid
));
#endif
UBGraphics
Video
Item
*
videoItem
=
mCurrentScene
->
addVideo
(
concreteUrl
,
false
);
UBGraphics
Media
Item
*
videoItem
=
mCurrentScene
->
addVideo
(
concreteUrl
,
false
);
QTransform
transform
;
QString
textTransform
=
element
.
attribute
(
aTransform
);
...
...
src/adaptors/UBSvgSubsetAdaptor.cpp
View file @
54d392a7
This diff is collapsed.
Click to expand it.
src/adaptors/UBSvgSubsetAdaptor.h
View file @
54d392a7
...
...
@@ -26,8 +26,7 @@ class UBGraphicsPolygonItem;
class
UBGraphicsPixmapItem
;
class
UBGraphicsPDFItem
;
class
UBGraphicsWidgetItem
;
class
UBGraphicsVideoItem
;
class
UBGraphicsAudioItem
;
class
UBGraphicsMediaItem
;
class
UBGraphicsAppleWidgetItem
;
class
UBGraphicsW3CWidgetItem
;
class
UBGraphicsTextItem
;
...
...
@@ -119,9 +118,9 @@ class UBSvgSubsetAdaptor
UBGraphicsPDFItem
*
pdfItemFromPDF
();
UBGraphics
Video
Item
*
videoItemFromSvg
();
UBGraphics
Media
Item
*
videoItemFromSvg
();
UBGraphics
Audio
Item
*
audioItemFromSvg
();
UBGraphics
Media
Item
*
audioItemFromSvg
();
UBGraphicsAppleWidgetItem
*
graphicsAppleWidgetFromSvg
();
...
...
@@ -218,8 +217,8 @@ class UBSvgSubsetAdaptor
void
pixmapItemToLinkedImage
(
UBGraphicsPixmapItem
*
pixmapItem
);
void
svgItemToLinkedSvg
(
UBGraphicsSvgItem
*
svgItem
);
void
pdfItemToLinkedPDF
(
UBGraphicsPDFItem
*
pdfItem
);
void
videoItemToLinkedVideo
(
UBGraphics
Video
Item
*
videoItem
);
void
audioItemToLinkedAudio
(
UBGraphics
AudioItem
*
audioItem
);
void
videoItemToLinkedVideo
(
UBGraphics
Media
Item
*
videoItem
);
void
audioItemToLinkedAudio
(
UBGraphics
MediaItem
*
audioItem
);
void
graphicsItemToSvg
(
QGraphicsItem
*
item
);
void
graphicsAppleWidgetToSvg
(
UBGraphicsAppleWidgetItem
*
item
);
void
graphicsW3CWidgetToSvg
(
UBGraphicsW3CWidgetItem
*
item
);
...
...
src/board/UBBoardController.cpp
View file @
54d392a7
...
...
@@ -44,13 +44,12 @@
#include "domain/UBGraphicsProxyWidget.h"
#include "domain/UBGraphicsSvgItem.h"
#include "domain/UBGraphicsWidgetItem.h"
#include "domain/UBGraphicsVideoItem.h"
#include "domain/UBGraphicsAudioItem.h"
#include "domain/UBGraphicsMediaItem.h"
#include "domain/UBGraphicsPDFItem.h"
#include "domain/UBW3CWidget.h"
#include "domain/UBGraphicsTextItem.h"
#include "domain/UBPageSizeUndoCommand.h"
#include "domain/
ubgraphicsgroupcontaineri
tem.h"
#include "domain/
UBGraphicsGroupContainerI
tem.h"
#include "tools/UBToolsManager.h"
...
...
@@ -951,27 +950,27 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
{
qDebug
()
<<
"accepting mime type"
<<
mimeType
<<
"as video"
;
UBGraphics
VideoItem
*
v
ideoItem
=
0
;
UBGraphics
MediaItem
*
mediaV
ideoItem
=
0
;
if
(
pData
.
length
()
>
0
)
{
QUuid
uuid
=
QUuid
::
createUuid
();
QUrl
url
=
QUrl
::
fromLocalFile
(
UBPersistenceManager
::
persistenceManager
()
->
addVideoFileToDocument
(
mActiveDocument
,
sourceUrl
,
pData
,
uuid
));
->
addVideoFileToDocument
(
mActiveDocument
,
sourceUrl
,
pData
,
uuid
));
videoItem
=
mActiveScene
->
addVideo
(
url
,
false
,
pPos
);
mediaVideoItem
=
mActiveScene
->
addMedia
(
url
,
false
,
pPos
);
v
ideoItem
->
setSourceUrl
(
sourceUrl
);
v
ideoItem
->
setUuid
(
uuid
);
mediaV
ideoItem
->
setSourceUrl
(
sourceUrl
);
mediaV
ideoItem
->
setUuid
(
uuid
);
}
else
{
v
ideoItem
=
addVideo
(
sourceUrl
,
false
,
pPos
);
mediaV
ideoItem
=
addVideo
(
sourceUrl
,
false
,
pPos
);
}
if
(
v
ideoItem
){
connect
(
this
,
SIGNAL
(
activeSceneChanged
()),
v
ideoItem
,
SLOT
(
activeSceneChanged
()));
if
(
mediaV
ideoItem
){
connect
(
this
,
SIGNAL
(
activeSceneChanged
()),
mediaV
ideoItem
,
SLOT
(
activeSceneChanged
()));
}
UBDrawingController
::
drawingController
()
->
setStylusTool
(
UBStylusTool
::
Selector
);
...
...
@@ -980,27 +979,27 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
{
qDebug
()
<<
"accepting mime type"
<<
mimeType
<<
"as audio"
;
UBGraphics
AudioItem
*
audio
Item
=
0
;
UBGraphics
MediaItem
*
audioMedia
Item
=
0
;
if
(
pData
.
length
()
>
0
)
{
QUuid
uuid
=
QUuid
::
createUuid
();
QUrl
url
=
QUrl
::
fromLocalFile
(
UBPersistenceManager
::
persistenceManager
()
->
addAudi
oFileToDocument
(
mActiveDocument
,
sourceUrl
,
pData
,
uuid
));
->
addVide
oFileToDocument
(
mActiveDocument
,
sourceUrl
,
pData
,
uuid
));
audio
Item
=
mActiveScene
->
addAudio
(
url
,
false
,
pPos
);
audio
MediaItem
=
mActiveScene
->
addMedia
(
url
,
false
,
pPos
);
audioItem
->
setSourceUrl
(
sourceUrl
);
audioItem
->
setUuid
(
uuid
);
audio
Media
Item
->
setSourceUrl
(
sourceUrl
);
audio
Media
Item
->
setUuid
(
uuid
);
}
else
{
audioItem
=
addAudio
(
sourceUrl
,
false
,
pPos
);
audio
Media
Item
=
addAudio
(
sourceUrl
,
false
,
pPos
);
}
if
(
audioItem
){
connect
(
this
,
SIGNAL
(
activeSceneChanged
()),
audioItem
,
SLOT
(
activeSceneChanged
()));
if
(
audio
Media
Item
){
connect
(
this
,
SIGNAL
(
activeSceneChanged
()),
audio
Media
Item
,
SLOT
(
activeSceneChanged
()));
}
UBDrawingController
::
drawingController
()
->
setStylusTool
(
UBStylusTool
::
Selector
);
...
...
@@ -1805,7 +1804,7 @@ void UBBoardController::controlViewShown()
}
UBGraphics
Video
Item
*
UBBoardController
::
addVideo
(
const
QUrl
&
pSourceUrl
,
bool
startPlay
,
const
QPointF
&
pos
)
UBGraphics
Media
Item
*
UBBoardController
::
addVideo
(
const
QUrl
&
pSourceUrl
,
bool
startPlay
,
const
QPointF
&
pos
)
{
QUuid
uuid
=
QUuid
::
createUuid
();
QUrl
concreteUrl
=
pSourceUrl
;
...
...
@@ -1818,7 +1817,7 @@ UBGraphicsVideoItem* UBBoardController::addVideo(const QUrl& pSourceUrl, bool st
->
addVideoFileToDocument
(
mActiveDocument
,
pSourceUrl
.
toLocalFile
(),
uuid
));
#endif
UBGraphics
VideoItem
*
vi
=
mActiveScene
->
addVideo
(
concreteUrl
,
startPlay
,
pos
);
UBGraphics
MediaItem
*
vi
=
mActiveScene
->
addMedia
(
concreteUrl
,
startPlay
,
pos
);
mActiveDocument
->
setMetaData
(
UBSettings
::
documentUpdatedAt
,
UBStringUtils
::
toUtcIsoDateTime
(
QDateTime
::
currentDateTime
()));
if
(
vi
)
{
...
...
@@ -1830,7 +1829,7 @@ UBGraphicsVideoItem* UBBoardController::addVideo(const QUrl& pSourceUrl, bool st
}
UBGraphics
Audio
Item
*
UBBoardController
::
addAudio
(
const
QUrl
&
pSourceUrl
,
bool
startPlay
,
const
QPointF
&
pos
)
UBGraphics
Media
Item
*
UBBoardController
::
addAudio
(
const
QUrl
&
pSourceUrl
,
bool
startPlay
,
const
QPointF
&
pos
)
{
QUuid
uuid
=
QUuid
::
createUuid
();
QUrl
concreteUrl
=
pSourceUrl
;
...
...
@@ -1843,15 +1842,15 @@ UBGraphicsAudioItem* UBBoardController::addAudio(const QUrl& pSourceUrl, bool st
->
addAudioFileToDocument
(
mActiveDocument
,
pSourceUrl
.
toLocalFile
(),
uuid
));
#endif
UBGraphics
AudioItem
*
vi
=
mActiveScene
->
addAudio
(
concreteUrl
,
startPlay
,
pos
);
UBGraphics
MediaItem
*
ai
=
mActiveScene
->
addMedia
(
concreteUrl
,
startPlay
,
pos
);
mActiveDocument
->
setMetaData
(
UBSettings
::
documentUpdatedAt
,
UBStringUtils
::
toUtcIsoDateTime
(
QDateTime
::
currentDateTime
()));
if
(
v
i
){
v
i
->
setUuid
(
uuid
);
v
i
->
setSourceUrl
(
pSourceUrl
);
if
(
a
i
){
a
i
->
setUuid
(
uuid
);
a
i
->
setSourceUrl
(
pSourceUrl
);
}
return
v
i
;
return
a
i
;
}
...
...
src/board/UBBoardController.h
View file @
54d392a7
...
...
@@ -33,6 +33,7 @@ class UBToolWidget;
class
UBVersion
;
class
UBSoftwareUpdate
;
class
UBSoftwareUpdateDialog
;
class
UBGraphicsMediaItem
;
class
UBGraphicsVideoItem
;
class
UBGraphicsAudioItem
;
class
UBGraphicsWidgetItem
;
...
...
@@ -204,8 +205,8 @@ class UBBoardController : public QObject
void
grabScene
(
const
QRectF
&
pSceneRect
);
void
controlViewHidden
();
void
controlViewShown
();
UBGraphics
Video
Item
*
addVideo
(
const
QUrl
&
pUrl
,
bool
startPlay
,
const
QPointF
&
pos
);
UBGraphics
Audio
Item
*
addAudio
(
const
QUrl
&
pUrl
,
bool
startPlay
,
const
QPointF
&
pos
);
UBGraphics
Media
Item
*
addVideo
(
const
QUrl
&
pUrl
,
bool
startPlay
,
const
QPointF
&
pos
);
UBGraphics
Media
Item
*
addAudio
(
const
QUrl
&
pUrl
,
bool
startPlay
,
const
QPointF
&
pos
);
UBGraphicsWidgetItem
*
addW3cWidget
(
const
QUrl
&
pUrl
,
const
QPointF
&
pos
);
void
cut
();
...
...
src/board/UBBoardView.cpp
View file @
54d392a7
...
...
@@ -47,10 +47,9 @@
#include "domain/UBGraphicsPDFItem.h"
#include "domain/UBGraphicsPolygonItem.h"
#include "domain/UBItem.h"
#include "domain/UBGraphicsVideoItem.h"
#include "domain/UBGraphicsAudioItem.h"
#include "domain/UBGraphicsMediaItem.h"
#include "domain/UBGraphicsSvgItem.h"
#include "domain/
ubgraphicsgroupcontaineri
tem.h"
#include "domain/
UBGraphicsGroupContainerI
tem.h"
#include "domain/UBGraphicsStrokesGroup.h"
#include "document/UBDocumentProxy.h"
...
...
@@ -560,8 +559,7 @@ UBBoardView::mouseMoveEvent (QMouseEvent *event)
if
(
item
->
type
()
==
UBGraphicsW3CWidgetItem
::
Type
||
item
->
type
()
==
UBGraphicsPixmapItem
::
Type
||
item
->
type
()
==
UBGraphicsVideoItem
::
Type
||
item
->
type
()
==
UBGraphicsAudioItem
::
Type
||
item
->
type
()
==
UBGraphicsMediaItem
::
Type
||
item
->
type
()
==
UBGraphicsSvgItem
::
Type
||
item
->
type
()
==
UBGraphicsTextItem
::
Type
||
item
->
type
()
==
UBGraphicsStrokesGroup
::
Type
)
{
...
...
src/board/UBLibraryController.cpp
View file @
54d392a7
...
...
@@ -28,7 +28,7 @@
#include "domain/UBGraphicsScene.h"
#include "domain/UBGraphicsSvgItem.h"
#include "domain/UBGraphicsPixmapItem.h"
#include "domain/UBGraphics
Video
Item.h"
#include "domain/UBGraphics
Media
Item.h"
#include "domain/UBGraphicsWidgetItem.h"
#include "tools/UBToolsManager.h"
...
...
@@ -698,7 +698,7 @@ void UBLibraryController::addVideosToCurrentPage(const QList<QUrl>& videos)
mLastItemOffsetIndex
++
;
mLastItemOffsetIndex
=
qMin
(
mLastItemOffsetIndex
,
5
);
UBGraphics
Video
Item
*
itemInScene
=
UBApplication
::
boardController
->
addVideo
(
url
,
false
,
pos
);
UBGraphics
Media
Item
*
itemInScene
=
UBApplication
::
boardController
->
addVideo
(
url
,
false
,
pos
);
itemInScene
->
setPos
(
QPoint
(
pos
.
x
()
+
50
*
mLastItemOffsetIndex
,
pos
.
y
()
+
50
*
mLastItemOffsetIndex
));
}
}
...
...
src/core/UB.h
View file @
54d392a7
...
...
@@ -111,8 +111,7 @@ struct UBGraphicsItemType
PolygonItemType
=
QGraphicsItem
::
UserType
+
1
,
PixmapItemType
,
SvgItemType
,
VideoItemType
,
AudioItemType
,
MediaItemType
,
AppleWidgetItemType
,
PDFItemType
,
TextItemType
,
...
...
src/core/UBPersistenceManager.cpp
View file @
54d392a7
...
...
@@ -582,7 +582,6 @@ UBGraphicsScene* UBPersistenceManager::loadDocumentScene(UBDocumentProxy* proxy,
if
(
mSceneCache
.
contains
(
proxy
,
sceneIndex
))
return
mSceneCache
.
value
(
proxy
,
sceneIndex
);
else
{
qDebug
()
<<
"scene"
<<
sceneIndex
<<
"retrieved from file ..."
;
UBGraphicsScene
*
scene
=
UBSvgSubsetAdaptor
::
loadScene
(
proxy
,
sceneIndex
);
if
(
scene
)
...
...
src/domain/UBGraphicsAudioItem.cpp
View file @
54d392a7
/*
* 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 3 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 "UBGraphicsAudioItem.h"
#include "UBGraphicsAudioItemDelegate.h"
#include "UBGraphicsDelegateFrame.h"
#include "core/memcheck.h"
UBGraphicsAudioItem
::
UBGraphicsAudioItem
(
const
QUrl
&
pAudioFileUrl
,
QGraphicsItem
*
parent
)
:
UBGraphicsMediaItem
(
pAudioFileUrl
,
parent
)
{
update
();
mAudioOutput
=
new
Phonon
::
AudioOutput
(
Phonon
::
MusicCategory
,
this
);
mMediaObject
=
new
Phonon
::
MediaObject
(
this
);
mMediaObject
->
setTickInterval
(
1000
);
Phonon
::
createPath
(
mMediaObject
,
mAudioOutput
);
mMediaObject
->
clearQueue
();
mSource
=
Phonon
::
MediaSource
(
pAudioFileUrl
);
mMediaObject
->
setCurrentSource
(
mSource
);
connect
(
mMediaObject
,
SIGNAL
(
tick
(
qint64
)
),
this
,
SLOT
(
tick
(
qint64
)
)
);
connect
(
mMediaObject
,
SIGNAL
(
stateChanged
(
Phonon
::
State
,
Phonon
::
State
)),
this
,
SLOT
(
onStateChanged
(
Phonon
::
State
,
Phonon
::
State
)));
mAudioWidget
=
new
QWidget
();
mSeekSlider
=
new
Phonon
::
SeekSlider
(
mAudioWidget
);
mSeekSlider
->
setMediaObject
(
mMediaObject
);
QPalette
palette
;
palette
.
setBrush
(
QPalette
::
Light
,
Qt
::
darkGray
);
mTimeLcd
=
new
QLCDNumber
;
mTimeLcd
->
setPalette
(
palette
);
mTimeLcd
->
display
(
"00:00"
);
QHBoxLayout
*
seekerLayout
=
new
QHBoxLayout
;
seekerLayout
->
addWidget
(
mSeekSlider
);
seekerLayout
->
addWidget
(
mTimeLcd
);
QVBoxLayout
*
mainLayout
=
new
QVBoxLayout
;
mainLayout
->
addLayout
(
seekerLayout
);
mAudioWidget
->
setLayout
(
mainLayout
);
setWidget
(
mAudioWidget
);
UBGraphicsAudioItemDelegate
*
delegate
=
new
UBGraphicsAudioItemDelegate
(
this
,
mMediaObject
);
delegate
->
init
();
setDelegate
(
delegate
);
mDelegate
->
frame
()
->
setOperationMode
(
UBGraphicsDelegateFrame
::
Resizing
);
setData
(
UBGraphicsItemData
::
itemLayerType
,
QVariant
(
itemLayerType
::
ObjectItem
));
//Necessary to set if we want z value to be assigned correctly
}
void
UBGraphicsAudioItem
::
onStateChanged
(
Phonon
::
State
newState
,
Phonon
::
State
oldState
)
{
qDebug
()
<<
"STATE CHANGED!"
;
qDebug
()
<<
"old state:"
<<
oldState
;
qDebug
()
<<
"new state:"
<<
newState
;
if
(
oldState
==
Phonon
::
ErrorState
)
{
qDebug
()
<<
"ERROR! : "
<<
mMediaObject
->
errorString
();
}
else
if
(
newState
==
Phonon
::
LoadingState
)
{
int
itotaltime
=
mMediaObject
->
totalTime
();
qDebug
()
<<
"[Loading State entered!] Total time : "
<<
itotaltime
;
}
}
UBGraphicsAudioItem
::~
UBGraphicsAudioItem
()
{
//NOOP
}
UBItem
*
UBGraphicsAudioItem
::
deepCopy
()
const
{
QUrl
audioUrl
=
this
->
mediaFileUrl
();
UBGraphicsAudioItem
*
copy
=
new
UBGraphicsAudioItem
(
audioUrl
,
parentItem
());
connect
(
UBApplication
::
boardController
,
SIGNAL
(
activeSceneChanged
()),
copy
,
SLOT
(
activeSceneChanged
()));
copy
->
setPos
(
this
->
pos
());
copy
->
setTransform
(
this
->
transform
());
copy
->
setFlag
(
QGraphicsItem
::
ItemIsMovable
,
true
);
copy
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
copy
->
setData
(
UBGraphicsItemData
::
ItemLayerType
,
this
->
data
(
UBGraphicsItemData
::
ItemLayerType
));
copy
->
setData
(
UBGraphicsItemData
::
ItemLocked
,
this
->
data
(
UBGraphicsItemData
::
ItemLocked
));
copy
->
setUuid
(
this
->
uuid
());
// this is OK as long as Videos are imutable
copy
->
setSourceUrl
(
this
->
sourceUrl
());
copy
->
resize
(
this
->
size
());
// TODO UB 4.7 complete all members
return
copy
;
}
void
UBGraphicsAudioItem
::
tick
(
qint64
time
)
{
QTime
displayTime
(
0
,
(
time
/
60000
)
%
60
,
(
time
/
1000
)
%
60
);
mTimeLcd
->
display
(
displayTime
.
toString
(
"mm:ss"
)
);
}
void
UBGraphicsAudioItem
::
setUuid
(
const
QUuid
&
pUuid
)
{
UBItem
::
setUuid
(
pUuid
);
setData
(
UBGraphicsItemData
::
ItemUuid
,
QVariant
(
pUuid
));
}
src/domain/UBGraphicsAudioItem.h
View file @
54d392a7
/*
* 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 3 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 UBGRAPHICSAUDIOITEM_H
#define UBGRAPHICSAUDIOITEM_H
#include "UBGraphicsMediaItem.h"
#include "phonon/seekslider.h"
#include "phonon/mediasource.h"
#include "core/UB.h"
#include "core/UBApplication.h"
#include "board/UBBoardController.h"
class
UBGraphicsAudioItem
:
public
UBGraphicsMediaItem
{
Q_OBJECT
public
:
UBGraphicsAudioItem
(
const
QUrl
&
pAudioFileUrl
,
QGraphicsItem
*
parent
=
0
);
~
UBGraphicsAudioItem
();
enum
{
Type
=
UBGraphicsItemType
::
AudioItemType
};
virtual
int
type
()
const
{
return
Type
;
}
virtual
UBItem
*
deepCopy
()
const
;
virtual
UBGraphicsItemDelegate
*
Delegate
()
const
{
return
mDelegate
;}
virtual
void
clearSource
()
{
UBGraphicsMediaItem
::
clearSource
();
}
void
setUuid
(
const
QUuid
&
pUuid
);
private
slots
:
void
tick
(
qint64
time
);
void
onStateChanged
(
Phonon
::
State
newState
,
Phonon
::
State
oldState
);
protected
:
QWidget
*
mAudioWidget
;
QLCDNumber
*
mTimeLcd
;
Phonon
::
SeekSlider
*
mSeekSlider
;
private
:
Phonon
::
MediaSource
mSource
;
};
#endif // UBGRAPHICSAUDIOITEM_H
src/domain/UBGraphicsAudioItemDelegate.cpp
View file @
54d392a7
/*
* 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 3 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 "UBGraphicsAudioItemDelegate.h"
#include "domain/UBGraphicsAudioItem.h"
#include "domain/UBGraphicsDelegateFrame.h"
#include "UBGraphicsScene.h"
#include "core/memcheck.h"
UBGraphicsAudioItemDelegate
::
UBGraphicsAudioItemDelegate
(
UBGraphicsAudioItem
*
pDelegated
,
QObject
*
parent
)
:
UBGraphicsItemDelegate
(
pDelegated
,
parent
)
,
mDelegated
(
pDelegated
)
{
//NOOP
}
UBGraphicsAudioItemDelegate
::~
UBGraphicsAudioItemDelegate
()
{
//NNOP
}
void
UBGraphicsAudioItemDelegate
::
buildButtons
()
{
mPlayPauseButton
=
new
DelegateButton
(
":/images/play.svg"
,
mDelegated
,
mFrame
);
mStopButton
=
new
DelegateButton
(
":/images/stop.svg"
,
mDelegated
,
mFrame
);
mStopButton
->
hide
();
if
(
mDelegated
->
isMuted
()
)
mMuteButton
=
new
DelegateButton
(
":/images/soundOff.svg"
,
mDelegated
,
mFrame
);
else
mMuteButton
=
new
DelegateButton
(
":/images/soundOn.svg"
,
mDelegated
,
mFrame
);
mMuteButton
->
hide
();
connect
(
mPlayPauseButton
,
SIGNAL
(
clicked
(
bool
)
),
this
,
SLOT
(
togglePlayPause
()
)
);
connect
(
mStopButton
,
SIGNAL
(
clicked
(
bool
)
),
mDelegated
->
mediaObject
(),
SLOT
(
stop
()
)
);
connect
(
mMuteButton
,
SIGNAL
(
clicked
(
bool
)
),
mDelegated
,
SLOT
(
toggleMute
()
)
);
connect
(
mMuteButton
,
SIGNAL
(
clicked
(
bool
)
),
this
,
SLOT
(
toggleMute
()
)
);
connect
(
mDelegated
->
mediaObject
(),
SIGNAL
(
stateChanged
(
Phonon
::
State
,
Phonon
::
State
)
),
this
,
SLOT
(
mediaStateChanged
(
Phonon
::
State
,
Phonon
::
State
)
)
);
connect
(
mDelegated
->
mediaObject
(),
SIGNAL
(
finished
()
),
this
,
SLOT
(
updatePlayPauseState
()
)
);
mButtons
<<
mPlayPauseButton
<<
mStopButton
<<
mMuteButton
;
}
void
UBGraphicsAudioItemDelegate
::
togglePlayPause
()
{
if
(
mDelegated
&&
mDelegated
->
mediaObject
()
)
{
Phonon
::
MediaObject
*
media
=
mDelegated
->
mediaObject
();
if
(
media
->
state
()
==
Phonon
::
StoppedState
)
{
media
->
play
();
}
else
if
(
media
->
state
()
==
Phonon
::
PlayingState
)
{
if
(
media
->
remainingTime
()
<=
0
)
{
media
->
stop
();
media
->
play
();
}
else
{
media
->
pause
();
if
(
mDelegated
->
scene
()
)
mDelegated
->
scene
()
->
setModified
(
true
);
}
}
else
if
(
media
->
state
()
==
Phonon
::
PausedState
)
{
if
(
media
->
remainingTime
()
<=
0
)
{
media
->
stop
();
}
media
->
play
();
}
else
if
(
media
->
state
()
==
Phonon
::
LoadingState
)
{
mDelegated
->
mediaObject
()
->
setCurrentSource
(
mDelegated
->
mediaFileUrl
());
media
->
play
();
}
else
if
(
media
->
state
()
==
Phonon
::
ErrorState
){
qDebug
()
<<
"Error appeared."
<<
media
->
errorString
();
}
}
}
void
UBGraphicsAudioItemDelegate
::
toggleMute
()
{
if
(
mDelegated
->
isMuted
()
)
mMuteButton
->
setFileName
(
":/images/soundOff.svg"
);
else
mMuteButton
->
setFileName
(
":/images/soundOn.svg"
);
}
void
UBGraphicsAudioItemDelegate
::
updatePlayPauseState
()
{
Phonon
::
MediaObject
*
media
=
mDelegated
->
mediaObject
();
if
(
media
->
state
()
==
Phonon
::
PlayingState
)
mPlayPauseButton
->
setFileName
(
":/images/pause.svg"
);
else
mPlayPauseButton
->
setFileName
(
":/images/play.svg"
);
}
void
UBGraphicsAudioItemDelegate
::
mediaStateChanged
(
Phonon
::
State
newstate
,
Phonon
::
State
oldstate
)
{
Q_UNUSED
(
newstate
);
Q_UNUSED
(
oldstate
);
updatePlayPauseState
();
}
void
UBGraphicsAudioItemDelegate
::
remove
(
bool
canUndo
)
{
mDelegated
->
mediaObject
()
->
stop
();
UBGraphicsItemDelegate
::
remove
(
canUndo
);
}
src/domain/UBGraphicsDelegateFrame.cpp
View file @
54d392a7
...
...
@@ -585,7 +585,10 @@ void UBGraphicsDelegateFrame::positionHandles()
if
(
mDelegate
->
getToolBarItem
()
->
isVisibleOnBoard
()
&&
mDelegate
->
getToolBarItem
()
->
isShifting
())
itemRect
.
setHeight
(
itemRect
.
height
()
+
mDelegate
->
getToolBarItem
()
->
rect
().
height
()
*
mDelegate
->
antiScaleRatio
()
*
1.1
);
{
QPointF
graphicsItemPosition
=
itemRect
.
topLeft
();
itemRect
.
setTopLeft
(
graphicsItemPosition
-
QPointF
(
0
,
mDelegate
->
getToolBarItem
()
->
boundingRect
().
height
()
*
mDelegate
->
antiScaleRatio
()));
}
QTransform
itemTransform
=
delegated
()
->
sceneTransform
();
QPointF
topLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
...
...
src/domain/
ubgraphicsgroupcontaineri
tem.cpp
→
src/domain/
UBGraphicsGroupContainerI
tem.cpp
View file @
54d392a7
#include "
ubgraphicsgroupcontaineri
tem.h"
#include "
UBGraphicsGroupContainerI
tem.h"
#include <QtGui>
#include "UBGraphicsMediaItem.h"
#include "UBGraphicsTextItem.h"
#include "domain/UBGraphicsItemDelegate.h"
#include "domain/
ubgraphicsgroupcontaineritemd
elegate.h"
#include "domain/
UBGraphicsGroupContainerItemD
elegate.h"
#include "domain/UBGraphicsScene.h"
#include "core/memcheck.h"
UBGraphicsGroupContainerItem
::
UBGraphicsGroupContainerItem
(
QGraphicsItem
*
parent
)
:
QGraphicsItem
(
parent
)
,
mCurrentItem
(
NULL
)
{
setData
(
UBGraphicsItemData
::
ItemLayerType
,
UBItemLayerType
::
Object
);
...
...
@@ -128,6 +131,29 @@ void UBGraphicsGroupContainerItem::removeFromGroup(QGraphicsItem *item)
itemsBoundingRect
=
childrenBoundingRect
();
}
void
UBGraphicsGroupContainerItem
::
deselectCurrentItem
()
{
if
(
mCurrentItem
)
{
switch
(
mCurrentItem
->
type
())
{
case
UBGraphicsTextItem
:
:
Type
:
{
dynamic_cast
<
UBGraphicsTextItem
*>
(
mCurrentItem
)
->
Delegate
()
->
getToolBarItem
()
->
hide
();
}
break
;
case
UBGraphicsMediaItem
:
:
Type
:
{
dynamic_cast
<
UBGraphicsMediaItem
*>
(
mCurrentItem
)
->
Delegate
()
->
getToolBarItem
()
->
hide
();
}
break
;
}
mCurrentItem
->
setSelected
(
false
);
mCurrentItem
=
NULL
;
}
}
QRectF
UBGraphicsGroupContainerItem
::
boundingRect
()
const
{
return
itemsBoundingRect
;
...
...
@@ -234,5 +260,20 @@ void UBGraphicsGroupContainerItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *e
QVariant
UBGraphicsGroupContainerItem
::
itemChange
(
GraphicsItemChange
change
,
const
QVariant
&
value
)
{
QVariant
newValue
=
mDelegate
->
itemChange
(
change
,
value
);
foreach
(
QGraphicsItem
*
child
,
children
())
{
UBGraphicsItem
*
item
=
dynamic_cast
<
UBGraphicsItem
*>
(
child
);
if
(
item
)
{
item
->
Delegate
()
->
positionHandles
();
}
}
if
(
QGraphicsItem
::
ItemSelectedChange
==
change
)
{
deselectCurrentItem
();
}
return
QGraphicsItem
::
itemChange
(
change
,
newValue
);
}
src/domain/
ubgraphicsgroupcontaineri
tem.h
→
src/domain/
UBGraphicsGroupContainerI
tem.h
View file @
54d392a7
...
...
@@ -13,6 +13,10 @@ public:
void
addToGroup
(
QGraphicsItem
*
item
);
void
removeFromGroup
(
QGraphicsItem
*
item
);
void
setCurrentItem
(
QGraphicsItem
*
item
){
mCurrentItem
=
item
;}
QGraphicsItem
*
getCurrentItem
()
const
{
return
mCurrentItem
;}
void
deselectCurrentItem
();
QRectF
boundingRect
()
const
;
void
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
);
...
...
@@ -41,6 +45,7 @@ protected:
private
:
QRectF
itemsBoundingRect
;
QGraphicsItem
*
mCurrentItem
;
};
...
...
src/domain/
ubgraphicsgroupcontaineritemd
elegate.cpp
→
src/domain/
UBGraphicsGroupContainerItemD
elegate.cpp
View file @
54d392a7
#include "
ubgraphicsgroupcontaineritemd
elegate.h"
#include "
UBGraphicsGroupContainerItemD
elegate.h"
#include <QtGui>
...
...
@@ -6,7 +6,7 @@
#include "gui/UBResources.h"
#include "domain/UBGraphicsDelegateFrame.h"
#include "domain/
ubgraphicsgroupcontaineri
tem.h"
#include "domain/
UBGraphicsGroupContainerI
tem.h"
#include "board/UBBoardController.h"
...
...
@@ -50,7 +50,7 @@ void UBGraphicsGroupContainerItemDelegate::buildButtons()
bool
UBGraphicsGroupContainerItemDelegate
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
Q_UNUSED
(
event
)
delegated
()
->
deselectCurrentItem
();
return
false
;
}
...
...
src/domain/
ubgraphicsgroupcontaineritemd
elegate.h
→
src/domain/
UBGraphicsGroupContainerItemD
elegate.h
View file @
54d392a7
File moved
src/domain/UBGraphicsItemDelegate.cpp
View file @
54d392a7
This diff is collapsed.
Click to expand it.
src/domain/UBGraphicsItemDelegate.h
View file @
54d392a7
...
...
@@ -29,6 +29,7 @@ class UBGraphicsScene;
class
UBGraphicsProxyWidget
;
class
UBGraphicsDelegateFrame
;
class
UBGraphicsWidgetItem
;
class
UBGraphicsMediaItem
;
class
DelegateButton
:
public
QGraphicsSvgItem
{
...
...
@@ -70,6 +71,80 @@ class DelegateButton: public QGraphicsSvgItem
};
class
MediaTimer
:
public
QGraphicsRectItem
{
public
:
MediaTimer
(
QGraphicsItem
*
parent
=
0
);
~
MediaTimer
();
char
*
getSegments
(
char
);
void
addPoint
(
QPolygon
&
,
const
QPoint
&
);
void
init
();
void
internalSetString
(
const
QString
&
s
);
void
drawString
(
const
QString
&
s
,
QPainter
&
,
QBitArray
*
=
0
,
bool
=
true
);
void
drawDigit
(
const
QPoint
&
,
QPainter
&
,
int
,
char
,
char
=
' '
);
void
drawSegment
(
const
QPoint
&
,
char
,
QPainter
&
,
int
,
bool
=
false
);
void
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
);
void
display
(
const
QString
&
str
);
void
setNumDigits
(
int
nDigits
);
private
:
int
ndigits
;
QString
digitStr
;
QBitArray
points
;
double
val
;
uint
fill
:
1
;
uint
shadow
:
1
;
uint
smallPoint
:
1
;
};
class
DelegateMediaControl
:
public
QGraphicsRectItem
{
public
:
DelegateMediaControl
(
UBGraphicsMediaItem
*
pDelegated
,
QGraphicsItem
*
parent
=
0
);
virtual
~
DelegateMediaControl
()
{
// NOOP
}
void
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
);
QPainterPath
shape
()
const
;
virtual
void
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
mouseReleaseEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
update
();
void
positionHandles
();
void
updateTicker
(
qint64
time
);
void
totalTimeChanged
(
qint64
newTotalTime
);
protected
:
void
seekToMousePos
(
QPointF
mousePos
);
UBGraphicsMediaItem
*
mDelegate
;
bool
mDisplayCurrentTime
;
qint64
mCurrentTimeInMs
;
qint64
mTotalTimeInMs
;
private
:
int
mStartWidth
;
QRectF
mSeecArea
;
QRectF
mLCDTimerArea
;
MediaTimer
*
lcdTimer
;
};
class
UBGraphicsToolBarItem
:
public
QGraphicsRectItem
,
public
QObject
{
public
:
...
...
@@ -80,19 +155,21 @@ class UBGraphicsToolBarItem : public QGraphicsRectItem, public QObject
void
setVisibleOnBoard
(
bool
visible
)
{
mVisible
=
visible
;
}
bool
isShifting
()
const
{
return
mShifting
;
}
void
setShifting
(
bool
shifting
)
{
mShifting
=
shifting
;
}
int
offsetOnToolBar
()
const
{
return
mOffsetOnToolBar
;
}
void
setOffsetOnToolBar
(
int
pOffset
)
{
mOffsetOnToolBar
=
pOffset
;
}
QList
<
QGraphicsItem
*>
itemsOnToolBar
()
const
{
return
mItemsOnToolBar
;
}
void
setItemsOnToolBar
(
QList
<
QGraphicsItem
*>
itemsOnToolBar
)
{
mItemsOnToolBar
=
itemsOnToolBar
;}
int
minWidth
()
{
return
mMinWidth
;
}
void
positionHandles
();
void
update
();
private
:
void
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
);
private
:
bool
mShifting
;
bool
mVisible
;
int
mOffsetOnToolBar
;
int
mMinWidth
;
int
mInitialHeight
;
QList
<
QGraphicsItem
*>
mItemsOnToolBar
;
};
...
...
@@ -168,7 +245,7 @@ class UBGraphicsItemDelegate : public QObject
void
increaseZlevelBottom
();
protected
:
virtual
void
buildButtons
()
{;}
virtual
void
buildButtons
()
;
virtual
void
decorateMenu
(
QMenu
*
menu
);
virtual
void
updateMenuActionState
();
...
...
@@ -203,9 +280,6 @@ protected slots:
private
:
void
updateFrame
();
void
updateButtons
(
bool
showUpdated
=
false
);
void
updateToolBar
();
QPointF
mOffset
;
QTransform
mPreviousTransform
;
...
...
src/domain/UBGraphicsMediaItem.cpp
View file @
54d392a7
...
...
@@ -13,18 +13,15 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "UBGraphicsGroupContainerItem.h"
#include "UBGraphicsMediaItem.h"
#include "UBGraphicsMediaItemDelegate.h"
#include "UBGraphicsScene.h"
#include "UBGraphicsDelegateFrame.h"
#include "document/UBDocumentProxy.h"
#include "core/UBApplication.h"
#include "board/UBBoardController.h"
#include "frameworks/UBFileSystemUtils.h"
#include "core/memcheck.h"
bool
UBGraphicsMediaItem
::
sIsMutedByDefault
=
false
;
...
...
@@ -35,8 +32,63 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
,
mMutedByUserAction
(
sIsMutedByDefault
)
,
mMediaFileUrl
(
pMediaFileUrl
)
,
mInitialPos
(
0
)
,
mVideoWidget
(
NULL
)
,
mAudioWidget
(
NULL
)
{
//NOOP
update
();
QString
s
=
pMediaFileUrl
.
toLocalFile
();
mMediaObject
=
new
Phonon
::
MediaObject
(
this
);
if
(
pMediaFileUrl
.
toLocalFile
().
contains
(
"videos"
))
{
mMediaType
=
mediaType_Video
;
mAudioOutput
=
new
Phonon
::
AudioOutput
(
Phonon
::
VideoCategory
,
this
);
mMediaObject
->
setTickInterval
(
50
);
mVideoWidget
=
new
Phonon
::
VideoWidget
();
// owned and destructed by the scene ...
Phonon
::
createPath
(
mMediaObject
,
mVideoWidget
);
/*
* The VideoVidget should recover the size from the original movie, but this is not always true expecially on
* windows and linux os. I don't know why?
* In this case the wiget size is equal to QSize(1,1).
*/
if
(
mVideoWidget
->
sizeHint
()
==
QSize
(
1
,
1
)){
mVideoWidget
->
resize
(
320
,
240
);
}
setWidget
(
mVideoWidget
);
}
else
if
(
pMediaFileUrl
.
toLocalFile
().
contains
(
"audios"
))
{
mMediaType
=
mediaType_Audio
;
mAudioOutput
=
new
Phonon
::
AudioOutput
(
Phonon
::
MusicCategory
,
this
);
mMediaObject
->
setTickInterval
(
1000
);
mAudioWidget
=
new
QWidget
();
mAudioWidget
->
resize
(
320
,
26
);
setWidget
(
mAudioWidget
);
}
Phonon
::
createPath
(
mMediaObject
,
mAudioOutput
);
mSource
=
Phonon
::
MediaSource
(
pMediaFileUrl
);
mMediaObject
->
setCurrentSource
(
mSource
);
UBGraphicsMediaItemDelegate
*
itemDelegate
=
new
UBGraphicsMediaItemDelegate
(
this
,
mMediaObject
);
itemDelegate
->
init
();
setDelegate
(
itemDelegate
);
mDelegate
->
frame
()
->
setOperationMode
(
UBGraphicsDelegateFrame
::
Resizing
);
setData
(
UBGraphicsItemData
::
itemLayerType
,
QVariant
(
itemLayerType
::
ObjectItem
));
//Necessary to set if we want z value to be assigned correctly
connect
(
mDelegate
,
SIGNAL
(
showOnDisplayChanged
(
bool
)),
this
,
SLOT
(
showOnDisplayChanged
(
bool
)));
connect
(
mMediaObject
,
SIGNAL
(
hasVideoChanged
(
bool
)),
this
,
SLOT
(
hasMediaChanged
(
bool
)));
}
...
...
@@ -106,8 +158,14 @@ void UBGraphicsMediaItem::toggleMute()
void
UBGraphicsMediaItem
::
hasMediaChanged
(
bool
hasMedia
)
{
if
(
hasMedia
&&
mMediaObject
->
isSeekable
())
{
Q_UNUSED
(
hasMedia
);
mMediaObject
->
seek
(
mInitialPos
);
UBGraphicsMediaItemDelegate
*
med
=
dynamic_cast
<
UBGraphicsMediaItemDelegate
*>
(
mDelegate
);
if
(
med
)
med
->
updateTicker
(
initialPos
());
}
}
...
...
@@ -139,3 +197,104 @@ void UBGraphicsMediaItem::showOnDisplayChanged(bool shown)
mAudioOutput
->
setMuted
(
mMuted
);
}
}
UBItem
*
UBGraphicsMediaItem
::
deepCopy
()
const
{
QUrl
url
=
this
->
mediaFileUrl
();
UBGraphicsMediaItem
*
copy
;
copy
=
new
UBGraphicsMediaItem
(
url
,
parentItem
());
copy
->
setPos
(
this
->
pos
());
copy
->
setTransform
(
this
->
transform
());
copy
->
setFlag
(
QGraphicsItem
::
ItemIsMovable
,
true
);
copy
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
copy
->
setData
(
UBGraphicsItemData
::
ItemLayerType
,
this
->
data
(
UBGraphicsItemData
::
ItemLayerType
));
copy
->
setData
(
UBGraphicsItemData
::
ItemLocked
,
this
->
data
(
UBGraphicsItemData
::
ItemLocked
));
copy
->
setUuid
(
this
->
uuid
());
// this is OK as long as Videos are imutable
copy
->
setSourceUrl
(
this
->
sourceUrl
());
copy
->
resize
(
this
->
size
());
connect
(
UBApplication
::
boardController
,
SIGNAL
(
activeSceneChanged
()),
copy
,
SLOT
(
activeSceneChanged
()));
// TODO UB 4.7 complete all members
return
copy
;
}
void
UBGraphicsMediaItem
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
// QDrag* mDrag = new QDrag(event->widget());
// QMimeData* pMime = new QMimeData();
// mDrag->setMimeData(pMime);
// mDrag->start();
// UBApplication::boardController->activeScene()->setActiveItem(this);
if
(
mDelegate
)
{
mDelegate
->
mousePressEvent
(
event
);
if
(
mDelegate
&&
parentItem
()
&&
UBGraphicsGroupContainerItem
::
Type
==
parentItem
()
->
type
())
{
UBGraphicsGroupContainerItem
*
group
=
qgraphicsitem_cast
<
UBGraphicsGroupContainerItem
*>
(
parentItem
());
if
(
group
)
{
QGraphicsItem
*
curItem
=
group
->
getCurrentItem
();
if
(
curItem
&&
this
!=
curItem
)
{
group
->
deselectCurrentItem
();
}
group
->
setCurrentItem
(
this
);
this
->
setSelected
(
true
);
mDelegate
->
positionHandles
();
}
}
else
{
mDelegate
->
getToolBarItem
()
->
show
();
}
}
if
(
parentItem
()
&&
parentItem
()
->
type
()
==
UBGraphicsGroupContainerItem
::
Type
)
{
mShouldMove
=
false
;
if
(
!
Delegate
()
->
mousePressEvent
(
event
))
{
event
->
accept
();
}
}
else
{
mShouldMove
=
(
event
->
buttons
()
&
Qt
::
LeftButton
);
mMousePressPos
=
event
->
scenePos
();
mMouseMovePos
=
mMousePressPos
;
event
->
accept
();
setSelected
(
true
);
}
}
void
UBGraphicsMediaItem
::
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
if
(
mShouldMove
&&
(
event
->
buttons
()
&
Qt
::
LeftButton
))
{
QPointF
offset
=
event
->
scenePos
()
-
mMousePressPos
;
if
(
offset
.
toPoint
().
manhattanLength
()
>
QApplication
::
startDragDistance
())
{
QPointF
mouseMovePos
=
mapFromScene
(
mMouseMovePos
);
QPointF
eventPos
=
mapFromScene
(
event
->
scenePos
());
QPointF
translation
=
eventPos
-
mouseMovePos
;
translate
(
translation
.
x
(),
translation
.
y
());
}
mMouseMovePos
=
event
->
scenePos
();
}
event
->
accept
();
}
src/domain/UBGraphicsMediaItem.h
View file @
54d392a7
...
...
@@ -18,6 +18,7 @@
#include "UBGraphicsProxyWidget.h"
#include <phonon/AudioOutput>
#include <phonon/MediaObject>
#include <phonon/VideoWidget>
#include "core/UBApplication.h"
#include "board/UBBoardController.h"
...
...
@@ -27,10 +28,21 @@ class UBGraphicsMediaItem : public UBGraphicsProxyWidget
Q_OBJECT
public
:
typedef
enum
{
mediaType_Video
,
mediaType_Audio
}
mediaType
;
UBGraphicsMediaItem
(
const
QUrl
&
pMediaFileUrl
,
QGraphicsItem
*
parent
=
0
);
~
UBGraphicsMediaItem
();
enum
{
Type
=
UBGraphicsItemType
::
MediaItemType
};
virtual
int
type
()
const
{
return
Type
;
}
void
hasMediaChanged
(
bool
hasMedia
);
void
showOnDisplayChanged
(
bool
shown
);
...
...
@@ -56,8 +68,17 @@ public:
return
mMuted
;
}
Phonon
::
VideoWidget
*
videoWidget
()
const
{
return
mVideoWidget
;
}
mediaType
getMediaType
()
{
return
mMediaType
;
}
virtual
UBGraphicsScene
*
scene
();
virtual
UBItem
*
deepCopy
()
const
;
public
slots
:
void
toggleMute
();
...
...
@@ -66,11 +87,16 @@ public slots:
protected
:
virtual
QVariant
itemChange
(
GraphicsItemChange
change
,
const
QVariant
&
value
);
virtual
void
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
clearSource
();
Phonon
::
MediaObject
*
mMediaObject
;
Phonon
::
VideoWidget
*
mVideoWidget
;
Phonon
::
AudioOutput
*
mAudioOutput
;
Phonon
::
MediaSource
mSource
;
QWidget
*
mAudioWidget
;
private
:
...
...
@@ -83,6 +109,20 @@ private:
qint64
mInitialPos
;
mediaType
mMediaType
;
bool
mShouldMove
;
QPointF
mMousePressPos
;
QPointF
mMouseMovePos
;
};
class
UBGraphicsUnitedMediaItem
:
public
UBGraphicsMediaItem
{
public
:
UBGraphicsUnitedMediaItem
(
const
QUrl
&
pMediaFileUrl
,
QGraphicsItem
*
parent
=
0
);
};
#endif // UBGRAPHICSMEDIAITEM_H
src/domain/UBGraphicsMediaItemDelegate.cpp
0 → 100644
View file @
54d392a7
/*
* 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 3 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 <QtGui>
#include <QtSvg>
#include "UBGraphicsMediaItem.h"
#include "UBGraphicsMediaItemDelegate.h"
#include "UBGraphicsScene.h"
#include "core/UBSettings.h"
#include "core/UBApplication.h"
#include "core/UBApplicationController.h"
#include "core/UBDisplayManager.h"
#include "domain/UBGraphicsMediaItem.h"
#include "core/memcheck.h"
UBGraphicsMediaItemDelegate
::
UBGraphicsMediaItemDelegate
(
UBGraphicsMediaItem
*
pDelegated
,
Phonon
::
MediaObject
*
pMedia
,
QObject
*
parent
)
:
UBGraphicsItemDelegate
(
pDelegated
,
parent
,
true
,
false
)
,
mMedia
(
pMedia
)
{
QPalette
palette
;
palette
.
setBrush
(
QPalette
::
Light
,
Qt
::
darkGray
);
mMedia
->
setTickInterval
(
50
);
connect
(
mMedia
,
SIGNAL
(
stateChanged
(
Phonon
::
State
,
Phonon
::
State
)),
this
,
SLOT
(
mediaStateChanged
(
Phonon
::
State
,
Phonon
::
State
)));
connect
(
mMedia
,
SIGNAL
(
finished
()),
this
,
SLOT
(
updatePlayPauseState
()));
connect
(
mMedia
,
SIGNAL
(
tick
(
qint64
)),
this
,
SLOT
(
updateTicker
(
qint64
)));
connect
(
mMedia
,
SIGNAL
(
totalTimeChanged
(
qint64
)),
this
,
SLOT
(
totalTimeChanged
(
qint64
)));
}
bool
UBGraphicsMediaItemDelegate
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
Q_UNUSED
(
event
);
mToolBarItem
->
show
();
return
UBGraphicsItemDelegate
::
mousePressEvent
(
event
);
}
void
UBGraphicsMediaItemDelegate
::
buildButtons
()
{
mPlayPauseButton
=
new
DelegateButton
(
":/images/play.svg"
,
mDelegated
,
mToolBarItem
,
Qt
::
TitleBarArea
);
connect
(
mPlayPauseButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
togglePlayPause
()));
mStopButton
=
new
DelegateButton
(
":/images/stop.svg"
,
mDelegated
,
mToolBarItem
,
Qt
::
TitleBarArea
);
connect
(
mStopButton
,
SIGNAL
(
clicked
(
bool
)),
mMedia
,
SLOT
(
stop
()));
mMediaControl
=
new
DelegateMediaControl
(
delegated
(),
mToolBarItem
);
mMediaControl
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
UBGraphicsItem
::
assignZValue
(
mMediaControl
,
delegated
()
->
zValue
());
if
(
delegated
()
->
isMuted
())
mMuteButton
=
new
DelegateButton
(
":/images/soundOff.svg"
,
mDelegated
,
mToolBarItem
,
Qt
::
TitleBarArea
);
else
mMuteButton
=
new
DelegateButton
(
":/images/soundOn.svg"
,
mDelegated
,
mToolBarItem
,
Qt
::
TitleBarArea
);
connect
(
mMuteButton
,
SIGNAL
(
clicked
(
bool
)),
delegated
(),
SLOT
(
toggleMute
()));
connect
(
mMuteButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
toggleMute
()));
// for changing button image
mButtons
<<
mPlayPauseButton
<<
mStopButton
<<
mMuteButton
;
mToolBarItem
->
setItemsOnToolBar
(
QList
<
QGraphicsItem
*>
()
<<
mPlayPauseButton
<<
mStopButton
<<
mMediaControl
<<
mMuteButton
);
mToolBarItem
->
setVisibleOnBoard
(
true
);
mToolBarItem
->
setShifting
(
false
);
UBGraphicsMediaItem
*
audioItem
=
dynamic_cast
<
UBGraphicsMediaItem
*>
(
mDelegated
);
if
(
audioItem
)
{
if
(
audioItem
->
getMediaType
()
==
UBGraphicsMediaItem
::
mediaType_Audio
)
{
positionHandles
();
}
}
}
UBGraphicsMediaItemDelegate
::~
UBGraphicsMediaItemDelegate
()
{
//NOOP
}
void
UBGraphicsMediaItemDelegate
::
positionHandles
()
{
UBGraphicsItemDelegate
::
positionHandles
();
qreal
AntiScaleRatio
=
1
/
(
UBApplication
::
boardController
->
systemScaleFactor
()
*
UBApplication
::
boardController
->
currentZoom
());
UBGraphicsMediaItem
*
mediaItem
=
dynamic_cast
<
UBGraphicsMediaItem
*>
(
mDelegated
);
if
(
mediaItem
)
{
if
(
mediaItem
->
getMediaType
()
!=
UBGraphicsMediaItem
::
mediaType_Audio
)
{
mToolBarItem
->
setPos
(
0
,
delegated
()
->
boundingRect
().
height
()
-
mToolBarItem
->
rect
().
height
()
*
AntiScaleRatio
);
mToolBarItem
->
setScale
(
AntiScaleRatio
);
QRectF
toolBarRect
=
mToolBarItem
->
rect
();
toolBarRect
.
setWidth
(
delegated
()
->
boundingRect
().
width
()
/
AntiScaleRatio
);
mToolBarItem
->
setRect
(
toolBarRect
);
}
else
{
mToolBarItem
->
setPos
(
0
,
0
);
mToolBarItem
->
show
();
}
}
int
mediaItemWidth
=
mToolBarItem
->
boundingRect
().
width
();
foreach
(
DelegateButton
*
button
,
mButtons
)
{
if
(
button
->
getSection
()
==
Qt
::
TitleBarArea
)
mediaItemWidth
-=
button
->
boundingRect
().
width
();
}
QRectF
mediaItemRect
=
mMediaControl
->
rect
();
mediaItemRect
.
setWidth
(
mediaItemWidth
);
mediaItemRect
.
setHeight
(
mToolBarItem
->
boundingRect
().
height
());
mMediaControl
->
setRect
(
mediaItemRect
);
mToolBarItem
->
positionHandles
();
mMediaControl
->
positionHandles
();
if
(
mediaItem
)
{
if
(
mediaItem
->
getMediaType
()
==
UBGraphicsMediaItem
::
mediaType_Audio
)
{
mToolBarItem
->
show
();
}
}
}
void
UBGraphicsMediaItemDelegate
::
remove
(
bool
canUndo
)
{
if
(
delegated
()
&&
delegated
()
->
mediaObject
())
delegated
()
->
mediaObject
()
->
stop
();
QGraphicsScene
*
scene
=
mDelegated
->
scene
();
scene
->
removeItem
(
mMediaControl
);
UBGraphicsItemDelegate
::
remove
(
canUndo
);
}
void
UBGraphicsMediaItemDelegate
::
toggleMute
()
{
if
(
delegated
()
->
isMuted
())
mMuteButton
->
setFileName
(
":/images/soundOff.svg"
);
else
mMuteButton
->
setFileName
(
":/images/soundOn.svg"
);
}
UBGraphicsMediaItem
*
UBGraphicsMediaItemDelegate
::
delegated
()
{
return
dynamic_cast
<
UBGraphicsMediaItem
*>
(
mDelegated
);
}
void
UBGraphicsMediaItemDelegate
::
togglePlayPause
()
{
if
(
delegated
()
&&
delegated
()
->
mediaObject
())
{
Phonon
::
MediaObject
*
media
=
delegated
()
->
mediaObject
();
if
(
media
->
state
()
==
Phonon
::
StoppedState
)
{
media
->
play
();
}
else
if
(
media
->
state
()
==
Phonon
::
PlayingState
)
{
if
(
media
->
remainingTime
()
<=
0
)
{
media
->
stop
();
media
->
play
();
}
else
{
media
->
pause
();
if
(
delegated
()
->
scene
())
delegated
()
->
scene
()
->
setModified
(
true
);
}
}
else
if
(
media
->
state
()
==
Phonon
::
PausedState
)
{
if
(
media
->
remainingTime
()
<=
0
)
{
media
->
stop
();
}
media
->
play
();
}
else
if
(
media
->
state
()
==
Phonon
::
LoadingState
)
{
delegated
()
->
mediaObject
()
->
setCurrentSource
(
delegated
()
->
mediaFileUrl
());
media
->
play
();
}
else
if
(
media
->
state
()
==
Phonon
::
ErrorState
){
qDebug
()
<<
"Error appeared."
<<
media
->
errorString
();
}
}
}
void
UBGraphicsMediaItemDelegate
::
mediaStateChanged
(
Phonon
::
State
newstate
,
Phonon
::
State
oldstate
)
{
Q_UNUSED
(
newstate
);
Q_UNUSED
(
oldstate
);
updatePlayPauseState
();
}
void
UBGraphicsMediaItemDelegate
::
updatePlayPauseState
()
{
Phonon
::
MediaObject
*
media
=
delegated
()
->
mediaObject
();
if
(
media
->
state
()
==
Phonon
::
PlayingState
)
mPlayPauseButton
->
setFileName
(
":/images/pause.svg"
);
else
mPlayPauseButton
->
setFileName
(
":/images/play.svg"
);
}
void
UBGraphicsMediaItemDelegate
::
updateTicker
(
qint64
time
)
{
Phonon
::
MediaObject
*
media
=
delegated
()
->
mediaObject
();
mMediaControl
->
totalTimeChanged
(
media
->
totalTime
());
mMediaControl
->
updateTicker
(
time
);
}
void
UBGraphicsMediaItemDelegate
::
totalTimeChanged
(
qint64
newTotalTime
)
{
mMediaControl
->
totalTimeChanged
(
newTotalTime
);
}
\ No newline at end of file
src/domain/UBGraphicsMediaItemDelegate.h
0 → 100644
View file @
54d392a7
/*
* 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 3 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 UBGRAPHICSMEDIAITEMDELEGATE_H_
#define UBGRAPHICSMEDIAITEMDELEGATE_H_
#include <QtGui>
#include <phonon/MediaObject>
#include "core/UB.h"
#include "UBGraphicsItemDelegate.h"
class
QGraphicsSceneMouseEvent
;
class
QGraphicsItem
;
class
UBGraphicsMediaItemDelegate
:
public
UBGraphicsItemDelegate
{
Q_OBJECT
public
:
UBGraphicsMediaItemDelegate
(
UBGraphicsMediaItem
*
pDelegated
,
Phonon
::
MediaObject
*
pMedia
,
QObject
*
parent
=
0
);
virtual
~
UBGraphicsMediaItemDelegate
();
virtual
void
positionHandles
();
bool
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
);
public
slots
:
void
toggleMute
();
void
updateTicker
(
qint64
time
);
protected
slots
:
virtual
void
remove
(
bool
canUndo
=
true
);
void
togglePlayPause
();
void
mediaStateChanged
(
Phonon
::
State
newstate
,
Phonon
::
State
oldstate
);
void
updatePlayPauseState
();
void
totalTimeChanged
(
qint64
newTotalTime
);
protected
:
virtual
void
buildButtons
();
UBGraphicsMediaItem
*
delegated
();
DelegateButton
*
mPlayPauseButton
;
DelegateButton
*
mStopButton
;
DelegateButton
*
mMuteButton
;
DelegateMediaControl
*
mMediaControl
;
Phonon
::
MediaObject
*
mMedia
;
};
#endif
/* UBGRAPHICSMEDIAITEMDELEGATE_H_ */
\ No newline at end of file
src/domain/UBGraphicsScene.cpp
View file @
54d392a7
...
...
@@ -50,14 +50,13 @@
#include "UBGraphicsPixmapItem.h"
#include "UBGraphicsSvgItem.h"
#include "UBGraphicsPolygonItem.h"
#include "UBGraphicsVideoItem.h"
#include "UBGraphicsAudioItem.h"
#include "UBGraphicsMediaItem.h"
#include "UBGraphicsWidgetItem.h"
#include "UBGraphicsPDFItem.h"
#include "UBGraphicsTextItem.h"
#include "UBGraphicsStrokesGroup.h"
#include "domain/
ubgraphicsgroupcontaineri
tem.h"
#include "domain/
UBGraphicsGroupContainerI
tem.h"
#include "UBAppleWidget.h"
#include "UBW3CWidget.h"
...
...
@@ -778,18 +777,17 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
if
(
mShouldUseOMP
)
{
#pragma omp parallel for
//
#pragma omp parallel for
for
(
int
i
=
0
;
i
<
collidItemsSize
;
i
++
)
{
UBGraphicsPolygonItem
*
collidingPolygonItem
=
qgraphicsitem_cast
<
UBGraphicsPolygonItem
*>
(
collidItems
.
at
(
i
));
if
(
NULL
!=
collidingPolygonItem
)
if
(
NULL
!=
collidingPolygonItem
)
{
UBGraphicsStrokesGroup
*
pGroup
=
collidingPolygonItem
->
strokesGroup
();
if
(
eraserInnerRect
.
contains
(
collidingPolygonItem
->
boundingRect
()))
{
#pragma omp critical
//
#pragma omp critical
// Put the entire polygon into the remove list
toBeRemovedItems
<<
collidingPolygonItem
;
}
...
...
@@ -826,7 +824,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
}
else */
if
(
croppedPathSimplified
.
isEmpty
())
{
#pragma omp critical
//
#pragma omp critical
// Put the entire polygon into the remove list if the eraser removes all its visible content
toBeRemovedItems
<<
collidingPolygonItem
;
}
...
...
@@ -837,14 +835,15 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
foreach
(
const
QPolygonF
&
pol
,
croppedPathSimplified
.
toFillPolygons
())
{
UBGraphicsPolygonItem
*
croppedPolygonItem
=
collidingPolygonItem
->
deepCopy
(
pol
);
#pragma omp critical
//
#pragma omp critical
if
(
NULL
!=
pGroup
){
croppedPolygonItem
->
setStrokesGroup
(
pGroup
);
//pGroup->addToGroup(croppedPolygonItem);
}
// Add this new polygon to the 'added' list
toBeAddedItems
<<
croppedPolygonItem
;
}
#pragma omp critical
//
#pragma omp critical
// Remove the original polygonitem because it has been replaced by many smaller polygons
toBeRemovedItems
<<
collidingPolygonItem
;
}
...
...
@@ -905,8 +904,9 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
foreach
(
QGraphicsItem
*
item
,
toBeRemovedItems
){
UBGraphicsPolygonItem
*
poly
=
dynamic_cast
<
UBGraphicsPolygonItem
*>
(
item
);
if
(
NULL
!=
poly
){
if
(
NULL
!=
poly
->
strokesGroup
()){
poly
->
strokesGroup
()
->
removeFromGroup
(
poly
);
UBGraphicsStrokesGroup
*
group
=
poly
->
strokesGroup
();
if
(
NULL
!=
group
){
group
->
removeFromGroup
(
poly
);
removeItem
(
poly
);
}
else
{
qDebug
()
<<
"No group present"
;
...
...
@@ -1331,67 +1331,48 @@ void UBGraphicsScene::textUndoCommandAdded(UBGraphicsTextItem *textItem)
UBApplication
::
undoStack
->
push
(
uc
);
}
}
UBGraphicsVideoItem
*
UBGraphicsScene
::
addVideo
(
const
QUrl
&
pVideoFileUrl
,
bool
shouldPlayAsap
,
const
QPointF
&
pPos
)
UBGraphicsMediaItem
*
UBGraphicsScene
::
addMedia
(
const
QUrl
&
pMediaFileUrl
,
bool
shouldPlayAsap
,
const
QPointF
&
pPos
)
{
UBGraphicsVideoItem
*
videoItem
=
new
UBGraphicsVideoItem
(
pVideoFileUrl
);
UBGraphicsMediaItem
*
mediaItem
=
new
UBGraphicsMediaItem
(
pMediaFileUrl
);
if
(
mediaItem
){
connect
(
UBApplication
::
boardController
,
SIGNAL
(
activeSceneChanged
()),
mediaItem
,
SLOT
(
activeSceneChanged
()));
}
video
Item
->
setPos
(
pPos
);
media
Item
->
setPos
(
pPos
);
video
Item
->
setFlag
(
QGraphicsItem
::
ItemIsMovable
,
true
);
video
Item
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
media
Item
->
setFlag
(
QGraphicsItem
::
ItemIsMovable
,
true
);
media
Item
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
addItem
(
video
Item
);
addItem
(
media
Item
);
video
Item
->
show
();
media
Item
->
show
();
if
(
enableUndoRedoStack
)
{
//should be deleted after scene own undo stack implemented
UBGraphicsItemUndoCommand
*
uc
=
new
UBGraphicsItemUndoCommand
(
this
,
0
,
video
Item
);
UBGraphicsItemUndoCommand
*
uc
=
new
UBGraphicsItemUndoCommand
(
this
,
0
,
media
Item
);
UBApplication
::
undoStack
->
push
(
uc
);
}
video
Item
->
mediaObject
()
->
play
();
media
Item
->
mediaObject
()
->
play
();
if
(
!
shouldPlayAsap
)
{
video
Item
->
mediaObject
()
->
pause
();
video
Item
->
mediaObject
()
->
seek
(
0
);
media
Item
->
mediaObject
()
->
pause
();
media
Item
->
mediaObject
()
->
seek
(
0
);
}
setDocumentUpdated
();
return
video
Item
;
return
media
Item
;
}
UBGraphics
AudioItem
*
UBGraphicsScene
::
addAudio
(
const
QUrl
&
pAudi
oFileUrl
,
bool
shouldPlayAsap
,
const
QPointF
&
pPos
)
UBGraphics
MediaItem
*
UBGraphicsScene
::
addVideo
(
const
QUrl
&
pVide
oFileUrl
,
bool
shouldPlayAsap
,
const
QPointF
&
pPos
)
{
UBGraphicsAudioItem
*
audioItem
=
new
UBGraphicsAudioItem
(
pAudioFileUrl
);
audioItem
->
setPos
(
pPos
);
audioItem
->
setFlag
(
QGraphicsItem
::
ItemIsMovable
,
true
);
audioItem
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
addItem
(
audioItem
);
audioItem
->
show
();
if
(
enableUndoRedoStack
)
{
//should be deleted after scene own undo stack implemented
UBGraphicsItemUndoCommand
*
uc
=
new
UBGraphicsItemUndoCommand
(
this
,
0
,
audioItem
);
UBApplication
::
undoStack
->
push
(
uc
);
}
audioItem
->
mediaObject
()
->
play
();
if
(
!
shouldPlayAsap
)
{
audioItem
->
mediaObject
()
->
pause
();
audioItem
->
mediaObject
()
->
seek
(
0
);
}
setDocumentUpdated
();
return
addMedia
(
pVideoFileUrl
,
shouldPlayAsap
,
pPos
);
}
return
audioItem
;
UBGraphicsMediaItem
*
UBGraphicsScene
::
addAudio
(
const
QUrl
&
pAudioFileUrl
,
bool
shouldPlayAsap
,
const
QPointF
&
pPos
)
{
return
addMedia
(
pAudioFileUrl
,
shouldPlayAsap
,
pPos
);
}
UBGraphicsWidgetItem
*
UBGraphicsScene
::
addWidget
(
const
QUrl
&
pWidgetUrl
,
const
QPointF
&
pPos
)
...
...
@@ -2072,7 +2053,7 @@ QList<QUrl> UBGraphicsScene::relativeDependencies() const
while
(
itItems
.
hasNext
())
{
UBGraphics
VideoItem
*
videoItem
=
qgraphicsitem_cast
<
UBGraphicsVideo
Item
*>
(
itItems
.
next
());
UBGraphics
MediaItem
*
videoItem
=
qgraphicsitem_cast
<
UBGraphicsMedia
Item
*>
(
itItems
.
next
());
if
(
videoItem
&&
videoItem
->
mediaFileUrl
().
isRelative
())
{
...
...
src/domain/UBGraphicsScene.h
View file @
54d392a7
...
...
@@ -29,6 +29,7 @@ class UBGraphicsPixmapItem;
class
UBGraphicsProxyWidget
;
class
UBGraphicsSvgItem
;
class
UBGraphicsPolygonItem
;
class
UBGraphicsMediaItem
;
class
UBGraphicsVideoItem
;
class
UBGraphicsAudioItem
;
class
UBGraphicsWidgetItem
;
...
...
@@ -130,8 +131,9 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
UBGraphicsW3CWidgetItem
*
addW3CWidget
(
const
QUrl
&
pWidgetUrl
,
const
QPointF
&
pPos
=
QPointF
(
0
,
0
),
int
widgetType
=
UBGraphicsItemType
::
W3CWidgetItemType
);
void
addGraphicsWidget
(
UBGraphicsWidgetItem
*
graphicsWidget
,
const
QPointF
&
pPos
=
QPointF
(
0
,
0
));
UBGraphicsVideoItem
*
addVideo
(
const
QUrl
&
pVideoFileUrl
,
bool
shouldPlayAsap
,
const
QPointF
&
pPos
=
QPointF
(
0
,
0
));
UBGraphicsAudioItem
*
addAudio
(
const
QUrl
&
pAudioFileUrl
,
bool
shouldPlayAsap
,
const
QPointF
&
pPos
=
QPointF
(
0
,
0
));
UBGraphicsMediaItem
*
addMedia
(
const
QUrl
&
pMediaFileUrl
,
bool
shouldPlayAsap
,
const
QPointF
&
pPos
=
QPointF
(
0
,
0
));
UBGraphicsMediaItem
*
addVideo
(
const
QUrl
&
pVideoFileUrl
,
bool
shouldPlayAsap
,
const
QPointF
&
pPos
=
QPointF
(
0
,
0
));
UBGraphicsMediaItem
*
addAudio
(
const
QUrl
&
pAudioFileUrl
,
bool
shouldPlayAsap
,
const
QPointF
&
pPos
=
QPointF
(
0
,
0
));
UBGraphicsSvgItem
*
addSvg
(
const
QUrl
&
pSvgFileUrl
,
const
QPointF
&
pPos
=
QPointF
(
0
,
0
));
UBGraphicsTextItem
*
addText
(
const
QString
&
pString
,
const
QPointF
&
pTopLeft
=
QPointF
(
0
,
0
));
UBGraphicsTextItem
*
textForObjectName
(
const
QString
&
pString
,
const
QString
&
objectName
=
"UBTGZeroPageSessionTitle"
);
...
...
src/domain/UBGraphicsTextItem.cpp
View file @
54d392a7
...
...
@@ -14,6 +14,7 @@
*/
#include <QtGui>
#include "UBGraphicsGroupContainerItem.h"
#include "UBGraphicsTextItem.h"
#include "UBGraphicsTextItemDelegate.h"
#include "UBGraphicsScene.h"
...
...
@@ -97,8 +98,32 @@ QVariant UBGraphicsTextItem::itemChange(GraphicsItemChange change, const QVarian
void
UBGraphicsTextItem
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
if
(
mDelegate
)
{
mDelegate
->
mousePressEvent
(
event
);
if
(
mDelegate
&&
parentItem
()
&&
UBGraphicsGroupContainerItem
::
Type
==
parentItem
()
->
type
())
{
UBGraphicsGroupContainerItem
*
group
=
qgraphicsitem_cast
<
UBGraphicsGroupContainerItem
*>
(
parentItem
());
if
(
group
)
{
QGraphicsItem
*
curItem
=
group
->
getCurrentItem
();
if
(
curItem
&&
this
!=
curItem
)
{
group
->
deselectCurrentItem
();
}
group
->
setCurrentItem
(
this
);
this
->
setSelected
(
true
);
mDelegate
->
positionHandles
();
}
}
else
{
mDelegate
->
getToolBarItem
()
->
show
();
}
}
if
(
!
data
(
UBGraphicsItemData
::
ItemEditable
).
toBool
())
return
;
...
...
src/domain/UBGraphicsTextItemDelegate.cpp
View file @
54d392a7
...
...
@@ -16,6 +16,8 @@
#include <QtGui>
#include <QtSvg>
#include "core/UBApplication.h"
#include "UBGraphicsGroupContainerItem.h"
#include "UBGraphicsTextItemDelegate.h"
#include "UBGraphicsScene.h"
#include "gui/UBResources.h"
...
...
@@ -108,7 +110,7 @@ void UBGraphicsTextItemDelegate::buildButtons()
QList
<
QGraphicsItem
*>
itemsOnToolBar
;
itemsOnToolBar
<<
mFontButton
<<
mColorButton
<<
mDecreaseSizeButton
<<
mIncreaseSizeButton
;
mToolBarItem
->
setItemsOnToolBar
(
itemsOnToolBar
);
mToolBarItem
->
setShifting
(
true
);
mToolBarItem
->
setVisibleOnBoard
(
true
);
}
...
...
@@ -281,6 +283,39 @@ void UBGraphicsTextItemDelegate::updateMenuActionState()
void
UBGraphicsTextItemDelegate
::
positionHandles
()
{
UBGraphicsItemDelegate
::
positionHandles
();
if
(
mDelegated
->
isSelected
()
||
(
mDelegated
->
parentItem
()
&&
UBGraphicsGroupContainerItem
::
Type
==
mDelegated
->
parentItem
()
->
type
()))
{
if
(
mToolBarItem
->
isVisibleOnBoard
())
{
qreal
AntiScaleRatio
=
1
/
(
UBApplication
::
boardController
->
systemScaleFactor
()
*
UBApplication
::
boardController
->
currentZoom
());
mToolBarItem
->
setScale
(
AntiScaleRatio
);
QRectF
toolBarRect
=
mToolBarItem
->
rect
();
toolBarRect
.
setWidth
(
delegated
()
->
boundingRect
().
width
()
/
AntiScaleRatio
);
mToolBarItem
->
setRect
(
toolBarRect
);
mToolBarItem
->
positionHandles
();
mToolBarItem
->
update
();
if
(
mToolBarItem
->
isShifting
())
mToolBarItem
->
setPos
(
0
,
-
mToolBarItem
->
boundingRect
().
height
()
*
AntiScaleRatio
);
else
mToolBarItem
->
setPos
(
0
,
0
);
UBGraphicsGroupContainerItem
*
group
=
qgraphicsitem_cast
<
UBGraphicsGroupContainerItem
*>
(
mDelegated
->
parentItem
());
mToolBarItem
->
hide
();
if
(
group
&&
group
->
getCurrentItem
()
==
mDelegated
&&
group
->
isSelected
())
mToolBarItem
->
show
();
if
(
!
group
)
mToolBarItem
->
show
();
}
}
else
{
mToolBarItem
->
hide
();
}
setEditable
(
isEditable
());
}
...
...
src/domain/UBGraphicsVideoItem.cpp
View file @
54d392a7
/*
* 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 3 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 "UBGraphicsVideoItem.h"
#include "UBGraphicsVideoItemDelegate.h"
#include "UBGraphicsDelegateFrame.h"
#include "core/memcheck.h"
UBGraphicsVideoItem
::
UBGraphicsVideoItem
(
const
QUrl
&
pVideoFileUrl
,
QGraphicsItem
*
parent
)
:
UBGraphicsMediaItem
(
pVideoFileUrl
,
parent
)
,
mShouldMove
(
false
)
{
update
();
mMediaObject
=
new
Phonon
::
MediaObject
(
this
);
mVideoWidget
=
new
Phonon
::
VideoWidget
();
// owned and destructed by the scene ...
Phonon
::
createPath
(
mMediaObject
,
mVideoWidget
);
mAudioOutput
=
new
Phonon
::
AudioOutput
(
Phonon
::
VideoCategory
,
this
);
Phonon
::
createPath
(
mMediaObject
,
mAudioOutput
);
/*
* The VideoVidget should recover the size from the original movie, but this is not always true expecially on
* windows and linux os. I don't know why?
* In this case the wiget size is equal to QSize(1,1).
*/
if
(
mVideoWidget
->
sizeHint
()
==
QSize
(
1
,
1
)){
mVideoWidget
->
resize
(
320
,
240
);
}
setWidget
(
mVideoWidget
);
UBGraphicsVideoItemDelegate
*
delegate
=
new
UBGraphicsVideoItemDelegate
(
this
,
mMediaObject
);
delegate
->
init
();
setDelegate
(
delegate
);
mDelegate
->
frame
()
->
setOperationMode
(
UBGraphicsDelegateFrame
::
Resizing
);
setData
(
UBGraphicsItemData
::
itemLayerType
,
QVariant
(
itemLayerType
::
ObjectItem
));
//Necessary to set if we want z value to be assigned correctly
connect
(
mDelegate
,
SIGNAL
(
showOnDisplayChanged
(
bool
)),
this
,
SLOT
(
showOnDisplayChanged
(
bool
)));
connect
(
mMediaObject
,
SIGNAL
(
hasVideoChanged
(
bool
)),
this
,
SLOT
(
hasVideoChanged
(
bool
)));
}
UBGraphicsVideoItem
::~
UBGraphicsVideoItem
()
{
//NOOP
}
UBItem
*
UBGraphicsVideoItem
::
deepCopy
()
const
{
QUrl
videoUrl
=
this
->
mediaFileUrl
();
UBGraphicsVideoItem
*
copy
=
new
UBGraphicsVideoItem
(
videoUrl
,
parentItem
());
connect
(
UBApplication
::
boardController
,
SIGNAL
(
activeSceneChanged
()),
copy
,
SLOT
(
activeSceneChanged
()));
copy
->
setPos
(
this
->
pos
());
copy
->
setTransform
(
this
->
transform
());
copy
->
setFlag
(
QGraphicsItem
::
ItemIsMovable
,
true
);
copy
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
copy
->
setData
(
UBGraphicsItemData
::
ItemLayerType
,
this
->
data
(
UBGraphicsItemData
::
ItemLayerType
));
copy
->
setData
(
UBGraphicsItemData
::
ItemLocked
,
this
->
data
(
UBGraphicsItemData
::
ItemLocked
));
copy
->
setUuid
(
this
->
uuid
());
// this is OK as long as Videos are imutable
copy
->
setSourceUrl
(
this
->
sourceUrl
());
copy
->
resize
(
this
->
size
());
// TODO UB 4.7 complete all members
return
copy
;
}
void
UBGraphicsVideoItem
::
hasVideoChanged
(
bool
hasVideo
)
{
if
(
hasVideo
&&
mMediaObject
->
isSeekable
())
{
hasMediaChanged
(
hasVideo
);
UBGraphicsVideoItemDelegate
*
vid
=
dynamic_cast
<
UBGraphicsVideoItemDelegate
*>
(
mDelegate
);
if
(
vid
)
vid
->
updateTicker
(
initialPos
());
}
}
void
UBGraphicsVideoItem
::
showOnDisplayChanged
(
bool
shown
)
{
UBGraphicsMediaItem
::
showOnDisplayChanged
(
shown
);
UBGraphicsVideoItemDelegate
*
vid
=
dynamic_cast
<
UBGraphicsVideoItemDelegate
*>
(
mDelegate
);
if
(
vid
)
vid
->
toggleMute
();
}
void
UBGraphicsVideoItem
::
setUuid
(
const
QUuid
&
pUuid
)
{
UBItem
::
setUuid
(
pUuid
);
setData
(
UBGraphicsItemData
::
ItemUuid
,
QVariant
(
pUuid
));
//store item uuid inside the QGraphicsItem to fast operations with Items on the scene
}
void
UBGraphicsVideoItem
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
mShouldMove
=
(
event
->
buttons
()
&
Qt
::
LeftButton
);
mMousePressPos
=
event
->
scenePos
();
mMouseMovePos
=
mMousePressPos
;
event
->
accept
();
setSelected
(
true
);
}
void
UBGraphicsVideoItem
::
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
if
(
mShouldMove
&&
(
event
->
buttons
()
&
Qt
::
LeftButton
))
{
QPointF
offset
=
event
->
scenePos
()
-
mMousePressPos
;
if
(
offset
.
toPoint
().
manhattanLength
()
>
QApplication
::
startDragDistance
())
{
QPointF
mouseMovePos
=
mapFromScene
(
mMouseMovePos
);
QPointF
eventPos
=
mapFromScene
(
event
->
scenePos
());
QPointF
translation
=
eventPos
-
mouseMovePos
;
translate
(
translation
.
x
(),
translation
.
y
());
}
mMouseMovePos
=
event
->
scenePos
();
}
event
->
accept
();
}
src/domain/UBGraphicsVideoItem.h
View file @
54d392a7
/*
* 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 3 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 UBGRAPHICSVIDEOITEM_H
#define UBGRAPHICSVIDEOITEM_H
#include <phonon/VideoWidget>
#include "UBGraphicsMediaItem.h"
#include "core/UB.h"
#include "core/UBApplication.h"
#include "board/UBBoardController.h"
class
UBGraphicsVideoItem
:
public
UBGraphicsMediaItem
{
Q_OBJECT
;
public
:
UBGraphicsVideoItem
(
const
QUrl
&
pMediaFileUrl
,
QGraphicsItem
*
parent
=
0
);
~
UBGraphicsVideoItem
();
enum
{
Type
=
UBGraphicsItemType
::
VideoItemType
};
virtual
int
type
()
const
{
return
Type
;
}
virtual
UBItem
*
deepCopy
()
const
;
Phonon
::
VideoWidget
*
videoWidget
()
const
{
return
mVideoWidget
;
}
virtual
UBGraphicsItemDelegate
*
Delegate
()
const
{
return
mDelegate
;}
virtual
void
clearSource
()
{
UBGraphicsMediaItem
::
clearSource
();
}
virtual
void
setUuid
(
const
QUuid
&
pUuid
);
public
slots
:
void
hasVideoChanged
(
bool
hasVideo
);
protected
:
virtual
void
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
);
Phonon
::
VideoWidget
*
mVideoWidget
;
private
slots
:
void
showOnDisplayChanged
(
bool
shown
);
private
:
bool
mShouldMove
;
QPointF
mMousePressPos
;
QPointF
mMouseMovePos
;
};
#endif // UBGRAPHICSVIDEOITEM_H
src/domain/UBGraphicsVideoItemDelegate.cpp
View file @
54d392a7
This diff is collapsed.
Click to expand it.
src/domain/domain.pri
View file @
54d392a7
...
...
@@ -10,7 +10,6 @@ HEADERS += src/domain/UBGraphicsScene.h \
src/domain/UBGraphicsSvgItem.h \
src/domain/UBGraphicsPolygonItem.h \
src/domain/UBItem.h \
src/domain/UBGraphicsVideoItem.h \
src/domain/UBGraphicsWidgetItem.h \
src/domain/UBAppleWidget.h \
src/domain/UBGraphicsPDFItem.h \
...
...
@@ -20,19 +19,17 @@ HEADERS += src/domain/UBGraphicsScene.h \
src/domain/UBResizableGraphicsItem.h \
src/domain/UBGraphicsStroke.h \
src/domain/UBGraphicsMediaItem.h \
src/domain/UBGraphicsAudioItem.h \
src/domain/UBGraphicsAudioItemDelegate.h \
src/domain/UBAbstractUndoCommand.h\
src/domain/UBAngleWidget.h \
src/domain/
ubgraphicsgroupcontaineri
tem.h \
src/domain/
ubgraphicsgroupcontaineritemd
elegate.h \
src/domain/
UBGraphicsGroupContainerI
tem.h \
src/domain/
UBGraphicsGroupContainerItemD
elegate.h \
src/domain/UBGraphicsStrokesGroup.h
HEADERS += src/domain/UBGraphicsItemDelegate.h \
src/domain/UBGraphicsVideoItemDelegate.h \
src/domain/UBGraphicsTextItemDelegate.h \
src/domain/UBGraphicsDelegateFrame.h \
src/domain/UBGraphicsWidgetItemDelegate.h
src/domain/UBGraphicsWidgetItemDelegate.h \
src/domain/UBGraphicsMediaItemDelegate.h
SOURCES += src/domain/UBGraphicsScene.cpp \
...
...
@@ -56,8 +53,6 @@ SOURCES += src/domain/UBGraphicsScene.cpp \
src/domain/UBResizableGraphicsItem.cpp \
src/domain/UBGraphicsStroke.cpp \
src/domain/UBGraphicsMediaItem.cpp \
src/domain/UBGraphicsAudioItem.cpp \
src/domain/UBGraphicsAudioItemDelegate.cpp \
src/domain/UBAbstractUndoCommand.cpp \
src/domain/UBAngleWidget.cpp \
src/domain/ubgraphicsgroupcontaineritem.cpp \
...
...
@@ -65,8 +60,8 @@ SOURCES += src/domain/UBGraphicsScene.cpp \
src/domain/UBGraphicsStrokesGroup.cpp
SOURCES += src/domain/UBGraphicsItemDelegate.cpp \
src/domain/UBGraphicsVideo
ItemDelegate.cpp \
src/domain/UBGraphicsText
ItemDelegate.cpp \
src/domain/UBGraphicsText
ItemDelegate.cpp \
src/domain/UBGraphicsMedia
ItemDelegate.cpp \
src/domain/UBGraphicsDelegateFrame.cpp \
src/domain/UBGraphicsWidgetItemDelegate.cpp
src/domain/UBGraphicsWidgetItemDelegate.cpp
\
src/frameworks/UBCoreGraphicsScene.cpp
View file @
54d392a7
...
...
@@ -15,8 +15,6 @@
#include "UBCoreGraphicsScene.h"
#include "domain/UBGraphicsAudioItem.h"
#include "domain/UBGraphicsVideoItem.h"
#include "domain/UBGraphicsMediaItem.h"
#include "domain/UBGraphicsWidgetItem.h"
...
...
@@ -66,11 +64,8 @@ bool UBCoreGraphicsScene::deleteItem(QGraphicsItem* item)
UBGraphicsItem
*
item_casted
=
0
;
switch
(
item
->
type
())
{
case
UBGraphicsAudioItem
:
:
Type
:
item_casted
=
dynamic_cast
<
UBGraphicsAudioItem
*>
(
item
);
break
;
case
UBGraphicsVideoItem
:
:
Type
:
item_casted
=
dynamic_cast
<
UBGraphicsVideoItem
*>
(
item
);
case
UBGraphicsMediaItem
:
:
Type
:
item_casted
=
dynamic_cast
<
UBGraphicsMediaItem
*>
(
item
);
break
;
case
UBGraphicsW3CWidgetItem
:
:
Type
:
item_casted
=
dynamic_cast
<
UBGraphicsWidgetItem
*>
(
item
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment