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
56eceb66
Commit
56eceb66
authored
May 07, 2012
by
Ivan Ilyin
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:Sankore/Sankore-3.1
parents
f4fffe47
17dd8564
Changes
43
Hide whitespace changes
Inline
Side-by-side
Showing
43 changed files
with
2228 additions
and
1613 deletions
+2228
-1613
style.qss
resources/style.qss
+7
-0
UBExportCFF.cpp
src/adaptors/UBExportCFF.cpp
+1
-0
UBBoardPaletteManager.cpp
src/board/UBBoardPaletteManager.cpp
+15
-8
UBBoardPaletteManager.h
src/board/UBBoardPaletteManager.h
+192
-184
UBFeaturesController.cpp
src/board/UBFeaturesController.cpp
+145
-54
UBFeaturesController.h
src/board/UBFeaturesController.h
+50
-22
main.cpp
src/core/main.cpp
+1
-1
UBActionableWidget.cpp
src/customWidgets/UBActionableWidget.cpp
+2
-0
UBMediaWidget.cpp
src/customWidgets/UBMediaWidget.cpp
+2
-0
UBAbstractUndoCommand.cpp
src/domain/UBAbstractUndoCommand.cpp
+2
-0
UBAngleWidget.cpp
src/domain/UBAngleWidget.cpp
+2
-0
UBGraphicsDelegateFrame.cpp
src/domain/UBGraphicsDelegateFrame.cpp
+802
-794
UBGraphicsItemDelegate.cpp
src/domain/UBGraphicsItemDelegate.cpp
+98
-3
UBGraphicsItemDelegate.h
src/domain/UBGraphicsItemDelegate.h
+37
-17
UBGraphicsItemUndoCommand.cpp
src/domain/UBGraphicsItemUndoCommand.cpp
+2
-2
UBGraphicsMediaItem.cpp
src/domain/UBGraphicsMediaItem.cpp
+2
-2
UBGraphicsStrokesGroup.cpp
src/domain/UBGraphicsStrokesGroup.cpp
+2
-0
UBGraphicsTextItemDelegate.cpp
src/domain/UBGraphicsTextItemDelegate.cpp
+11
-6
UBGraphicsVideoItemDelegate.cpp
src/domain/UBGraphicsVideoItemDelegate.cpp
+351
-336
UBGraphicsVideoItemDelegate.h
src/domain/UBGraphicsVideoItemDelegate.h
+116
-114
ubgraphicsgroupcontaineritem.cpp
src/domain/ubgraphicsgroupcontaineritem.cpp
+2
-0
ubgraphicsgroupcontaineritemdelegate.cpp
src/domain/ubgraphicsgroupcontaineritemdelegate.cpp
+2
-1
UBCoreGraphicsScene.cpp
src/frameworks/UBCoreGraphicsScene.cpp
+2
-1
UBDockDownloadWidget.cpp
src/gui/UBDockDownloadWidget.cpp
+2
-0
UBDockTeacherGuideWidget.cpp
src/gui/UBDockTeacherGuideWidget.cpp
+2
-0
UBFeaturesActionBar.cpp
src/gui/UBFeaturesActionBar.cpp
+19
-0
UBFeaturesActionBar.h
src/gui/UBFeaturesActionBar.h
+2
-1
UBFeaturesWidget.cpp
src/gui/UBFeaturesWidget.cpp
+289
-53
UBFeaturesWidget.h
src/gui/UBFeaturesWidget.h
+43
-7
UBLibItemProperties.cpp
src/gui/UBLibItemProperties.cpp
+2
-1
UBLibNavigatorWidget.cpp
src/gui/UBLibNavigatorWidget.cpp
+2
-1
UBLibPathViewer.cpp
src/gui/UBLibPathViewer.cpp
+2
-1
UBLibWebView.cpp
src/gui/UBLibWebView.cpp
+1
-2
UBLibWidget.cpp
src/gui/UBLibWidget.cpp
+2
-1
UBPageNavigationWidget.cpp
src/gui/UBPageNavigationWidget.cpp
+2
-1
UBTGWidgetTreeDelegate.cpp
src/gui/UBTGWidgetTreeDelegate.cpp
+2
-0
UBTeacherGuideDelegate.cpp
src/gui/UBTeacherGuideDelegate.cpp
+1
-0
UBTeacherGuideWidget.cpp
src/gui/UBTeacherGuideWidget.cpp
+2
-0
UBTeacherGuideWidgetsTools.cpp
src/gui/UBTeacherGuideWidgetsTools.cpp
+2
-0
CCITTFaxDecode.cpp
src/pdf-merger/CCITTFaxDecode.cpp
+2
-0
DCTDecode.cpp
src/pdf-merger/DCTDecode.cpp
+2
-0
JBIG2Decode.cpp
src/pdf-merger/JBIG2Decode.cpp
+1
-0
UBOEmbedParser.cpp
src/web/UBOEmbedParser.cpp
+2
-0
No files found.
resources/style.qss
View file @
56eceb66
...
@@ -26,6 +26,13 @@ QWidget#UBLibWebView
...
@@ -26,6 +26,13 @@ QWidget#UBLibWebView
border: 2px solid #999999;
border: 2px solid #999999;
}
}
QWidget#UBFeaturesWebView
{
background: #EEEEEE;
border-radius : 10px;
border: 2px solid #999999;
}
QListView
QListView
{
{
background: #EEEEEE;
background: #EEEEEE;
...
...
src/adaptors/UBExportCFF.cpp
View file @
56eceb66
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
#include "document/UBDocumentProxy.h"
#include "document/UBDocumentProxy.h"
#include "core/UBDocumentManager.h"
#include "core/UBDocumentManager.h"
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "core/memcheck.h"
UBExportCFF
::
UBExportCFF
(
QObject
*
parent
)
UBExportCFF
::
UBExportCFF
(
QObject
*
parent
)
...
...
src/board/UBBoardPaletteManager.cpp
View file @
56eceb66
...
@@ -58,10 +58,10 @@
...
@@ -58,10 +58,10 @@
#include "UBBoardController.h"
#include "UBBoardController.h"
#include "core/memcheck.h"
#include "document/UBDocumentController.h"
#include "document/UBDocumentController.h"
#include "core/memcheck.h"
UBBoardPaletteManager
::
UBBoardPaletteManager
(
QWidget
*
container
,
UBBoardController
*
pBoardController
)
UBBoardPaletteManager
::
UBBoardPaletteManager
(
QWidget
*
container
,
UBBoardController
*
pBoardController
)
:
QObject
(
container
)
:
QObject
(
container
)
,
mKeyboardPalette
(
0
)
,
mKeyboardPalette
(
0
)
...
@@ -81,7 +81,9 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll
...
@@ -81,7 +81,9 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll
,
mPendingPanButtonPressed
(
false
)
,
mPendingPanButtonPressed
(
false
)
,
mPendingEraseButtonPressed
(
false
)
,
mPendingEraseButtonPressed
(
false
)
,
mpPageNavigWidget
(
NULL
)
,
mpPageNavigWidget
(
NULL
)
#ifdef USE_WEB_WIDGET
,
mpLibWidget
(
NULL
)
,
mpLibWidget
(
NULL
)
#endif
,
mpCachePropWidget
(
NULL
)
,
mpCachePropWidget
(
NULL
)
,
mpDownloadWidget
(
NULL
)
,
mpDownloadWidget
(
NULL
)
,
mpDesktopLibWidget
(
NULL
)
,
mpDesktopLibWidget
(
NULL
)
...
@@ -132,7 +134,9 @@ void UBBoardPaletteManager::setupDockPaletteWidgets()
...
@@ -132,7 +134,9 @@ void UBBoardPaletteManager::setupDockPaletteWidgets()
mpPageNavigWidget
=
new
UBPageNavigationWidget
();
mpPageNavigWidget
=
new
UBPageNavigationWidget
();
#ifdef USE_WEB_WIDGET
mpLibWidget
=
new
UBLibWidget
();
mpLibWidget
=
new
UBLibWidget
();
#endif
mpCachePropWidget
=
new
UBCachePropertiesWidget
();
mpCachePropWidget
=
new
UBCachePropertiesWidget
();
...
@@ -159,8 +163,11 @@ void UBBoardPaletteManager::setupDockPaletteWidgets()
...
@@ -159,8 +163,11 @@ void UBBoardPaletteManager::setupDockPaletteWidgets()
mRightPalette
->
addTab
(
mpFeaturesWidget
);
mRightPalette
->
addTab
(
mpFeaturesWidget
);
//Do not show deprecated lib widget to prevent collisions. Uncomment to return lib widget
//Do not show deprecated lib widget to prevent collisions. Uncomment to return lib widget
// mRightPalette->registerWidget(mpLibWidget);
// mRightPalette->addTab(mpLibWidget);
#ifdef USE_WEB_WIDGET
mRightPalette
->
registerWidget
(
mpLibWidget
);
mRightPalette
->
addTab
(
mpLibWidget
);
#endif
// The cache widget will be visible only if a cache is put on the page
// The cache widget will be visible only if a cache is put on the page
...
@@ -841,10 +848,10 @@ void UBBoardPaletteManager::addItemToLibrary()
...
@@ -841,10 +848,10 @@ void UBBoardPaletteManager::addItemToLibrary()
}
}
QImage
image
=
mPixmap
.
toImage
();
QImage
image
=
mPixmap
.
toImage
();
if
(
NULL
!=
mpLibWidget
)
#ifdef USE_WEB_WIDGET
{
mpLibWidget
->
libNavigator
()
->
libraryWidget
()
->
libraryController
()
->
importImageOnLibrary
(
image
);
mpLibWidget
->
libNavigator
()
->
libraryWidget
()
->
libraryController
()
->
importImageOnLibrary
(
image
);
#endif
}
}
}
else
else
{
{
...
...
src/board/UBBoardPaletteManager.h
View file @
56eceb66
/*
/*
* This program is free software: you can redistribute it and/or modify
* 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
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
*/
#ifndef UBBOARDPALETTEMANAGER_H_
#ifndef UBBOARDPALETTEMANAGER_H_
#define UBBOARDPALETTEMANAGER_H_
#define UBBOARDPALETTEMANAGER_H_
#include <QtGui>
#include <QtGui>
#include <QtWebKit>
#include <QtWebKit>
#include "web/UBRoutedMouseEventWebView.h"
#include "web/UBRoutedMouseEventWebView.h"
#include "gui/UBLeftPalette.h"
#include "gui/UBLeftPalette.h"
#include "gui/UBRightPalette.h"
#include "gui/UBRightPalette.h"
#include "gui/UBPageNavigationWidget.h"
#include "gui/UBPageNavigationWidget.h"
#include "gui/UBLibWidget.h"
#include "gui/UBLibWidget.h"
#include "gui/UBCachePropertiesWidget.h"
#include "gui/UBCachePropertiesWidget.h"
#include "gui/UBDockDownloadWidget.h"
#include "gui/UBDockDownloadWidget.h"
#include "core/UBApplicationController.h"
#include "core/UBApplicationController.h"
#include "gui/UBFeaturesWidget.h"
#include "gui/UBFeaturesWidget.h"
class
UBStylusPalette
;
class
UBStylusPalette
;
class
UBClockPalette
;
class
UBClockPalette
;
class
UBPageNumberPalette
;
class
UBPageNumberPalette
;
class
UBZoomPalette
;
class
UBZoomPalette
;
class
UBActionPalette
;
class
UBActionPalette
;
class
UBBoardController
;
class
UBBoardController
;
class
UBFloatingPalette
;
class
UBFloatingPalette
;
class
UBServerXMLHttpRequest
;
class
UBServerXMLHttpRequest
;
class
UBKeyboardPalette
;
class
UBKeyboardPalette
;
class
UBMainWindow
;
class
UBMainWindow
;
class
UBApplicationController
;
class
UBApplicationController
;
class
UBDockTeacherGuideWidget
;
class
UBDockTeacherGuideWidget
;
class
UBBoardPaletteManager
:
public
QObject
// Uncomment this to use old-styles lib paletter
{
// #define USE_WEB_WIDGET
Q_OBJECT
public
:
class
UBBoardPaletteManager
:
public
QObject
UBBoardPaletteManager
(
QWidget
*
container
,
UBBoardController
*
controller
);
{
virtual
~
UBBoardPaletteManager
();
Q_OBJECT
void
setupLayout
();
public
:
UBLeftPalette
*
leftPalette
(){
return
mLeftPalette
;}
UBBoardPaletteManager
(
QWidget
*
container
,
UBBoardController
*
controller
);
UBRightPalette
*
rightPalette
(){
return
mRightPalette
;}
virtual
~
UBBoardPaletteManager
();
UBStylusPalette
*
stylusPalette
(){
return
mStylusPalette
;}
void
showVirtualKeyboard
(
bool
show
=
true
);
void
setupLayout
();
void
initPalettesPosAtStartup
();
UBLeftPalette
*
leftPalette
(){
return
mLeftPalette
;}
void
connectToDocumentController
();
UBRightPalette
*
rightPalette
(){
return
mRightPalette
;}
void
refreshPalettes
();
UBStylusPalette
*
stylusPalette
(){
return
mStylusPalette
;}
void
showVirtualKeyboard
(
bool
show
=
true
);
UBKeyboardPalette
*
mKeyboardPalette
;
void
initPalettesPosAtStartup
();
void
connectToDocumentController
();
void
processPalettersWidget
(
UBDockPalette
*
paletter
,
eUBDockPaletteWidgetMode
mode
);
void
refreshPalettes
();
void
changeMode
(
eUBDockPaletteWidgetMode
newMode
,
bool
isInit
=
false
);
void
startDownloads
();
UBKeyboardPalette
*
mKeyboardPalette
;
void
stopDownloads
();
void
processPalettersWidget
(
UBDockPalette
*
paletter
,
eUBDockPaletteWidgetMode
mode
);
signals
:
void
changeMode
(
eUBDockPaletteWidgetMode
newMode
,
bool
isInit
=
false
);
void
connectToDocController
();
void
startDownloads
();
void
signal_changeMode
(
eUBDockPaletteWidgetMode
newMode
);
void
stopDownloads
();
public
slots
:
signals
:
void
connectToDocController
();
void
activeSceneChanged
();
void
signal_changeMode
(
eUBDockPaletteWidgetMode
newMode
);
void
containerResized
();
void
addItem
(
const
QUrl
&
pUrl
);
public
slots
:
void
addItem
(
const
QPixmap
&
pPixmap
,
const
QPointF
&
p
=
QPointF
(
0
.
0
,
0
.
0
),
qreal
scale
=
1
.
0
,
const
QUrl
&
sourceUrl
=
QUrl
());
void
activeSceneChanged
();
void
slot_changeMainMode
(
UBApplicationController
::
MainMode
);
void
containerResized
();
void
slot_changeDesktopMode
(
bool
);
void
addItem
(
const
QUrl
&
pUrl
);
void
addItem
(
const
QPixmap
&
pPixmap
,
const
QPointF
&
p
=
QPointF
(
0
.
0
,
0
.
0
),
qreal
scale
=
1
.
0
,
const
QUrl
&
sourceUrl
=
QUrl
());
private
:
void
slot_changeMainMode
(
UBApplicationController
::
MainMode
);
void
setupPalettes
();
void
slot_changeDesktopMode
(
bool
);
void
connectPalettes
();
void
positionFreeDisplayPalette
();
private
:
void
setupDockPaletteWidgets
();
void
setupPalettes
();
QWidget
*
mContainer
;
void
connectPalettes
();
UBBoardController
*
mBoardControler
;
void
positionFreeDisplayPalette
();
void
setupDockPaletteWidgets
();
UBStylusPalette
*
mStylusPalette
;
QWidget
*
mContainer
;
UBZoomPalette
*
mZoomPalette
;
UBBoardController
*
mBoardControler
;
/** The left dock palette */
UBStylusPalette
*
mStylusPalette
;
UBLeftPalette
*
mLeftPalette
;
/** The right dock palette */
UBZoomPalette
*
mZoomPalette
;
UBRightPalette
*
mRightPalette
;
/** The left dock palette */
UBActionPalette
*
mBackgroundsPalette
;
UBLeftPalette
*
mLeftPalette
;
UBActionPalette
*
mToolsPalette
;
/** The right dock palette */
UBActionPalette
*
mAddItemPalette
;
UBRightPalette
*
mRightPalette
;
UBActionPalette
*
mErasePalette
;
UBActionPalette
*
mPagePalette
;
UBActionPalette
*
mBackgroundsPalette
;
UBActionPalette
*
mToolsPalette
;
QUrl
mItemUrl
;
UBActionPalette
*
mAddItemPalette
;
QPixmap
mPixmap
;
UBActionPalette
*
mErasePalette
;
QPointF
mPos
;
UBActionPalette
*
mPagePalette
;
qreal
mScaleFactor
;
QUrl
mItemUrl
;
QTime
mPageButtonPressedTime
;
QPixmap
mPixmap
;
bool
mPendingPageButtonPressed
;
QPointF
mPos
;
qreal
mScaleFactor
;
QTime
mZoomButtonPressedTime
;
bool
mPendingZoomButtonPressed
;
QTime
mPageButtonPressedTime
;
bool
mPendingPageButtonPressed
;
QTime
mPanButtonPressedTime
;
bool
mPendingPanButtonPressed
;
QTime
mZoomButtonPressedTime
;
bool
mPendingZoomButtonPressed
;
QTime
mEraseButtonPressedTime
;
bool
mPendingEraseButtonPressed
;
QTime
mPanButtonPressedTime
;
bool
mPendingPanButtonPressed
;
/** The page navigator widget */
UBPageNavigationWidget
*
mpPageNavigWidget
;
QTime
mEraseButtonPressedTime
;
/** The library widget */
bool
mPendingEraseButtonPressed
;
UBLibWidget
*
mpLibWidget
;
/** The cache properties widget */
/** The page navigator widget */
UBCachePropertiesWidget
*
mpCachePropWidget
;
UBPageNavigationWidget
*
mpPageNavigWidget
;
UBFeaturesWidget
*
mpFeaturesWidget
;
#ifdef USE_WEB_WIDGET
/** The library widget */
/** The download widget */
UBLibWidget
*
mpLibWidget
;
UBDockDownloadWidget
*
mpDownloadWidget
;
#endif
// HACK: here we duplicate the lib widget for the desktop mode
// we MUST refactor the architecture in order to use only one
/** The cache properties widget */
// lib widget!
UBCachePropertiesWidget
*
mpCachePropWidget
;
UBLibWidget
*
mpDesktopLibWidget
;
UBFeaturesWidget
*
mpFeaturesWidget
;
UBDockTeacherGuideWidget
*
mpTeacherGuideWidget
;
/** The download widget */
bool
mDownloadInProgress
;
UBDockDownloadWidget
*
mpDownloadWidget
;
// HACK: here we duplicate the lib widget for the desktop mode
private
slots
:
// we MUST refactor the architecture in order to use only one
// lib widget!
void
changeBackground
();
UBLibWidget
*
mpDesktopLibWidget
;
void
toggleBackgroundPalette
(
bool
checked
);
UBDockTeacherGuideWidget
*
mpTeacherGuideWidget
;
void
backgroundPaletteClosed
();
bool
mDownloadInProgress
;
void
toggleStylusPalette
(
bool
checked
);
void
tooglePodcastPalette
(
bool
checked
);
private
slots
:
void
erasePaletteButtonPressed
();
void
changeBackground
();
void
erasePaletteButtonReleased
();
void
toggleBackgroundPalette
(
bool
checked
);
void
toggleErasePalette
(
bool
ckecked
);
void
backgroundPaletteClosed
();
void
erasePaletteClosed
();
void
toggleStylusPalette
(
bool
checked
);
void
togglePagePalette
(
bool
ckecked
);
void
tooglePodcastPalette
(
bool
checked
);
void
pagePaletteClosed
();
void
erasePaletteButtonPressed
();
void
pagePaletteButtonPressed
();
void
erasePaletteButtonReleased
();
void
pagePaletteButtonReleased
();
void
toggleErasePalette
(
bool
ckecked
);
void
addItemToCurrentPage
();
void
erasePaletteClosed
();
void
addItemToNewPage
();
void
addItemToLibrary
();
void
togglePagePalette
(
bool
ckecked
);
void
pagePaletteClosed
();
void
purchaseLinkActivated
(
const
QString
&
);
void
pagePaletteButtonPressed
();
void
linkClicked
(
const
QUrl
&
url
);
void
pagePaletteButtonReleased
();
void
zoomButtonPressed
();
void
addItemToCurrentPage
();
void
zoomButtonReleased
();
void
addItemToNewPage
();
void
panButtonPressed
();
void
addItemToLibrary
();
void
panButtonReleased
();
void
purchaseLinkActivated
(
const
QString
&
);
void
changeStylusPaletteOrientation
(
QVariant
var
);
};
void
linkClicked
(
const
QUrl
&
url
);
#endif
/* UBBOARDPALETTEMANAGER_H_ */
void
zoomButtonPressed
();
void
zoomButtonReleased
();
void
panButtonPressed
();
void
panButtonReleased
();
void
changeStylusPaletteOrientation
(
QVariant
var
);
};
#endif
/* UBBOARDPALETTEMANAGER_H_ */
src/board/UBFeaturesController.cpp
View file @
56eceb66
...
@@ -18,13 +18,30 @@
...
@@ -18,13 +18,30 @@
#include "domain/UBGraphicsVideoItem.h"
#include "domain/UBGraphicsVideoItem.h"
#include "domain/UBGraphicsWidgetItem.h"
#include "domain/UBGraphicsWidgetItem.h"
UBFeature
::
UBFeature
(
const
QString
&
url
,
const
QPixmap
&
icon
,
const
QString
&
name
,
const
Q
String
&
realPath
,
UBFeatureElementType
type
)
UBFeature
::
UBFeature
(
const
QString
&
url
,
const
QPixmap
&
icon
,
const
QString
&
name
,
const
Q
Url
&
realPath
,
UBFeatureElementType
type
)
:
virtualPath
(
url
),
mThumbnail
(
icon
),
mName
(
name
),
mPath
(
realPath
),
elementType
(
type
)
:
virtualPath
(
url
),
mThumbnail
(
icon
),
mName
(
name
),
mPath
(
realPath
),
elementType
(
type
)
{
{
}
}
QString
UBFeature
::
getUrl
()
const
{
if
(
elementType
==
FEATURE_INTERNAL
)
return
getFullPath
().
toString
();
/*if ( UBApplication::isFromWeb( getFullPath() ) )
return QUrl( getFullPath() );*/
return
getFullPath
().
toLocalFile
();
}
bool
UBFeature
::
operator
==
(
const
UBFeature
&
f
)
const
{
return
virtualPath
==
f
.
getVirtualPath
()
&&
mName
==
f
.
getName
()
&&
mPath
==
f
.
getFullPath
()
&&
elementType
==
f
.
getType
();
}
bool
UBFeature
::
operator
!=
(
const
UBFeature
&
f
)
const
{
return
!
(
*
this
==
f
);
}
bool
UBFeature
::
isFolder
()
const
bool
UBFeature
::
isFolder
()
const
{
{
...
@@ -32,6 +49,10 @@ bool UBFeature::isFolder() const
...
@@ -32,6 +49,10 @@ bool UBFeature::isFolder() const
||
elementType
==
FEATURE_FOLDER
;
||
elementType
==
FEATURE_FOLDER
;
}
}
bool
UBFeature
::
isDeletable
()
const
{
return
elementType
==
FEATURE_ITEM
;
}
UBFeaturesController
::
UBFeaturesController
(
QWidget
*
pParentWidget
)
:
UBFeaturesController
::
UBFeaturesController
(
QWidget
*
pParentWidget
)
:
QObject
(
pParentWidget
),
QObject
(
pParentWidget
),
...
@@ -43,23 +64,24 @@ UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) :
...
@@ -43,23 +64,24 @@ UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) :
void
UBFeaturesController
::
initDirectoryTree
()
void
UBFeaturesController
::
initDirectoryTree
()
{
{
mUserAudioDirectoryPath
=
UBSettings
::
settings
()
->
userAudioDirectory
();
mUserAudioDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
settings
()
->
userAudioDirectory
()
);
mUserVideoDirectoryPath
=
UBSettings
::
settings
()
->
userVideoDirectory
();
mUserVideoDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
settings
()
->
userVideoDirectory
()
);
mUserPicturesDirectoryPath
=
UBSettings
::
settings
()
->
userImageDirectory
();
mUserPicturesDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
settings
()
->
userImageDirectory
()
);
mUserInteractiveDirectoryPath
=
UBSettings
::
settings
()
->
userInteractiveDirectory
();
mUserInteractiveDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
settings
()
->
userInteractiveDirectory
()
);
mUserAnimationDirectoryPath
=
UBSettings
::
settings
()
->
userAnimationDirectory
();
mUserAnimationDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
settings
()
->
userAnimationDirectory
()
);
mLibPicturesDirectoryPath
=
UBSettings
::
settings
()
->
applicationImageLibraryDirectory
();
mLibPicturesDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
settings
()
->
applicationImageLibraryDirectory
()
);
mLibInteractiveDirectoryPath
=
UBSettings
::
settings
()
->
applicationInteractivesDirectory
();
mLibInteractiveDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
settings
()
->
applicationInteractivesDirectory
()
);
mLibApplicationsDirectoryPath
=
UBSettings
::
settings
()
->
applicationApplicationsLibraryDirectory
();
mLibApplicationsDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
settings
()
->
applicationApplicationsLibraryDirectory
()
);
mLibShapesDirectoryPath
=
UBSettings
::
settings
()
->
applicationShapeLibraryDirectory
()
;
mLibShapesDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
settings
()
->
applicationShapeLibraryDirectory
()
);
trashDirectoryPath
=
UBSettings
::
userTrashDirPath
();
mLibSearchDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
settings
()
->
userSearchDirectory
()
);
trashDirectoryPath
=
QUrl
::
fromLocalFile
(
UBSettings
::
userTrashDirPath
()
);
featuresList
=
new
QList
<
UBFeature
>
();
featuresList
=
new
QList
<
UBFeature
>
();
QList
<
UBToolsManager
::
UBToolDescriptor
>
tools
=
UBToolsManager
::
manager
()
->
allTools
();
QList
<
UBToolsManager
::
UBToolDescriptor
>
tools
=
UBToolsManager
::
manager
()
->
allTools
();
featuresList
->
append
(
UBFeature
(
QString
(),
QPixmap
(
":images/libpalette/home.png"
),
"root"
,
Q
String
()
)
);
featuresList
->
append
(
UBFeature
(
QString
(),
QPixmap
(
":images/libpalette/home.png"
),
"root"
,
Q
Url
()
)
);
currentElement
=
featuresList
->
at
(
0
);
currentElement
=
featuresList
->
at
(
0
);
appPath
=
rootPath
+
"/Applications"
;
appPath
=
rootPath
+
"/Applications"
;
...
@@ -72,26 +94,32 @@ void UBFeaturesController::initDirectoryTree()
...
@@ -72,26 +94,32 @@ void UBFeaturesController::initDirectoryTree()
trashPath
=
rootPath
+
"/Trash"
;
trashPath
=
rootPath
+
"/Trash"
;
favoritePath
=
rootPath
+
"/Favorites"
;
favoritePath
=
rootPath
+
"/Favorites"
;
featuresList
->
append
(
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/AudiosCategory.svg"
),
"Audios"
,
mUserAudioDirectoryPath
)
);
audiosElement
=
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/AudiosCategory.svg"
),
"Audios"
,
mUserAudioDirectoryPath
);
featuresList
->
append
(
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/MoviesCategory.svg"
),
"Movies"
,
mUserVideoDirectoryPath
)
);
featuresList
->
append
(
audiosElement
);
featuresList
->
append
(
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/PicturesCategory.svg"
),
"Pictures"
,
mUserPicturesDirectoryPath
)
);
moviesElement
=
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/MoviesCategory.svg"
),
"Movies"
,
mUserVideoDirectoryPath
);
featuresList
->
append
(
moviesElement
);
picturesElement
=
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/PicturesCategory.svg"
),
"Pictures"
,
mUserPicturesDirectoryPath
);
featuresList
->
append
(
picturesElement
);
featuresList
->
append
(
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/ApplicationsCategory.svg"
),
"Applications"
,
mUserInteractiveDirectoryPath
)
);
featuresList
->
append
(
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/ApplicationsCategory.svg"
),
"Applications"
,
mUserInteractiveDirectoryPath
)
);
featuresList
->
append
(
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/FlashCategory.svg"
),
"Animations"
,
mUserAnimationDirectoryPath
)
);
flashElement
=
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/FlashCategory.svg"
),
"Animations"
,
mUserAnimationDirectoryPath
);
featuresList
->
append
(
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/InteractivesCategory.svg"
),
"Interactivities"
,
mLibInteractiveDirectoryPath
)
);
featuresList
->
append
(
flashElement
);
interactElement
=
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/InteractivesCategory.svg"
),
"Interactivities"
,
mLibInteractiveDirectoryPath
);
featuresList
->
append
(
interactElement
);
featuresList
->
append
(
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/ShapesCategory.svg"
),
"Shapes"
,
mLibShapesDirectoryPath
)
);
featuresList
->
append
(
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/ShapesCategory.svg"
),
"Shapes"
,
mLibShapesDirectoryPath
)
);
trashElement
=
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/TrashCategory.svg"
),
"Trash"
,
trashDirectoryPath
,
FEATURE_TRASH
);
trashElement
=
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/TrashCategory.svg"
),
"Trash"
,
trashDirectoryPath
,
FEATURE_TRASH
);
featuresList
->
append
(
trashElement
);
featuresList
->
append
(
trashElement
);
favoriteElement
=
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/FavoritesCategory.svg"
),
"Favorites"
,
"favorites"
,
FEATURE_FAVORITE
);
favoriteElement
=
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/FavoritesCategory.svg"
),
"Favorites"
,
QUrl
(
"favorites"
)
,
FEATURE_FAVORITE
);
featuresList
->
append
(
favoriteElement
);
featuresList
->
append
(
favoriteElement
);
webSearchElement
=
UBFeature
(
rootPath
,
QPixmap
(
":images/libpalette/WebSearchCategory.svg"
),
"Web search"
,
mLibSearchDirectoryPath
);
featuresList
->
append
(
webSearchElement
);
loadFavoriteList
();
loadFavoriteList
();
foreach
(
UBToolsManager
::
UBToolDescriptor
tool
,
tools
)
foreach
(
UBToolsManager
::
UBToolDescriptor
tool
,
tools
)
{
{
featuresList
->
append
(
UBFeature
(
appPath
,
tool
.
icon
,
tool
.
label
,
tool
.
id
,
FEATURE_INTERNAL
)
);
featuresList
->
append
(
UBFeature
(
appPath
,
tool
.
icon
,
tool
.
label
,
QUrl
(
tool
.
id
)
,
FEATURE_INTERNAL
)
);
if
(
favoriteSet
->
find
(
tool
.
id
)
!=
favoriteSet
->
end
()
)
if
(
favoriteSet
->
find
(
QUrl
(
tool
.
id
)
)
!=
favoriteSet
->
end
()
)
{
{
featuresList
->
append
(
UBFeature
(
favoritePath
,
tool
.
icon
,
tool
.
label
,
tool
.
id
,
FEATURE_INTERNAL
)
);
featuresList
->
append
(
UBFeature
(
favoritePath
,
tool
.
icon
,
tool
.
label
,
QUrl
(
tool
.
id
)
,
FEATURE_INTERNAL
)
);
}
}
}
}
fileSystemScan
(
mUserInteractiveDirectoryPath
,
appPath
);
fileSystemScan
(
mUserInteractiveDirectoryPath
,
appPath
);
...
@@ -105,14 +133,14 @@ void UBFeaturesController::initDirectoryTree()
...
@@ -105,14 +133,14 @@ void UBFeaturesController::initDirectoryTree()
fileSystemScan
(
mLibShapesDirectoryPath
,
shapesPath
);
fileSystemScan
(
mLibShapesDirectoryPath
,
shapesPath
);
fileSystemScan
(
mLibInteractiveDirectoryPath
,
interactPath
);
fileSystemScan
(
mLibInteractiveDirectoryPath
,
interactPath
);
fileSystemScan
(
trashDirectoryPath
,
trashPath
);
fileSystemScan
(
trashDirectoryPath
,
trashPath
);
fileSystemScan
(
mLibSearchDirectoryPath
,
rootPath
+
"/"
+
"Web search"
);
}
}
void
UBFeaturesController
::
fileSystemScan
(
const
Q
String
&
currentPath
,
const
QString
&
currVirtualPath
)
void
UBFeaturesController
::
fileSystemScan
(
const
Q
Url
&
currentPath
,
const
QString
&
currVirtualPath
)
{
{
QFileInfoList
fileInfoList
=
UBFileSystemUtils
::
allElementsInDirectory
(
currentPath
);
QFileInfoList
fileInfoList
=
UBFileSystemUtils
::
allElementsInDirectory
(
currentPath
.
toLocalFile
()
);
QFileInfoList
::
iterator
fileInfo
;
QFileInfoList
::
iterator
fileInfo
;
for
(
fileInfo
=
fileInfoList
.
begin
();
fileInfo
!=
fileInfoList
.
end
();
fileInfo
+=
1
)
for
(
fileInfo
=
fileInfoList
.
begin
();
fileInfo
!=
fileInfoList
.
end
();
fileInfo
+=
1
)
...
@@ -120,12 +148,19 @@ void UBFeaturesController::fileSystemScan(const QString & currentPath, const QSt
...
@@ -120,12 +148,19 @@ void UBFeaturesController::fileSystemScan(const QString & currentPath, const QSt
UBFeatureElementType
fileType
=
fileInfo
->
isDir
()
?
FEATURE_FOLDER
:
FEATURE_ITEM
;
UBFeatureElementType
fileType
=
fileInfo
->
isDir
()
?
FEATURE_FOLDER
:
FEATURE_ITEM
;
QString
fileName
=
fileInfo
->
fileName
();
QString
fileName
=
fileInfo
->
fileName
();
if
(
UBFileSystemUtils
::
mimeTypeFromFileName
(
fileName
).
contains
(
"application"
)
)
{
if
(
UBFileSystemUtils
::
mimeTypeFromFileName
(
fileName
).
contains
(
"application"
)
)
fileType
=
FEATURE_INTERACTIVE
;
{
if
(
UBFileSystemUtils
::
mimeTypeFromFileName
(
fileName
).
contains
(
"application/search"
)
)
{
fileType
=
FEATURE_SEARCH
;
}
else
fileType
=
FEATURE_INTERACTIVE
;
}
}
QString
itemName
=
(
fileType
!=
FEATURE_ITEM
)
?
fileName
:
fileInfo
->
completeBaseName
();
QString
itemName
=
(
fileType
!=
FEATURE_ITEM
)
?
fileName
:
fileInfo
->
completeBaseName
();
QPixmap
icon
=
QPixmap
(
":images/libpalette/soundIcon.svg"
);
QPixmap
icon
=
QPixmap
(
":images/libpalette/soundIcon.svg"
);
QString
fullFileName
=
fileInfo
->
filePath
();
QString
fullFileName
=
fileInfo
->
filePath
();
if
(
fileType
==
FEATURE_FOLDER
)
if
(
fileType
==
FEATURE_FOLDER
)
{
{
...
@@ -146,15 +181,15 @@ void UBFeaturesController::fileSystemScan(const QString & currentPath, const QSt
...
@@ -146,15 +181,15 @@ void UBFeaturesController::fileSystemScan(const QString & currentPath, const QSt
icon = QPixmap( thumbnailPath );
icon = QPixmap( thumbnailPath );
else icon = createThumbnail( fullFileName );*/
else icon = createThumbnail( fullFileName );*/
}
}
featuresList
->
append
(
UBFeature
(
currVirtualPath
,
icon
,
fileName
,
fullFileName
,
fileType
)
);
featuresList
->
append
(
UBFeature
(
currVirtualPath
,
icon
,
fileName
,
QUrl
::
fromLocalFile
(
fullFileName
)
,
fileType
)
);
if
(
favoriteSet
->
find
(
fullFileName
)
!=
favoriteSet
->
end
()
)
if
(
favoriteSet
->
find
(
QUrl
::
fromLocalFile
(
fullFileName
)
)
!=
favoriteSet
->
end
()
)
{
{
featuresList
->
append
(
UBFeature
(
favoritePath
,
icon
,
fileName
,
fullFileName
,
fileType
)
);
featuresList
->
append
(
UBFeature
(
favoritePath
,
icon
,
fileName
,
QUrl
::
fromLocalFile
(
fullFileName
)
,
fileType
)
);
}
}
if
(
fileType
==
FEATURE_FOLDER
)
if
(
fileType
==
FEATURE_FOLDER
)
{
{
fileSystemScan
(
fullFileName
,
currVirtualPath
+
"/"
+
fileName
);
fileSystemScan
(
QUrl
::
fromLocalFile
(
fullFileName
)
,
currVirtualPath
+
"/"
+
fileName
);
}
}
}
}
...
@@ -162,7 +197,7 @@ void UBFeaturesController::fileSystemScan(const QString & currentPath, const QSt
...
@@ -162,7 +197,7 @@ void UBFeaturesController::fileSystemScan(const QString & currentPath, const QSt
void
UBFeaturesController
::
loadFavoriteList
()
void
UBFeaturesController
::
loadFavoriteList
()
{
{
favoriteSet
=
new
QSet
<
Q
String
>
();
favoriteSet
=
new
QSet
<
Q
Url
>
();
QFile
file
(
UBSettings
::
userDataDirectory
()
+
"/favorites.dat"
);
QFile
file
(
UBSettings
::
userDataDirectory
()
+
"/favorites.dat"
);
if
(
file
.
exists
()
)
if
(
file
.
exists
()
)
{
{
...
@@ -172,7 +207,7 @@ void UBFeaturesController::loadFavoriteList()
...
@@ -172,7 +207,7 @@ void UBFeaturesController::loadFavoriteList()
in
>>
elementsNumber
;
in
>>
elementsNumber
;
for
(
int
i
=
0
;
i
<
elementsNumber
;
++
i
)
for
(
int
i
=
0
;
i
<
elementsNumber
;
++
i
)
{
{
Q
String
path
;
Q
Url
path
;
in
>>
path
;
in
>>
path
;
/*QFileInfo fileInfo( path );
/*QFileInfo fileInfo( path );
QString fileName = fileInfo.fileName();
QString fileName = fileInfo.fileName();
...
@@ -191,7 +226,7 @@ void UBFeaturesController::saveFavoriteList()
...
@@ -191,7 +226,7 @@ void UBFeaturesController::saveFavoriteList()
file
.
open
(
QIODevice
::
WriteOnly
);
file
.
open
(
QIODevice
::
WriteOnly
);
QDataStream
out
(
&
file
);
QDataStream
out
(
&
file
);
out
<<
favoriteSet
->
size
();
out
<<
favoriteSet
->
size
();
for
(
QSet
<
Q
String
>::
iterator
it
=
favoriteSet
->
begin
();
it
!=
favoriteSet
->
end
();
++
it
)
for
(
QSet
<
Q
Url
>::
iterator
it
=
favoriteSet
->
begin
();
it
!=
favoriteSet
->
end
();
++
it
)
{
{
out
<<
(
*
it
);
out
<<
(
*
it
);
}
}
...
@@ -201,12 +236,12 @@ void UBFeaturesController::saveFavoriteList()
...
@@ -201,12 +236,12 @@ void UBFeaturesController::saveFavoriteList()
UBFeature
UBFeaturesController
::
addToFavorite
(
const
QUrl
&
path
)
UBFeature
UBFeaturesController
::
addToFavorite
(
const
QUrl
&
path
)
{
{
QString
filePath
=
fileNameFromUrl
(
path
);
QString
filePath
=
fileNameFromUrl
(
path
);
if
(
favoriteSet
->
find
(
fileP
ath
)
==
favoriteSet
->
end
()
)
if
(
favoriteSet
->
find
(
p
ath
)
==
favoriteSet
->
end
()
)
{
{
QFileInfo
fileInfo
(
filePath
);
QFileInfo
fileInfo
(
filePath
);
QString
fileName
=
fileInfo
.
fileName
();
QString
fileName
=
fileInfo
.
fileName
();
UBFeature
elem
(
favoritePath
,
thumbnailForFile
(
filePath
),
fileName
,
fileP
ath
,
fileTypeFromUrl
(
filePath
)
);
UBFeature
elem
(
favoritePath
,
thumbnailForFile
(
filePath
),
fileName
,
p
ath
,
fileTypeFromUrl
(
filePath
)
);
favoriteSet
->
insert
(
fileP
ath
);
favoriteSet
->
insert
(
p
ath
);
saveFavoriteList
();
saveFavoriteList
();
return
elem
;
return
elem
;
}
}
...
@@ -216,9 +251,9 @@ UBFeature UBFeaturesController::addToFavorite( const QUrl &path )
...
@@ -216,9 +251,9 @@ UBFeature UBFeaturesController::addToFavorite( const QUrl &path )
void
UBFeaturesController
::
removeFromFavorite
(
const
QUrl
&
path
)
void
UBFeaturesController
::
removeFromFavorite
(
const
QUrl
&
path
)
{
{
QString
filePath
=
fileNameFromUrl
(
path
);
QString
filePath
=
fileNameFromUrl
(
path
);
if
(
favoriteSet
->
find
(
fileP
ath
)
!=
favoriteSet
->
end
()
)
if
(
favoriteSet
->
find
(
p
ath
)
!=
favoriteSet
->
end
()
)
{
{
favoriteSet
->
erase
(
favoriteSet
->
find
(
fileP
ath
)
);
favoriteSet
->
erase
(
favoriteSet
->
find
(
p
ath
)
);
saveFavoriteList
();
saveFavoriteList
();
}
}
}
}
...
@@ -231,6 +266,7 @@ QString UBFeaturesController::fileNameFromUrl( const QUrl &url )
...
@@ -231,6 +266,7 @@ QString UBFeaturesController::fileNameFromUrl( const QUrl &url )
return
url
.
toLocalFile
();
return
url
.
toLocalFile
();
}
}
UBFeatureElementType
UBFeaturesController
::
fileTypeFromUrl
(
const
QString
&
path
)
UBFeatureElementType
UBFeaturesController
::
fileTypeFromUrl
(
const
QString
&
path
)
{
{
QFileInfo
fileInfo
(
path
);
QFileInfo
fileInfo
(
path
);
...
@@ -268,6 +304,12 @@ QPixmap UBFeaturesController::thumbnailForFile(const QString &path)
...
@@ -268,6 +304,12 @@ QPixmap UBFeaturesController::thumbnailForFile(const QString &path)
return
thumb
;
return
thumb
;
}
}
bool
UBFeaturesController
::
isDeletable
(
const
QUrl
&
url
)
{
UBFeatureElementType
type
=
fileTypeFromUrl
(
fileNameFromUrl
(
url
)
);
return
type
==
FEATURE_ITEM
;
}
QPixmap
UBFeaturesController
::
createThumbnail
(
const
QString
&
path
)
QPixmap
UBFeaturesController
::
createThumbnail
(
const
QString
&
path
)
{
{
QString
thumbnailPath
=
UBFileSystemUtils
::
thumbnailPath
(
path
);
QString
thumbnailPath
=
UBFileSystemUtils
::
thumbnailPath
(
path
);
...
@@ -305,24 +347,63 @@ QPixmap UBFeaturesController::createThumbnail(const QString &path)
...
@@ -305,24 +347,63 @@ QPixmap UBFeaturesController::createThumbnail(const QString &path)
UBFeature
UBFeaturesController
::
newFolder
(
const
QString
&
name
)
UBFeature
UBFeaturesController
::
newFolder
(
const
QString
&
name
)
{
{
QString
path
=
currentElement
.
getFullPath
()
+
"/"
+
name
;
QString
path
=
currentElement
.
getFullPath
().
toLocalFile
()
+
"/"
+
name
;
if
(
!
QFileInfo
(
path
).
exists
())
if
(
!
QFileInfo
(
path
).
exists
())
{
{
QDir
().
mkpath
(
path
);
QDir
().
mkpath
(
path
);
}
}
return
UBFeature
(
currentElement
.
getUrl
()
+
"/"
+
currentElement
.
getName
(),
QPixmap
(
":images/libpalette/folder.svg"
),
name
,
path
,
FEATURE_FOLDER
);
return
UBFeature
(
currentElement
.
getFullVirtualPath
(),
QPixmap
(
":images/libpalette/folder.svg"
),
name
,
QUrl
::
fromLocalFile
(
path
),
FEATURE_FOLDER
);
}
}
void
UBFeaturesController
::
addItemToPage
(
const
UBFeature
&
item
)
void
UBFeaturesController
::
addItemToPage
(
const
UBFeature
&
item
)
{
{
if
(
item
.
getType
()
==
FEATURE_INTERNAL
)
UBApplication
::
boardController
->
downloadURL
(
item
.
getFullPath
()
);
{
}
UBApplication
::
boardController
->
downloadURL
(
QUrl
(
item
.
getFullPath
()
)
);
}
void
UBFeaturesController
::
addItemAsBackground
(
const
UBFeature
&
item
)
else
{
UBApplication
::
boardController
->
downloadURL
(
item
.
getFullPath
(),
QPointF
(),
QSize
(),
true
);
}
UBFeature
UBFeaturesController
::
getDestinationForItem
(
const
QUrl
&
url
)
{
QString
mimetype
=
UBFileSystemUtils
::
mimeTypeFromFileName
(
url
.
toString
()
);
if
(
mimetype
.
contains
(
"audio"
)
)
return
audiosElement
;
if
(
mimetype
.
contains
(
"video"
)
)
return
moviesElement
;
else
if
(
mimetype
.
contains
(
"image"
)
)
return
picturesElement
;
else
if
(
mimetype
.
contains
(
"application"
)
)
{
{
UBApplication
::
boardController
->
downloadURL
(
QUrl
::
fromLocalFile
(
item
.
getFullPath
()
)
);
if
(
mimetype
.
contains
(
"x-shockwave-flash"
)
)
}
return
flashElement
;
else
return
interactElement
;
}
return
UBFeature
();
}
UBFeature
UBFeaturesController
::
addDownloadedFile
(
const
QUrl
&
sourceUrl
,
const
QByteArray
&
pData
)
{
UBFeature
dest
=
getDestinationForItem
(
sourceUrl
);
if
(
dest
==
UBFeature
()
)
return
UBFeature
();
QString
fileName
=
QFileInfo
(
sourceUrl
.
toString
()
).
fileName
();
QString
filePath
=
dest
.
getFullPath
().
toLocalFile
()
+
"/"
+
fileName
;
QFile
file
(
filePath
);
if
(
file
.
open
(
QIODevice
::
WriteOnly
))
{
file
.
write
(
pData
);
file
.
close
();
return
UBFeature
(
dest
.
getFullVirtualPath
(),
thumbnailForFile
(
filePath
),
fileName
,
QUrl
::
fromLocalFile
(
filePath
),
FEATURE_ITEM
);
}
return
UBFeature
();
}
}
UBFeature
UBFeaturesController
::
moveItemToFolder
(
const
QUrl
&
url
,
const
UBFeature
&
destination
)
UBFeature
UBFeaturesController
::
moveItemToFolder
(
const
QUrl
&
url
,
const
UBFeature
&
destination
)
...
@@ -338,9 +419,19 @@ UBFeature UBFeaturesController::copyItemToFolder( const QUrl &url, const UBFeatu
...
@@ -338,9 +419,19 @@ UBFeature UBFeaturesController::copyItemToFolder( const QUrl &url, const UBFeatu
Q_ASSERT
(
QFileInfo
(
sourcePath
).
exists
()
);
Q_ASSERT
(
QFileInfo
(
sourcePath
).
exists
()
);
UBFeature
possibleDest
=
getDestinationForItem
(
url
);
UBFeature
dest
=
destination
;
if
(
destination
!=
trashElement
&&
!
destination
.
getFullVirtualPath
().
startsWith
(
possibleDest
.
getFullVirtualPath
(),
Qt
::
CaseInsensitive
)
)
{
dest
=
possibleDest
;
}
QString
name
=
QFileInfo
(
sourcePath
).
fileName
();
QString
name
=
QFileInfo
(
sourcePath
).
fileName
();
QString
destPath
=
destination
.
getFullPath
();
QString
destPath
=
dest
.
getFullPath
().
toLocalFile
();
QString
destVirtualPath
=
dest
ination
.
getUrl
()
+
"/"
+
destination
.
getName
();
QString
destVirtualPath
=
dest
.
getFullVirtualPath
();
QString
newFullPath
=
destPath
+
"/"
+
name
;
QString
newFullPath
=
destPath
+
"/"
+
name
;
QFile
(
sourcePath
).
copy
(
newFullPath
);
QFile
(
sourcePath
).
copy
(
newFullPath
);
...
@@ -349,7 +440,7 @@ UBFeature UBFeaturesController::copyItemToFolder( const QUrl &url, const UBFeatu
...
@@ -349,7 +440,7 @@ UBFeature UBFeaturesController::copyItemToFolder( const QUrl &url, const UBFeatu
UBFeatureElementType
type
=
FEATURE_ITEM
;
UBFeatureElementType
type
=
FEATURE_ITEM
;
if
(
UBFileSystemUtils
::
mimeTypeFromFileName
(
newFullPath
).
contains
(
"application"
)
)
if
(
UBFileSystemUtils
::
mimeTypeFromFileName
(
newFullPath
).
contains
(
"application"
)
)
type
=
FEATURE_INTERACTIVE
;
type
=
FEATURE_INTERACTIVE
;
UBFeature
newElement
(
destVirtualPath
,
thumb
,
name
,
newFullPath
,
type
);
UBFeature
newElement
(
destVirtualPath
,
thumb
,
name
,
QUrl
::
fromLocalFile
(
newFullPath
)
,
type
);
return
newElement
;
return
newElement
;
}
}
...
@@ -359,7 +450,7 @@ void UBFeaturesController::deleteItem( const QUrl &url )
...
@@ -359,7 +450,7 @@ void UBFeaturesController::deleteItem( const QUrl &url )
Q_ASSERT
(
QFileInfo
(
path
).
exists
()
);
Q_ASSERT
(
QFileInfo
(
path
).
exists
()
);
QString
thumbnailPath
=
UBFileSystemUtils
::
thumbnailPath
(
path
);
QString
thumbnailPath
=
UBFileSystemUtils
::
thumbnailPath
(
path
);
if
(
thumbnailPath
.
length
()
&&
QFileInfo
(
thumbnailPath
).
exists
()
)
if
(
thumbnailPath
.
length
()
&&
QFileInfo
(
thumbnailPath
).
exists
()
)
{
{
QFile
::
remove
(
thumbnailPath
);
QFile
::
remove
(
thumbnailPath
);
}
}
...
@@ -368,7 +459,7 @@ void UBFeaturesController::deleteItem( const QUrl &url )
...
@@ -368,7 +459,7 @@ void UBFeaturesController::deleteItem( const QUrl &url )
bool
UBFeaturesController
::
isTrash
(
const
QUrl
&
url
)
bool
UBFeaturesController
::
isTrash
(
const
QUrl
&
url
)
{
{
return
url
.
toLocalFile
().
startsWith
(
trashDirectoryPath
);
return
url
.
toLocalFile
().
startsWith
(
trashDirectoryPath
.
toLocalFile
()
);
}
}
UBFeaturesController
::~
UBFeaturesController
()
UBFeaturesController
::~
UBFeaturesController
()
...
...
src/board/UBFeaturesController.h
View file @
56eceb66
...
@@ -4,9 +4,13 @@
...
@@ -4,9 +4,13 @@
#include <QMetaType>
#include <QMetaType>
#include <QObject>
#include <QObject>
#include <QWidget>
#include <QWidget>
#include <QSet>
#include <QVector>
#include <QVector>
#include <QString>
#include <QString>
#include <QPixmap>
#include <QPixmap>
#include <QMap>
#include <QUrl>
#include <QByteArray>
//#include "UBDockPaletteWidget.h"
//#include "UBDockPaletteWidget.h"
...
@@ -19,7 +23,8 @@ enum UBFeatureElementType
...
@@ -19,7 +23,8 @@ enum UBFeatureElementType
FEATURE_INTERNAL
,
FEATURE_INTERNAL
,
FEATURE_ITEM
,
FEATURE_ITEM
,
FEATURE_TRASH
,
FEATURE_TRASH
,
FEATURE_FAVORITE
FEATURE_FAVORITE
,
FEATURE_SEARCH
};
};
class
UBFeature
class
UBFeature
...
@@ -27,21 +32,30 @@ class UBFeature
...
@@ -27,21 +32,30 @@ class UBFeature
public
:
public
:
UBFeature
()
{;}
UBFeature
()
{;}
//UBFeature(const UBFeature &f);
//UBFeature(const UBFeature &f);
UBFeature
(
const
QString
&
url
,
const
QPixmap
&
icon
,
const
QString
&
name
,
const
Q
String
&
realPath
,
UBFeatureElementType
type
=
FEATURE_CATEGORY
);
UBFeature
(
const
QString
&
url
,
const
QPixmap
&
icon
,
const
QString
&
name
,
const
Q
Url
&
realPath
,
UBFeatureElementType
type
=
FEATURE_CATEGORY
);
virtual
~
UBFeature
()
{;}
virtual
~
UBFeature
()
{;}
QString
getName
()
const
{
return
mName
;
}
QString
getName
()
const
{
return
mName
;
}
QPixmap
getThumbnail
()
const
{
return
mThumbnail
;}
QPixmap
getThumbnail
()
const
{
return
mThumbnail
;}
QString
get
Url
()
const
{
return
virtualPath
;
}
QString
get
VirtualPath
()
const
{
return
virtualPath
;
}
//QString getPath() const { return mPath; };
//QString getPath() const { return mPath; };
QString
getFullPath
()
const
{
return
mPath
;
}
QUrl
getFullPath
()
const
{
return
mPath
;
}
QString
getFullVirtualPath
()
const
{
return
virtualPath
+
"/"
+
mName
;
}
QString
getUrl
()
const
;
UBFeatureElementType
getType
()
const
{
return
elementType
;
}
UBFeatureElementType
getType
()
const
{
return
elementType
;
}
bool
isFolder
()
const
;
bool
isFolder
()
const
;
bool
isDeletable
()
const
;
bool
operator
==
(
const
UBFeature
&
f
)
const
;
bool
operator
!=
(
const
UBFeature
&
f
)
const
;
const
QMap
<
QString
,
QString
>
&
getMetadata
()
const
{
return
metadata
;
}
void
setMetadata
(
const
QMap
<
QString
,
QString
>
&
data
)
{
metadata
=
data
;
}
private
:
private
:
QString
virtualPath
;
QString
virtualPath
;
QPixmap
mThumbnail
;
QPixmap
mThumbnail
;
QString
mName
;
QString
mName
;
Q
String
mPath
;
Q
Url
mPath
;
UBFeatureElementType
elementType
;
UBFeatureElementType
elementType
;
QMap
<
QString
,
QString
>
metadata
;
};
};
Q_DECLARE_METATYPE
(
UBFeature
)
Q_DECLARE_METATYPE
(
UBFeature
)
...
@@ -57,10 +71,14 @@ public:
...
@@ -57,10 +71,14 @@ public:
const
QString
&
getRootPath
()
const
{
return
rootPath
;
}
const
QString
&
getRootPath
()
const
{
return
rootPath
;
}
void
addItemToPage
(
const
UBFeature
&
item
);
void
addItemToPage
(
const
UBFeature
&
item
);
void
addItemAsBackground
(
const
UBFeature
&
item
);
const
UBFeature
&
getCurrentElement
()
const
{
return
currentElement
;
}
const
UBFeature
&
getCurrentElement
()
const
{
return
currentElement
;
}
void
setCurrentElement
(
const
UBFeature
&
elem
)
{
currentElement
=
elem
;
}
void
setCurrentElement
(
const
UBFeature
&
elem
)
{
currentElement
=
elem
;
}
const
UBFeature
&
getTrashElement
()
const
{
return
trashElement
;
}
const
UBFeature
&
getTrashElement
()
const
{
return
trashElement
;
}
UBFeature
addDownloadedFile
(
const
QUrl
&
sourceUrl
,
const
QByteArray
&
pData
);
UBFeature
moveItemToFolder
(
const
QUrl
&
url
,
const
UBFeature
&
destination
);
UBFeature
moveItemToFolder
(
const
QUrl
&
url
,
const
UBFeature
&
destination
);
UBFeature
copyItemToFolder
(
const
QUrl
&
url
,
const
UBFeature
&
destination
);
UBFeature
copyItemToFolder
(
const
QUrl
&
url
,
const
UBFeature
&
destination
);
void
deleteItem
(
const
QUrl
&
url
);
void
deleteItem
(
const
QUrl
&
url
);
...
@@ -71,34 +89,37 @@ public:
...
@@ -71,34 +89,37 @@ public:
static
QString
fileNameFromUrl
(
const
QUrl
&
url
);
static
QString
fileNameFromUrl
(
const
QUrl
&
url
);
static
QPixmap
thumbnailForFile
(
const
QString
&
path
);
static
QPixmap
thumbnailForFile
(
const
QString
&
path
);
static
bool
isDeletable
(
const
QUrl
&
url
);
private
:
private
:
void
initDirectoryTree
();
void
initDirectoryTree
();
void
fileSystemScan
(
const
Q
String
&
currPath
,
const
QString
&
currVirtualPath
);
void
fileSystemScan
(
const
Q
Url
&
currPath
,
const
QString
&
currVirtualPath
);
static
QPixmap
createThumbnail
(
const
QString
&
path
);
static
QPixmap
createThumbnail
(
const
QString
&
path
);
//void addImageToCurrentPage( const QString &path );
//void addImageToCurrentPage( const QString &path );
void
loadFavoriteList
();
void
loadFavoriteList
();
void
saveFavoriteList
();
void
saveFavoriteList
();
UBFeature
getDestinationForItem
(
const
QUrl
&
url
);
static
UBFeatureElementType
fileTypeFromUrl
(
const
QString
&
path
);
static
UBFeatureElementType
fileTypeFromUrl
(
const
QString
&
path
);
QList
<
UBFeature
>
*
featuresList
;
QList
<
UBFeature
>
*
featuresList
;
UBFeature
*
rootElement
;
UBFeature
*
rootElement
;
Q
String
mUserAudioDirectoryPath
;
Q
Url
mUserAudioDirectoryPath
;
Q
String
mUserVideoDirectoryPath
;
Q
Url
mUserVideoDirectoryPath
;
Q
String
mUserPicturesDirectoryPath
;
Q
Url
mUserPicturesDirectoryPath
;
Q
String
mUserInteractiveDirectoryPath
;
Q
Url
mUserInteractiveDirectoryPath
;
Q
String
mUserAnimationDirectoryPath
;
Q
Url
mUserAnimationDirectoryPath
;
QString
libraryPath
;
QString
libraryPath
;
QString
mLibAudioDirectoryPath
;
QUrl
mLibAudioDirectoryPath
;
QString
mLibVideoDirectoryPath
;
QUrl
mLibVideoDirectoryPath
;
QString
mLibPicturesDirectoryPath
;
QUrl
mLibPicturesDirectoryPath
;
QString
mLibInteractiveDirectoryPath
;
QUrl
mLibInteractiveDirectoryPath
;
QString
mLibAnimationDirectoryPath
;
QUrl
mLibAnimationDirectoryPath
;
QString
mLibApplicationsDirectoryPath
;
QUrl
mLibApplicationsDirectoryPath
;
QString
mLibShapesDirectoryPath
;
QUrl
mLibShapesDirectoryPath
;
QString
trashDirectoryPath
;
QUrl
trashDirectoryPath
;
QUrl
mLibSearchDirectoryPath
;
QString
rootPath
;
QString
rootPath
;
QString
audiosPath
;
QString
audiosPath
;
...
@@ -115,8 +136,15 @@ private:
...
@@ -115,8 +136,15 @@ private:
UBFeature
currentElement
;
UBFeature
currentElement
;
UBFeature
trashElement
;
UBFeature
trashElement
;
UBFeature
favoriteElement
;
UBFeature
favoriteElement
;
UBFeature
audiosElement
;
QSet
<
QString
>
*
favoriteSet
;
UBFeature
moviesElement
;
UBFeature
picturesElement
;
UBFeature
interactElement
;
UBFeature
flashElement
;
UBFeature
shapesElement
;
UBFeature
webSearchElement
;
QSet
<
QUrl
>
*
favoriteSet
;
};
};
...
...
src/core/main.cpp
View file @
56eceb66
...
@@ -72,7 +72,7 @@ int main(int argc, char *argv[])
...
@@ -72,7 +72,7 @@ int main(int argc, char *argv[])
// Uncomment next section to have memory leaks information
// Uncomment next section to have memory leaks information
// tracing in VC++ debug mode under Windows
// tracing in VC++ debug mode under Windows
/*
/*
#if defined(_MSC_VER) && defined(_DEBUG)
#if defined(_MSC_VER) && defined(_DEBUG)
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif
#endif
...
...
src/customWidgets/UBActionableWidget.cpp
View file @
56eceb66
...
@@ -18,6 +18,8 @@
...
@@ -18,6 +18,8 @@
#include "UBActionableWidget.h"
#include "UBActionableWidget.h"
#include "core/memcheck.h"
UBActionableWidget
::
UBActionableWidget
(
QWidget
*
parent
,
const
char
*
name
)
:
QWidget
(
parent
)
UBActionableWidget
::
UBActionableWidget
(
QWidget
*
parent
,
const
char
*
name
)
:
QWidget
(
parent
)
,
mShowActions
(
false
)
,
mShowActions
(
false
)
{
{
...
...
src/customWidgets/UBMediaWidget.cpp
View file @
56eceb66
...
@@ -16,6 +16,8 @@
...
@@ -16,6 +16,8 @@
#include "globals/UBGlobals.h"
#include "globals/UBGlobals.h"
#include "UBMediaWidget.h"
#include "UBMediaWidget.h"
#include "core/memcheck.h"
/**
/**
* \brief Constructor
* \brief Constructor
* @param type as the media type
* @param type as the media type
...
...
src/domain/UBAbstractUndoCommand.cpp
View file @
56eceb66
...
@@ -15,6 +15,8 @@
...
@@ -15,6 +15,8 @@
#include "UBAbstractUndoCommand.h"
#include "UBAbstractUndoCommand.h"
#include "core/memcheck.h"
UBAbstractUndoCommand
::
UBAbstractUndoCommand
()
UBAbstractUndoCommand
::
UBAbstractUndoCommand
()
{
{
// NOOP
// NOOP
...
...
src/domain/UBAngleWidget.cpp
View file @
56eceb66
#include "UBAngleWidget.h"
#include "UBAngleWidget.h"
#include <QPainter>
#include <QPainter>
#include "core/memcheck.h"
UBAngleWidget
::
UBAngleWidget
(
QWidget
*
parent
)
UBAngleWidget
::
UBAngleWidget
(
QWidget
*
parent
)
:
QWidget
(
parent
)
:
QWidget
(
parent
)
{
{
...
...
src/domain/UBGraphicsDelegateFrame.cpp
View file @
56eceb66
/*
/*
* This program is free software: you can redistribute it and/or modify
* 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
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
*/
#include "UBGraphicsDelegateFrame.h"
#include "UBGraphicsDelegateFrame.h"
#include <QtGui>
#include <QtGui>
#include <QtSvg>
#include <QtSvg>
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "core/UBSettings.h"
#include "core/UBSettings.h"
#include "domain/UBGraphicsItemDelegate.h"
#include "domain/UBGraphicsItemDelegate.h"
#include "domain/UBGraphicsScene.h"
#include "domain/UBGraphicsScene.h"
#include "domain/UBGraphicsProxyWidget.h"
#include "domain/UBGraphicsProxyWidget.h"
#include "gui/UBResources.h"
#include "gui/UBResources.h"
#include "core/memcheck.h"
#include "core/memcheck.h"
UBGraphicsDelegateFrame
::
UBGraphicsDelegateFrame
(
UBGraphicsItemDelegate
*
pDelegate
,
QRectF
pRect
,
qreal
pFrameWidth
,
bool
respectRatio
)
UBGraphicsDelegateFrame
::
UBGraphicsDelegateFrame
(
UBGraphicsItemDelegate
*
pDelegate
,
QRectF
pRect
,
qreal
pFrameWidth
,
bool
respectRatio
)
:
QGraphicsRectItem
(),
QObject
(
pDelegate
)
:
QGraphicsRectItem
(),
QObject
(
pDelegate
)
,
mCurrentTool
(
None
)
,
mCurrentTool
(
None
)
,
mDelegate
(
pDelegate
)
,
mDelegate
(
pDelegate
)
,
mVisible
(
true
)
,
mVisible
(
true
)
,
mFrameWidth
(
pFrameWidth
)
,
mFrameWidth
(
pFrameWidth
)
,
mNominalFrameWidth
(
pFrameWidth
)
,
mNominalFrameWidth
(
pFrameWidth
)
,
mRespectRatio
(
respectRatio
)
,
mRespectRatio
(
respectRatio
)
,
mAngle
(
0
)
,
mAngle
(
0
)
,
mAngleOffset
(
0
)
,
mAngleOffset
(
0
)
,
mTotalScaleX
(
-
1
)
,
mTotalScaleX
(
-
1
)
,
mTotalScaleY
(
-
1
)
,
mTotalScaleY
(
-
1
)
,
mTranslateX
(
0
)
,
mTranslateX
(
0
)
,
mTranslateY
(
0
)
,
mTranslateY
(
0
)
,
mTotalTranslateX
(
0
)
,
mTotalTranslateX
(
0
)
,
mTotalTranslateY
(
0
)
,
mTotalTranslateY
(
0
)
,
mOperationMode
(
Scaling
)
,
mOperationMode
(
Scaling
)
,
mMirrorX
(
false
)
,
mMirrorX
(
false
)
,
mMirrorY
(
false
)
,
mMirrorY
(
false
)
{
{
mAngleTolerance
=
UBSettings
::
settings
()
->
angleTolerance
->
get
().
toReal
();
mAngleTolerance
=
UBSettings
::
settings
()
->
angleTolerance
->
get
().
toReal
();
setFlag
(
QGraphicsItem
::
ItemSendsGeometryChanges
,
true
);
setFlag
(
QGraphicsItem
::
ItemSendsGeometryChanges
,
true
);
setAcceptedMouseButtons
(
Qt
::
LeftButton
);
setAcceptedMouseButtons
(
Qt
::
LeftButton
);
setRect
(
pRect
.
adjusted
(
mFrameWidth
,
mFrameWidth
,
mFrameWidth
*
-
1
,
mFrameWidth
*
-
1
));
setRect
(
pRect
.
adjusted
(
mFrameWidth
,
mFrameWidth
,
mFrameWidth
*
-
1
,
mFrameWidth
*
-
1
));
setBrush
(
QBrush
(
UBSettings
::
paletteColor
));
setBrush
(
QBrush
(
UBSettings
::
paletteColor
));
setPen
(
Qt
::
NoPen
);
setPen
(
Qt
::
NoPen
);
setData
(
UBGraphicsItemData
::
ItemLayerType
,
QVariant
(
UBItemLayerType
::
Control
));
setData
(
UBGraphicsItemData
::
ItemLayerType
,
QVariant
(
UBItemLayerType
::
Control
));
mBottomRightResizeGripSvgItem
=
new
QGraphicsSvgItem
(
":/images/resize.svg"
,
this
);
mBottomRightResizeGripSvgItem
=
new
QGraphicsSvgItem
(
":/images/resize.svg"
,
this
);
mBottomResizeGripSvgItem
=
new
QGraphicsSvgItem
(
":/images/resizeBottom.svg"
,
this
);
mBottomResizeGripSvgItem
=
new
QGraphicsSvgItem
(
":/images/resizeBottom.svg"
,
this
);
mLeftResizeGripSvgItem
=
new
QGraphicsSvgItem
(
":/images/resizeLeft.svg"
,
this
);
mLeftResizeGripSvgItem
=
new
QGraphicsSvgItem
(
":/images/resizeLeft.svg"
,
this
);
mRightResizeGripSvgItem
=
new
QGraphicsSvgItem
(
":/images/resizeRight.svg"
,
this
);
mRightResizeGripSvgItem
=
new
QGraphicsSvgItem
(
":/images/resizeRight.svg"
,
this
);
mTopResizeGripSvgItem
=
new
QGraphicsSvgItem
(
":/images/resizeTop.svg"
,
this
);
mTopResizeGripSvgItem
=
new
QGraphicsSvgItem
(
":/images/resizeTop.svg"
,
this
);
mBottomRightResizeGrip
=
new
QGraphicsRectItem
(
this
);
mBottomRightResizeGrip
=
new
QGraphicsRectItem
(
this
);
mBottomRightResizeGrip
->
setPen
(
Qt
::
NoPen
);
mBottomRightResizeGrip
->
setPen
(
Qt
::
NoPen
);
mBottomResizeGrip
=
new
QGraphicsRectItem
(
this
);
mBottomResizeGrip
=
new
QGraphicsRectItem
(
this
);
mBottomResizeGrip
->
setPen
(
Qt
::
NoPen
);
mBottomResizeGrip
->
setPen
(
Qt
::
NoPen
);
mLeftResizeGrip
=
new
QGraphicsRectItem
(
this
);
mLeftResizeGrip
=
new
QGraphicsRectItem
(
this
);
mLeftResizeGrip
->
setToolTip
(
"left"
);
mLeftResizeGrip
->
setToolTip
(
"left"
);
mLeftResizeGrip
->
setPen
(
Qt
::
NoPen
);
mLeftResizeGrip
->
setPen
(
Qt
::
NoPen
);
mRightResizeGrip
=
new
QGraphicsRectItem
(
this
);
mRightResizeGrip
=
new
QGraphicsRectItem
(
this
);
mRightResizeGrip
->
setPen
(
Qt
::
NoPen
);
mRightResizeGrip
->
setPen
(
Qt
::
NoPen
);
mRightResizeGrip
->
setToolTip
(
"Right"
);
mRightResizeGrip
->
setToolTip
(
"Right"
);
mTopResizeGrip
=
new
QGraphicsRectItem
(
this
);
mTopResizeGrip
=
new
QGraphicsRectItem
(
this
);
mTopResizeGrip
->
setPen
(
Qt
::
NoPen
);
mTopResizeGrip
->
setPen
(
Qt
::
NoPen
);
mRotateButton
=
new
QGraphicsSvgItem
(
":/images/rotate.svg"
,
this
);
mRotateButton
=
new
QGraphicsSvgItem
(
":/images/rotate.svg"
,
this
);
mRotateButton
->
setCursor
(
UBResources
::
resources
()
->
rotateCursor
);
mRotateButton
->
setCursor
(
UBResources
::
resources
()
->
rotateCursor
);
mRotateButton
->
setVisible
(
mDelegate
->
canRotate
());
mRotateButton
->
setVisible
(
mDelegate
->
canRotate
());
updateResizeCursors
();
updateResizeCursors
();
setAntiScale
(
1.0
);
setAntiScale
(
1.0
);
positionHandles
();
positionHandles
();
this
->
setAcceptHoverEvents
(
true
);
this
->
setAcceptHoverEvents
(
true
);
angleWidget
=
new
UBAngleWidget
();
angleWidget
=
new
UBAngleWidget
();
}
}
UBGraphicsDelegateFrame
::~
UBGraphicsDelegateFrame
()
UBGraphicsDelegateFrame
::~
UBGraphicsDelegateFrame
()
{
{
delete
angleWidget
;
delete
angleWidget
;
// NOOP
// NOOP
}
}
void
UBGraphicsDelegateFrame
::
setAntiScale
(
qreal
pAntiScale
)
void
UBGraphicsDelegateFrame
::
setAntiScale
(
qreal
pAntiScale
)
{
{
mFrameWidth
=
mNominalFrameWidth
*
pAntiScale
;
mFrameWidth
=
mNominalFrameWidth
*
pAntiScale
;
QTransform
tr
;
QTransform
tr
;
tr
.
scale
(
pAntiScale
,
pAntiScale
);
tr
.
scale
(
pAntiScale
,
pAntiScale
);
mBottomRightResizeGripSvgItem
->
setTransform
(
tr
);
mBottomRightResizeGripSvgItem
->
setTransform
(
tr
);
mBottomResizeGripSvgItem
->
setTransform
(
tr
);
mBottomResizeGripSvgItem
->
setTransform
(
tr
);
mLeftResizeGripSvgItem
->
setTransform
(
tr
);
mLeftResizeGripSvgItem
->
setTransform
(
tr
);
mRightResizeGripSvgItem
->
setTransform
(
tr
);
mRightResizeGripSvgItem
->
setTransform
(
tr
);
mTopResizeGripSvgItem
->
setTransform
(
tr
);
mTopResizeGripSvgItem
->
setTransform
(
tr
);
mRotateButton
->
setTransform
(
tr
);
mRotateButton
->
setTransform
(
tr
);
}
}
void
UBGraphicsDelegateFrame
::
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
)
void
UBGraphicsDelegateFrame
::
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
)
{
{
Q_UNUSED
(
option
);
Q_UNUSED
(
option
);
Q_UNUSED
(
widget
);
Q_UNUSED
(
widget
);
QPainterPath
path
;
QPainterPath
path
;
path
.
addRoundedRect
(
rect
(),
mFrameWidth
/
2
,
mFrameWidth
/
2
);
path
.
addRoundedRect
(
rect
(),
mFrameWidth
/
2
,
mFrameWidth
/
2
);
if
(
rect
().
width
()
>
1
&&
rect
().
height
()
>
1
)
if
(
rect
().
width
()
>
1
&&
rect
().
height
()
>
1
)
{
{
QPainterPath
extruded
;
QPainterPath
extruded
;
extruded
.
addRect
(
rect
().
adjusted
(
mFrameWidth
,
mFrameWidth
,
(
mFrameWidth
*
-
1
),
(
mFrameWidth
*
-
1
)));
extruded
.
addRect
(
rect
().
adjusted
(
mFrameWidth
,
mFrameWidth
,
(
mFrameWidth
*
-
1
),
(
mFrameWidth
*
-
1
)));
path
=
path
.
subtracted
(
extruded
);
path
=
path
.
subtracted
(
extruded
);
}
}
painter
->
fillPath
(
path
,
brush
());
painter
->
fillPath
(
path
,
brush
());
}
}
QPainterPath
UBGraphicsDelegateFrame
::
shape
()
const
QPainterPath
UBGraphicsDelegateFrame
::
shape
()
const
{
{
QPainterPath
path
;
QPainterPath
path
;
//We do not use the rounded rect here because we want the bottom right corner
//We do not use the rounded rect here because we want the bottom right corner
//to be included in the frame (for resize grip handling : #702)
//to be included in the frame (for resize grip handling : #702)
path
.
addRect
(
rect
());
path
.
addRect
(
rect
());
if
(
rect
().
width
()
>
0
&&
rect
().
height
()
>
0
)
if
(
rect
().
width
()
>
0
&&
rect
().
height
()
>
0
)
{
{
QPainterPath
extruded
;
QPainterPath
extruded
;
extruded
.
addRect
(
rect
().
adjusted
(
mFrameWidth
,
mFrameWidth
,
mFrameWidth
*
-
1
,
mFrameWidth
*
-
1
));
extruded
.
addRect
(
rect
().
adjusted
(
mFrameWidth
,
mFrameWidth
,
mFrameWidth
*
-
1
,
mFrameWidth
*
-
1
));
path
=
path
.
subtracted
(
extruded
);
path
=
path
.
subtracted
(
extruded
);
}
}
return
path
;
return
path
;
}
}
void
UBGraphicsDelegateFrame
::
initializeTransform
()
void
UBGraphicsDelegateFrame
::
initializeTransform
()
{
{
QTransform
itemTransform
=
delegated
()
->
sceneTransform
();
QTransform
itemTransform
=
delegated
()
->
sceneTransform
();
QRectF
itemRect
=
delegated
()
->
boundingRect
();
QRectF
itemRect
=
delegated
()
->
boundingRect
();
QPointF
topLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
QPointF
topLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
QPointF
topRight
=
itemTransform
.
map
(
itemRect
.
topRight
());
QPointF
topRight
=
itemTransform
.
map
(
itemRect
.
topRight
());
QPointF
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
QPointF
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
qreal
horizontalFlip
=
(
topLeft
.
x
()
>
topRight
.
x
())
?
-
1
:
1
;
qreal
horizontalFlip
=
(
topLeft
.
x
()
>
topRight
.
x
())
?
-
1
:
1
;
mMirrorX
=
horizontalFlip
<
0
;
mMirrorX
=
horizontalFlip
<
0
;
if
(
horizontalFlip
<
0
){
if
(
horizontalFlip
<
0
){
// why this is because of the way of calculating the translations that checks which side is the most is the
// why this is because of the way of calculating the translations that checks which side is the most is the
// nearest instead of checking which one is the left side.
// nearest instead of checking which one is the left side.
QPointF
tmp
=
topLeft
;
QPointF
tmp
=
topLeft
;
topLeft
=
topRight
;
topLeft
=
topRight
;
topRight
=
tmp
;
topRight
=
tmp
;
// because of the calculation of the height is done by lenght and not deltaY
// because of the calculation of the height is done by lenght and not deltaY
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomRight
());
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomRight
());
}
}
qreal
verticalFlip
=
(
bottomLeft
.
y
()
<
topLeft
.
y
())
?
-
1
:
1
;
qreal
verticalFlip
=
(
bottomLeft
.
y
()
<
topLeft
.
y
())
?
-
1
:
1
;
// not sure that is usefull
// not sure that is usefull
mMirrorY
=
verticalFlip
<
0
;
mMirrorY
=
verticalFlip
<
0
;
if
(
verticalFlip
<
0
&&
!
mMirrorX
){
if
(
verticalFlip
<
0
&&
!
mMirrorX
){
topLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
topLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
topRight
=
itemTransform
.
map
(
itemRect
.
bottomRight
());
topRight
=
itemTransform
.
map
(
itemRect
.
bottomRight
());
bottomLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
bottomLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
}
}
QLineF
topLine
(
topLeft
,
topRight
);
QLineF
topLine
(
topLeft
,
topRight
);
QLineF
leftLine
(
topLeft
,
bottomLeft
);
QLineF
leftLine
(
topLeft
,
bottomLeft
);
qreal
width
=
topLine
.
length
();
qreal
width
=
topLine
.
length
();
qreal
height
=
leftLine
.
length
();
qreal
height
=
leftLine
.
length
();
mAngle
=
topLine
.
angle
();
mAngle
=
topLine
.
angle
();
// the fact the the length is used we loose the horizontalFlip information
// the fact the the length is used we loose the horizontalFlip information
// a better way to do this is using DeltaX that preserve the direction information.
// a better way to do this is using DeltaX that preserve the direction information.
mTotalScaleX
=
(
width
/
itemRect
.
width
())
*
horizontalFlip
;
mTotalScaleX
=
(
width
/
itemRect
.
width
())
*
horizontalFlip
;
mTotalScaleY
=
height
/
itemRect
.
height
()
*
verticalFlip
;
mTotalScaleY
=
height
/
itemRect
.
height
()
*
verticalFlip
;
QTransform
tr
;
QTransform
tr
;
QPointF
center
=
delegated
()
->
boundingRect
().
center
();
QPointF
center
=
delegated
()
->
boundingRect
().
center
();
tr
.
translate
(
center
.
x
()
*
mTotalScaleX
,
center
.
y
()
*
mTotalScaleY
);
tr
.
translate
(
center
.
x
()
*
mTotalScaleX
,
center
.
y
()
*
mTotalScaleY
);
tr
.
rotate
(
-
mAngle
);
tr
.
rotate
(
-
mAngle
);
tr
.
translate
(
-
center
.
x
()
*
mTotalScaleX
,
-
center
.
y
()
*
mTotalScaleY
);
tr
.
translate
(
-
center
.
x
()
*
mTotalScaleX
,
-
center
.
y
()
*
mTotalScaleY
);
tr
.
scale
(
mTotalScaleX
,
mTotalScaleY
);
tr
.
scale
(
mTotalScaleX
,
mTotalScaleY
);
mTotalTranslateX
=
delegated
()
->
transform
().
dx
()
-
tr
.
dx
();
mTotalTranslateX
=
delegated
()
->
transform
().
dx
()
-
tr
.
dx
();
mTotalTranslateY
=
delegated
()
->
transform
().
dy
()
-
tr
.
dy
();
mTotalTranslateY
=
delegated
()
->
transform
().
dy
()
-
tr
.
dy
();
}
}
void
UBGraphicsDelegateFrame
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
void
UBGraphicsDelegateFrame
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
{
mDelegate
->
startUndoStep
();
mDelegate
->
startUndoStep
();
mStartingPoint
=
event
->
scenePos
();
mStartingPoint
=
event
->
scenePos
();
initializeTransform
();
initializeTransform
();
mScaleX
=
1
;
mScaleX
=
1
;
mScaleY
=
1
;
mScaleY
=
1
;
mTranslateX
=
0
;
mTranslateX
=
0
;
mTranslateY
=
0
;
mTranslateY
=
0
;
mAngleOffset
=
0
;
mAngleOffset
=
0
;
mInitialTransform
=
buildTransform
();
mInitialTransform
=
buildTransform
();
mCurrentTool
=
toolFromPos
(
event
->
pos
());
mCurrentTool
=
toolFromPos
(
event
->
pos
());
event
->
accept
();
event
->
accept
();
}
}
bool
UBGraphicsDelegateFrame
::
canResizeBottomRight
(
qreal
width
,
qreal
height
,
qreal
scaleFactor
)
bool
UBGraphicsDelegateFrame
::
canResizeBottomRight
(
qreal
width
,
qreal
height
,
qreal
scaleFactor
)
{
{
bool
res
=
false
;
bool
res
=
false
;
if
(
!
mMirrorX
&&
!
mMirrorX
&&
((
width
*
scaleFactor
)
>
2
*
mFrameWidth
&&
(
height
*
scaleFactor
)
>
2
*
mFrameWidth
)){
if
(
!
mMirrorX
&&
!
mMirrorX
&&
((
width
*
scaleFactor
)
>
2
*
mFrameWidth
&&
(
height
*
scaleFactor
)
>
2
*
mFrameWidth
)){
res
=
true
;
res
=
true
;
}
else
if
(
mMirrorX
&&
!
mMirrorY
&&
(
-
width
*
scaleFactor
)
>
2
*
mFrameWidth
&&
(
height
*
scaleFactor
)
>
2
*
mFrameWidth
){
}
else
if
(
mMirrorX
&&
!
mMirrorY
&&
(
-
width
*
scaleFactor
)
>
2
*
mFrameWidth
&&
(
height
*
scaleFactor
)
>
2
*
mFrameWidth
){
res
=
true
;
res
=
true
;
}
else
if
(
!
mMirrorX
&&
mMirrorY
&&
(
width
*
scaleFactor
)
>
2
*
mFrameWidth
&&
(
-
height
*
scaleFactor
)
>
2
*
mFrameWidth
){
}
else
if
(
!
mMirrorX
&&
mMirrorY
&&
(
width
*
scaleFactor
)
>
2
*
mFrameWidth
&&
(
-
height
*
scaleFactor
)
>
2
*
mFrameWidth
){
res
=
true
;
res
=
true
;
}
else
if
(
mMirrorX
&&
mMirrorY
&&
(
-
width
*
scaleFactor
)
>
2
*
mFrameWidth
&&
(
-
height
*
scaleFactor
)
>
2
*
mFrameWidth
){
}
else
if
(
mMirrorX
&&
mMirrorY
&&
(
-
width
*
scaleFactor
)
>
2
*
mFrameWidth
&&
(
-
height
*
scaleFactor
)
>
2
*
mFrameWidth
){
res
=
true
;
res
=
true
;
}
}
return
res
;
return
res
;
}
}
void
UBGraphicsDelegateFrame
::
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
)
void
UBGraphicsDelegateFrame
::
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
{
QLineF
move
(
mStartingPoint
,
event
->
scenePos
());
QLineF
move
(
mStartingPoint
,
event
->
scenePos
());
qreal
moveX
=
move
.
length
()
*
cos
((
move
.
angle
()
-
mAngle
)
*
PI
/
180
);
qreal
moveX
=
move
.
length
()
*
cos
((
move
.
angle
()
-
mAngle
)
*
PI
/
180
);
qreal
moveY
=
-
move
.
length
()
*
sin
((
move
.
angle
()
-
mAngle
)
*
PI
/
180
);
qreal
moveY
=
-
move
.
length
()
*
sin
((
move
.
angle
()
-
mAngle
)
*
PI
/
180
);
qreal
width
=
delegated
()
->
boundingRect
().
width
()
*
mTotalScaleX
;
qreal
width
=
delegated
()
->
boundingRect
().
width
()
*
mTotalScaleX
;
qreal
height
=
delegated
()
->
boundingRect
().
height
()
*
mTotalScaleY
;
qreal
height
=
delegated
()
->
boundingRect
().
height
()
*
mTotalScaleY
;
if
(
mOperationMode
==
Scaling
)
if
(
mOperationMode
==
Scaling
)
{
{
mTranslateX
=
moveX
;
mTranslateX
=
moveX
;
// Perform the resize
// Perform the resize
if
(
resizingBottomRight
())
if
(
resizingBottomRight
())
{
{
// -----------------------------------------------------
// -----------------------------------------------------
// ! We want to keep the aspect ratio with this resize !
// ! We want to keep the aspect ratio with this resize !
// -----------------------------------------------------
// -----------------------------------------------------
qreal
scaleX
;
qreal
scaleX
;
qreal
scaleY
;
qreal
scaleY
;
if
(
!
mMirrorX
){
if
(
!
mMirrorX
){
scaleX
=
(
width
+
moveX
)
/
width
;
scaleX
=
(
width
+
moveX
)
/
width
;
}
else
{
}
else
{
scaleX
=
(
width
-
moveX
)
/
width
;
scaleX
=
(
width
-
moveX
)
/
width
;
}
}
if
(
!
mMirrorY
){
if
(
!
mMirrorY
){
scaleY
=
(
height
+
moveY
)
/
height
;
scaleY
=
(
height
+
moveY
)
/
height
;
}
else
{
}
else
{
scaleY
=
(
height
-
moveY
)
/
height
;
scaleY
=
(
height
-
moveY
)
/
height
;
}
}
qreal
scaleFactor
=
(
scaleX
+
scaleY
)
/
2
;
qreal
scaleFactor
=
(
scaleX
+
scaleY
)
/
2
;
// Do not allow resizing of image size under frame size
// Do not allow resizing of image size under frame size
if
(
canResizeBottomRight
(
width
,
height
,
scaleFactor
))
if
(
canResizeBottomRight
(
width
,
height
,
scaleFactor
))
{
{
if
(
mRespectRatio
)
if
(
mRespectRatio
)
{
{
mScaleX
=
scaleFactor
;
mScaleX
=
scaleFactor
;
mScaleY
=
scaleFactor
;
mScaleY
=
scaleFactor
;
}
}
else
else
{
{
mScaleX
=
scaleX
;
mScaleX
=
scaleX
;
mScaleY
=
scaleY
;
mScaleY
=
scaleY
;
}
}
}
}
}
else
if
(
resizingLeft
()
||
resizingRight
())
}
else
if
(
resizingLeft
()
||
resizingRight
())
{
{
if
(
width
!=
0
){
if
(
width
!=
0
){
qreal
scaleX
=
0.0
;
qreal
scaleX
=
0.0
;
if
(
resizingLeft
()){
if
(
resizingLeft
()){
scaleX
=
(
width
-
moveX
)
/
width
;
scaleX
=
(
width
-
moveX
)
/
width
;
}
else
if
(
resizingRight
()){
}
else
if
(
resizingRight
()){
scaleX
=
(
width
+
moveX
)
/
width
;
scaleX
=
(
width
+
moveX
)
/
width
;
}
}
if
(
mDelegate
->
isFlippable
()
&&
qAbs
(
scaleX
)
!=
0
){
if
(
mDelegate
->
isFlippable
()
&&
qAbs
(
scaleX
)
!=
0
){
if
((
qAbs
(
width
*
scaleX
))
<
2
*
mFrameWidth
){
if
((
qAbs
(
width
*
scaleX
))
<
2
*
mFrameWidth
){
bool
negative
=
(
scaleX
<
0
)
?
true
:
false
;
bool
negative
=
(
scaleX
<
0
)
?
true
:
false
;
if
(
negative
){
if
(
negative
){
if
(
mMirrorX
)
if
(
mMirrorX
)
scaleX
=
2
*
mFrameWidth
/
width
;
scaleX
=
2
*
mFrameWidth
/
width
;
else
else
scaleX
=
-
2
*
mFrameWidth
/
width
;
scaleX
=
-
2
*
mFrameWidth
/
width
;
}
else
{
}
else
{
scaleX
=
-
1
;
scaleX
=
-
1
;
}
}
}
}
mScaleX
=
scaleX
;
mScaleX
=
scaleX
;
}
else
if
(
scaleX
>
1
||
(
width
*
scaleX
)
>
2
*
mFrameWidth
){
}
else
if
(
scaleX
>
1
||
(
width
*
scaleX
)
>
2
*
mFrameWidth
){
mScaleX
=
scaleX
;
mScaleX
=
scaleX
;
if
(
resizingLeft
()){
if
(
resizingLeft
()){
mTranslateX
=
moveX
;
mTranslateX
=
moveX
;
}
}
}
}
}
}
}
else
if
(
resizingTop
()
||
resizingBottom
()){
}
else
if
(
resizingTop
()
||
resizingBottom
()){
if
(
height
!=
0
){
if
(
height
!=
0
){
qreal
scaleY
=
0.0
;
qreal
scaleY
=
0.0
;
if
(
resizingTop
()){
if
(
resizingTop
()){
scaleY
=
(
height
-
moveY
)
/
height
;
scaleY
=
(
height
-
moveY
)
/
height
;
}
else
if
(
resizingBottom
()){
}
else
if
(
resizingBottom
()){
scaleY
=
(
height
+
moveY
)
/
height
;
scaleY
=
(
height
+
moveY
)
/
height
;
}
}
if
(
mDelegate
->
isFlippable
()
&&
qAbs
(
scaleY
)
!=
0
){
if
(
mDelegate
->
isFlippable
()
&&
qAbs
(
scaleY
)
!=
0
){
if
((
qAbs
(
height
*
scaleY
))
<
2
*
mFrameWidth
){
if
((
qAbs
(
height
*
scaleY
))
<
2
*
mFrameWidth
){
bool
negative
=
(
scaleY
<
0
)
?
true
:
false
;
bool
negative
=
(
scaleY
<
0
)
?
true
:
false
;
if
(
negative
){
if
(
negative
){
if
(
mMirrorY
)
if
(
mMirrorY
)
scaleY
=
2
*
mFrameWidth
/
width
;
scaleY
=
2
*
mFrameWidth
/
width
;
else
else
scaleY
=
-
2
*
mFrameWidth
/
width
;
scaleY
=
-
2
*
mFrameWidth
/
width
;
}
else
{
}
else
{
scaleY
=
-
1
;
scaleY
=
-
1
;
}
}
}
}
mScaleY
=
scaleY
;
mScaleY
=
scaleY
;
}
else
if
(
scaleY
>
1
||
(
height
*
scaleY
)
>
2
*
mFrameWidth
)
}
else
if
(
scaleY
>
1
||
(
height
*
scaleY
)
>
2
*
mFrameWidth
)
{
{
mScaleY
=
scaleY
;
mScaleY
=
scaleY
;
if
(
resizingTop
()){
if
(
resizingTop
()){
mTranslateY
=
moveY
;
mTranslateY
=
moveY
;
}
}
}
}
}
}
}
}
}
}
else
if
(
mOperationMode
==
Resizing
)
else
if
(
mOperationMode
==
Resizing
)
{
{
mTranslateX
=
moveX
;
mTranslateX
=
moveX
;
UBResizableGraphicsItem
*
resizableItem
=
dynamic_cast
<
UBResizableGraphicsItem
*>
(
delegated
());
UBResizableGraphicsItem
*
resizableItem
=
dynamic_cast
<
UBResizableGraphicsItem
*>
(
delegated
());
if
(
resizableItem
)
if
(
resizableItem
)
{
{
QLineF
mousePosDelta
(
delegated
()
->
mapFromScene
(
event
->
lastScenePos
())
QLineF
mousePosDelta
(
delegated
()
->
mapFromScene
(
event
->
lastScenePos
())
,
delegated
()
->
mapFromScene
(
event
->
scenePos
()));
,
delegated
()
->
mapFromScene
(
event
->
scenePos
()));
QSizeF
incVector
(
0
,
0
);
QSizeF
incVector
(
0
,
0
);
if
(
resizingBottomRight
())
if
(
resizingBottomRight
())
{
{
incVector
=
QSizeF
(
mousePosDelta
.
dx
(),
mousePosDelta
.
dy
());
incVector
=
QSizeF
(
mousePosDelta
.
dx
(),
mousePosDelta
.
dy
());
}
}
else
if
(
resizingRight
())
else
if
(
resizingRight
())
{
{
incVector
=
QSizeF
(
mousePosDelta
.
dx
(),
0
);
incVector
=
QSizeF
(
mousePosDelta
.
dx
(),
0
);
}
}
else
if
(
resizingBottom
())
else
if
(
resizingBottom
())
{
{
incVector
=
QSizeF
(
0
,
mousePosDelta
.
dy
());
incVector
=
QSizeF
(
0
,
mousePosDelta
.
dy
());
}
}
else
if
(
resizingLeft
())
else
if
(
resizingLeft
())
{
{
incVector
=
QSizeF
(
-
mousePosDelta
.
dx
(),
0
);
incVector
=
QSizeF
(
-
mousePosDelta
.
dx
(),
0
);
}
}
else
if
(
resizingTop
())
else
if
(
resizingTop
())
{
{
incVector
=
QSizeF
(
0
,
-
mousePosDelta
.
dy
());
incVector
=
QSizeF
(
0
,
-
mousePosDelta
.
dy
());
}
}
QSizeF
newSize
=
resizableItem
->
size
()
+
incVector
;
QSizeF
newSize
=
resizableItem
->
size
()
+
incVector
;
resizableItem
->
resize
(
newSize
);
if
(
!
(
mDelegate
->
getToolBarItem
()
->
isVisibleOnBoard
()
}
&&
(
newSize
.
width
()
<
mDelegate
->
getToolBarItem
()
->
minWidth
()
/
mDelegate
->
antiScaleRatio
()
}
||
newSize
.
height
()
<
mDelegate
->
getToolBarItem
()
->
minWidth
()
/
mDelegate
->
antiScaleRatio
()
*
3
/
4
)))
resizableItem
->
resize
(
newSize
);
if
(
rotating
())
}
{
}
mTranslateX
=
0
;
mTranslateY
=
0
;
if
(
rotating
())
{
QLineF
startLine
(
sceneBoundingRect
().
center
(),
event
->
lastScenePos
());
mTranslateX
=
0
;
QLineF
currentLine
(
sceneBoundingRect
().
center
(),
event
->
scenePos
());
mTranslateY
=
0
;
mAngle
+=
startLine
.
angleTo
(
currentLine
);
QLineF
startLine
(
sceneBoundingRect
().
center
(),
event
->
lastScenePos
());
if
((
int
)
mAngle
%
45
>=
45
-
mAngleTolerance
||
(
int
)
mAngle
%
45
<=
mAngleTolerance
)
QLineF
currentLine
(
sceneBoundingRect
().
center
(),
event
->
scenePos
());
{
mAngle
+=
startLine
.
angleTo
(
currentLine
);
mAngle
=
qRound
(
mAngle
/
45
)
*
45
;
mAngleOffset
+=
startLine
.
angleTo
(
currentLine
);
if
((
int
)
mAngle
%
45
>=
45
-
mAngleTolerance
||
(
int
)
mAngle
%
45
<=
mAngleTolerance
)
if
((
int
)
mAngleOffset
%
360
>
mAngleTolerance
&&
(
int
)
mAngleOffset
%
360
<
360
-
mAngleTolerance
)
{
{
mAngle
=
qRound
(
mAngle
/
45
)
*
45
;
mAngle
+=
mAngleOffset
;
mAngleOffset
+=
startLine
.
angleTo
(
currentLine
);
mAngleOffset
=
0
;
if
((
int
)
mAngleOffset
%
360
>
mAngleTolerance
&&
(
int
)
mAngleOffset
%
360
<
360
-
mAngleTolerance
)
}
{
}
mAngle
+=
mAngleOffset
;
else
if
((
int
)
mAngle
%
30
>=
30
-
mAngleTolerance
||
(
int
)
mAngle
%
30
<=
mAngleTolerance
)
mAngleOffset
=
0
;
{
}
mAngle
=
qRound
(
mAngle
/
30
)
*
30
;
}
mAngleOffset
+=
startLine
.
angleTo
(
currentLine
);
else
if
((
int
)
mAngle
%
30
>=
30
-
mAngleTolerance
||
(
int
)
mAngle
%
30
<=
mAngleTolerance
)
if
((
int
)
mAngleOffset
%
360
>
mAngleTolerance
&&
(
int
)
mAngleOffset
%
360
<
360
-
mAngleTolerance
)
{
{
mAngle
=
qRound
(
mAngle
/
30
)
*
30
;
mAngle
+=
mAngleOffset
;
mAngleOffset
+=
startLine
.
angleTo
(
currentLine
);
mAngleOffset
=
0
;
if
((
int
)
mAngleOffset
%
360
>
mAngleTolerance
&&
(
int
)
mAngleOffset
%
360
<
360
-
mAngleTolerance
)
}
{
}
mAngle
+=
mAngleOffset
;
mAngleOffset
=
0
;
if
(
!
angleWidget
->
isVisible
())
}
angleWidget
->
show
();
}
angleWidget
->
setText
(
QString
::
number
((
int
)
mAngle
%
360
));
if
(
!
angleWidget
->
isVisible
())
angleWidget
->
update
();
angleWidget
->
show
();
}
angleWidget
->
setText
(
QString
::
number
((
int
)
mAngle
%
360
));
else
if
(
moving
())
angleWidget
->
update
();
{
mTranslateX
=
move
.
dx
();
}
mTranslateY
=
move
.
dy
();
else
if
(
moving
())
}
{
mTranslateX
=
move
.
dx
();
QTransform
tr
=
buildTransform
();
mTranslateY
=
move
.
dy
();
}
//TODO UB 4.x: Could find a better solution ?
if
(
resizingRight
()
||
resizingBottom
()
||
resizingBottomRight
())
QTransform
tr
=
buildTransform
();
{
QPointF
ref
;
//TODO UB 4.x: Could find a better solution ?
if
(
!
mMirrorX
&&
!
mMirrorY
){
if
(
resizingRight
()
||
resizingBottom
()
||
resizingBottomRight
())
ref
=
delegated
()
->
boundingRect
().
topLeft
();
{
}
else
if
(
mMirrorX
&&
!
mMirrorY
){
QPointF
ref
;
ref
=
delegated
()
->
boundingRect
().
topLeft
();
if
(
!
mMirrorX
&&
!
mMirrorY
){
}
else
if
(
!
mMirrorX
&&
mMirrorY
){
ref
=
delegated
()
->
boundingRect
().
topLeft
();
ref
=
delegated
()
->
boundingRect
().
topLeft
();
}
else
if
(
mMirrorX
&&
!
mMirrorY
){
}
else
if
(
mMirrorX
&&
mMirrorY
){
ref
=
delegated
()
->
boundingRect
().
topLeft
();
ref
=
delegated
()
->
boundingRect
().
topRight
();
}
else
if
(
!
mMirrorX
&&
mMirrorY
){
}
ref
=
delegated
()
->
boundingRect
().
topLeft
();
}
else
if
(
mMirrorX
&&
mMirrorY
){
// Map the item topleft point to the current mouse move transform
ref
=
delegated
()
->
boundingRect
().
topRight
();
QPointF
topLeft
=
tr
.
map
(
ref
);
}
// Map the item topleft point to the mouse press transform
// Map the item topleft point to the current mouse move transform
QPointF
fixedPoint
=
mInitialTransform
.
map
(
ref
);
QPointF
topLeft
=
tr
.
map
(
ref
);
// Update the translation coordinates
// Map the item topleft point to the mouse press transform
mTranslateX
+=
fixedPoint
.
x
()
-
topLeft
.
x
();
QPointF
fixedPoint
=
mInitialTransform
.
map
(
ref
);
mTranslateY
+=
fixedPoint
.
y
()
-
topLeft
.
y
();
// Update the translation coordinates
// Update the transform
mTranslateX
+=
fixedPoint
.
x
()
-
topLeft
.
x
();
tr
=
buildTransform
();
mTranslateY
+=
fixedPoint
.
y
()
-
topLeft
.
y
();
}
else
if
(
resizingTop
()
||
resizingLeft
())
// Update the transform
{
tr
=
buildTransform
();
if
(
mOperationMode
==
Scaling
)
}
{
else
if
(
resizingTop
()
||
resizingLeft
())
QPointF
bottomRight
=
tr
.
map
(
delegated
()
->
boundingRect
().
bottomRight
());
{
QPointF
fixedPoint
=
mInitialTransform
.
map
(
delegated
()
->
boundingRect
().
bottomRight
());
if
(
mOperationMode
==
Scaling
)
mTranslateX
+=
fixedPoint
.
x
()
-
bottomRight
.
x
();
{
mTranslateY
+=
fixedPoint
.
y
()
-
bottomRight
.
y
();
QPointF
bottomRight
=
tr
.
map
(
delegated
()
->
boundingRect
().
bottomRight
());
}
QPointF
fixedPoint
=
mInitialTransform
.
map
(
delegated
()
->
boundingRect
().
bottomRight
());
else
mTranslateX
+=
fixedPoint
.
x
()
-
bottomRight
.
x
();
{
mTranslateY
+=
fixedPoint
.
y
()
-
bottomRight
.
y
();
QLineF
vector
;
}
if
(
resizingLeft
())
else
{
{
QPointF
topRight1
=
mInitialTransform
.
map
(
QPointF
(
delegated
()
->
boundingRect
().
width
()
-
moveX
,
0
));
QLineF
vector
;
QPointF
topRight2
=
mInitialTransform
.
map
(
QPointF
(
delegated
()
->
boundingRect
().
width
(),
0
));
if
(
resizingLeft
())
vector
.
setPoints
(
topRight1
,
topRight2
);
{
}
QPointF
topRight1
=
mInitialTransform
.
map
(
QPointF
(
delegated
()
->
boundingRect
().
width
()
-
moveX
,
0
));
else
QPointF
topRight2
=
mInitialTransform
.
map
(
QPointF
(
delegated
()
->
boundingRect
().
width
(),
0
));
{
vector
.
setPoints
(
topRight1
,
topRight2
);
QPointF
bottomLeft1
=
mInitialTransform
.
map
(
QPointF
(
0
,
delegated
()
->
boundingRect
().
height
()
-
moveY
));
}
QPointF
bottomLeft2
=
mInitialTransform
.
map
(
QPointF
(
0
,
delegated
()
->
boundingRect
().
height
()));
else
vector
.
setPoints
(
bottomLeft1
,
bottomLeft2
);
{
}
QPointF
bottomLeft1
=
mInitialTransform
.
map
(
QPointF
(
0
,
delegated
()
->
boundingRect
().
height
()
-
moveY
));
mTranslateX
=
vector
.
dx
();
QPointF
bottomLeft2
=
mInitialTransform
.
map
(
QPointF
(
0
,
delegated
()
->
boundingRect
().
height
()));
mTranslateY
=
vector
.
dy
();
vector
.
setPoints
(
bottomLeft1
,
bottomLeft2
);
}
}
tr
=
buildTransform
();
mTranslateX
=
vector
.
dx
();
}
mTranslateY
=
vector
.
dy
();
}
delegated
()
->
setTransform
(
tr
);
tr
=
buildTransform
();
event
->
accept
();
}
}
delegated
()
->
setTransform
(
tr
);
event
->
accept
();
QTransform
UBGraphicsDelegateFrame
::
buildTransform
()
}
{
QTransform
tr
;
QPointF
center
=
delegated
()
->
boundingRect
().
center
();
QTransform
UBGraphicsDelegateFrame
::
buildTransform
()
{
// Translate
QTransform
tr
;
tr
.
translate
(
mTotalTranslateX
+
mTranslateX
,
mTotalTranslateY
+
mTranslateY
);
QPointF
center
=
delegated
()
->
boundingRect
().
center
();
// Set angle
// Translate
tr
.
translate
(
center
.
x
()
*
mTotalScaleX
*
mScaleX
,
center
.
y
()
*
mTotalScaleY
*
mScaleY
);
tr
.
translate
(
mTotalTranslateX
+
mTranslateX
,
mTotalTranslateY
+
mTranslateY
);
tr
.
rotate
(
-
mAngle
);
tr
.
translate
(
-
center
.
x
()
*
mTotalScaleX
*
mScaleX
,
-
center
.
y
()
*
mTotalScaleY
*
mScaleY
);
// Set angle
tr
.
translate
(
center
.
x
()
*
mTotalScaleX
*
mScaleX
,
center
.
y
()
*
mTotalScaleY
*
mScaleY
);
// Scale
tr
.
rotate
(
-
mAngle
);
tr
.
scale
(
mTotalScaleX
*
mScaleX
,
mTotalScaleY
*
mScaleY
);
tr
.
translate
(
-
center
.
x
()
*
mTotalScaleX
*
mScaleX
,
-
center
.
y
()
*
mTotalScaleY
*
mScaleY
);
return
tr
;
}
// Scale
tr
.
scale
(
mTotalScaleX
*
mScaleX
,
mTotalScaleY
*
mScaleY
);
return
tr
;
void
UBGraphicsDelegateFrame
::
mouseReleaseEvent
(
QGraphicsSceneMouseEvent
*
event
)
}
{
if
(
angleWidget
->
isVisible
())
angleWidget
->
hide
();
void
UBGraphicsDelegateFrame
::
mouseReleaseEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
updateResizeCursors
();
if
(
angleWidget
->
isVisible
())
angleWidget
->
hide
();
mDelegate
->
commitUndoStep
();
mTotalScaleX
*=
mScaleX
;
updateResizeCursors
();
mTotalScaleY
*=
mScaleY
;
mTotalTranslateX
+=
mTranslateX
;
mDelegate
->
commitUndoStep
();
mTotalTranslateY
+=
mTranslateY
;
mTotalScaleX
*=
mScaleX
;
event
->
accept
();
mTotalScaleY
*=
mScaleY
;
mTotalTranslateX
+=
mTranslateX
;
mCurrentTool
=
None
;
mTotalTranslateY
+=
mTranslateY
;
QGraphicsRectItem
::
mouseReleaseEvent
(
event
);
event
->
accept
();
// Show the buttons
mCurrentTool
=
None
;
if
(
isResizing
()){
QGraphicsRectItem
::
mouseReleaseEvent
(
event
);
mResizing
=
false
;
}
// Show the buttons
mDelegate
->
setButtonsVisible
(
true
);
if
(
isResizing
()){
}
mResizing
=
false
;
}
mDelegate
->
setButtonsVisible
(
true
);
void
UBGraphicsDelegateFrame
::
updateResizeCursors
()
}
{
QPixmap
pix
(
":/images/cursors/resize.png"
);
QTransform
tr
;
void
UBGraphicsDelegateFrame
::
updateResizeCursors
()
{
tr
.
rotate
(
-
mAngle
);
QPixmap
pix
(
":/images/cursors/resize.png"
);
QCursor
resizeCursor
=
QCursor
(
pix
.
transformed
(
tr
,
Qt
::
SmoothTransformation
),
pix
.
width
()
/
2
,
pix
.
height
()
/
2
);
QTransform
tr
;
mLeftResizeGrip
->
setCursor
(
resizeCursor
);
mRightResizeGrip
->
setCursor
(
resizeCursor
);
tr
.
rotate
(
-
mAngle
);
QCursor
resizeCursor
=
QCursor
(
pix
.
transformed
(
tr
,
Qt
::
SmoothTransformation
),
pix
.
width
()
/
2
,
pix
.
height
()
/
2
);
tr
.
rotate
(
-
90
);
mLeftResizeGrip
->
setCursor
(
resizeCursor
);
resizeCursor
=
QCursor
(
pix
.
transformed
(
tr
,
Qt
::
SmoothTransformation
),
pix
.
width
()
/
2
,
pix
.
height
()
/
2
);
mRightResizeGrip
->
setCursor
(
resizeCursor
);
mBottomResizeGrip
->
setCursor
(
resizeCursor
);
mTopResizeGrip
->
setCursor
(
resizeCursor
);
tr
.
rotate
(
-
90
);
resizeCursor
=
QCursor
(
pix
.
transformed
(
tr
,
Qt
::
SmoothTransformation
),
pix
.
width
()
/
2
,
pix
.
height
()
/
2
);
tr
.
rotate
(
-
45
);
mBottomResizeGrip
->
setCursor
(
resizeCursor
);
resizeCursor
=
QCursor
(
pix
.
transformed
(
tr
,
Qt
::
SmoothTransformation
),
pix
.
width
()
/
2
,
pix
.
height
()
/
2
);
mTopResizeGrip
->
setCursor
(
resizeCursor
);
mBottomRightResizeGrip
->
setCursor
(
resizeCursor
);
}
tr
.
rotate
(
-
45
);
resizeCursor
=
QCursor
(
pix
.
transformed
(
tr
,
Qt
::
SmoothTransformation
),
pix
.
width
()
/
2
,
pix
.
height
()
/
2
);
mBottomRightResizeGrip
->
setCursor
(
resizeCursor
);
void
UBGraphicsDelegateFrame
::
setVisible
(
bool
visible
)
}
{
mVisible
=
visible
;
if
(
mVisible
)
void
UBGraphicsDelegateFrame
::
setVisible
(
bool
visible
)
setBrush
(
QBrush
(
UBSettings
::
paletteColor
));
{
else
mVisible
=
visible
;
setBrush
(
Qt
::
NoBrush
);
if
(
mVisible
)
}
setBrush
(
QBrush
(
UBSettings
::
paletteColor
));
else
setBrush
(
Qt
::
NoBrush
);
void
UBGraphicsDelegateFrame
::
positionHandles
()
}
{
QRectF
itemRect
=
delegated
()
->
boundingRect
();
QTransform
itemTransform
=
delegated
()
->
sceneTransform
();
void
UBGraphicsDelegateFrame
::
positionHandles
()
QPointF
topLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
{
QPointF
topRight
=
itemTransform
.
map
(
itemRect
.
topRight
());
QRectF
itemRect
=
delegated
()
->
boundingRect
();
QPointF
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
QPointF
bottomRight
=
itemTransform
.
map
(
itemRect
.
bottomRight
());
if
(
mDelegate
->
getToolBarItem
()
->
isVisibleOnBoard
()
QPointF
center
=
itemTransform
.
map
(
itemRect
.
center
());
&&
mDelegate
->
getToolBarItem
()
->
isShifting
())
int
rotateHeight
=
QLineF
(
topLeft
,
bottomLeft
).
length
();
itemRect
.
setHeight
(
itemRect
.
height
()
+
mDelegate
->
getToolBarItem
()
->
rect
().
height
()
*
mDelegate
->
antiScaleRatio
()
*
1.1
);
// Handle the mirroring
QTransform
itemTransform
=
delegated
()
->
sceneTransform
();
if
(
topLeft
.
x
()
>
topRight
.
x
()){
QPointF
topLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
QPointF
topTmp
=
topRight
;
QPointF
topRight
=
itemTransform
.
map
(
itemRect
.
topRight
());
QPointF
bottomTmp
=
bottomRight
;
QPointF
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
topRight
=
topLeft
;
QPointF
bottomRight
=
itemTransform
.
map
(
itemRect
.
bottomRight
());
topLeft
=
topTmp
;
QPointF
center
=
itemTransform
.
map
(
itemRect
.
center
());
bottomRight
=
bottomLeft
;
int
rotateHeight
=
QLineF
(
topLeft
,
bottomLeft
).
length
();
bottomLeft
=
bottomTmp
;
}
// Handle the mirroring
if
(
topLeft
.
x
()
>
topRight
.
x
()){
if
(
bottomLeft
.
y
()
>
topLeft
.
y
()){
QPointF
topTmp
=
topRight
;
QPointF
leftTmp
=
bottomLeft
;
QPointF
bottomTmp
=
bottomRight
;
QPointF
rightTmp
=
bottomRight
;
topRight
=
topLeft
;
bottomLeft
=
topLeft
;
topLeft
=
topTmp
;
topLeft
=
leftTmp
;
bottomRight
=
bottomLeft
;
bottomRight
=
topRight
;
bottomLeft
=
bottomTmp
;
topRight
=
rightTmp
;
}
}
if
(
bottomLeft
.
y
()
>
topLeft
.
y
()){
QLineF
topLine
(
topLeft
,
topRight
);
QPointF
leftTmp
=
bottomLeft
;
qreal
angle
=
topLine
.
angle
();
QPointF
rightTmp
=
bottomRight
;
qreal
width
=
topLine
.
length
();
bottomLeft
=
topLeft
;
topLeft
=
leftTmp
;
QLineF
leftLine
(
topLeft
,
bottomLeft
);
bottomRight
=
topRight
;
qreal
height
=
leftLine
.
length
();
topRight
=
rightTmp
;
}
int
h
=
rotating
()
?
rotateHeight
:
height
;
QLineF
topLine
(
topLeft
,
topRight
);
if
(
mVisible
)
qreal
angle
=
topLine
.
angle
();
{
qreal
width
=
topLine
.
length
();
setRect
(
center
.
x
()
-
mFrameWidth
-
width
/
2
,
center
.
y
()
-
mFrameWidth
-
h
/
2
,
width
+
2
*
mFrameWidth
,
h
+
2
*
mFrameWidth
);
}
QLineF
leftLine
(
topLeft
,
bottomLeft
);
else
qreal
height
=
leftLine
.
length
();
{
setRect
(
center
.
x
()
-
width
/
2
,
center
.
y
()
-
h
/
2
,
width
,
h
);
int
h
=
rotating
()
?
rotateHeight
:
height
;
}
if
(
mVisible
)
resetTransform
();
{
translate
(
center
.
x
(),
center
.
y
());
setRect
(
center
.
x
()
-
mFrameWidth
-
width
/
2
,
center
.
y
()
-
mFrameWidth
-
h
/
2
,
width
+
2
*
mFrameWidth
,
h
+
2
*
mFrameWidth
);
rotate
(
-
angle
);
}
translate
(
-
center
.
x
(),
-
center
.
y
());
else
{
mBottomRightResizeGripSvgItem
->
setParentItem
(
this
);
setRect
(
center
.
x
()
-
width
/
2
,
center
.
y
()
-
h
/
2
,
width
,
h
);
mBottomResizeGripSvgItem
->
setParentItem
(
this
);
}
mLeftResizeGripSvgItem
->
setParentItem
(
this
);
mRightResizeGripSvgItem
->
setParentItem
(
this
);
resetTransform
();
mTopResizeGripSvgItem
->
setParentItem
(
this
);
translate
(
center
.
x
(),
center
.
y
());
mRotateButton
->
setParentItem
(
this
);
rotate
(
-
angle
);
translate
(
-
center
.
x
(),
-
center
.
y
());
mBottomRightResizeGrip
->
setParentItem
(
this
);
mBottomResizeGrip
->
setParentItem
(
this
);
mBottomRightResizeGripSvgItem
->
setParentItem
(
this
);
mLeftResizeGrip
->
setParentItem
(
this
);
mBottomResizeGripSvgItem
->
setParentItem
(
this
);
mRightResizeGrip
->
setParentItem
(
this
);
mLeftResizeGripSvgItem
->
setParentItem
(
this
);
mTopResizeGrip
->
setParentItem
(
this
);
mRightResizeGripSvgItem
->
setParentItem
(
this
);
mTopResizeGripSvgItem
->
setParentItem
(
this
);
QRectF
brRect
=
mBottomRightResizeGripSvgItem
->
mapRectToParent
(
mBottomRightResizeGripSvgItem
->
boundingRect
());
mRotateButton
->
setParentItem
(
this
);
QRectF
bRect
=
mBottomResizeGripSvgItem
->
mapRectToParent
(
mBottomResizeGripSvgItem
->
boundingRect
());
QRectF
lRect
=
mLeftResizeGripSvgItem
->
mapRectToParent
(
mLeftResizeGripSvgItem
->
boundingRect
());
mBottomRightResizeGrip
->
setParentItem
(
this
);
QRectF
rRect
=
mRightResizeGripSvgItem
->
mapRectToParent
(
mRightResizeGripSvgItem
->
boundingRect
());
mBottomResizeGrip
->
setParentItem
(
this
);
QRectF
trRect
=
mTopResizeGripSvgItem
->
mapRectToParent
(
mTopResizeGripSvgItem
->
boundingRect
());
mLeftResizeGrip
->
setParentItem
(
this
);
mRightResizeGrip
->
setParentItem
(
this
);
mBottomRightResizeGripSvgItem
->
setPos
(
rect
().
right
()
-
brRect
.
width
(),
rect
().
bottom
()
-
brRect
.
height
());
mTopResizeGrip
->
setParentItem
(
this
);
mBottomResizeGripSvgItem
->
setPos
(
rect
().
center
().
x
()
-
bRect
.
width
()
/
2
,
rect
().
bottom
()
-
bRect
.
height
());
QRectF
brRect
=
mBottomRightResizeGripSvgItem
->
mapRectToParent
(
mBottomRightResizeGripSvgItem
->
boundingRect
());
mLeftResizeGripSvgItem
->
setPos
(
rect
().
left
(),
rect
().
center
().
y
()
-
lRect
.
height
()
/
2
);
QRectF
bRect
=
mBottomResizeGripSvgItem
->
mapRectToParent
(
mBottomResizeGripSvgItem
->
boundingRect
());
mRightResizeGripSvgItem
->
setPos
(
rect
().
right
()
-
rRect
.
width
(),
rect
().
center
().
y
()
-
rRect
.
height
()
/
2
);
QRectF
lRect
=
mLeftResizeGripSvgItem
->
mapRectToParent
(
mLeftResizeGripSvgItem
->
boundingRect
());
QRectF
rRect
=
mRightResizeGripSvgItem
->
mapRectToParent
(
mRightResizeGripSvgItem
->
boundingRect
());
mTopResizeGripSvgItem
->
setPos
(
rect
().
center
().
x
()
-
trRect
.
width
()
/
2
,
rect
().
y
());
QRectF
trRect
=
mTopResizeGripSvgItem
->
mapRectToParent
(
mTopResizeGripSvgItem
->
boundingRect
());
mRotateButton
->
setPos
(
rect
().
right
()
-
mFrameWidth
-
5
,
rect
().
top
()
+
5
);
mBottomRightResizeGripSvgItem
->
setPos
(
rect
().
right
()
-
brRect
.
width
(),
rect
().
bottom
()
-
brRect
.
height
());
mBottomRightResizeGrip
->
setRect
(
bottomRightResizeGripRect
());
mBottomResizeGripSvgItem
->
setPos
(
rect
().
center
().
x
()
-
bRect
.
width
()
/
2
,
rect
().
bottom
()
-
bRect
.
height
());
mBottomResizeGrip
->
setRect
(
bottomResizeGripRect
());
mLeftResizeGrip
->
setRect
(
leftResizeGripRect
());
mLeftResizeGripSvgItem
->
setPos
(
rect
().
left
(),
rect
().
center
().
y
()
-
lRect
.
height
()
/
2
);
mRightResizeGrip
->
setRect
(
rightResizeGripRect
());
mRightResizeGripSvgItem
->
setPos
(
rect
().
right
()
-
rRect
.
width
(),
rect
().
center
().
y
()
-
rRect
.
height
()
/
2
);
mTopResizeGrip
->
setRect
(
topResizeGripRect
());
mTopResizeGripSvgItem
->
setPos
(
rect
().
center
().
x
()
-
trRect
.
width
()
/
2
,
rect
().
y
());
QVariant
vLocked
=
delegated
()
->
data
(
UBGraphicsItemData
::
ItemLocked
);
mRotateButton
->
setPos
(
rect
().
right
()
-
mFrameWidth
-
5
,
rect
().
top
()
+
5
);
bool
isLocked
=
(
vLocked
.
isValid
()
&&
vLocked
.
toBool
());
mBottomRightResizeGrip
->
setRect
(
bottomRightResizeGripRect
());
mBottomRightResizeGripSvgItem
->
setVisible
(
!
isLocked
);
mBottomResizeGrip
->
setRect
(
bottomResizeGripRect
());
mBottomResizeGripSvgItem
->
setVisible
(
!
isLocked
);
mLeftResizeGrip
->
setRect
(
leftResizeGripRect
());
mLeftResizeGripSvgItem
->
setVisible
(
!
isLocked
);
mRightResizeGrip
->
setRect
(
rightResizeGripRect
());
mRightResizeGripSvgItem
->
setVisible
(
!
isLocked
);
mTopResizeGrip
->
setRect
(
topResizeGripRect
());
mTopResizeGripSvgItem
->
setVisible
(
!
isLocked
);
mRotateButton
->
setVisible
(
mDelegate
->
canRotate
()
&&
!
isLocked
);
QVariant
vLocked
=
delegated
()
->
data
(
UBGraphicsItemData
::
ItemLocked
);
bool
isLocked
=
(
vLocked
.
isValid
()
&&
vLocked
.
toBool
());
mBottomRightResizeGrip
->
setVisible
(
!
isLocked
);
mBottomResizeGrip
->
setVisible
(
!
isLocked
);
mBottomRightResizeGripSvgItem
->
setVisible
(
!
isLocked
);
mLeftResizeGrip
->
setVisible
(
!
isLocked
);
mBottomResizeGripSvgItem
->
setVisible
(
!
isLocked
);
mRightResizeGrip
->
setVisible
(
!
isLocked
);
mLeftResizeGripSvgItem
->
setVisible
(
!
isLocked
);
mTopResizeGrip
->
setVisible
(
!
isLocked
);
mRightResizeGripSvgItem
->
setVisible
(
!
isLocked
);
mTopResizeGripSvgItem
->
setVisible
(
!
isLocked
);
if
(
isLocked
)
mRotateButton
->
setVisible
(
mDelegate
->
canRotate
()
&&
!
isLocked
);
{
QColor
baseColor
=
UBSettings
::
paletteColor
;
mBottomRightResizeGrip
->
setVisible
(
!
isLocked
);
baseColor
.
setAlphaF
(
baseColor
.
alphaF
()
/
3
);
mBottomResizeGrip
->
setVisible
(
!
isLocked
);
setBrush
(
QBrush
(
baseColor
));
mLeftResizeGrip
->
setVisible
(
!
isLocked
);
}
mRightResizeGrip
->
setVisible
(
!
isLocked
);
else
mTopResizeGrip
->
setVisible
(
!
isLocked
);
{
setBrush
(
QBrush
(
UBSettings
::
paletteColor
));
if
(
isLocked
)
}
{
QColor
baseColor
=
UBSettings
::
paletteColor
;
//make frame interact like delegated item when selected. Maybe should be deleted if selection logic will change
baseColor
.
setAlphaF
(
baseColor
.
alphaF
()
/
3
);
setZValue
(
delegated
()
->
zValue
());
setBrush
(
QBrush
(
baseColor
));
}
}
else
{
QGraphicsItem
*
UBGraphicsDelegateFrame
::
delegated
()
setBrush
(
QBrush
(
UBSettings
::
paletteColor
));
{
}
return
mDelegate
->
delegated
();
}
//make frame interact like delegated item when selected. Maybe should be deleted if selection logic will change
setZValue
(
delegated
()
->
zValue
());
UBGraphicsDelegateFrame
::
FrameTool
UBGraphicsDelegateFrame
::
toolFromPos
(
QPointF
pos
)
}
{
if
(
mDelegate
->
isLocked
())
return
None
;
QGraphicsItem
*
UBGraphicsDelegateFrame
::
delegated
()
else
if
(
bottomRightResizeGripRect
().
contains
(
pos
))
{
return
ResizeBottomRight
;
return
mDelegate
->
delegated
();
else
if
(
bottomResizeGripRect
().
contains
(
pos
)){
}
if
(
mMirrorY
){
return
ResizeTop
;
UBGraphicsDelegateFrame
::
FrameTool
UBGraphicsDelegateFrame
::
toolFromPos
(
QPointF
pos
)
}
else
{
{
return
ResizeBottom
;
if
(
mDelegate
->
isLocked
())
}
return
None
;
}
else
if
(
bottomRightResizeGripRect
().
contains
(
pos
))
else
if
(
leftResizeGripRect
().
contains
(
pos
)){
return
ResizeBottomRight
;
if
(
mMirrorX
){
else
if
(
bottomResizeGripRect
().
contains
(
pos
)){
return
ResizeRight
;
if
(
mMirrorY
){
}
else
{
return
ResizeTop
;
return
ResizeLeft
;
}
else
{
}
return
ResizeBottom
;
return
ResizeLeft
;
}
}
}
else
if
(
rightResizeGripRect
().
contains
(
pos
)){
else
if
(
leftResizeGripRect
().
contains
(
pos
)){
if
(
mMirrorX
){
if
(
mMirrorX
){
return
ResizeLeft
;
return
ResizeRight
;
}
else
{
}
else
{
return
ResizeRight
;
return
ResizeLeft
;
}
}
}
return
ResizeLeft
;
else
if
(
topResizeGripRect
().
contains
(
pos
)){
}
if
(
mMirrorY
){
else
if
(
rightResizeGripRect
().
contains
(
pos
)){
return
ResizeBottom
;
if
(
mMirrorX
){
}
else
{
return
ResizeLeft
;
return
ResizeTop
;
}
else
{
}
return
ResizeRight
;
}
}
else
if
(
rotateButtonBounds
().
contains
(
pos
)
&&
mDelegate
&&
mDelegate
->
canRotate
())
}
return
Rotate
;
else
if
(
topResizeGripRect
().
contains
(
pos
)){
else
if
(
mMirrorY
){
return
Move
;
return
ResizeBottom
;
}
}
else
{
return
ResizeTop
;
}
QRectF
UBGraphicsDelegateFrame
::
bottomRightResizeGripRect
()
const
}
{
else
if
(
rotateButtonBounds
().
contains
(
pos
)
&&
mDelegate
&&
mDelegate
->
canRotate
())
return
QRectF
(
rect
().
right
()
-
mFrameWidth
,
rect
().
bottom
()
-
mFrameWidth
,
mFrameWidth
,
mFrameWidth
);
return
Rotate
;
}
else
return
Move
;
}
QRectF
UBGraphicsDelegateFrame
::
bottomResizeGripRect
()
const
{
return
QRectF
(
rect
().
center
().
x
()
-
mFrameWidth
/
2
,
rect
().
bottom
()
-
mFrameWidth
,
mFrameWidth
,
mFrameWidth
);
QRectF
UBGraphicsDelegateFrame
::
bottomRightResizeGripRect
()
const
}
{
return
QRectF
(
rect
().
right
()
-
mFrameWidth
,
rect
().
bottom
()
-
mFrameWidth
,
mFrameWidth
,
mFrameWidth
);
}
QRectF
UBGraphicsDelegateFrame
::
leftResizeGripRect
()
const
{
return
QRectF
(
rect
().
left
(),
rect
().
center
().
y
()
-
mFrameWidth
/
2
,
mFrameWidth
,
mFrameWidth
);
QRectF
UBGraphicsDelegateFrame
::
bottomResizeGripRect
()
const
}
{
return
QRectF
(
rect
().
center
().
x
()
-
mFrameWidth
/
2
,
rect
().
bottom
()
-
mFrameWidth
,
mFrameWidth
,
mFrameWidth
);
}
QRectF
UBGraphicsDelegateFrame
::
rightResizeGripRect
()
const
{
return
QRectF
(
rect
().
right
()
-
mFrameWidth
,
rect
().
center
().
y
()
-
mFrameWidth
/
2
,
mFrameWidth
,
mFrameWidth
);
QRectF
UBGraphicsDelegateFrame
::
leftResizeGripRect
()
const
}
{
return
QRectF
(
rect
().
left
(),
rect
().
center
().
y
()
-
mFrameWidth
/
2
,
mFrameWidth
,
mFrameWidth
);
}
QRectF
UBGraphicsDelegateFrame
::
topResizeGripRect
()
const
{
return
QRectF
(
rect
().
center
().
x
()
-
mFrameWidth
/
2
,
rect
().
top
(),
mFrameWidth
,
mFrameWidth
);
QRectF
UBGraphicsDelegateFrame
::
rightResizeGripRect
()
const
}
{
return
QRectF
(
rect
().
right
()
-
mFrameWidth
,
rect
().
center
().
y
()
-
mFrameWidth
/
2
,
mFrameWidth
,
mFrameWidth
);
}
QRectF
UBGraphicsDelegateFrame
::
rotateButtonBounds
()
const
{
return
QRectF
(
rect
().
right
()
-
mFrameWidth
,
rect
().
top
(),
mFrameWidth
,
mFrameWidth
);
QRectF
UBGraphicsDelegateFrame
::
topResizeGripRect
()
const
}
{
return
QRectF
(
rect
().
center
().
x
()
-
mFrameWidth
/
2
,
rect
().
top
(),
mFrameWidth
,
mFrameWidth
);
void
UBGraphicsDelegateFrame
::
refreshGeometry
()
}
{
// Here we want to have the left on the left, the right on the right, the top on the top and the bottom on the bottom!
QRectF
itemRect
=
delegated
()
->
boundingRect
();
QRectF
UBGraphicsDelegateFrame
::
rotateButtonBounds
()
const
QTransform
itemTransform
=
delegated
()
->
sceneTransform
();
{
QPointF
topLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
return
QRectF
(
rect
().
right
()
-
mFrameWidth
,
rect
().
top
(),
mFrameWidth
,
mFrameWidth
);
QPointF
topRight
=
itemTransform
.
map
(
itemRect
.
topRight
());
}
QPointF
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
void
UBGraphicsDelegateFrame
::
refreshGeometry
()
QLineF
topLine
(
topLeft
,
topRight
);
{
qreal
width
=
topLine
.
length
();
// Here we want to have the left on the left, the right on the right, the top on the top and the bottom on the bottom!
QLineF
leftLine
(
topLeft
,
bottomLeft
);
QRectF
itemRect
=
delegated
()
->
boundingRect
();
qreal
height
=
leftLine
.
length
();
QTransform
itemTransform
=
delegated
()
->
sceneTransform
();
setRect
(
topRight
.
x
()
-
mFrameWidth
,
topLeft
.
y
()
-
mFrameWidth
,
width
+
2
*
mFrameWidth
,
height
+
2
*
mFrameWidth
);
QPointF
topLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
}
QPointF
topRight
=
itemTransform
.
map
(
itemRect
.
topRight
());
QPointF
bottomLeft
=
itemTransform
.
map
(
itemRect
.
bottomLeft
());
QLineF
topLine
(
topLeft
,
topRight
);
qreal
width
=
topLine
.
length
();
QLineF
leftLine
(
topLeft
,
bottomLeft
);
qreal
height
=
leftLine
.
length
();
setRect
(
topRight
.
x
()
-
mFrameWidth
,
topLeft
.
y
()
-
mFrameWidth
,
width
+
2
*
mFrameWidth
,
height
+
2
*
mFrameWidth
);
}
src/domain/UBGraphicsItemDelegate.cpp
View file @
56eceb66
...
@@ -37,6 +37,9 @@
...
@@ -37,6 +37,9 @@
#include "UBGraphicsWidgetItem.h"
#include "UBGraphicsWidgetItem.h"
#include "domain/UBAbstractWidget.h"
#include "domain/UBAbstractWidget.h"
#include "domain/UBGraphicsTextItem.h"
#include "domain/UBGraphicsAudioItem.h"
#include "domain/UBGraphicsVideoItem.h"
#include "web/UBWebController.h"
#include "web/UBWebController.h"
...
@@ -47,6 +50,27 @@
...
@@ -47,6 +50,27 @@
class
UBGraphicsParaschoolEditorWidgetItem
;
class
UBGraphicsParaschoolEditorWidgetItem
;
DelegateButton
::
DelegateButton
(
const
QString
&
fileName
,
QGraphicsItem
*
pDelegated
,
QGraphicsItem
*
parent
,
Qt
::
WindowFrameSection
section
)
:
QGraphicsSvgItem
(
fileName
,
parent
)
,
mDelegated
(
pDelegated
)
,
mIsTransparentToMouseEvent
(
false
)
,
mButtonAlignmentSection
(
section
)
{
setAcceptedMouseButtons
(
Qt
::
LeftButton
);
setData
(
UBGraphicsItemData
::
ItemLayerType
,
QVariant
(
UBItemLayerType
::
Control
));
}
DelegateButton
::~
DelegateButton
()
{
// NOOP
}
void
DelegateButton
::
setFileName
(
const
QString
&
fileName
)
{
QGraphicsSvgItem
::
setSharedRenderer
(
new
QSvgRenderer
(
fileName
,
this
));
}
void
DelegateButton
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
void
DelegateButton
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
{
// make sure delegate is selected, to avoid control being hidden
// make sure delegate is selected, to avoid control being hidden
...
@@ -93,6 +117,8 @@ UBGraphicsItemDelegate::UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObjec
...
@@ -93,6 +117,8 @@ UBGraphicsItemDelegate::UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObjec
void
UBGraphicsItemDelegate
::
init
()
void
UBGraphicsItemDelegate
::
init
()
{
{
mToolBarItem
=
new
UBGraphicsToolBarItem
(
delegated
());
mFrame
=
new
UBGraphicsDelegateFrame
(
this
,
QRectF
(
0
,
0
,
0
,
0
),
mFrameWidth
,
mRespectRatio
);
mFrame
=
new
UBGraphicsDelegateFrame
(
this
,
QRectF
(
0
,
0
,
0
,
0
),
mFrameWidth
,
mRespectRatio
);
mFrame
->
hide
();
mFrame
->
hide
();
mFrame
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
mFrame
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
...
@@ -123,10 +149,13 @@ void UBGraphicsItemDelegate::init()
...
@@ -123,10 +149,13 @@ void UBGraphicsItemDelegate::init()
foreach
(
DelegateButton
*
button
,
mButtons
)
foreach
(
DelegateButton
*
button
,
mButtons
)
{
{
if
(
button
->
getSection
()
!=
Qt
::
TitleBarArea
)
{
button
->
hide
();
button
->
hide
();
button
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
button
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
}
}
}
}
}
UBGraphicsItemDelegate
::~
UBGraphicsItemDelegate
()
UBGraphicsItemDelegate
::~
UBGraphicsItemDelegate
()
...
@@ -292,13 +321,20 @@ void UBGraphicsItemDelegate::positionHandles()
...
@@ -292,13 +321,20 @@ void UBGraphicsItemDelegate::positionHandles()
updateButtons
(
true
);
updateButtons
(
true
);
if
(
mToolBarItem
->
isVisibleOnBoard
())
{
updateToolBar
();
mToolBarItem
->
show
();
}
}
else
{
}
else
{
foreach
(
DelegateButton
*
button
,
mButtons
)
foreach
(
DelegateButton
*
button
,
mButtons
)
button
->
hide
();
button
->
hide
();
mFrame
->
hide
();
mFrame
->
hide
();
mToolBarItem
->
hide
();
}
}
}
}
void
UBGraphicsItemDelegate
::
setZOrderButtonsVisible
(
bool
visible
)
void
UBGraphicsItemDelegate
::
setZOrderButtonsVisible
(
bool
visible
)
{
{
if
(
visible
)
{
if
(
visible
)
{
...
@@ -335,6 +371,7 @@ void UBGraphicsItemDelegate::remove(bool canUndo)
...
@@ -335,6 +371,7 @@ void UBGraphicsItemDelegate::remove(bool canUndo)
scene
->
removeItem
(
mFrame
);
scene
->
removeItem
(
mFrame
);
scene
->
removeItem
(
mDelegated
);
scene
->
removeItem
(
mDelegated
);
scene
->
removeItem
(
mToolBarItem
);
if
(
canUndo
)
if
(
canUndo
)
{
{
...
@@ -577,14 +614,16 @@ void UBGraphicsItemDelegate::updateButtons(bool showUpdated)
...
@@ -577,14 +614,16 @@ void UBGraphicsItemDelegate::updateButtons(bool showUpdated)
int
i
=
1
,
j
=
0
,
k
=
0
;
int
i
=
1
,
j
=
0
,
k
=
0
;
while
((
i
+
j
+
k
)
<
mButtons
.
size
())
{
while
((
i
+
j
+
k
)
<
mButtons
.
size
())
{
DelegateButton
*
button
=
mButtons
[
i
+
j
];
DelegateButton
*
button
=
mButtons
[
i
+
j
];
button
->
setParentItem
(
mFrame
);
button
->
setTransform
(
tr
);
if
(
button
->
getSection
()
==
Qt
::
TopLeftSection
)
{
if
(
button
->
getSection
()
==
Qt
::
TopLeftSection
)
{
button
->
setParentItem
(
mFrame
);
button
->
setPos
(
topX
+
(
i
++
*
1.6
*
mFrameWidth
*
mAntiScaleRatio
),
topY
);
button
->
setPos
(
topX
+
(
i
++
*
1.6
*
mFrameWidth
*
mAntiScaleRatio
),
topY
);
button
->
setTransform
(
tr
);
}
else
if
(
button
->
getSection
()
==
Qt
::
BottomLeftSection
)
{
}
else
if
(
button
->
getSection
()
==
Qt
::
BottomLeftSection
)
{
button
->
setParentItem
(
mFrame
);
button
->
setPos
(
bottomX
+
(
++
j
*
1.6
*
mFrameWidth
*
mAntiScaleRatio
),
bottomY
);
button
->
setPos
(
bottomX
+
(
++
j
*
1.6
*
mFrameWidth
*
mAntiScaleRatio
),
bottomY
);
}
else
if
(
button
->
getSection
()
==
Qt
::
NoSection
)
{
button
->
setTransform
(
tr
);
}
else
if
(
button
->
getSection
()
==
Qt
::
TitleBarArea
||
button
->
getSection
()
==
Qt
::
NoSection
){
++
k
;
++
k
;
}
}
if
(
!
button
->
scene
())
if
(
!
button
->
scene
())
...
@@ -599,9 +638,65 @@ void UBGraphicsItemDelegate::updateButtons(bool showUpdated)
...
@@ -599,9 +638,65 @@ void UBGraphicsItemDelegate::updateButtons(bool showUpdated)
}
}
}
}
void
UBGraphicsItemDelegate
::
updateToolBar
()
{
QTransform
transformForToolbarButtons
;
transformForToolbarButtons
.
scale
(
mAntiScaleRatio
,
1
);
QRectF
toolBarRect
=
mToolBarItem
->
rect
();
toolBarRect
.
setWidth
(
delegated
()
->
boundingRect
().
width
()
-
10
);
mToolBarItem
->
setRect
(
toolBarRect
);
if
(
mToolBarItem
->
isShifting
())
mToolBarItem
->
setPos
(
delegated
()
->
boundingRect
().
bottomLeft
()
+
QPointF
(
5
*
mAntiScaleRatio
,
0
));
else
mToolBarItem
->
setPos
(
delegated
()
->
boundingRect
().
bottomLeft
()
-
QPointF
(
-
5
*
mAntiScaleRatio
,
mToolBarItem
->
rect
().
height
()
*
1.1
*
mAntiScaleRatio
));
int
offsetOnToolBar
=
5
*
mAntiScaleRatio
;
QList
<
QGraphicsItem
*>
itemList
=
mToolBarItem
->
itemsOnToolBar
();
foreach
(
QGraphicsItem
*
item
,
itemList
)
{
item
->
setPos
(
offsetOnToolBar
,
0
);
offsetOnToolBar
+=
(
item
->
boundingRect
().
width
()
+
5
)
*
mAntiScaleRatio
;
item
->
setTransform
(
transformForToolbarButtons
);
item
->
show
();
}
mToolBarItem
->
setOffsetOnToolBar
(
offsetOnToolBar
);
QTransform
tr
;
tr
.
scale
(
1
,
mAntiScaleRatio
);
mToolBarItem
->
setTransform
(
tr
);
}
void
UBGraphicsItemDelegate
::
setButtonsVisible
(
bool
visible
)
void
UBGraphicsItemDelegate
::
setButtonsVisible
(
bool
visible
)
{
{
foreach
(
DelegateButton
*
pButton
,
mButtons
){
foreach
(
DelegateButton
*
pButton
,
mButtons
){
pButton
->
setVisible
(
visible
);
pButton
->
setVisible
(
visible
);
}
}
}
}
UBGraphicsToolBarItem
::
UBGraphicsToolBarItem
(
QGraphicsItem
*
parent
)
:
QGraphicsRectItem
(
parent
),
mShifting
(
true
),
mVisible
(
false
),
mMinWidth
(
200
)
{
QRectF
rect
=
this
->
rect
();
rect
.
setHeight
(
26
);
this
->
setRect
(
rect
);
setBrush
(
QColor
(
UBSettings
::
paletteColor
));
setPen
(
Qt
::
NoPen
);
hide
();
}
void
UBGraphicsToolBarItem
::
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
)
{
Q_UNUSED
(
option
);
Q_UNUSED
(
widget
);
QPainterPath
path
;
path
.
addRoundedRect
(
rect
(),
10
,
10
);
painter
->
fillPath
(
path
,
brush
());
}
\ No newline at end of file
src/domain/UBGraphicsItemDelegate.h
View file @
56eceb66
...
@@ -35,30 +35,16 @@ class DelegateButton: public QGraphicsSvgItem
...
@@ -35,30 +35,16 @@ class DelegateButton: public QGraphicsSvgItem
Q_OBJECT
Q_OBJECT
public
:
public
:
DelegateButton
(
const
QString
&
fileName
,
QGraphicsItem
*
pDelegated
,
QGraphicsItem
*
parent
=
0
,
Qt
::
WindowFrameSection
section
=
Qt
::
TopLeftSection
)
DelegateButton
(
const
QString
&
fileName
,
QGraphicsItem
*
pDelegated
,
QGraphicsItem
*
parent
=
0
,
Qt
::
WindowFrameSection
section
=
Qt
::
TopLeftSection
);
:
QGraphicsSvgItem
(
fileName
,
parent
)
,
mDelegated
(
pDelegated
)
,
mIsTransparentToMouseEvent
(
false
)
,
mButtonAlignmentSection
(
section
)
{
setAcceptedMouseButtons
(
Qt
::
LeftButton
);
setData
(
UBGraphicsItemData
::
ItemLayerType
,
QVariant
(
UBItemLayerType
::
Control
));
}
virtual
~
DelegateButton
()
virtual
~
DelegateButton
();
{
// NOOP
}
void
setTransparentToMouseEvent
(
bool
tr
)
void
setTransparentToMouseEvent
(
bool
tr
)
{
{
mIsTransparentToMouseEvent
=
tr
;
mIsTransparentToMouseEvent
=
tr
;
}
}
void
setFileName
(
const
QString
&
fileName
)
void
setFileName
(
const
QString
&
fileName
);
{
QGraphicsSvgItem
::
setSharedRenderer
(
new
QSvgRenderer
(
fileName
,
this
));
}
void
setSection
(
Qt
::
WindowFrameSection
section
)
{
mButtonAlignmentSection
=
section
;}
void
setSection
(
Qt
::
WindowFrameSection
section
)
{
mButtonAlignmentSection
=
section
;}
Qt
::
WindowFrameSection
getSection
()
const
{
return
mButtonAlignmentSection
;}
Qt
::
WindowFrameSection
getSection
()
const
{
return
mButtonAlignmentSection
;}
...
@@ -84,6 +70,31 @@ class DelegateButton: public QGraphicsSvgItem
...
@@ -84,6 +70,31 @@ class DelegateButton: public QGraphicsSvgItem
};
};
class
UBGraphicsToolBarItem
:
public
QGraphicsRectItem
,
public
QObject
{
public
:
UBGraphicsToolBarItem
(
QGraphicsItem
*
parent
=
0
);
virtual
~
UBGraphicsToolBarItem
()
{};
bool
isVisibleOnBoard
()
const
{
return
mVisible
;
}
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
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
);
private
:
bool
mShifting
;
bool
mVisible
;
int
mOffsetOnToolBar
;
int
mMinWidth
;
QList
<
QGraphicsItem
*>
mItemsOnToolBar
;
};
class
UBGraphicsItemDelegate
:
public
QObject
class
UBGraphicsItemDelegate
:
public
QObject
{
{
...
@@ -138,6 +149,10 @@ class UBGraphicsItemDelegate : public QObject
...
@@ -138,6 +149,10 @@ class UBGraphicsItemDelegate : public QObject
void
setButtonsVisible
(
bool
visible
);
void
setButtonsVisible
(
bool
visible
);
UBGraphicsToolBarItem
*
getToolBarItem
()
const
{
return
mToolBarItem
;
}
qreal
antiScaleRatio
()
const
{
return
mAntiScaleRatio
;
}
signals
:
signals
:
void
showOnDisplayChanged
(
bool
shown
);
void
showOnDisplayChanged
(
bool
shown
);
void
lockChanged
(
bool
locked
);
void
lockChanged
(
bool
locked
);
...
@@ -183,12 +198,17 @@ class UBGraphicsItemDelegate : public QObject
...
@@ -183,12 +198,17 @@ class UBGraphicsItemDelegate : public QObject
QList
<
DelegateButton
*>
mButtons
;
QList
<
DelegateButton
*>
mButtons
;
UBGraphicsToolBarItem
*
mToolBarItem
;
protected
slots
:
protected
slots
:
virtual
void
gotoContentSource
(
bool
checked
);
virtual
void
gotoContentSource
(
bool
checked
);
private
:
private
:
void
updateFrame
();
void
updateFrame
();
void
updateButtons
(
bool
showUpdated
=
false
);
void
updateButtons
(
bool
showUpdated
=
false
);
void
updateToolBar
();
QPointF
mOffset
;
QPointF
mOffset
;
QTransform
mPreviousTransform
;
QTransform
mPreviousTransform
;
...
...
src/domain/UBGraphicsItemUndoCommand.cpp
View file @
56eceb66
...
@@ -19,12 +19,12 @@
...
@@ -19,12 +19,12 @@
#include "UBGraphicsScene.h"
#include "UBGraphicsScene.h"
#include "core/memcheck.h"
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "board/UBBoardController.h"
#include "board/UBBoardController.h"
#include "core/memcheck.h"
UBGraphicsItemUndoCommand
::
UBGraphicsItemUndoCommand
(
UBGraphicsScene
*
pScene
,
const
QSet
<
QGraphicsItem
*>&
pRemovedItems
,
UBGraphicsItemUndoCommand
::
UBGraphicsItemUndoCommand
(
UBGraphicsScene
*
pScene
,
const
QSet
<
QGraphicsItem
*>&
pRemovedItems
,
const
QSet
<
QGraphicsItem
*>&
pAddedItems
)
const
QSet
<
QGraphicsItem
*>&
pAddedItems
)
:
mScene
(
pScene
)
:
mScene
(
pScene
)
...
...
src/domain/UBGraphicsMediaItem.cpp
View file @
56eceb66
...
@@ -23,10 +23,10 @@
...
@@ -23,10 +23,10 @@
#include "board/UBBoardController.h"
#include "board/UBBoardController.h"
#include "core/memcheck.h"
#include "frameworks/UBFileSystemUtils.h"
#include "frameworks/UBFileSystemUtils.h"
#include "core/memcheck.h"
bool
UBGraphicsMediaItem
::
sIsMutedByDefault
=
false
;
bool
UBGraphicsMediaItem
::
sIsMutedByDefault
=
false
;
UBGraphicsMediaItem
::
UBGraphicsMediaItem
(
const
QUrl
&
pMediaFileUrl
,
QGraphicsItem
*
parent
)
UBGraphicsMediaItem
::
UBGraphicsMediaItem
(
const
QUrl
&
pMediaFileUrl
,
QGraphicsItem
*
parent
)
...
...
src/domain/UBGraphicsStrokesGroup.cpp
View file @
56eceb66
#include "UBGraphicsStrokesGroup.h"
#include "UBGraphicsStrokesGroup.h"
#include "core/memcheck.h"
UBGraphicsStrokesGroup
::
UBGraphicsStrokesGroup
(
QGraphicsItem
*
parent
)
:
QGraphicsItemGroup
(
parent
)
UBGraphicsStrokesGroup
::
UBGraphicsStrokesGroup
(
QGraphicsItem
*
parent
)
:
QGraphicsItemGroup
(
parent
)
{
{
mDelegate
=
new
UBGraphicsItemDelegate
(
this
,
0
,
true
,
true
);
mDelegate
=
new
UBGraphicsItemDelegate
(
this
,
0
,
true
,
true
);
...
...
src/domain/UBGraphicsTextItemDelegate.cpp
View file @
56eceb66
...
@@ -24,9 +24,10 @@
...
@@ -24,9 +24,10 @@
#include "domain/UBGraphicsDelegateFrame.h"
#include "domain/UBGraphicsDelegateFrame.h"
#include "core/UBSettings.h"
#include "core/UBSettings.h"
#include "core/memcheck.h"
#include "board/UBBoardController.h"
#include "board/UBBoardController.h"
#include "core/memcheck.h"
const
int
UBGraphicsTextItemDelegate
::
sMinPixelSize
=
8
;
const
int
UBGraphicsTextItemDelegate
::
sMinPixelSize
=
8
;
const
int
UBGraphicsTextItemDelegate
::
sMinPointSize
=
8
;
const
int
UBGraphicsTextItemDelegate
::
sMinPointSize
=
8
;
...
@@ -94,17 +95,21 @@ void UBGraphicsTextItemDelegate::buildButtons()
...
@@ -94,17 +95,21 @@ void UBGraphicsTextItemDelegate::buildButtons()
{
{
UBGraphicsItemDelegate
::
buildButtons
();
UBGraphicsItemDelegate
::
buildButtons
();
mFontButton
=
new
DelegateButton
(
":/images/font.svg"
,
mDelegated
,
m
Frame
,
Qt
::
TopLeftSection
);
mFontButton
=
new
DelegateButton
(
":/images/font.svg"
,
mDelegated
,
m
ToolBarItem
,
Qt
::
TitleBarArea
);
mColorButton
=
new
DelegateButton
(
":/images/color.svg"
,
mDelegated
,
m
Frame
,
Qt
::
TopLeftSection
);
mColorButton
=
new
DelegateButton
(
":/images/color.svg"
,
mDelegated
,
m
ToolBarItem
,
Qt
::
TitleBarArea
);
mDecreaseSizeButton
=
new
DelegateButton
(
":/images/minus.svg"
,
mDelegated
,
m
Frame
,
Qt
::
TopLeftSection
);
mDecreaseSizeButton
=
new
DelegateButton
(
":/images/minus.svg"
,
mDelegated
,
m
ToolBarItem
,
Qt
::
TitleBarArea
);
mIncreaseSizeButton
=
new
DelegateButton
(
":/images/plus.svg"
,
mDelegated
,
m
Frame
,
Qt
::
TopLeftSection
);
mIncreaseSizeButton
=
new
DelegateButton
(
":/images/plus.svg"
,
mDelegated
,
m
ToolBarItem
,
Qt
::
TitleBarArea
);
connect
(
mFontButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
pickFont
()));
connect
(
mFontButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
pickFont
()));
connect
(
mColorButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
pickColor
()));
connect
(
mColorButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
pickColor
()));
connect
(
mDecreaseSizeButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
decreaseSize
()));
connect
(
mDecreaseSizeButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
decreaseSize
()));
connect
(
mIncreaseSizeButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
increaseSize
()));
connect
(
mIncreaseSizeButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
increaseSize
()));
mButtons
<<
mFontButton
<<
mColorButton
<<
mDecreaseSizeButton
<<
mIncreaseSizeButton
;
QList
<
QGraphicsItem
*>
itemsOnToolBar
;
itemsOnToolBar
<<
mFontButton
<<
mColorButton
<<
mDecreaseSizeButton
<<
mIncreaseSizeButton
;
mToolBarItem
->
setItemsOnToolBar
(
itemsOnToolBar
);
mToolBarItem
->
setVisibleOnBoard
(
true
);
}
}
void
UBGraphicsTextItemDelegate
::
contentsChanged
()
void
UBGraphicsTextItemDelegate
::
contentsChanged
()
...
...
src/domain/UBGraphicsVideoItemDelegate.cpp
View file @
56eceb66
/*
/*
* This program is free software: you can redistribute it and/or modify
* 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
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
*/
#include <QtGui>
#include <QtGui>
#include <QtSvg>
#include <QtSvg>
#include "UBGraphicsVideoItemDelegate.h"
#include "UBGraphicsVideoItemDelegate.h"
#include "UBGraphicsScene.h"
#include "UBGraphicsScene.h"
#include "core/UBSettings.h"
#include "core/UBSettings.h"
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "core/UBApplicationController.h"
#include "core/UBApplicationController.h"
#include "core/UBDisplayManager.h"
#include "core/UBDisplayManager.h"
#include "domain/UBGraphicsVideoItem.h"
#include "domain/UBGraphicsVideoItem.h"
#include "domain/UBGraphicsDelegateFrame.h"
#include "domain/UBGraphicsDelegateFrame.h"
#include "core/memcheck.h"
#include "core/memcheck.h"
UBGraphicsVideoItemDelegate
::
UBGraphicsVideoItemDelegate
(
UBGraphicsVideoItem
*
pDelegated
,
Phonon
::
MediaObject
*
pMedia
,
QObject
*
parent
)
UBGraphicsVideoItemDelegate
::
UBGraphicsVideoItemDelegate
(
UBGraphicsVideoItem
*
pDelegated
,
Phonon
::
MediaObject
*
pMedia
,
QObject
*
parent
)
:
UBGraphicsItemDelegate
(
pDelegated
,
parent
,
true
,
false
)
:
UBGraphicsItemDelegate
(
pDelegated
,
parent
,
true
,
false
)
,
mMedia
(
pMedia
)
,
mMedia
(
pMedia
)
{
{
// NOOP
// NOOP
}
}
void
UBGraphicsVideoItemDelegate
::
buildButtons
()
void
UBGraphicsVideoItemDelegate
::
buildButtons
()
{
{
mPlayPauseButton
=
new
DelegateButton
(
":/images/play.svg"
,
mDelegated
,
mFrame
);
mPlayPauseButton
=
new
DelegateButton
(
":/images/play.svg"
,
mDelegated
,
mToolBarItem
,
Qt
::
TitleBarArea
);
mStopButton
=
new
DelegateButton
(
":/images/stop.svg"
,
mDelegated
,
mFrame
);
mStopButton
=
new
DelegateButton
(
":/images/stop.svg"
,
mDelegated
,
mToolBarItem
,
Qt
::
TitleBarArea
);
mStopButton
->
hide
();
mVideoControl
=
new
DelegateVideoControl
(
delegated
(),
mToolBarItem
);
if
(
delegated
()
->
isMuted
())
UBGraphicsItem
::
assignZValue
(
mVideoControl
,
delegated
()
->
zValue
());
mMuteButton
=
new
DelegateButton
(
":/images/soundOff.svg"
,
mDelegated
,
mFrame
);
mVideoControl
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
else
mMuteButton
=
new
DelegateButton
(
":/images/soundOn.svg"
,
mDelegated
,
mFrame
);
if
(
delegated
()
->
isMuted
())
mMuteButton
=
new
DelegateButton
(
":/images/soundOff.svg"
,
mDelegated
,
mToolBarItem
,
Qt
::
TitleBarArea
);
mMuteButton
->
hide
();
else
mMuteButton
=
new
DelegateButton
(
":/images/soundOn.svg"
,
mDelegated
,
mToolBarItem
,
Qt
::
TitleBarArea
);
mVideoControl
=
new
DelegateVideoControl
(
delegated
(),
mFrame
);
UBGraphicsItem
::
assignZValue
(
mVideoControl
,
delegated
()
->
zValue
());
connect
(
mPlayPauseButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
togglePlayPause
()));
mVideoControl
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
connect
(
mStopButton
,
SIGNAL
(
clicked
(
bool
)),
mMedia
,
SLOT
(
stop
()));
connect
(
mMuteButton
,
SIGNAL
(
clicked
(
bool
)),
delegated
(),
SLOT
(
toggleMute
()));
connect
(
mPlayPauseButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
togglePlayPause
()));
connect
(
mMuteButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
toggleMute
()));
connect
(
mStopButton
,
SIGNAL
(
clicked
(
bool
)),
mMedia
,
SLOT
(
stop
()));
connect
(
mMuteButton
,
SIGNAL
(
clicked
(
bool
)),
delegated
(),
SLOT
(
toggleMute
()));
mButtons
<<
mPlayPauseButton
<<
mStopButton
<<
mMuteButton
;
connect
(
mMuteButton
,
SIGNAL
(
clicked
(
bool
)),
this
,
SLOT
(
toggleMute
()));
QList
<
QGraphicsItem
*>
itemsOnToolBar
;
mButtons
<<
mPlayPauseButton
<<
mStopButton
<<
mMuteButton
;
itemsOnToolBar
<<
mPlayPauseButton
<<
mStopButton
<<
mVideoControl
<<
mMuteButton
;
mToolBarItem
->
setItemsOnToolBar
(
itemsOnToolBar
);
mMedia
->
setTickInterval
(
50
);
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
(
stateChanged
(
Phonon
::
State
,
Phonon
::
State
)),
this
,
SLOT
(
mediaStateChanged
(
Phonon
::
State
,
Phonon
::
State
)));
connect
(
mMedia
,
SIGNAL
(
tick
(
qint64
)),
this
,
SLOT
(
updateTicker
(
qint64
)));
connect
(
mMedia
,
SIGNAL
(
finished
()),
this
,
SLOT
(
updatePlayPauseState
()));
connect
(
mMedia
,
SIGNAL
(
totalTimeChanged
(
qint64
)),
this
,
SLOT
(
totalTimeChanged
(
qint64
)));
connect
(
mMedia
,
SIGNAL
(
tick
(
qint64
)),
this
,
SLOT
(
updateTicker
(
qint64
)));
connect
(
mMedia
,
SIGNAL
(
totalTimeChanged
(
qint64
)),
this
,
SLOT
(
totalTimeChanged
(
qint64
)));
}
mToolBarItem
->
setVisibleOnBoard
(
true
);
mToolBarItem
->
setShifting
(
false
);
UBGraphicsVideoItemDelegate
::~
UBGraphicsVideoItemDelegate
()
}
{
//NOOP
}
UBGraphicsVideoItemDelegate
::~
UBGraphicsVideoItemDelegate
()
{
//NOOP
void
UBGraphicsVideoItemDelegate
::
positionHandles
()
}
{
UBGraphicsItemDelegate
::
positionHandles
();
void
UBGraphicsVideoItemDelegate
::
positionHandles
()
if
(
mDelegated
->
isSelected
())
{
{
UBGraphicsItemDelegate
::
positionHandles
();
qreal
scaledFrameWidth
=
mFrameWidth
*
mAntiScaleRatio
;
if
(
mDelegated
->
isSelected
())
{
qreal
width
=
mFrame
->
rect
().
width
();
qreal
scaledFrameWidth
=
mFrameWidth
*
mAntiScaleRatio
;
qreal
height
=
mFrame
->
rect
().
height
();
int
offset
=
0
;
qreal
x
=
mFrame
->
rect
().
left
();
foreach
(
DelegateButton
*
button
,
mButtons
)
qreal
y
=
mFrame
->
rect
().
top
();
{
if
(
button
->
getSection
()
==
Qt
::
TitleBarArea
)
mVideoControl
->
setRect
(
x
+
2
*
scaledFrameWidth
offset
+=
button
->
boundingRect
().
width
()
*
mAntiScaleRatio
;
,
y
+
height
-
3
*
scaledFrameWidth
}
,
width
-
4
*
scaledFrameWidth
,
2
*
scaledFrameWidth
);
mVideoControl
->
setRect
(
mVideoControl
->
rect
().
x
()
,
scaledFrameWidth
/
6
-
0.5
if
(
!
mVideoControl
->
scene
())
,
(
mToolBarItem
->
rect
().
width
()
-
35
-
offset
)
/
mAntiScaleRatio
{
,
(
2
*
scaledFrameWidth
)
/
mAntiScaleRatio
);
mVideoControl
->
setParentItem
(
mFrame
);
//update parent for the case the item has been previously removed from scene
mDelegated
->
scene
()
->
addItem
(
mVideoControl
);
offset
+=
(
mVideoControl
->
rect
().
width
()
+
5
)
*
mAntiScaleRatio
;
}
mMuteButton
->
setPos
(
offset
,
0
);
mVideoControl
->
setAntiScale
(
mAntiScaleRatio
);
if
(
!
mVideoControl
->
scene
())
mVideoControl
->
setZValue
(
delegated
()
->
zValue
());
{
mVideoControl
->
show
();
mVideoControl
->
setParentItem
(
mToolBarItem
);
//update parent for the case the item has been previously removed from scene
}
mDelegated
->
scene
()
->
addItem
(
mVideoControl
);
else
}
{
mVideoControl
->
hide
();
mVideoControl
->
setAntiScale
(
mAntiScaleRatio
);
}
mVideoControl
->
setZValue
(
delegated
()
->
zValue
());
}
mVideoControl
->
show
();
}
else
void
UBGraphicsVideoItemDelegate
::
remove
(
bool
canUndo
)
{
{
mVideoControl
->
hide
();
if
(
delegated
()
&&
delegated
()
->
mediaObject
())
}
delegated
()
->
mediaObject
()
->
stop
();
}
QGraphicsScene
*
scene
=
mDelegated
->
scene
();
void
UBGraphicsVideoItemDelegate
::
remove
(
bool
canUndo
)
scene
->
removeItem
(
mVideoControl
);
{
if
(
delegated
()
&&
delegated
()
->
mediaObject
())
UBGraphicsItemDelegate
::
remove
(
canUndo
);
delegated
()
->
mediaObject
()
->
stop
();
}
QGraphicsScene
*
scene
=
mDelegated
->
scene
();
void
UBGraphicsVideoItemDelegate
::
toggleMute
()
scene
->
removeItem
(
mVideoControl
);
{
if
(
delegated
()
->
isMuted
())
UBGraphicsItemDelegate
::
remove
(
canUndo
);
mMuteButton
->
setFileName
(
":/images/soundOff.svg"
);
}
else
mMuteButton
->
setFileName
(
":/images/soundOn.svg"
);
void
UBGraphicsVideoItemDelegate
::
toggleMute
()
}
{
if
(
delegated
()
->
isMuted
())
mMuteButton
->
setFileName
(
":/images/soundOff.svg"
);
UBGraphicsVideoItem
*
UBGraphicsVideoItemDelegate
::
delegated
()
else
{
mMuteButton
->
setFileName
(
":/images/soundOn.svg"
);
return
static_cast
<
UBGraphicsVideoItem
*>
(
mDelegated
);
}
}
void
UBGraphicsVideoItemDelegate
::
togglePlayPause
()
UBGraphicsVideoItem
*
UBGraphicsVideoItemDelegate
::
delegated
()
{
{
if
(
delegated
()
&&
delegated
()
->
mediaObject
())
{
return
static_cast
<
UBGraphicsVideoItem
*>
(
mDelegated
);
}
Phonon
::
MediaObject
*
media
=
delegated
()
->
mediaObject
();
if
(
media
->
state
()
==
Phonon
::
StoppedState
)
{
media
->
play
();
void
UBGraphicsVideoItemDelegate
::
togglePlayPause
()
}
else
if
(
media
->
state
()
==
Phonon
::
PlayingState
)
{
{
if
(
media
->
remainingTime
()
<=
0
)
{
if
(
delegated
()
&&
delegated
()
->
mediaObject
())
{
media
->
stop
();
media
->
play
();
Phonon
::
MediaObject
*
media
=
delegated
()
->
mediaObject
();
}
else
{
if
(
media
->
state
()
==
Phonon
::
StoppedState
)
{
media
->
pause
();
media
->
play
();
if
(
delegated
()
->
scene
())
}
else
if
(
media
->
state
()
==
Phonon
::
PlayingState
)
{
delegated
()
->
scene
()
->
setModified
(
true
);
if
(
media
->
remainingTime
()
<=
0
)
{
}
media
->
stop
();
}
else
if
(
media
->
state
()
==
Phonon
::
PausedState
)
{
media
->
play
();
if
(
media
->
remainingTime
()
<=
0
)
{
}
else
{
media
->
stop
();
media
->
pause
();
}
if
(
delegated
()
->
scene
())
media
->
play
();
delegated
()
->
scene
()
->
setModified
(
true
);
}
else
if
(
media
->
state
()
==
Phonon
::
LoadingState
)
{
}
delegated
()
->
mediaObject
()
->
setCurrentSource
(
delegated
()
->
mediaFileUrl
());
}
else
if
(
media
->
state
()
==
Phonon
::
PausedState
)
{
media
->
play
();
if
(
media
->
remainingTime
()
<=
0
)
{
}
else
if
(
media
->
state
()
==
Phonon
::
ErrorState
){
media
->
stop
();
qDebug
()
<<
"Error appeared."
<<
media
->
errorString
();
}
}
media
->
play
();
}
}
else
if
(
media
->
state
()
==
Phonon
::
LoadingState
)
{
}
delegated
()
->
mediaObject
()
->
setCurrentSource
(
delegated
()
->
mediaFileUrl
());
media
->
play
();
void
UBGraphicsVideoItemDelegate
::
mediaStateChanged
(
Phonon
::
State
newstate
,
Phonon
::
State
oldstate
)
}
else
if
(
media
->
state
()
==
Phonon
::
ErrorState
){
{
qDebug
()
<<
"Error appeared."
<<
media
->
errorString
();
Q_UNUSED
(
newstate
);
}
Q_UNUSED
(
oldstate
);
}
updatePlayPauseState
();
}
}
void
UBGraphicsVideoItemDelegate
::
mediaStateChanged
(
Phonon
::
State
newstate
,
Phonon
::
State
oldstate
)
{
void
UBGraphicsVideoItemDelegate
::
updatePlayPauseState
()
Q_UNUSED
(
newstate
);
{
Q_UNUSED
(
oldstate
);
Phonon
::
MediaObject
*
media
=
delegated
()
->
mediaObject
();
updatePlayPauseState
();
}
if
(
media
->
state
()
==
Phonon
::
PlayingState
)
mPlayPauseButton
->
setFileName
(
":/images/pause.svg"
);
else
void
UBGraphicsVideoItemDelegate
::
updatePlayPauseState
()
mPlayPauseButton
->
setFileName
(
":/images/play.svg"
);
{
}
Phonon
::
MediaObject
*
media
=
delegated
()
->
mediaObject
();
if
(
media
->
state
()
==
Phonon
::
PlayingState
)
void
UBGraphicsVideoItemDelegate
::
updateTicker
(
qint64
time
)
mPlayPauseButton
->
setFileName
(
":/images/pause.svg"
);
{
else
Phonon
::
MediaObject
*
media
=
delegated
()
->
mediaObject
();
mPlayPauseButton
->
setFileName
(
":/images/play.svg"
);
mVideoControl
->
totalTimeChanged
(
media
->
totalTime
());
}
mVideoControl
->
updateTicker
(
time
);
}
void
UBGraphicsVideoItemDelegate
::
updateTicker
(
qint64
time
)
{
Phonon
::
MediaObject
*
media
=
delegated
()
->
mediaObject
();
void
UBGraphicsVideoItemDelegate
::
totalTimeChanged
(
qint64
newTotalTime
)
mVideoControl
->
totalTimeChanged
(
media
->
totalTime
());
{
mVideoControl
->
totalTimeChanged
(
newTotalTime
);
mVideoControl
->
updateTicker
(
time
);
}
}
DelegateVideoControl
::
DelegateVideoControl
(
UBGraphicsVideoItem
*
pDelegated
,
QGraphicsItem
*
parent
)
void
UBGraphicsVideoItemDelegate
::
totalTimeChanged
(
qint64
newTotalTime
)
:
QGraphicsRectItem
(
parent
)
{
,
mDelegate
(
pDelegated
)
mVideoControl
->
totalTimeChanged
(
newTotalTime
);
,
mDisplayCurrentTime
(
false
)
}
,
mAntiScale
(
1.0
)
,
mCurrentTimeInMs
(
0
)
,
mTotalTimeInMs
(
0
)
DelegateVideoControl
::
DelegateVideoControl
(
UBGraphicsVideoItem
*
pDelegated
,
QGraphicsItem
*
parent
)
{
:
QGraphicsRectItem
(
parent
)
setAcceptedMouseButtons
(
Qt
::
LeftButton
);
,
mDelegate
(
pDelegated
)
,
mDisplayCurrentTime
(
false
)
setBrush
(
QBrush
(
UBSettings
::
paletteColor
));
,
mAntiScale
(
1.0
)
setPen
(
Qt
::
NoPen
);
,
mCurrentTimeInMs
(
0
)
setData
(
UBGraphicsItemData
::
ItemLayerType
,
QVariant
(
UBItemLayerType
::
Control
));
,
mTotalTimeInMs
(
0
)
}
,
mStartWidth
(
200
)
{
setAcceptedMouseButtons
(
Qt
::
LeftButton
);
void
DelegateVideoControl
::
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
)
setBrush
(
QBrush
(
Qt
::
white
));
{
setPen
(
Qt
::
NoPen
);
Q_UNUSED
(
option
);
setData
(
UBGraphicsItemData
::
ItemLayerType
,
QVariant
(
UBItemLayerType
::
Control
));
Q_UNUSED
(
widget
);
QRectF
rect
=
this
->
rect
();
painter
->
fillPath
(
shape
(),
brush
());
rect
.
setWidth
(
mStartWidth
);
this
->
setRect
(
rect
);
qreal
frameWidth
=
rect
().
height
()
/
2
;
}
int
position
=
frameWidth
;
if
(
mTotalTimeInMs
>
0
)
void
DelegateVideoControl
::
paint
(
QPainter
*
painter
,
{
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
)
position
=
frameWidth
+
(
rect
().
width
()
-
(
2
*
frameWidth
))
/
mTotalTimeInMs
*
mCurrentTimeInMs
;
{
}
Q_UNUSED
(
option
);
Q_UNUSED
(
widget
);
int
radius
=
rect
().
height
()
/
6
;
QRectF
r
(
rect
().
x
()
+
position
-
radius
,
rect
().
y
()
+
(
rect
().
height
()
/
4
)
-
radius
,
radius
*
2
,
radius
*
2
);
painter
->
fillPath
(
shape
(),
brush
());
painter
->
setBrush
(
UBSettings
::
documentViewLightColor
);
qreal
frameWidth
=
rect
().
height
()
/
2
;
painter
->
drawEllipse
(
r
);
int
position
=
frameWidth
;
if
(
mDisplayCurrentTime
)
if
(
mTotalTimeInMs
>
0
)
{
{
painter
->
setBrush
(
UBSettings
::
paletteColor
);
position
=
frameWidth
+
(
rect
().
width
()
-
(
2
*
frameWidth
))
/
mTotalTimeInMs
*
mCurrentTimeInMs
;
painter
->
setPen
(
QPen
(
Qt
::
NoPen
));
}
QRectF
balloon
(
rect
().
x
()
+
position
-
frameWidth
,
rect
().
y
()
-
(
frameWidth
*
1.2
),
2
*
frameWidth
,
frameWidth
);
painter
->
drawRoundedRect
(
balloon
,
frameWidth
/
2
,
frameWidth
/
2
);
int
radius
=
rect
().
height
()
/
6
;
QRectF
r
(
rect
().
x
()
+
position
-
radius
,
rect
().
y
()
+
(
rect
().
height
()
/
4
)
-
radius
,
radius
*
2
,
radius
*
2
);
QTime
t
;
t
=
t
.
addMSecs
(
mCurrentTimeInMs
<
0
?
0
:
mCurrentTimeInMs
);
painter
->
setBrush
(
UBSettings
::
documentViewLightColor
);
QFont
f
=
painter
->
font
();
painter
->
drawEllipse
(
r
);
f
.
setPointSizeF
(
f
.
pointSizeF
()
*
mAntiScale
);
painter
->
setFont
(
f
);
if
(
mDisplayCurrentTime
)
painter
->
setPen
(
Qt
::
white
);
{
painter
->
drawText
(
balloon
,
Qt
::
AlignCenter
,
t
.
toString
(
"m:ss"
));
painter
->
setBrush
(
UBSettings
::
paletteColor
);
}
painter
->
setPen
(
QPen
(
Qt
::
NoPen
));
}
mBalloon
.
setRect
(
rect
().
x
()
+
position
-
frameWidth
,
rect
().
y
()
-
(
frameWidth
*
1.2
),
2
*
frameWidth
,
frameWidth
);
painter
->
drawRoundedRect
(
mBalloon
,
frameWidth
/
2
,
frameWidth
/
2
);
QPainterPath
DelegateVideoControl
::
shape
()
const
QTime
t
;
{
t
=
t
.
addMSecs
(
mCurrentTimeInMs
<
0
?
0
:
mCurrentTimeInMs
);
QPainterPath
path
;
QFont
f
=
painter
->
font
();
QRectF
r
=
rect
().
adjusted
(
0
,
0
,
0
,
-
rect
().
height
()
/
2
);
f
.
setPointSizeF
(
f
.
pointSizeF
()
*
mAntiScale
);
path
.
addRoundedRect
(
r
,
rect
().
height
()
/
4
,
rect
().
height
()
/
4
);
painter
->
setFont
(
f
);
return
path
;
painter
->
setPen
(
Qt
::
white
);
}
painter
->
drawText
(
mBalloon
,
Qt
::
AlignCenter
,
t
.
toString
(
"m:ss"
));
}
}
void
DelegateVideoControl
::
updateTicker
(
qint64
time
)
{
mCurrentTimeInMs
=
time
;
QPainterPath
DelegateVideoControl
::
shape
()
const
update
();
{
}
QPainterPath
path
;
QRectF
r
=
rect
().
adjusted
(
0
,
0
,
0
,
-
rect
().
height
()
/
2
);
path
.
addRoundedRect
(
r
,
rect
().
height
()
/
4
,
rect
().
height
()
/
4
);
void
DelegateVideoControl
::
totalTimeChanged
(
qint64
newTotalTime
)
return
path
;
{
}
mTotalTimeInMs
=
newTotalTime
;
update
();
}
void
DelegateVideoControl
::
updateTicker
(
qint64
time
)
{
mCurrentTimeInMs
=
time
;
void
DelegateVideoControl
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
update
();
{
}
mDisplayCurrentTime
=
true
;
seekToMousePos
(
event
->
pos
());
update
();
void
DelegateVideoControl
::
totalTimeChanged
(
qint64
newTotalTime
)
event
->
accept
();
{
}
mTotalTimeInMs
=
newTotalTime
;
update
();
}
void
DelegateVideoControl
::
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
seekToMousePos
(
event
->
pos
());
void
DelegateVideoControl
::
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
)
update
();
{
event
->
accept
();
mDisplayCurrentTime
=
true
;
}
seekToMousePos
(
event
->
pos
());
update
();
event
->
accept
();
void
DelegateVideoControl
::
seekToMousePos
(
QPointF
mousePos
)
}
{
qreal
minX
,
length
;
qreal
frameWidth
=
rect
().
height
()
/
2
;
void
DelegateVideoControl
::
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
minX
=
rect
().
x
()
+
frameWidth
;
if
(
shape
().
contains
(
event
->
pos
()
-
QPointF
(
mBalloon
.
width
()
/
2
,
0
))
length
=
rect
().
width
()
-
(
2
*
frameWidth
);
&&
shape
().
contains
(
event
->
pos
()
+
QPointF
(
mBalloon
.
width
()
/
2
,
0
)))
{
qreal
mouseX
=
mousePos
.
x
();
seekToMousePos
(
event
->
pos
());
update
();
if
(
mTotalTimeInMs
>
0
&&
length
>
0
&&
mDelegate
event
->
accept
();
&&
mDelegate
->
mediaObject
()
&&
mDelegate
->
mediaObject
()
->
isSeekable
())
}
{
}
qint64
tickPos
=
mTotalTimeInMs
/
length
*
(
mouseX
-
minX
);
mDelegate
->
mediaObject
()
->
seek
(
tickPos
);
void
DelegateVideoControl
::
seekToMousePos
(
QPointF
mousePos
)
//OSX is a bit lazy
{
updateTicker
(
tickPos
);
qreal
minX
,
length
;
}
qreal
frameWidth
=
rect
().
height
()
/
2
;
}
minX
=
rect
().
x
()
+
frameWidth
;
void
DelegateVideoControl
::
mouseReleaseEvent
(
QGraphicsSceneMouseEvent
*
event
)
length
=
rect
().
width
()
-
(
2
*
frameWidth
);
{
mDisplayCurrentTime
=
false
;
qreal
mouseX
=
mousePos
.
x
();
update
();
event
->
accept
();
if
(
mTotalTimeInMs
>
0
&&
length
>
0
&&
mDelegate
}
&&
mDelegate
->
mediaObject
()
&&
mDelegate
->
mediaObject
()
->
isSeekable
())
{
qint64
tickPos
=
mTotalTimeInMs
/
length
*
(
mouseX
-
minX
);
mDelegate
->
mediaObject
()
->
seek
(
tickPos
);
//OSX is a bit lazy
updateTicker
(
tickPos
);
}
}
void
DelegateVideoControl
::
mouseReleaseEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
mDisplayCurrentTime
=
false
;
update
();
event
->
accept
();
}
src/domain/UBGraphicsVideoItemDelegate.h
View file @
56eceb66
/*
/*
* This program is free software: you can redistribute it and/or modify
* 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
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
*/
#ifndef UBGRAPHICSVIDEOITEMDELEGATE_H_
#ifndef UBGRAPHICSVIDEOITEMDELEGATE_H_
#define UBGRAPHICSVIDEOITEMDELEGATE_H_
#define UBGRAPHICSVIDEOITEMDELEGATE_H_
#include <QtGui>
#include <QtGui>
#include <phonon/MediaObject>
#include <phonon/MediaObject>
#include "core/UB.h"
#include "core/UB.h"
#include "UBGraphicsItemDelegate.h"
#include "UBGraphicsItemDelegate.h"
class
QGraphicsSceneMouseEvent
;
class
QGraphicsSceneMouseEvent
;
class
QGraphicsItem
;
class
QGraphicsItem
;
class
UBGraphicsVideoItem
;
class
UBGraphicsVideoItem
;
class
DelegateVideoControl
:
public
QGraphicsRectItem
class
DelegateVideoControl
:
public
QGraphicsRectItem
{
{
public
:
public
:
DelegateVideoControl
(
UBGraphicsVideoItem
*
pDelegated
,
QGraphicsItem
*
parent
=
0
);
DelegateVideoControl
(
UBGraphicsVideoItem
*
pDelegated
,
QGraphicsItem
*
parent
=
0
);
virtual
~
DelegateVideoControl
()
virtual
~
DelegateVideoControl
()
{
{
// NOOP
// NOOP
}
}
void
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
void
paint
(
QPainter
*
painter
,
const
QStyleOptionGraphicsItem
*
option
,
QWidget
*
widget
);
QWidget
*
widget
);
QPainterPath
shape
()
const
;
QPainterPath
shape
()
const
;
void
setAntiScale
(
qreal
antiScale
){
mAntiScale
=
antiScale
;
}
void
setAntiScale
(
qreal
antiScale
){
mAntiScale
=
antiScale
;
}
virtual
void
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
mousePressEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
mouseReleaseEvent
(
QGraphicsSceneMouseEvent
*
event
);
virtual
void
mouseReleaseEvent
(
QGraphicsSceneMouseEvent
*
event
);
void
updateTicker
(
qint64
time
);
void
updateTicker
(
qint64
time
);
void
totalTimeChanged
(
qint64
newTotalTime
);
void
totalTimeChanged
(
qint64
newTotalTime
);
protected
:
protected
:
void
seekToMousePos
(
QPointF
mousePos
);
void
seekToMousePos
(
QPointF
mousePos
);
UBGraphicsVideoItem
*
mDelegate
;
UBGraphicsVideoItem
*
mDelegate
;
bool
mDisplayCurrentTime
;
bool
mDisplayCurrentTime
;
qreal
mAntiScale
;
qreal
mAntiScale
;
qint64
mCurrentTimeInMs
;
qint64
mCurrentTimeInMs
;
qint64
mTotalTimeInMs
;
qint64
mTotalTimeInMs
;
};
private
:
int
mStartWidth
;
QRectF
mBalloon
;
class
UBGraphicsVideoItemDelegate
:
public
UBGraphicsItemDelegate
};
{
Q_OBJECT
class
UBGraphicsVideoItemDelegate
:
public
UBGraphicsItemDelegate
public
:
{
UBGraphicsVideoItemDelegate
(
UBGraphicsVideoItem
*
pDelegated
,
Phonon
::
MediaObject
*
pMedia
,
QObject
*
parent
=
0
);
Q_OBJECT
virtual
~
UBGraphicsVideoItemDelegate
();
public
:
virtual
void
positionHandles
();
UBGraphicsVideoItemDelegate
(
UBGraphicsVideoItem
*
pDelegated
,
Phonon
::
MediaObject
*
pMedia
,
QObject
*
parent
=
0
);
virtual
~
UBGraphicsVideoItemDelegate
();
public
slots
:
virtual
void
positionHandles
();
void
toggleMute
();
void
updateTicker
(
qint64
time
);
public
slots
:
protected
slots
:
void
toggleMute
();
void
updateTicker
(
qint64
time
);
virtual
void
remove
(
bool
canUndo
=
true
);
protected
slots
:
void
togglePlayPause
();
virtual
void
remove
(
bool
canUndo
=
true
);
void
mediaStateChanged
(
Phonon
::
State
newstate
,
Phonon
::
State
oldstate
);
void
togglePlayPause
();
void
updatePlayPauseState
();
void
mediaStateChanged
(
Phonon
::
State
newstate
,
Phonon
::
State
oldstate
);
void
totalTimeChanged
(
qint64
newTotalTime
);
void
updatePlayPauseState
();
protected
:
void
totalTimeChanged
(
qint64
newTotalTime
);
virtual
void
buildButtons
();
protected
:
private
:
virtual
void
buildButtons
();
UBGraphicsVideoItem
*
delegated
();
private
:
DelegateButton
*
mPlayPauseButton
;
DelegateButton
*
mStopButton
;
UBGraphicsVideoItem
*
delegated
();
DelegateButton
*
mMuteButton
;
DelegateVideoControl
*
mVideoControl
;
DelegateButton
*
mPlayPauseButton
;
DelegateButton
*
mStopButton
;
Phonon
::
MediaObject
*
mMedia
;
DelegateButton
*
mMuteButton
;
DelegateVideoControl
*
mVideoControl
;
};
Phonon
::
MediaObject
*
mMedia
;
};
#endif
/* UBGRAPHICSVIDEOITEMDELEGATE_H_ */
#endif
/* UBGRAPHICSVIDEOITEMDELEGATE_H_ */
src/domain/ubgraphicsgroupcontaineritem.cpp
View file @
56eceb66
...
@@ -6,6 +6,8 @@
...
@@ -6,6 +6,8 @@
#include "domain/ubgraphicsgroupcontaineritemdelegate.h"
#include "domain/ubgraphicsgroupcontaineritemdelegate.h"
#include "domain/UBGraphicsScene.h"
#include "domain/UBGraphicsScene.h"
#include "core/memcheck.h"
UBGraphicsGroupContainerItem
::
UBGraphicsGroupContainerItem
(
QGraphicsItem
*
parent
)
UBGraphicsGroupContainerItem
::
UBGraphicsGroupContainerItem
(
QGraphicsItem
*
parent
)
:
QGraphicsItemGroup
(
parent
)
:
QGraphicsItemGroup
(
parent
)
{
{
...
...
src/domain/ubgraphicsgroupcontaineritemdelegate.cpp
View file @
56eceb66
...
@@ -8,9 +8,10 @@
...
@@ -8,9 +8,10 @@
#include "domain/UBGraphicsDelegateFrame.h"
#include "domain/UBGraphicsDelegateFrame.h"
#include "domain/ubgraphicsgroupcontaineritem.h"
#include "domain/ubgraphicsgroupcontaineritem.h"
#include "core/memcheck.h"
#include "board/UBBoardController.h"
#include "board/UBBoardController.h"
#include "core/memcheck.h"
UBGraphicsGroupContainerItemDelegate
::
UBGraphicsGroupContainerItemDelegate
(
QGraphicsItem
*
pDelegated
,
QObject
*
parent
)
:
UBGraphicsGroupContainerItemDelegate
::
UBGraphicsGroupContainerItemDelegate
(
QGraphicsItem
*
pDelegated
,
QObject
*
parent
)
:
UBGraphicsItemDelegate
(
pDelegated
,
parent
),
mDestroyGroupButton
(
0
)
UBGraphicsItemDelegate
(
pDelegated
,
parent
),
mDestroyGroupButton
(
0
)
...
...
src/frameworks/UBCoreGraphicsScene.cpp
View file @
56eceb66
...
@@ -15,12 +15,13 @@
...
@@ -15,12 +15,13 @@
#include "UBCoreGraphicsScene.h"
#include "UBCoreGraphicsScene.h"
#include "core/memcheck.h"
#include "domain/UBGraphicsAudioItem.h"
#include "domain/UBGraphicsAudioItem.h"
#include "domain/UBGraphicsVideoItem.h"
#include "domain/UBGraphicsVideoItem.h"
#include "domain/UBGraphicsMediaItem.h"
#include "domain/UBGraphicsMediaItem.h"
#include "domain/UBGraphicsWidgetItem.h"
#include "domain/UBGraphicsWidgetItem.h"
#include "core/memcheck.h"
UBCoreGraphicsScene
::
UBCoreGraphicsScene
(
QObject
*
parent
)
UBCoreGraphicsScene
::
UBCoreGraphicsScene
(
QObject
*
parent
)
:
QGraphicsScene
(
parent
)
:
QGraphicsScene
(
parent
)
{
{
...
...
src/gui/UBDockDownloadWidget.cpp
View file @
56eceb66
...
@@ -17,6 +17,8 @@
...
@@ -17,6 +17,8 @@
#include "globals/UBGlobals.h"
#include "globals/UBGlobals.h"
#include "core/memcheck.h"
UBDockDownloadWidget
::
UBDockDownloadWidget
(
QWidget
*
parent
,
const
char
*
name
)
:
UBDockPaletteWidget
(
parent
,
name
)
UBDockDownloadWidget
::
UBDockDownloadWidget
(
QWidget
*
parent
,
const
char
*
name
)
:
UBDockPaletteWidget
(
parent
,
name
)
,
mpLayout
(
NULL
)
,
mpLayout
(
NULL
)
,
mpDLWidget
(
NULL
)
,
mpDLWidget
(
NULL
)
...
...
src/gui/UBDockTeacherGuideWidget.cpp
View file @
56eceb66
...
@@ -19,6 +19,8 @@
...
@@ -19,6 +19,8 @@
#include "UBDockTeacherGuideWidget.h"
#include "UBDockTeacherGuideWidget.h"
#include "UBTeacherGuideWidget.h"
#include "UBTeacherGuideWidget.h"
#include "core/memcheck.h"
UBDockTeacherGuideWidget
::
UBDockTeacherGuideWidget
(
QWidget
*
parent
,
const
char
*
name
)
:
UBDockTeacherGuideWidget
::
UBDockTeacherGuideWidget
(
QWidget
*
parent
,
const
char
*
name
)
:
UBDockPaletteWidget
(
parent
,
name
)
UBDockPaletteWidget
(
parent
,
name
)
...
...
src/gui/UBFeaturesActionBar.cpp
View file @
56eceb66
#include "UBFeaturesActionBar.h"
#include "UBFeaturesActionBar.h"
#include "core/memcheck.h"
UBFeaturesActionBar
::
UBFeaturesActionBar
(
UBFeaturesController
*
controller
,
QWidget
*
parent
,
const
char
*
name
)
:
QWidget
(
parent
)
UBFeaturesActionBar
::
UBFeaturesActionBar
(
UBFeaturesController
*
controller
,
QWidget
*
parent
,
const
char
*
name
)
:
QWidget
(
parent
)
,
featuresController
(
controller
)
,
featuresController
(
controller
)
...
@@ -143,6 +144,16 @@ void UBFeaturesActionBar::setButtons()
...
@@ -143,6 +144,16 @@ void UBFeaturesActionBar::setButtons()
mpRemoveFavoriteBtn
->
show
();
mpRemoveFavoriteBtn
->
show
();
mpNewFolderBtn
->
hide
();
mpNewFolderBtn
->
hide
();
break
;
break
;
case
IN_TRASH
:
mpFavoriteBtn
->
hide
();
mpSocialBtn
->
hide
();
mSearchBar
->
show
();
//mpSearchBtn->show();
//mpDeleteBtn->hide();
mpCloseBtn
->
hide
();
//mpRemoveFavoriteBtn->show();
mpNewFolderBtn
->
hide
();
break
;
default
:
default
:
break
;
break
;
}
}
...
@@ -169,7 +180,9 @@ void UBFeaturesActionBar::dragMoveEvent(QDragMoveEvent *event)
...
@@ -169,7 +180,9 @@ void UBFeaturesActionBar::dragMoveEvent(QDragMoveEvent *event)
void
UBFeaturesActionBar
::
dragEnterEvent
(
QDragEnterEvent
*
event
)
void
UBFeaturesActionBar
::
dragEnterEvent
(
QDragEnterEvent
*
event
)
{
{
if
(
event
->
mimeData
()
->
hasFormat
(
"text/uri-list"
))
if
(
event
->
mimeData
()
->
hasFormat
(
"text/uri-list"
))
{
event
->
acceptProposedAction
();
event
->
acceptProposedAction
();
}
}
}
void
UBFeaturesActionBar
::
dropEvent
(
QDropEvent
*
event
)
void
UBFeaturesActionBar
::
dropEvent
(
QDropEvent
*
event
)
...
@@ -177,6 +190,12 @@ void UBFeaturesActionBar::dropEvent( QDropEvent *event )
...
@@ -177,6 +190,12 @@ void UBFeaturesActionBar::dropEvent( QDropEvent *event )
QWidget
*
dest
=
childAt
(
event
->
pos
()
);
QWidget
*
dest
=
childAt
(
event
->
pos
()
);
if
(
dest
==
mpDeleteBtn
)
if
(
dest
==
mpDeleteBtn
)
{
{
QList
<
QUrl
>
urls
=
event
->
mimeData
()
->
urls
();
foreach
(
QUrl
url
,
urls
)
{
if
(
!
UBFeaturesController
::
isDeletable
(
url
)
)
return
;
}
event
->
setDropAction
(
Qt
::
MoveAction
);
event
->
setDropAction
(
Qt
::
MoveAction
);
event
->
accept
();
event
->
accept
();
emit
deleteElements
(
*
event
->
mimeData
()
);
emit
deleteElements
(
*
event
->
mimeData
()
);
...
...
src/gui/UBFeaturesActionBar.h
View file @
56eceb66
...
@@ -12,7 +12,8 @@ enum UBFeaturesActionBarState
...
@@ -12,7 +12,8 @@ enum UBFeaturesActionBarState
IN_ROOT
,
IN_ROOT
,
IN_FOLDER
,
IN_FOLDER
,
IN_PROPERTIES
,
IN_PROPERTIES
,
IN_FAVORITE
IN_FAVORITE
,
IN_TRASH
};
};
class
UBFeaturesActionBar
:
public
QWidget
class
UBFeaturesActionBar
:
public
QWidget
...
...
src/gui/UBFeaturesWidget.cpp
View file @
56eceb66
#include <QDomDocument>
#include "UBFeaturesWidget.h"
#include "UBFeaturesWidget.h"
#include "domain/UBAbstractWidget.h"
#include "domain/UBAbstractWidget.h"
#include "gui/UBThumbnailWidget.h"
#include "gui/UBThumbnailWidget.h"
...
@@ -6,6 +8,7 @@
...
@@ -6,6 +8,7 @@
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "core/UBDownloadManager.h"
#include "core/UBDownloadManager.h"
#include "globals/UBGlobals.h"
#include "globals/UBGlobals.h"
#include "board/UBBoardController.h"
UBFeaturesWidget
::
UBFeaturesWidget
(
QWidget
*
parent
,
const
char
*
name
)
:
UBDockPaletteWidget
(
parent
)
UBFeaturesWidget
::
UBFeaturesWidget
(
QWidget
*
parent
,
const
char
*
name
)
:
UBDockPaletteWidget
(
parent
)
{
{
...
@@ -56,6 +59,7 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
...
@@ -56,6 +59,7 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
featuresListView
->
setViewMode
(
QListView
::
IconMode
);
featuresListView
->
setViewMode
(
QListView
::
IconMode
);
itemDelegate
=
new
UBFeaturesItemDelegate
(
this
,
featuresListView
);
itemDelegate
=
new
UBFeaturesItemDelegate
(
this
,
featuresListView
);
featuresListView
->
setItemDelegate
(
itemDelegate
);
featuresListView
->
setItemDelegate
(
itemDelegate
);
//featuresListView->setSelectionRectVisible(false);
featuresListView
->
setIconSize
(
QSize
(
defaultThumbnailSize
,
defaultThumbnailSize
)
);
featuresListView
->
setIconSize
(
QSize
(
defaultThumbnailSize
,
defaultThumbnailSize
)
);
featuresListView
->
setGridSize
(
QSize
(
defaultThumbnailSize
*
1.75
,
defaultThumbnailSize
*
1.75
)
);
featuresListView
->
setGridSize
(
QSize
(
defaultThumbnailSize
*
1.75
,
defaultThumbnailSize
*
1.75
)
);
...
@@ -71,6 +75,9 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
...
@@ -71,6 +75,9 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
pathListView
->
setSelectionMode
(
QAbstractItemView
::
NoSelection
);
pathListView
->
setSelectionMode
(
QAbstractItemView
::
NoSelection
);
pathListView
->
setVerticalScrollBarPolicy
(
Qt
::
ScrollBarAlwaysOff
);
pathListView
->
setVerticalScrollBarPolicy
(
Qt
::
ScrollBarAlwaysOff
);
pathListView
->
setHorizontalScrollBarPolicy
(
Qt
::
ScrollBarAlwaysOn
);
pathListView
->
setHorizontalScrollBarPolicy
(
Qt
::
ScrollBarAlwaysOn
);
pathListView
->
setFlow
(
QListView
::
LeftToRight
);
pathListView
->
setWrapping
(
false
);
//pathListView->setResizeMode( QListView::Adjust );
//pathListView->setResizeMode( QListView::Adjust );
//pathListView->setMovement( QListView::Static );
//pathListView->setMovement( QListView::Static );
pathListView
->
setDragDropMode
(
QAbstractItemView
::
DropOnly
);
pathListView
->
setDragDropMode
(
QAbstractItemView
::
DropOnly
);
...
@@ -78,6 +85,7 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
...
@@ -78,6 +85,7 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
pathScene
=
new
QGraphicsScene
(
this
);
pathScene
=
new
QGraphicsScene
(
this
);
//pathViewer = new UBFeaturesPathViewer( QPixmap(":images/libpalette/home.png"), controller->getRootPath(), pathScene, this );
//pathViewer = new UBFeaturesPathViewer( QPixmap(":images/libpalette/home.png"), controller->getRootPath(), pathScene, this );
featureProperties
=
new
UBFeatureProperties
(
this
);
featureProperties
=
new
UBFeatureProperties
(
this
);
webView
=
new
UBFeaturesWebView
(
this
);
//layout->addWidget( pathViewer );
//layout->addWidget( pathViewer );
//pathViewer->show();
//pathViewer->show();
...
@@ -87,6 +95,7 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
...
@@ -87,6 +95,7 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
stackedWidget
->
addWidget
(
featuresListView
);
stackedWidget
->
addWidget
(
featuresListView
);
stackedWidget
->
addWidget
(
featureProperties
);
stackedWidget
->
addWidget
(
featureProperties
);
stackedWidget
->
addWidget
(
webView
);
stackedWidget
->
setCurrentIndex
(
ID_LISTVIEW
);
stackedWidget
->
setCurrentIndex
(
ID_LISTVIEW
);
currentStackedWidget
=
ID_LISTVIEW
;
currentStackedWidget
=
ID_LISTVIEW
;
...
@@ -107,7 +116,7 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
...
@@ -107,7 +116,7 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
this, SLOT(currentSelected(const QModelIndex &)));*/
this, SLOT(currentSelected(const QModelIndex &)));*/
connect
(
featuresListView
,
SIGNAL
(
clicked
(
const
QModelIndex
&
)
),
connect
(
featuresListView
,
SIGNAL
(
clicked
(
const
QModelIndex
&
)
),
this
,
SLOT
(
currentSelected
(
const
QModelIndex
&
)
)
);
this
,
SLOT
(
currentSelected
(
const
QModelIndex
&
)
)
);
connect
(
mActionBar
,
SIGNAL
(
searchElement
(
const
QString
&
)
),
this
,
SLOT
(
const
searchStarted
(
QString
&
)
)
);
connect
(
mActionBar
,
SIGNAL
(
searchElement
(
const
QString
&
)
),
this
,
SLOT
(
searchStarted
(
const
QString
&
)
)
);
connect
(
mActionBar
,
SIGNAL
(
newFolderToCreate
()
),
this
,
SLOT
(
createNewFolder
()
)
);
connect
(
mActionBar
,
SIGNAL
(
newFolderToCreate
()
),
this
,
SLOT
(
createNewFolder
()
)
);
connect
(
mActionBar
,
SIGNAL
(
deleteElements
(
const
QMimeData
&
)
),
this
,
SLOT
(
deleteElements
(
const
QMimeData
&
)
)
);
connect
(
mActionBar
,
SIGNAL
(
deleteElements
(
const
QMimeData
&
)
),
this
,
SLOT
(
deleteElements
(
const
QMimeData
&
)
)
);
connect
(
mActionBar
,
SIGNAL
(
addToFavorite
(
const
QMimeData
&
)
),
this
,
SLOT
(
addToFavorite
(
const
QMimeData
&
)
)
);
connect
(
mActionBar
,
SIGNAL
(
addToFavorite
(
const
QMimeData
&
)
),
this
,
SLOT
(
addToFavorite
(
const
QMimeData
&
)
)
);
...
@@ -115,6 +124,10 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
...
@@ -115,6 +124,10 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
connect
(
pathListView
,
SIGNAL
(
clicked
(
const
QModelIndex
&
)
),
connect
(
pathListView
,
SIGNAL
(
clicked
(
const
QModelIndex
&
)
),
this
,
SLOT
(
currentPathChanged
(
const
QModelIndex
&
)
)
);
this
,
SLOT
(
currentPathChanged
(
const
QModelIndex
&
)
)
);
connect
(
thumbSlider
,
SIGNAL
(
sliderMoved
(
int
)
),
this
,
SLOT
(
thumbnailSizeChanged
(
int
)
)
);
connect
(
thumbSlider
,
SIGNAL
(
sliderMoved
(
int
)
),
this
,
SLOT
(
thumbnailSizeChanged
(
int
)
)
);
connect
(
UBApplication
::
boardController
,
SIGNAL
(
displayMetadata
(
QMap
<
QString
,
QString
>
)
),
this
,
SLOT
(
onDisplayMetadata
(
QMap
<
QString
,
QString
>
)
)
);
connect
(
UBDownloadManager
::
downloadManager
(),
SIGNAL
(
addDownloadedFileToLibrary
(
bool
,
QUrl
,
QString
,
QByteArray
)
),
this
,
SLOT
(
onAddDownloadedFileToLibrary
(
bool
,
QUrl
,
QString
,
QByteArray
)
)
);
}
}
bool
UBFeaturesWidget
::
eventFilter
(
QObject
*
target
,
QEvent
*
event
)
bool
UBFeaturesWidget
::
eventFilter
(
QObject
*
target
,
QEvent
*
event
)
...
@@ -156,7 +169,7 @@ void UBFeaturesWidget::currentSelected(const QModelIndex ¤t)
...
@@ -156,7 +169,7 @@ void UBFeaturesWidget::currentSelected(const QModelIndex ¤t)
if
(
feature
.
isFolder
()
)
if
(
feature
.
isFolder
()
)
{
{
QString
newPath
=
feature
.
get
Url
()
+
"/"
+
feature
.
getName
();
QString
newPath
=
feature
.
get
FullVirtualPath
();
//pathViewer->addPathElement( feature.getThumbnail(), newPath );
//pathViewer->addPathElement( feature.getThumbnail(), newPath );
controller
->
setCurrentElement
(
feature
);
controller
->
setCurrentElement
(
feature
);
...
@@ -170,11 +183,20 @@ void UBFeaturesWidget::currentSelected(const QModelIndex ¤t)
...
@@ -170,11 +183,20 @@ void UBFeaturesWidget::currentSelected(const QModelIndex ¤t)
{
{
mActionBar
->
setCurrentState
(
IN_FAVORITE
);
mActionBar
->
setCurrentState
(
IN_FAVORITE
);
}
}
else
if
(
feature
.
getType
()
==
FEATURE_TRASH
)
{
mActionBar
->
setCurrentState
(
IN_TRASH
);
}
else
else
{
{
mActionBar
->
setCurrentState
(
IN_FOLDER
);
mActionBar
->
setCurrentState
(
IN_FOLDER
);
}
}
}
}
else
if
(
feature
.
getType
()
==
FEATURE_SEARCH
)
{
webView
->
showElement
(
feature
);
switchToWebView
();
}
else
else
{
{
featureProperties
->
showElement
(
feature
);
featureProperties
->
showElement
(
feature
);
...
@@ -190,7 +212,7 @@ void UBFeaturesWidget::currentPathChanged(const QModelIndex &index)
...
@@ -190,7 +212,7 @@ void UBFeaturesWidget::currentPathChanged(const QModelIndex &index)
if
(
index
.
isValid
()
)
if
(
index
.
isValid
()
)
{
{
UBFeature
feature
=
featuresPathModel
->
data
(
index
,
Qt
::
UserRole
+
1
).
value
<
UBFeature
>
();
UBFeature
feature
=
featuresPathModel
->
data
(
index
,
Qt
::
UserRole
+
1
).
value
<
UBFeature
>
();
QString
newPath
=
feature
.
get
Url
()
+
"/"
+
feature
.
getName
();
QString
newPath
=
feature
.
get
FullVirtualPath
();
featuresPathModel
->
setPath
(
newPath
);
featuresPathModel
->
setPath
(
newPath
);
featuresPathModel
->
invalidate
();
featuresPathModel
->
invalidate
();
...
@@ -208,6 +230,10 @@ void UBFeaturesWidget::currentPathChanged(const QModelIndex &index)
...
@@ -208,6 +230,10 @@ void UBFeaturesWidget::currentPathChanged(const QModelIndex &index)
{
{
mActionBar
->
setCurrentState
(
IN_FAVORITE
);
mActionBar
->
setCurrentState
(
IN_FAVORITE
);
}
}
else
if
(
feature
.
getType
()
==
FEATURE_TRASH
)
{
mActionBar
->
setCurrentState
(
IN_TRASH
);
}
else
else
{
{
mActionBar
->
setCurrentState
(
IN_FOLDER
);
mActionBar
->
setCurrentState
(
IN_FOLDER
);
...
@@ -224,7 +250,6 @@ void UBFeaturesWidget::createNewFolder()
...
@@ -224,7 +250,6 @@ void UBFeaturesWidget::createNewFolder()
featuresModel
->
addItem
(
newFolder
);
featuresModel
->
addItem
(
newFolder
);
featuresProxyModel
->
invalidate
();
featuresProxyModel
->
invalidate
();
}
}
}
}
void
UBFeaturesWidget
::
deleteElements
(
const
QMimeData
&
mimeData
)
void
UBFeaturesWidget
::
deleteElements
(
const
QMimeData
&
mimeData
)
...
@@ -260,7 +285,7 @@ void UBFeaturesWidget::addToFavorite( const QMimeData & mimeData )
...
@@ -260,7 +285,7 @@ void UBFeaturesWidget::addToFavorite( const QMimeData & mimeData )
foreach
(
QUrl
url
,
urls
)
foreach
(
QUrl
url
,
urls
)
{
{
UBFeature
elem
=
controller
->
addToFavorite
(
url
);
UBFeature
elem
=
controller
->
addToFavorite
(
url
);
if
(
!
elem
.
get
Url
().
isEmpty
()
&&
!
elem
.
getUrl
().
isNull
()
)
if
(
!
elem
.
get
VirtualPath
().
isEmpty
()
&&
!
elem
.
getVirtualPath
().
isNull
()
)
featuresModel
->
addItem
(
elem
);
featuresModel
->
addItem
(
elem
);
}
}
QSortFilterProxyModel
*
model
=
dynamic_cast
<
QSortFilterProxyModel
*>
(
featuresListView
->
model
()
);
QSortFilterProxyModel
*
model
=
dynamic_cast
<
QSortFilterProxyModel
*>
(
featuresListView
->
model
()
);
...
@@ -284,6 +309,30 @@ void UBFeaturesWidget::thumbnailSizeChanged( int value )
...
@@ -284,6 +309,30 @@ void UBFeaturesWidget::thumbnailSizeChanged( int value )
featuresListView
->
setGridSize
(
QSize
(
value
*
1.75
,
value
*
1.75
)
);
featuresListView
->
setGridSize
(
QSize
(
value
*
1.75
,
value
*
1.75
)
);
}
}
void
UBFeaturesWidget
::
onDisplayMetadata
(
QMap
<
QString
,
QString
>
metadata
)
{
UBFeature
feature
(
QString
(),
QPixmap
(
":images/libpalette/notFound.png"
),
QString
(),
metadata
[
"Url"
],
FEATURE_ITEM
);
feature
.
setMetadata
(
metadata
);
featureProperties
->
showElement
(
feature
);
switchToProperties
();
mActionBar
->
setCurrentState
(
IN_PROPERTIES
);
}
void
UBFeaturesWidget
::
onAddDownloadedFileToLibrary
(
bool
pSuccess
,
QUrl
sourceUrl
,
QString
pContentHeader
,
QByteArray
pData
)
{
if
(
pSuccess
)
{
UBFeature
newFeature
=
controller
->
addDownloadedFile
(
sourceUrl
,
pData
);
if
(
newFeature
!=
UBFeature
()
)
{
featuresModel
->
addItem
(
newFeature
);
QSortFilterProxyModel
*
model
=
dynamic_cast
<
QSortFilterProxyModel
*>
(
featuresListView
->
model
()
);
model
->
invalidate
();
}
}
}
void
UBFeaturesWidget
::
switchToListView
()
void
UBFeaturesWidget
::
switchToListView
()
{
{
stackedWidget
->
setCurrentIndex
(
ID_LISTVIEW
);
stackedWidget
->
setCurrentIndex
(
ID_LISTVIEW
);
...
@@ -296,6 +345,11 @@ void UBFeaturesWidget::switchToProperties()
...
@@ -296,6 +345,11 @@ void UBFeaturesWidget::switchToProperties()
currentStackedWidget
=
ID_PROPERTIES
;
currentStackedWidget
=
ID_PROPERTIES
;
}
}
void
UBFeaturesWidget
::
switchToWebView
()
{
stackedWidget
->
setCurrentIndex
(
ID_WEBVIEW
);
currentStackedWidget
=
ID_WEBVIEW
;
}
/*
/*
...
@@ -315,11 +369,39 @@ UBFeaturesWidget::~UBFeaturesWidget()
...
@@ -315,11 +369,39 @@ UBFeaturesWidget::~UBFeaturesWidget()
{
{
}
}
UBFeaturesListView
::
UBFeaturesListView
(
QWidget
*
parent
,
const
char
*
name
)
:
QListView
(
parent
)
UBFeaturesListView
::
UBFeaturesListView
(
QWidget
*
parent
,
const
char
*
name
)
:
QListView
(
parent
)
{
{
setObjectName
(
name
);
setObjectName
(
name
);
//rubberBand = new UBRubberBand( QRubberBand::Rectangle, this );
}
/*
void UBFeaturesListView::mousePressEvent( QMouseEvent *event )
{
rubberOrigin = event->pos();
rubberBand->setGeometry( QRect( rubberOrigin, QSize() ) );
//qDebug() << rubberOrigin.x() << rubberOrigin.y();
rubberBand->show();
QListView::mousePressEvent(event);
}
void UBFeaturesListView::mouseMoveEvent( QMouseEvent *event )
{
QPoint current = event->pos();
rubberBand->setGeometry( QRect( rubberOrigin, current ).normalized() );
//setSelection( rubberBand->rect(), QItemSelectionModel::Select );
QListView::mouseMoveEvent(event);
}
void UBFeaturesListView::mouseReleaseEvent( QMouseEvent *event )
{
rubberBand->hide();
QListView::mouseReleaseEvent(event);
}
}
*/
void
UBFeaturesListView
::
dragEnterEvent
(
QDragEnterEvent
*
event
)
void
UBFeaturesListView
::
dragEnterEvent
(
QDragEnterEvent
*
event
)
{
{
if
(
event
->
mimeData
()
->
hasUrls
()
)
if
(
event
->
mimeData
()
->
hasUrls
()
)
...
@@ -336,6 +418,96 @@ void UBFeaturesListView::dropEvent( QDropEvent *event )
...
@@ -336,6 +418,96 @@ void UBFeaturesListView::dropEvent( QDropEvent *event )
}
}
UBFeaturesWebView
::
UBFeaturesWebView
(
QWidget
*
parent
,
const
char
*
name
)
:
QWidget
(
parent
)
,
mpView
(
NULL
)
,
mpWebSettings
(
NULL
)
,
mpLayout
(
NULL
)
,
mpSankoreAPI
(
NULL
)
{
setObjectName
(
name
);
SET_STYLE_SHEET
();
mpLayout
=
new
QVBoxLayout
();
setLayout
(
mpLayout
);
mpView
=
new
QWebView
(
this
);
mpView
->
setObjectName
(
"SearchEngineView"
);
mpSankoreAPI
=
new
UBWidgetUniboardAPI
(
UBApplication
::
boardController
->
activeScene
());
mpView
->
page
()
->
mainFrame
()
->
addToJavaScriptWindowObject
(
"sankore"
,
mpSankoreAPI
);
mpWebSettings
=
QWebSettings
::
globalSettings
();
mpWebSettings
->
setAttribute
(
QWebSettings
::
JavaEnabled
,
true
);
mpWebSettings
->
setAttribute
(
QWebSettings
::
PluginsEnabled
,
true
);
mpWebSettings
->
setAttribute
(
QWebSettings
::
LocalStorageDatabaseEnabled
,
true
);
mpWebSettings
->
setAttribute
(
QWebSettings
::
OfflineWebApplicationCacheEnabled
,
true
);
mpWebSettings
->
setAttribute
(
QWebSettings
::
OfflineStorageDatabaseEnabled
,
true
);
mpWebSettings
->
setAttribute
(
QWebSettings
::
JavascriptCanAccessClipboard
,
true
);
mpWebSettings
->
setAttribute
(
QWebSettings
::
DnsPrefetchEnabled
,
true
);
mpLayout
->
addWidget
(
mpView
);
connect
(
mpView
,
SIGNAL
(
loadFinished
(
bool
)),
this
,
SLOT
(
onLoadFinished
(
bool
)));
}
UBFeaturesWebView
::~
UBFeaturesWebView
()
{
if
(
NULL
!=
mpSankoreAPI
){
delete
mpSankoreAPI
;
mpSankoreAPI
=
NULL
;
}
if
(
NULL
!=
mpView
){
delete
mpView
;
mpView
=
NULL
;
}
if
(
NULL
!=
mpLayout
){
delete
mpLayout
;
mpLayout
=
NULL
;
}
}
void
UBFeaturesWebView
::
showElement
(
const
UBFeature
&
elem
)
{
QString
qsWidgetName
;
QString
path
=
elem
.
getFullPath
().
toLocalFile
();
QString
qsConfigPath
=
QString
(
"%0/config.xml"
).
arg
(
path
);
if
(
QFile
::
exists
(
qsConfigPath
))
{
QFile
f
(
qsConfigPath
);
if
(
f
.
open
(
QIODevice
::
ReadOnly
))
{
QDomDocument
domDoc
;
domDoc
.
setContent
(
QString
(
f
.
readAll
()));
QDomElement
root
=
domDoc
.
documentElement
();
QDomNode
node
=
root
.
firstChild
();
while
(
!
node
.
isNull
())
{
if
(
node
.
toElement
().
tagName
()
==
"content"
)
{
QDomAttr
srcAttr
=
node
.
toElement
().
attributeNode
(
"src"
);
qsWidgetName
=
srcAttr
.
value
();
break
;
}
node
=
node
.
nextSibling
();
}
f
.
close
();
}
}
mpView
->
load
(
QUrl
::
fromLocalFile
(
QString
(
"%0/%1"
).
arg
(
path
).
arg
(
qsWidgetName
)));
}
void
UBFeaturesWebView
::
onLoadFinished
(
bool
ok
)
{
if
(
ok
&&
NULL
!=
mpSankoreAPI
){
mpView
->
page
()
->
mainFrame
()
->
addToJavaScriptWindowObject
(
"sankore"
,
mpSankoreAPI
);
}
}
UBFeatureProperties
::
UBFeatureProperties
(
QWidget
*
parent
,
const
char
*
name
)
:
QWidget
(
parent
)
UBFeatureProperties
::
UBFeatureProperties
(
QWidget
*
parent
,
const
char
*
name
)
:
QWidget
(
parent
)
,
mpLayout
(
NULL
)
,
mpLayout
(
NULL
)
,
mpButtonLayout
(
NULL
)
,
mpButtonLayout
(
NULL
)
...
@@ -346,6 +518,7 @@ UBFeatureProperties::UBFeatureProperties( QWidget *parent, const char *name ) :
...
@@ -346,6 +518,7 @@ UBFeatureProperties::UBFeatureProperties( QWidget *parent, const char *name ) :
,
mpThumbnail
(
NULL
)
,
mpThumbnail
(
NULL
)
,
mpOrigPixmap
(
NULL
)
,
mpOrigPixmap
(
NULL
)
,
mpElement
(
NULL
)
,
mpElement
(
NULL
)
,
mpObjInfos
(
NULL
)
{
{
setObjectName
(
name
);
setObjectName
(
name
);
...
@@ -385,12 +558,49 @@ UBFeatureProperties::UBFeatureProperties( QWidget *parent, const char *name ) :
...
@@ -385,12 +558,49 @@ UBFeatureProperties::UBFeatureProperties( QWidget *parent, const char *name ) :
mpButtonLayout
->
addStretch
(
1
);
mpButtonLayout
->
addStretch
(
1
);
mpObjInfoLabel
=
new
QLabel
(
tr
(
"Object informations"
));
mpObjInfoLabel
=
new
QLabel
(
tr
(
"Object informations"
));
mpObjInfoLabel
->
setStyleSheet
(
QString
(
"color: #888888; font-size : 18px; font-weight:bold;"
));
mpObjInfoLabel
->
setStyleSheet
(
QString
(
"color: #888888; font-size : 18px; font-weight:bold;"
));
mpLayout
->
addWidget
(
mpObjInfoLabel
,
0
);
mpLayout
->
addWidget
(
mpObjInfoLabel
,
0
);
connect
(
mpAddPageButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
onAddToPage
()));
mpObjInfos
=
new
QTreeWidget
(
this
);
mpObjInfos
->
setColumnCount
(
2
);
mpObjInfos
->
header
()
->
hide
();
mpObjInfos
->
setAlternatingRowColors
(
true
);
mpObjInfos
->
setRootIsDecorated
(
false
);
mpObjInfos
->
setObjectName
(
"DockPaletteWidgetBox"
);
mpObjInfos
->
setStyleSheet
(
"background:white;"
);
mpLayout
->
addWidget
(
mpObjInfos
,
1
);
connect
(
mpAddPageButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
onAddToPage
())
);
connect
(
mpSetAsBackgroundButton
,
SIGNAL
(
clicked
()
),
this
,
SLOT
(
onSetAsBackground
()
)
);
connect
(
mpAddToLibButton
,
SIGNAL
(
clicked
()
),
this
,
SLOT
(
onAddToLib
()
)
);
}
void
UBFeatureProperties
::
resizeEvent
(
QResizeEvent
*
event
)
{
Q_UNUSED
(
event
);
adaptSize
();
}
void
UBFeatureProperties
::
showEvent
(
QShowEvent
*
event
)
{
Q_UNUSED
(
event
);
adaptSize
();
}
void
UBFeatureProperties
::
adaptSize
()
{
if
(
NULL
!=
mpOrigPixmap
)
{
if
(
width
()
<
THUMBNAIL_WIDTH
+
40
)
{
mpThumbnail
->
setPixmap
(
mpOrigPixmap
->
scaledToWidth
(
width
()
-
40
)
);
}
else
{
mpThumbnail
->
setPixmap
(
mpOrigPixmap
->
scaledToWidth
(
THUMBNAIL_WIDTH
)
);
}
}
}
}
void
UBFeatureProperties
::
showElement
(
const
UBFeature
&
elem
)
void
UBFeatureProperties
::
showElement
(
const
UBFeature
&
elem
)
...
@@ -408,59 +618,95 @@ void UBFeatureProperties::showElement( const UBFeature &elem )
...
@@ -408,59 +618,95 @@ void UBFeatureProperties::showElement( const UBFeature &elem )
mpElement
=
new
UBFeature
(
elem
);
mpElement
=
new
UBFeature
(
elem
);
mpOrigPixmap
=
new
QPixmap
(
elem
.
getThumbnail
()
);
mpOrigPixmap
=
new
QPixmap
(
elem
.
getThumbnail
()
);
mpThumbnail
->
setPixmap
(
elem
.
getThumbnail
().
scaledToWidth
(
THUMBNAIL_WIDTH
));
mpThumbnail
->
setPixmap
(
elem
.
getThumbnail
().
scaledToWidth
(
THUMBNAIL_WIDTH
));
//
populateMetadata();
populateMetadata
();
if
(
UBApplication
::
isFromWeb
(
elem
.
get
Url
()
)
)
if
(
UBApplication
::
isFromWeb
(
elem
.
get
FullPath
().
toString
()
)
)
{
{
mpAddToLibButton
->
show
();
mpAddToLibButton
->
show
();
/*if(elem->metadatas()["Type"].toLower().contains("image")
)
if
(
elem
.
getMetadata
()[
"Type"
].
toLower
().
contains
(
"image"
)
)
{
{
mpSetAsBackgroundButton
->
show
();
mpSetAsBackgroundButton
->
show
();
}
}
else
else
{
{
mpSetAsBackgroundButton
->
hide
();
mpSetAsBackgroundButton
->
hide
();
}
*/
}
}
}
else
else
{
{
mpAddToLibButton
->
hide
();
mpAddToLibButton
->
hide
();
if
(
UBFileSystemUtils
::
mimeTypeFromFileName
(
elem
.
get
Url
()
).
contains
(
"image"
))
if
(
UBFileSystemUtils
::
mimeTypeFromFileName
(
elem
.
get
FullPath
().
toLocalFile
()
).
contains
(
"image"
))
{
{
mpSetAsBackgroundButton
->
show
();
mpSetAsBackgroundButton
->
show
();
}
}
else
else
{
{
mpSetAsBackgroundButton
->
hide
();
mpSetAsBackgroundButton
->
hide
();
}
}
}
}
}
}
void
UBFeatureProperties
::
populateMetadata
()
{
if
(
NULL
!=
mpObjInfos
){
mpObjInfos
->
clear
();
QMap
<
QString
,
QString
>
metas
=
mpElement
->
getMetadata
();
QList
<
QString
>
lKeys
=
metas
.
keys
();
QList
<
QString
>
lValues
=
metas
.
values
();
for
(
int
i
=
0
;
i
<
metas
.
size
();
i
++
){
QStringList
values
;
values
<<
lKeys
.
at
(
i
);
values
<<
lValues
.
at
(
i
);
mpItem
=
new
QTreeWidgetItem
(
values
);
mpObjInfos
->
addTopLevelItem
(
mpItem
);
}
mpObjInfos
->
resizeColumnToContents
(
0
);
}
}
void
UBFeatureProperties
::
onAddToPage
()
void
UBFeatureProperties
::
onAddToPage
()
{
{
QWidget
*
w
=
parentWidget
()
->
parentWidget
();
QWidget
*
w
=
parentWidget
()
->
parentWidget
();
UBFeaturesWidget
*
featuresWidget
=
dynamic_cast
<
UBFeaturesWidget
*>
(
w
);
UBFeaturesWidget
*
featuresWidget
=
dynamic_cast
<
UBFeaturesWidget
*>
(
w
);
featuresWidget
->
getFeaturesController
()
->
addItemToPage
(
*
mpElement
);
featuresWidget
->
getFeaturesController
()
->
addItemToPage
(
*
mpElement
);
/*if ( UBApplication::isFromWeb( mpElement->getUrl() ) )
}
{
void
UBFeatureProperties
::
onAddToLib
()
{
if
(
UBApplication
::
isFromWeb
(
mpElement
->
getFullPath
().
toString
()
)
)
{
sDownloadFileDesc
desc
;
sDownloadFileDesc
desc
;
desc
.
isBackground
=
false
;
desc
.
isBackground
=
false
;
desc.modal = true;
desc
.
modal
=
false
;
desc.name = QFileInfo( mpElement->getName() ).fileName();
desc
.
name
=
QFileInfo
(
mpElement
->
getFullPath
().
toString
()).
fileName
();
desc.url = mpElement->getUrl();
qDebug
()
<<
desc
.
name
;
desc
.
url
=
mpElement
->
getFullPath
().
toString
();
qDebug
()
<<
desc
.
url
;
UBDownloadManager
::
downloadManager
()
->
addFileToDownload
(
desc
);
UBDownloadManager
::
downloadManager
()
->
addFileToDownload
(
desc
);
}
}
else
}
{
QWidget *w = parentWidget()->parentWidget();
UBFeaturesWidget* featuresWidget = dynamic_cast<UBFeaturesWidget*>( w );
void
UBFeatureProperties
::
onSetAsBackground
()
featuresWidget->getFeaturesController()->addItemToPage( *mpElement );
{
}*/
QWidget
*
w
=
parentWidget
()
->
parentWidget
();
UBFeaturesWidget
*
featuresWidget
=
dynamic_cast
<
UBFeaturesWidget
*>
(
w
);
featuresWidget
->
getFeaturesController
()
->
addItemAsBackground
(
*
mpElement
);
}
}
UBFeatureProperties
::~
UBFeatureProperties
()
UBFeatureProperties
::~
UBFeatureProperties
()
{
{
if
(
mpOrigPixmap
)
{
delete
mpOrigPixmap
;
mpOrigPixmap
=
NULL
;
}
if
(
mpElement
)
{
delete
mpElement
;
mpElement
=
NULL
;
}
}
}
UBFeatureItemButton
::
UBFeatureItemButton
(
QWidget
*
parent
,
const
char
*
name
)
:
QPushButton
(
parent
)
UBFeatureItemButton
::
UBFeatureItemButton
(
QWidget
*
parent
,
const
char
*
name
)
:
QPushButton
(
parent
)
...
@@ -487,7 +733,7 @@ QVariant UBFeaturesModel::data(const QModelIndex &index, int role) const
...
@@ -487,7 +733,7 @@ QVariant UBFeaturesModel::data(const QModelIndex &index, int role) const
}
}
else
if
(
role
==
Qt
::
UserRole
)
else
if
(
role
==
Qt
::
UserRole
)
{
{
return
featuresList
->
at
(
index
.
row
()).
get
Url
();
return
featuresList
->
at
(
index
.
row
()).
get
VirtualPath
();
}
}
else
if
(
role
==
Qt
::
UserRole
+
1
)
else
if
(
role
==
Qt
::
UserRole
+
1
)
{
{
...
@@ -509,14 +755,15 @@ QMimeData* UBFeaturesModel::mimeData(const QModelIndexList &indexes) const
...
@@ -509,14 +755,15 @@ QMimeData* UBFeaturesModel::mimeData(const QModelIndexList &indexes) const
if
(
index
.
isValid
()
)
if
(
index
.
isValid
()
)
{
{
UBFeature
element
=
data
(
index
,
Qt
::
UserRole
+
1
).
value
<
UBFeature
>
();
UBFeature
element
=
data
(
index
,
Qt
::
UserRole
+
1
).
value
<
UBFeature
>
();
if
(
element
.
getType
()
==
FEATURE_INTERNAL
)
urlList
.
push_back
(
element
.
getFullPath
()
);
/*if ( element.getType() == FEATURE_INTERNAL )
{
{
urlList.push_back( QUrl( element.getFullPath() ) );
urlList.push_back( QUrl( element.getFullPath() ) );
}
}
else if ( element.getType() == FEATURE_INTERACTIVE || element.getType() == FEATURE_ITEM )
else if ( element.getType() == FEATURE_INTERACTIVE || element.getType() == FEATURE_ITEM )
{
{
urlList
.
push_back
(
QUrl
::
fromLocalFile
(
element
.
getFullPath
()
)
);
urlList.push_back(
element.getFullPath(
) );
}
}
*/
}
}
}
}
mimeData
->
setUrls
(
urlList
);
mimeData
->
setUrls
(
urlList
);
...
@@ -537,19 +784,15 @@ bool UBFeaturesModel::dropMimeData(const QMimeData *mimeData, Qt::DropAction act
...
@@ -537,19 +784,15 @@ bool UBFeaturesModel::dropMimeData(const QMimeData *mimeData, Qt::DropAction act
int
endRow
=
0
;
int
endRow
=
0
;
UBFeature
parentFeature
;
if
(
!
parent
.
isValid
()
)
if
(
!
parent
.
isValid
()
)
{
{
return
false
;
parentFeature
=
dynamic_cast
<
UBFeaturesWidget
*>
(
QObject
::
parent
())
->
getFeaturesController
()
->
getCurrentElement
();
/*if (row < 0)
endRow = featuresList->size();
else
endRow = qMin( row, featuresList->size() );*/
}
}
else
else
endRow
=
parent
.
row
();
{
Q_UNUSED
(
endRow
)
//why do we need this variable?
parentFeature
=
parent
.
data
(
Qt
::
UserRole
+
1
).
value
<
UBFeature
>
();
}
UBFeature
parentFeature
=
parent
.
data
(
Qt
::
UserRole
+
1
).
value
<
UBFeature
>
();
QList
<
QUrl
>
urls
=
mimeData
->
urls
();
QList
<
QUrl
>
urls
=
mimeData
->
urls
();
...
@@ -581,8 +824,8 @@ void UBFeaturesModel::deleteFavoriteItem( const QString &path )
...
@@ -581,8 +824,8 @@ void UBFeaturesModel::deleteFavoriteItem( const QString &path )
{
{
for
(
int
i
=
0
;
i
<
featuresList
->
size
();
++
i
)
for
(
int
i
=
0
;
i
<
featuresList
->
size
();
++
i
)
{
{
if
(
!
QString
::
compare
(
featuresList
->
at
(
i
).
get
FullPath
(),
path
,
Qt
::
CaseInsensitive
)
&&
if
(
!
QString
::
compare
(
featuresList
->
at
(
i
).
get
Url
(),
path
,
Qt
::
CaseInsensitive
)
&&
!
QString
::
compare
(
featuresList
->
at
(
i
).
get
Url
(),
"/root/favorites"
,
Qt
::
CaseInsensitive
)
)
!
QString
::
compare
(
featuresList
->
at
(
i
).
get
VirtualPath
(),
"/root/favorites"
,
Qt
::
CaseInsensitive
)
)
{
{
removeRow
(
i
,
QModelIndex
()
);
removeRow
(
i
,
QModelIndex
()
);
return
;
return
;
...
@@ -626,9 +869,9 @@ Qt::ItemFlags UBFeaturesModel::flags( const QModelIndex &index ) const
...
@@ -626,9 +869,9 @@ Qt::ItemFlags UBFeaturesModel::flags( const QModelIndex &index ) const
item
.
getType
()
==
FEATURE_ITEM
||
item
.
getType
()
==
FEATURE_ITEM
||
item
.
getType
()
==
FEATURE_INTERNAL
)
item
.
getType
()
==
FEATURE_INTERNAL
)
return
Qt
::
ItemIsDragEnabled
|
defaultFlags
;
return
Qt
::
ItemIsDragEnabled
|
defaultFlags
;
if
(
item
.
isFolder
()
&&
!
item
.
get
Ful
lPath
().
isNull
()
)
if
(
item
.
isFolder
()
&&
!
item
.
get
Virtua
lPath
().
isNull
()
)
return
defaultFlags
|
Qt
::
ItemIsDropEnabled
;
return
defaultFlags
|
Qt
::
ItemIsDropEnabled
;
else
return
defaultFlags
;
else
return
defaultFlags
|
Qt
::
ItemIsDropEnabled
;
}
}
/*if ( index.isValid() )
/*if ( index.isValid() )
{
{
...
@@ -647,7 +890,7 @@ Qt::ItemFlags UBFeaturesModel::flags( const QModelIndex &index ) const
...
@@ -647,7 +890,7 @@ Qt::ItemFlags UBFeaturesModel::flags( const QModelIndex &index ) const
default:;
default:;
}
}
}*/
}*/
return
defaultFlags
;
return
defaultFlags
|
Qt
::
ItemIsDropEnabled
;
}
}
...
@@ -696,9 +939,8 @@ bool UBFeaturesPathProxyModel::filterAcceptsRow( int sourceRow, const QModelInde
...
@@ -696,9 +939,8 @@ bool UBFeaturesPathProxyModel::filterAcceptsRow( int sourceRow, const QModelInde
eUBLibElementType type = (eUBLibElementType)sourceModel()->data(index, Qt::UserRole + 1).toInt();*/
eUBLibElementType type = (eUBLibElementType)sourceModel()->data(index, Qt::UserRole + 1).toInt();*/
UBFeature
feature
=
sourceModel
()
->
data
(
index
,
Qt
::
UserRole
+
1
).
value
<
UBFeature
>
();
UBFeature
feature
=
sourceModel
()
->
data
(
index
,
Qt
::
UserRole
+
1
).
value
<
UBFeature
>
();
QString
virtualFullPath
=
feature
.
getUrl
()
+
"/"
+
feature
.
getName
();
return
feature
.
isFolder
()
&&
path
.
startsWith
(
virtualFullPath
);
return
feature
.
isFolder
()
&&
path
.
startsWith
(
feature
.
getFullVirtualPath
()
);
}
}
QString
UBFeaturesItemDelegate
::
displayText
(
const
QVariant
&
value
,
const
QLocale
&
locale
)
const
QString
UBFeaturesItemDelegate
::
displayText
(
const
QVariant
&
value
,
const
QLocale
&
locale
)
const
...
@@ -710,13 +952,7 @@ QString UBFeaturesItemDelegate::displayText ( const QVariant & value, const QLoc
...
@@ -710,13 +952,7 @@ QString UBFeaturesItemDelegate::displayText ( const QVariant & value, const QLoc
{
{
const
QFontMetrics
fm
=
listView
->
fontMetrics
();
const
QFontMetrics
fm
=
listView
->
fontMetrics
();
const
QSize
iSize
=
listView
->
iconSize
();
const
QSize
iSize
=
listView
->
iconSize
();
return
elidedText
(
fm
,
iSize
.
width
(),
Qt
::
ElideRight
,
text
);
if
(
iSize
.
width
()
>
0
&&
fm
.
width
(
text
)
>
iSize
.
width
()
)
{
while
(
fm
.
width
(
text
)
>
iSize
.
width
())
text
.
resize
(
text
.
size
()
-
1
);
text
+=
"..."
;
}
}
}
return
text
;
return
text
;
}
}
...
...
src/gui/UBFeaturesWidget.h
View file @
56eceb66
...
@@ -18,12 +18,15 @@
...
@@ -18,12 +18,15 @@
#include "UBDockPaletteWidget.h"
#include "UBDockPaletteWidget.h"
//#include "UBLibActionBar.h"
//#include "UBLibActionBar.h"
#include "board/UBFeaturesController.h"
#include "board/UBFeaturesController.h"
#include "api/UBWidgetUniboardAPI.h"
#include "UBFeaturesActionBar.h"
#include "UBFeaturesActionBar.h"
#include "UBRubberBand.h"
#define THUMBNAIL_WIDTH 400
#define THUMBNAIL_WIDTH 400
#define ID_LISTVIEW 0
#define ID_LISTVIEW 0
#define ID_PROPERTIES 1
#define ID_PROPERTIES 1
#define ID_WEBVIEW 2
class
UBListModel
;
class
UBListModel
;
...
@@ -37,6 +40,7 @@ class UBFeaturesPathViewer;
...
@@ -37,6 +40,7 @@ class UBFeaturesPathViewer;
class
UBFeatureProperties
;
class
UBFeatureProperties
;
class
UBFeatureItemButton
;
class
UBFeatureItemButton
;
class
UBFeaturesListView
;
class
UBFeaturesListView
;
class
UBFeaturesWebView
;
class
UBFeaturesWidget
:
public
UBDockPaletteWidget
class
UBFeaturesWidget
:
public
UBDockPaletteWidget
{
{
...
@@ -58,6 +62,7 @@ public:
...
@@ -58,6 +62,7 @@ public:
private
:
private
:
void
switchToListView
();
void
switchToListView
();
void
switchToProperties
();
void
switchToProperties
();
void
switchToWebView
();
UBFeaturesController
*
controller
;
UBFeaturesController
*
controller
;
...
@@ -78,7 +83,9 @@ private:
...
@@ -78,7 +83,9 @@ private:
QGraphicsScene
*
pathScene
;
QGraphicsScene
*
pathScene
;
UBFeaturesActionBar
*
mActionBar
;
UBFeaturesActionBar
*
mActionBar
;
UBFeatureProperties
*
featureProperties
;
UBFeatureProperties
*
featureProperties
;
UBFeaturesWebView
*
webView
;
QStackedWidget
*
stackedWidget
;
QStackedWidget
*
stackedWidget
;
int
currentStackedWidget
;
int
currentStackedWidget
;
QModelIndex
trashIndex
;
QModelIndex
trashIndex
;
...
@@ -92,6 +99,8 @@ private slots:
...
@@ -92,6 +99,8 @@ private slots:
void
addToFavorite
(
const
QMimeData
&
);
void
addToFavorite
(
const
QMimeData
&
);
void
removeFromFavorite
(
const
QMimeData
&
);
void
removeFromFavorite
(
const
QMimeData
&
);
void
thumbnailSizeChanged
(
int
);
void
thumbnailSizeChanged
(
int
);
void
onDisplayMetadata
(
QMap
<
QString
,
QString
>
);
void
onAddDownloadedFileToLibrary
(
bool
,
QUrl
,
QString
,
QByteArray
);
protected
:
protected
:
bool
eventFilter
(
QObject
*
target
,
QEvent
*
event
);
bool
eventFilter
(
QObject
*
target
,
QEvent
*
event
);
};
};
...
@@ -105,8 +114,32 @@ public:
...
@@ -105,8 +114,32 @@ public:
protected
:
protected
:
virtual
void
dragEnterEvent
(
QDragEnterEvent
*
event
);
virtual
void
dragEnterEvent
(
QDragEnterEvent
*
event
);
virtual
void
dropEvent
(
QDropEvent
*
event
);
virtual
void
dropEvent
(
QDropEvent
*
event
);
/*virtual void mousePressEvent( QMouseEvent *event );
virtual void mouseMoveEvent( QMouseEvent *event );
virtual void mouseReleaseEvent( QMouseEvent *event );*/
private
:
//UBRubberBand *rubberBand;
//QPoint rubberOrigin;
};
};
class
UBFeaturesWebView
:
public
QWidget
{
Q_OBJECT
public
:
UBFeaturesWebView
(
QWidget
*
parent
=
0
,
const
char
*
name
=
"UBFeaturesWebView"
);
~
UBFeaturesWebView
();
void
showElement
(
const
UBFeature
&
elem
);
private
slots
:
void
onLoadFinished
(
bool
ok
);
private
:
QWebView
*
mpView
;
QWebSettings
*
mpWebSettings
;
QVBoxLayout
*
mpLayout
;
UBWidgetUniboardAPI
*
mpSankoreAPI
;
};
class
UBFeatureProperties
:
public
QWidget
class
UBFeatureProperties
:
public
QWidget
{
{
...
@@ -119,28 +152,31 @@ public:
...
@@ -119,28 +152,31 @@ public:
protected
:
protected
:
//
void resizeEvent(QResizeEvent *event);
void
resizeEvent
(
QResizeEvent
*
event
);
//
void showEvent(QShowEvent *event);
void
showEvent
(
QShowEvent
*
event
);
private
slots
:
private
slots
:
void
onAddToPage
();
void
onAddToPage
();
//
void onAddToLib();
void
onAddToLib
();
//
void onSetAsBackground();
void
onSetAsBackground
();
//void onBack();
//void onBack();
private
:
private
:
void
populateMetadata
();
void
adaptSize
();
QVBoxLayout
*
mpLayout
;
QVBoxLayout
*
mpLayout
;
QHBoxLayout
*
mpButtonLayout
;
QHBoxLayout
*
mpButtonLayout
;
UBFeatureItemButton
*
mpAddPageButton
;
UBFeatureItemButton
*
mpAddPageButton
;
UBFeatureItemButton
*
mpAddToLibButton
;
UBFeatureItemButton
*
mpAddToLibButton
;
UBFeatureItemButton
*
mpSetAsBackgroundButton
;
UBFeatureItemButton
*
mpSetAsBackgroundButton
;
QLabel
*
mpObjInfoLabel
;
QLabel
*
mpObjInfoLabel
;
//
QTreeWidget* mpObjInfos;
QTreeWidget
*
mpObjInfos
;
QLabel
*
mpThumbnail
;
QLabel
*
mpThumbnail
;
QPixmap
*
mpOrigPixmap
;
QPixmap
*
mpOrigPixmap
;
int
maxThumbHeight
;
int
maxThumbHeight
;
UBFeature
*
mpElement
;
UBFeature
*
mpElement
;
//
QTreeWidgetItem* mpItem;
QTreeWidgetItem
*
mpItem
;
};
};
...
@@ -174,7 +210,7 @@ public:
...
@@ -174,7 +210,7 @@ public:
Qt
::
DropActions
supportedDropActions
()
const
{
return
Qt
::
MoveAction
|
Qt
::
CopyAction
;
}
Qt
::
DropActions
supportedDropActions
()
const
{
return
Qt
::
MoveAction
|
Qt
::
CopyAction
;
}
void
setFeaturesList
(
QList
<
UBFeature
>
*
flist
)
{
featuresList
=
flist
;
}
void
setFeaturesList
(
QList
<
UBFeature
>
*
flist
)
{
featuresList
=
flist
;
}
private
:
private
:
QList
<
UBFeature
>
*
featuresList
;
QList
<
UBFeature
>
*
featuresList
;
};
};
...
...
src/gui/UBLibItemProperties.cpp
View file @
56eceb66
...
@@ -18,12 +18,13 @@
...
@@ -18,12 +18,13 @@
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "core/UBDownloadManager.h"
#include "core/UBDownloadManager.h"
#include "core/memcheck.h"
#include "frameworks/UBFileSystemUtils.h"
#include "frameworks/UBFileSystemUtils.h"
#include "globals/UBGlobals.h"
#include "globals/UBGlobals.h"
#include "core/memcheck.h"
/**
/**
* \brief Constructor
* \brief Constructor
...
...
src/gui/UBLibNavigatorWidget.cpp
View file @
56eceb66
...
@@ -16,10 +16,11 @@
...
@@ -16,10 +16,11 @@
#include "UBLibWidget.h"
#include "UBLibWidget.h"
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "core/memcheck.h"
#include "globals/UBGlobals.h"
#include "globals/UBGlobals.h"
#include "core/memcheck.h"
static
int
lowBoundForSlider
=
40
;
static
int
lowBoundForSlider
=
40
;
static
int
topBoundForSlider
=
120
;
static
int
topBoundForSlider
=
120
;
static
int
tickIntervalForSlider
=
10
;
static
int
tickIntervalForSlider
=
10
;
...
...
src/gui/UBLibPathViewer.cpp
View file @
56eceb66
...
@@ -20,10 +20,11 @@
...
@@ -20,10 +20,11 @@
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "board/UBBoardController.h"
#include "board/UBBoardController.h"
#include "core/memcheck.h"
#include "core/UBDownloadManager.h"
#include "core/UBDownloadManager.h"
#include "board/UBBoardPaletteManager.h"
#include "board/UBBoardPaletteManager.h"
#include "core/memcheck.h"
/**
/**
* \brief Constructor
* \brief Constructor
* @param parent as the parent widget
* @param parent as the parent widget
...
...
src/gui/UBLibWebView.cpp
View file @
56eceb66
#include <QDomDocument>
#include <QDomDocument>
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "core/memcheck.h"
#include "board/UBBoardController.h"
#include "board/UBBoardController.h"
...
@@ -9,7 +8,7 @@
...
@@ -9,7 +8,7 @@
#include "UBLibWebView.h"
#include "UBLibWebView.h"
#include "core/memcheck.h"
UBLibWebView
::
UBLibWebView
(
QWidget
*
parent
,
const
char
*
name
)
:
QWidget
(
parent
)
UBLibWebView
::
UBLibWebView
(
QWidget
*
parent
,
const
char
*
name
)
:
QWidget
(
parent
)
,
mpView
(
NULL
)
,
mpView
(
NULL
)
...
...
src/gui/UBLibWidget.cpp
View file @
56eceb66
...
@@ -17,10 +17,11 @@
...
@@ -17,10 +17,11 @@
#include "UBLibWidget.h"
#include "UBLibWidget.h"
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "core/memcheck.h"
#include "globals/UBGlobals.h"
#include "globals/UBGlobals.h"
#include "core/memcheck.h"
/**
/**
* \brief Constructor
* \brief Constructor
* @param parent as the parent widget
* @param parent as the parent widget
...
...
src/gui/UBPageNavigationWidget.cpp
View file @
56eceb66
...
@@ -14,12 +14,13 @@
...
@@ -14,12 +14,13 @@
*/
*/
#include "UBPageNavigationWidget.h"
#include "UBPageNavigationWidget.h"
#include "core/UBApplication.h"
#include "core/UBApplication.h"
#include "core/memcheck.h"
#include "board/UBBoardController.h"
#include "board/UBBoardController.h"
#include "globals/UBGlobals.h"
#include "globals/UBGlobals.h"
#include "core/memcheck.h"
/**
/**
* \brief Constructor
* \brief Constructor
* @param parent as the parent widget
* @param parent as the parent widget
...
...
src/gui/UBTGWidgetTreeDelegate.cpp
View file @
56eceb66
...
@@ -7,6 +7,8 @@
...
@@ -7,6 +7,8 @@
#include <QModelIndex>
#include <QModelIndex>
#include "UBTGWidgetTreeDelegate.h"
#include "UBTGWidgetTreeDelegate.h"
#include "core/memcheck.h"
UBTGWidgetTreeDelegate
::
UBTGWidgetTreeDelegate
(
QObject
*
parent
)
:
UBTGWidgetTreeDelegate
::
UBTGWidgetTreeDelegate
(
QObject
*
parent
)
:
QStyledItemDelegate
(
parent
)
QStyledItemDelegate
(
parent
)
{
{
...
...
src/gui/UBTeacherGuideDelegate.cpp
View file @
56eceb66
#include "UBTeacherGuideDelegate.h"
#include "UBTeacherGuideDelegate.h"
#include "core/memcheck.h"
UBTeacherGuideDelegate
::
UBTeacherGuideDelegate
()
UBTeacherGuideDelegate
::
UBTeacherGuideDelegate
()
{
{
...
...
src/gui/UBTeacherGuideWidget.cpp
View file @
56eceb66
...
@@ -40,6 +40,8 @@
...
@@ -40,6 +40,8 @@
#include "document/UBDocumentProxy.h"
#include "document/UBDocumentProxy.h"
#include "document/UBDocumentController.h"
#include "document/UBDocumentController.h"
#include "core/memcheck.h"
#define UBTG_SEPARATOR_FIXED_HEIGHT 3
#define UBTG_SEPARATOR_FIXED_HEIGHT 3
...
...
src/gui/UBTeacherGuideWidgetsTools.cpp
View file @
56eceb66
...
@@ -32,6 +32,8 @@
...
@@ -32,6 +32,8 @@
#include "frameworks/UBFileSystemUtils.h"
#include "frameworks/UBFileSystemUtils.h"
#include "core/memcheck.h"
/***************************************************************************
/***************************************************************************
* class UBAddItem *
* class UBAddItem *
...
...
src/pdf-merger/CCITTFaxDecode.cpp
View file @
56eceb66
...
@@ -16,6 +16,8 @@
...
@@ -16,6 +16,8 @@
#include <QtGlobal>
#include <QtGlobal>
#include "CCITTFaxDecode.h"
#include "CCITTFaxDecode.h"
#include "core/memcheck.h"
using
namespace
merge_lib
;
using
namespace
merge_lib
;
bool
CCITTFaxDecode
::
encode
(
std
::
string
&
decoded
)
bool
CCITTFaxDecode
::
encode
(
std
::
string
&
decoded
)
...
...
src/pdf-merger/DCTDecode.cpp
View file @
56eceb66
...
@@ -16,6 +16,8 @@
...
@@ -16,6 +16,8 @@
#include <QtGlobal>
#include <QtGlobal>
#include "DCTDecode.h"
#include "DCTDecode.h"
#include "core/memcheck.h"
using
namespace
merge_lib
;
using
namespace
merge_lib
;
bool
DCTDecode
::
encode
(
std
::
string
&
decoded
)
bool
DCTDecode
::
encode
(
std
::
string
&
decoded
)
...
...
src/pdf-merger/JBIG2Decode.cpp
View file @
56eceb66
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
#include <QtGlobal>
#include <QtGlobal>
#include "JBIG2Decode.h"
#include "JBIG2Decode.h"
#include "core/memcheck.h"
using
namespace
merge_lib
;
using
namespace
merge_lib
;
...
...
src/web/UBOEmbedParser.cpp
View file @
56eceb66
...
@@ -24,6 +24,8 @@
...
@@ -24,6 +24,8 @@
#include "UBOEmbedParser.h"
#include "UBOEmbedParser.h"
#include "core/memcheck.h"
UBOEmbedParser
::
UBOEmbedParser
(
QObject
*
parent
,
const
char
*
name
)
UBOEmbedParser
::
UBOEmbedParser
(
QObject
*
parent
,
const
char
*
name
)
{
{
Q_UNUSED
(
parent
);
Q_UNUSED
(
parent
);
...
...
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