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
00ab81e3
Commit
00ab81e3
authored
Feb 25, 2017
by
Craig Watson
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' (1.3.5 release)
parents
602047a8
d8b1dae9
Changes
34
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
3701 additions
and
262 deletions
+3701
-262
OpenBoard.pro
OpenBoard.pro
+1
-1
OpenBoard.iss
release_scripts/windows/OpenBoard.iss
+1
-1
OpenBoard_de.ts
resources/i18n/OpenBoard_de.ts
+75
-75
OpenBoard_eu.ts
resources/i18n/OpenBoard_eu.ts
+3187
-0
UBSvgSubsetAdaptor.cpp
src/adaptors/UBSvgSubsetAdaptor.cpp
+46
-12
UBSvgSubsetAdaptor.h
src/adaptors/UBSvgSubsetAdaptor.h
+2
-0
UBBoardView.cpp
src/board/UBBoardView.cpp
+11
-3
UBApplicationController.cpp
src/core/UBApplicationController.cpp
+7
-1
UBDisplayManager.cpp
src/core/UBDisplayManager.cpp
+1
-1
UBOpenSankoreImporter.cpp
src/core/UBOpenSankoreImporter.cpp
+3
-5
UBPersistenceManager.cpp
src/core/UBPersistenceManager.cpp
+15
-10
UBPersistenceManager.h
src/core/UBPersistenceManager.h
+3
-1
UBSettings.cpp
src/core/UBSettings.cpp
+6
-5
UBSettings.h
src/core/UBSettings.h
+3
-2
UBDesktopAnnotationController.cpp
src/desktop/UBDesktopAnnotationController.cpp
+4
-1
UBDocumentController.cpp
src/document/UBDocumentController.cpp
+6
-4
UBDocumentController.h
src/document/UBDocumentController.h
+2
-1
UBGraphicsGroupContainerItem.cpp
src/domain/UBGraphicsGroupContainerItem.cpp
+4
-1
UBGraphicsMediaItem.cpp
src/domain/UBGraphicsMediaItem.cpp
+6
-0
UBGraphicsMediaItem.h
src/domain/UBGraphicsMediaItem.h
+1
-0
UBGraphicsScene.cpp
src/domain/UBGraphicsScene.cpp
+14
-8
UBGraphicsStrokesGroup.cpp
src/domain/UBGraphicsStrokesGroup.cpp
+7
-4
UBGraphicsTextItem.cpp
src/domain/UBGraphicsTextItem.cpp
+39
-2
UBGraphicsTextItem.h
src/domain/UBGraphicsTextItem.h
+2
-0
UBGraphicsTextItemDelegate.cpp
src/domain/UBGraphicsTextItemDelegate.cpp
+28
-0
UBGraphicsTextItemDelegate.h
src/domain/UBGraphicsTextItemDelegate.h
+1
-0
UBGeometryUtils.cpp
src/frameworks/UBGeometryUtils.cpp
+1
-1
UBDocumentTreeWidget.cpp
src/gui/UBDocumentTreeWidget.cpp
+80
-59
UBDocumentTreeWidget.h
src/gui/UBDocumentTreeWidget.h
+2
-0
UBGraphicsCompass.h
src/tools/UBGraphicsCompass.h
+11
-11
UBGraphicsProtractor.cpp
src/tools/UBGraphicsProtractor.cpp
+8
-5
UBGraphicsProtractor.h
src/tools/UBGraphicsProtractor.h
+1
-0
UBGraphicsTriangle.cpp
src/tools/UBGraphicsTriangle.cpp
+116
-45
UBGraphicsTriangle.h
src/tools/UBGraphicsTriangle.h
+7
-3
No files found.
OpenBoard.pro
View file @
00ab81e3
...
@@ -10,7 +10,7 @@ CONFIG += debug_and_release \
...
@@ -10,7 +10,7 @@ CONFIG += debug_and_release \
VERSION_MAJ
=
1
VERSION_MAJ
=
1
VERSION_MIN
=
3
VERSION_MIN
=
3
VERSION_PATCH
=
4
VERSION_PATCH
=
5
VERSION_TYPE
=
r
#
a
=
alpha
,
b
=
beta
,
rc
=
release
candidate
,
r
=
release
,
other
=>
error
VERSION_TYPE
=
r
#
a
=
alpha
,
b
=
beta
,
rc
=
release
candidate
,
r
=
release
,
other
=>
error
VERSION_BUILD
=
0
VERSION_BUILD
=
0
...
...
release_scripts/windows/OpenBoard.iss
View file @
00ab81e3
...
@@ -119,7 +119,7 @@ Source: "{#QtDir}\plugins\mediaservice\wmfengine.dll"; DestDir: "{app}\mediaserv
...
@@ -119,7 +119,7 @@ Source: "{#QtDir}\plugins\mediaservice\wmfengine.dll"; DestDir: "{app}\mediaserv
Source: "{#QtDir}\plugins\mediaservice\wmfengined.dll"; DestDir: "{app}\mediaservice"; Flags: ignoreversion
Source: "{#QtDir}\plugins\mediaservice\wmfengined.dll"; DestDir: "{app}\mediaservice"; Flags: ignoreversion
;OpenBoardImporter
;OpenBoardImporter
Source: "{#ProjectRoot}\..\OpenBoard-Importer\release\OpenBoardImporter.exe"; DestDir: "{app}
\Importer
"; Flags: ignoreversion
Source: "{#ProjectRoot}\..\OpenBoard-Importer\release\OpenBoardImporter.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "{#QtLibs}\Qt5Core.dll"; DestDir: "{app}"
Source: "{#QtLibs}\Qt5Core.dll"; DestDir: "{app}"
Source: "{#QtLibs}\Qt5Gui.dll"; DestDir: "{app}"
Source: "{#QtLibs}\Qt5Gui.dll"; DestDir: "{app}"
...
...
resources/i18n/OpenBoard_de.ts
View file @
00ab81e3
This diff is collapsed.
Click to expand it.
resources/i18n/OpenBoard_eu.ts
0 → 100644
View file @
00ab81e3
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/adaptors/UBSvgSubsetAdaptor.cpp
View file @
00ab81e3
...
@@ -355,6 +355,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene(UBDocumentProx
...
@@ -355,6 +355,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene(UBDocumentProx
mScene
=
0
;
mScene
=
0
;
UBGraphicsWidgetItem
*
currentWidget
=
0
;
UBGraphicsWidgetItem
*
currentWidget
=
0
;
bool
pageDpiSpecified
=
true
;
bool
pageDpiSpecified
=
true
;
saveSceneAfterLoading
=
false
;
mFileVersion
=
40100
;
// default to 4.1.0
mFileVersion
=
40100
;
// default to 4.1.0
...
@@ -371,6 +372,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene(UBDocumentProx
...
@@ -371,6 +372,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene(UBDocumentProx
if
(
!
mScene
)
if
(
!
mScene
)
{
{
mScene
=
new
UBGraphicsScene
(
mProxy
,
false
);
mScene
=
new
UBGraphicsScene
(
mProxy
,
false
);
mScene
->
setModified
(
false
);
}
}
// introduced in UB 4.2
// introduced in UB 4.2
...
@@ -914,10 +916,11 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene(UBDocumentProx
...
@@ -914,10 +916,11 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene(UBDocumentProx
mScene
->
addItem
(
iterator
.
value
());
mScene
->
addItem
(
iterator
.
value
());
}
}
if
(
mScene
)
if
(
mScene
)
{
mScene
->
setModified
(
false
);
mScene
->
setModified
(
saveSceneAfterLoading
);
mScene
->
enableUndoRedoStack
();
}
mScene
->
enableUndoRedoStack
();
qDebug
()
<<
"loadScene() : created scene and read file"
;
qDebug
()
<<
"loadScene() : created scene and read file"
;
qDebug
()
<<
"spent milliseconds: "
<<
time
.
elapsed
();
qDebug
()
<<
"spent milliseconds: "
<<
time
.
elapsed
();
return
mScene
;
return
mScene
;
...
@@ -1142,11 +1145,6 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(UBDocumentProxy* proxy,
...
@@ -1142,11 +1145,6 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(UBDocumentProxy* proxy,
mXmlWriter
.
writeStartElement
(
"g"
);
mXmlWriter
.
writeStartElement
(
"g"
);
openStroke
=
currentStroke
;
openStroke
=
currentStroke
;
QMatrix
matrix
=
item
->
sceneMatrix
();
if
(
!
matrix
.
isIdentity
())
mXmlWriter
.
writeAttribute
(
"transform"
,
toSvgTransform
(
matrix
));
UBGraphicsStroke
*
stroke
=
dynamic_cast
<
UBGraphicsStroke
*
>
(
currentStroke
);
UBGraphicsStroke
*
stroke
=
dynamic_cast
<
UBGraphicsStroke
*
>
(
currentStroke
);
if
(
stroke
)
if
(
stroke
)
...
@@ -1167,6 +1165,14 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(UBDocumentProxy* proxy,
...
@@ -1167,6 +1165,14 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(UBDocumentProxy* proxy,
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"uuid"
,
UBStringUtils
::
toCanonicalUuid
(
sg
->
uuid
()));
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"uuid"
,
UBStringUtils
::
toCanonicalUuid
(
sg
->
uuid
()));
QVariant
locked
=
sg
->
data
(
UBGraphicsItemData
::
ItemLocked
);
if
(
!
locked
.
isNull
()
&&
locked
.
toBool
())
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"locked"
,
xmlTrue
);
QMatrix
matrix
=
sg
->
sceneMatrix
();
if
(
!
matrix
.
isIdentity
())
mXmlWriter
.
writeAttribute
(
"transform"
,
toSvgTransform
(
matrix
));
qDebug
()
<<
"Attributes written"
;
qDebug
()
<<
"Attributes written"
;
groupHoldsInfo
=
true
;
groupHoldsInfo
=
true
;
...
@@ -1528,7 +1534,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgPolygon(UBGraphicsPo
...
@@ -1528,7 +1534,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgPolygon(UBGraphicsPo
QString
points
=
pointsToSvgPointsAttribute
(
polygon
);
QString
points
=
pointsToSvgPointsAttribute
(
polygon
);
mXmlWriter
.
writeAttribute
(
"points"
,
points
);
mXmlWriter
.
writeAttribute
(
"points"
,
points
);
mXmlWriter
.
writeAttribute
(
"transform"
,
toSvgTransform
(
polygonItem
->
sceneM
atrix
()));
mXmlWriter
.
writeAttribute
(
"transform"
,
toSvgTransform
(
polygonItem
->
m
atrix
()));
mXmlWriter
.
writeAttribute
(
"fill"
,
polygonItem
->
brush
().
color
().
name
());
mXmlWriter
.
writeAttribute
(
"fill"
,
polygonItem
->
brush
().
color
().
name
());
qreal
alpha
=
polygonItem
->
brush
().
color
().
alphaF
();
qreal
alpha
=
polygonItem
->
brush
().
color
().
alphaF
();
...
@@ -1562,9 +1568,9 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgPolygon(UBGraphicsPo
...
@@ -1562,9 +1568,9 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::polygonItemToSvgPolygon(UBGraphicsPo
}
}
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"uuid"
,
UBStringUtils
::
toCanonicalUuid
(
polygonItem
->
uuid
()));
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"uuid"
,
UBStringUtils
::
toCanonicalUuid
(
polygonItem
->
uuid
()));
if
(
polygonItem
->
parentItem
())
{
UBGraphicsStrokesGroup
*
sg
=
polygonItem
->
strokesGroup
();
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"parent"
,
UBStringUtils
::
toCanonicalUuid
(
UBGraphicsItem
::
getOwnUuid
(
polygonItem
->
parentItem
())));
if
(
sg
)
}
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"parent"
,
UBStringUtils
::
toCanonicalUuid
(
sg
->
uuid
()));
mXmlWriter
.
writeEndElement
();
mXmlWriter
.
writeEndElement
();
}
}
...
@@ -2496,6 +2502,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::textItemToSvg(UBGraphicsTextItem* it
...
@@ -2496,6 +2502,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::textItemToSvg(UBGraphicsTextItem* it
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"width"
,
QString
(
"%1"
).
arg
(
item
->
textWidth
()));
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"width"
,
QString
(
"%1"
).
arg
(
item
->
textWidth
()));
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"height"
,
QString
(
"%1"
).
arg
(
item
->
textHeight
()));
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"height"
,
QString
(
"%1"
).
arg
(
item
->
textHeight
()));
mXmlWriter
.
writeAttribute
(
UBSettings
::
uniboardDocumentNamespaceUri
,
"pixels-per-point"
,
QString
(
"%1"
).
arg
(
item
->
pixelsPerPoint
()));
QColor
colorDarkBg
=
item
->
colorOnDarkBackground
();
QColor
colorDarkBg
=
item
->
colorOnDarkBackground
();
QColor
colorLightBg
=
item
->
colorOnLightBackground
();
QColor
colorLightBg
=
item
->
colorOnLightBackground
();
...
@@ -2522,6 +2529,8 @@ UBGraphicsTextItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::textItemFromSvg()
...
@@ -2522,6 +2529,8 @@ UBGraphicsTextItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::textItemFromSvg()
qreal
width
=
mXmlReader
.
attributes
().
value
(
"width"
).
toString
().
toFloat
();
qreal
width
=
mXmlReader
.
attributes
().
value
(
"width"
).
toString
().
toFloat
();
qreal
height
=
mXmlReader
.
attributes
().
value
(
"height"
).
toString
().
toFloat
();
qreal
height
=
mXmlReader
.
attributes
().
value
(
"height"
).
toString
().
toFloat
();
qreal
originalPixelsPerPoint
=
mXmlReader
.
attributes
().
value
(
mNamespaceUri
,
"pixels-per-point"
).
toString
().
toDouble
();
UBGraphicsTextItem
*
textItem
=
new
UBGraphicsTextItem
();
UBGraphicsTextItem
*
textItem
=
new
UBGraphicsTextItem
();
graphicsItemFromSvg
(
textItem
);
graphicsItemFromSvg
(
textItem
);
...
@@ -2564,6 +2573,31 @@ UBGraphicsTextItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::textItemFromSvg()
...
@@ -2564,6 +2573,31 @@ UBGraphicsTextItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::textItemFromSvg()
if
(
mXmlReader
.
name
()
==
"itemTextContent"
)
{
if
(
mXmlReader
.
name
()
==
"itemTextContent"
)
{
text
=
mXmlReader
.
readElementText
();
text
=
mXmlReader
.
readElementText
();
textItem
->
setHtml
(
text
);
textItem
->
setHtml
(
text
);
// Fonts sizes are not displayed the same across platforms: e.g a text item with the same
// font size (in Pts) is displayed smaller on Linux than Windows. This messes up layouts
// when importing documents created on another computer, so if a font is being displayed
// at a different size (relative to the rest of the document) than it was when created,
// we adjust its size.
if
(
originalPixelsPerPoint
!=
0
)
{
qreal
pixelsPerPoint
=
textItem
->
pixelsPerPoint
();
qDebug
()
<<
"Pixels per point: original/current"
<<
originalPixelsPerPoint
<<
"/"
<<
pixelsPerPoint
;
qreal
ratio
=
originalPixelsPerPoint
/
pixelsPerPoint
;
if
(
ratio
!=
1
)
{
qDebug
()
<<
"Scaling text by "
<<
ratio
;
UBGraphicsTextItemDelegate
*
textDelegate
=
dynamic_cast
<
UBGraphicsTextItemDelegate
*>
(
textItem
->
Delegate
());
if
(
textDelegate
)
textDelegate
->
scaleTextSize
(
ratio
);
}
}
else
// mark scene as modified so the text item will be saved with a pixelsPerPoint value
saveSceneAfterLoading
=
true
;
textItem
->
resize
(
width
,
height
);
textItem
->
resize
(
width
,
height
);
if
(
textItem
->
toPlainText
().
isEmpty
())
{
if
(
textItem
->
toPlainText
().
isEmpty
())
{
delete
textItem
;
delete
textItem
;
...
...
src/adaptors/UBSvgSubsetAdaptor.h
View file @
00ab81e3
...
@@ -168,6 +168,8 @@ class UBSvgSubsetAdaptor
...
@@ -168,6 +168,8 @@ class UBSvgSubsetAdaptor
qreal
mGroupZIndex
;
qreal
mGroupZIndex
;
bool
mGroupHasInfo
;
bool
mGroupHasInfo
;
bool
saveSceneAfterLoading
;
QString
mNamespaceUri
;
QString
mNamespaceUri
;
UBGraphicsScene
*
mScene
;
UBGraphicsScene
*
mScene
;
...
...
src/board/UBBoardView.cpp
View file @
00ab81e3
...
@@ -555,6 +555,8 @@ Here we determines cases when items should to get mouse press event at pressing
...
@@ -555,6 +555,8 @@ Here we determines cases when items should to get mouse press event at pressing
return
true
;
return
true
;
case
UBGraphicsMediaItem
:
:
Type
:
case
UBGraphicsMediaItem
:
:
Type
:
case
UBGraphicsVideoItem
:
:
Type
:
case
UBGraphicsAudioItem
:
:
Type
:
return
false
;
return
false
;
case
UBGraphicsTextItem
:
:
Type
:
case
UBGraphicsTextItem
:
:
Type
:
...
@@ -626,6 +628,8 @@ bool UBBoardView::itemShouldReceiveSuspendedMousePressEvent(QGraphicsItem *item)
...
@@ -626,6 +628,8 @@ bool UBBoardView::itemShouldReceiveSuspendedMousePressEvent(QGraphicsItem *item)
case
DelegateButton
:
:
Type
:
case
DelegateButton
:
:
Type
:
case
UBGraphicsMediaItem
:
:
Type
:
case
UBGraphicsMediaItem
:
:
Type
:
case
UBGraphicsVideoItem
:
:
Type
:
case
UBGraphicsAudioItem
:
:
Type
:
return
true
;
return
true
;
}
}
...
@@ -858,6 +862,8 @@ void UBBoardView::moveRubberedItems(QPointF movingVector)
...
@@ -858,6 +862,8 @@ void UBBoardView::moveRubberedItems(QPointF movingVector)
if
(
item
->
type
()
==
UBGraphicsW3CWidgetItem
::
Type
if
(
item
->
type
()
==
UBGraphicsW3CWidgetItem
::
Type
||
item
->
type
()
==
UBGraphicsPixmapItem
::
Type
||
item
->
type
()
==
UBGraphicsPixmapItem
::
Type
||
item
->
type
()
==
UBGraphicsMediaItem
::
Type
||
item
->
type
()
==
UBGraphicsMediaItem
::
Type
||
item
->
type
()
==
UBGraphicsVideoItem
::
Type
||
item
->
type
()
==
UBGraphicsAudioItem
::
Type
||
item
->
type
()
==
UBGraphicsSvgItem
::
Type
||
item
->
type
()
==
UBGraphicsSvgItem
::
Type
||
item
->
type
()
==
UBGraphicsTextItem
::
Type
||
item
->
type
()
==
UBGraphicsTextItem
::
Type
||
item
->
type
()
==
UBGraphicsStrokesGroup
::
Type
||
item
->
type
()
==
UBGraphicsStrokesGroup
::
Type
...
@@ -1170,7 +1176,8 @@ void UBBoardView::mouseMoveEvent (QMouseEvent *event)
...
@@ -1170,7 +1176,8 @@ void UBBoardView::mouseMoveEvent (QMouseEvent *event)
if
(
item
->
type
()
==
UBGraphicsW3CWidgetItem
::
Type
if
(
item
->
type
()
==
UBGraphicsW3CWidgetItem
::
Type
||
item
->
type
()
==
UBGraphicsPixmapItem
::
Type
||
item
->
type
()
==
UBGraphicsPixmapItem
::
Type
||
item
->
type
()
==
UBGraphicsMediaItem
::
Type
||
item
->
type
()
==
UBGraphicsVideoItem
::
Type
||
item
->
type
()
==
UBGraphicsAudioItem
::
Type
||
item
->
type
()
==
UBGraphicsSvgItem
::
Type
||
item
->
type
()
==
UBGraphicsSvgItem
::
Type
||
item
->
type
()
==
UBGraphicsTextItem
::
Type
||
item
->
type
()
==
UBGraphicsTextItem
::
Type
||
item
->
type
()
==
UBGraphicsStrokesGroup
::
Type
||
item
->
type
()
==
UBGraphicsStrokesGroup
::
Type
...
@@ -1328,6 +1335,7 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event)
...
@@ -1328,6 +1335,7 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event)
textItem
->
setTextInteractionFlags
(
Qt
::
TextEditorInteraction
);
textItem
->
setTextInteractionFlags
(
Qt
::
TextEditorInteraction
);
textItem
->
setSelected
(
true
);
textItem
->
setSelected
(
true
);
textItem
->
setTextWidth
(
0
);
textItem
->
setFocus
();
textItem
->
setFocus
();
}
}
}
}
...
@@ -1597,9 +1605,9 @@ void UBBoardView::drawBackground (QPainter *painter, const QRectF &rect)
...
@@ -1597,9 +1605,9 @@ void UBBoardView::drawBackground (QPainter *painter, const QRectF &rect)
QColor
bgCrossColor
;
QColor
bgCrossColor
;
if
(
darkBackground
)
if
(
darkBackground
)
bgCrossColor
=
UBSettings
::
crossDarkBackground
;
bgCrossColor
=
QColor
(
UBSettings
::
settings
()
->
boardCrossColorDarkBackground
->
get
().
toString
())
;
else
else
bgCrossColor
=
UBSettings
::
crossLightBackground
;
bgCrossColor
=
QColor
(
UBSettings
::
settings
()
->
boardCrossColorLightBackground
->
get
().
toString
())
;
if
(
transform
().
m11
()
<
1.0
)
if
(
transform
().
m11
()
<
1.0
)
{
{
...
...
src/core/UBApplicationController.cpp
View file @
00ab81e3
...
@@ -658,7 +658,6 @@ void UBApplicationController::closing()
...
@@ -658,7 +658,6 @@ void UBApplicationController::closing()
if
(
mUninoteController
)
if
(
mUninoteController
)
{
{
mUninoteController
->
hideWindow
();
mUninoteController
->
close
();
mUninoteController
->
close
();
}
}
...
@@ -721,6 +720,13 @@ void UBApplicationController::importFile(const QString& pFilePath)
...
@@ -721,6 +720,13 @@ void UBApplicationController::importFile(const QString& pFilePath)
void
UBApplicationController
::
useMultiScreen
(
bool
use
)
void
UBApplicationController
::
useMultiScreen
(
bool
use
)
{
{
if
(
use
&&
!
mMirror
)
mMirror
=
new
UBScreenMirror
();
if
(
!
use
&&
mMirror
)
{
delete
mMirror
;
mMirror
=
NULL
;
}
mDisplayManager
->
setUseMultiScreen
(
use
);
mDisplayManager
->
setUseMultiScreen
(
use
);
mDisplayManager
->
adjustScreens
(
0
);
mDisplayManager
->
adjustScreens
(
0
);
UBSettings
::
settings
()
->
appUseMultiscreen
->
set
(
use
);
UBSettings
::
settings
()
->
appUseMultiscreen
->
set
(
use
);
...
...
src/core/UBDisplayManager.cpp
View file @
00ab81e3
...
@@ -55,7 +55,7 @@ UBDisplayManager::UBDisplayManager(QObject *parent)
...
@@ -55,7 +55,7 @@ UBDisplayManager::UBDisplayManager(QObject *parent)
{
{
mDesktop
=
qApp
->
desktop
();
mDesktop
=
qApp
->
desktop
();
mUseMultiScreen
=
true
;
mUseMultiScreen
=
UBSettings
::
settings
()
->
appUseMultiscreen
->
get
().
toBool
()
;
initScreenIndexes
();
initScreenIndexes
();
...
...
src/core/UBOpenSankoreImporter.cpp
View file @
00ab81e3
...
@@ -56,11 +56,9 @@ void UBOpenSankoreImporter::onProceedClicked()
...
@@ -56,11 +56,9 @@ void UBOpenSankoreImporter::onProceedClicked()
newProcess
.
startDetached
(
qApp
->
applicationDirPath
()
+
"/importer/OpenBoardImporter"
);
newProcess
.
startDetached
(
qApp
->
applicationDirPath
()
+
"/importer/OpenBoardImporter"
);
#elif defined Q_OS_OSX
#elif defined Q_OS_OSX
newProcess
.
startDetached
(
qApp
->
applicationDirPath
()
+
"/../Resources/OpenBoardImporter.app/Contents/MacOS/OpenBoardImporter"
);
newProcess
.
startDetached
(
qApp
->
applicationDirPath
()
+
"/../Resources/OpenBoardImporter.app/Contents/MacOS/OpenBoardImporter"
);
#else
#elif defined Q_OS_WIN
// Windows does not allows to run easily an exe located in a subdirectory when the main
QString
importerPath
=
QDir
::
toNativeSeparators
(
qApp
->
applicationDirPath
())
+
"
\\
OpenBoardImporter.exe"
;
// directory is placed into programs files.
newProcess
.
startDetached
(
"explorer.exe"
,
QStringList
()
<<
importerPath
);
//newProcess.startDetached(qApp->applicationDirPath()+"\\Importer\\OpenBoardImporter.exe");
newProcess
.
startDetached
(
"C:/OpenBoard/Importer/OpenBoardImporter.exe"
);
#endif
#endif
qApp
->
exit
(
0
);
qApp
->
exit
(
0
);
...
...
src/core/UBPersistenceManager.cpp
View file @
00ab81e3
...
@@ -67,6 +67,7 @@ UBPersistenceManager * UBPersistenceManager::sSingleton = 0;
...
@@ -67,6 +67,7 @@ UBPersistenceManager * UBPersistenceManager::sSingleton = 0;
UBPersistenceManager
::
UBPersistenceManager
(
QObject
*
pParent
)
UBPersistenceManager
::
UBPersistenceManager
(
QObject
*
pParent
)
:
QObject
(
pParent
)
:
QObject
(
pParent
)
,
mHasPurgedDocuments
(
false
)
,
mHasPurgedDocuments
(
false
)
,
mIsApplicationClosing
(
false
)
,
mIsWorkerFinished
(
false
)
,
mIsWorkerFinished
(
false
)
{
{
...
@@ -131,8 +132,10 @@ void UBPersistenceManager::destroy()
...
@@ -131,8 +132,10 @@ void UBPersistenceManager::destroy()
void
UBPersistenceManager
::
onScenePersisted
(
UBGraphicsScene
*
scene
)
void
UBPersistenceManager
::
onScenePersisted
(
UBGraphicsScene
*
scene
)
{
{
delete
scene
;
if
(
!
mIsApplicationClosing
)
{
scene
=
NULL
;
delete
scene
;
scene
=
NULL
;
}
}
}
void
UBPersistenceManager
::
onMetadataPersisted
(
UBDocumentProxy
*
proxy
)
void
UBPersistenceManager
::
onMetadataPersisted
(
UBDocumentProxy
*
proxy
)
...
@@ -147,6 +150,8 @@ void UBPersistenceManager::onWorkerFinished()
...
@@ -147,6 +150,8 @@ void UBPersistenceManager::onWorkerFinished()
UBPersistenceManager
::~
UBPersistenceManager
()
UBPersistenceManager
::~
UBPersistenceManager
()
{
{
mIsApplicationClosing
=
true
;
if
(
mWorker
)
if
(
mWorker
)
mWorker
->
applicationWillClose
();
mWorker
->
applicationWillClose
();
...
@@ -483,7 +488,7 @@ void UBPersistenceManager::deleteDocumentScenes(UBDocumentProxy* proxy, const QL
...
@@ -483,7 +488,7 @@ void UBPersistenceManager::deleteDocumentScenes(UBDocumentProxy* proxy, const QL
foreach
(
int
index
,
compactedIndexes
)
foreach
(
int
index
,
compactedIndexes
)
{
{
UBGraphicsScene
*
scene
=
loadDocumentScene
(
proxy
,
index
);
UBGraphicsScene
*
scene
=
loadDocumentScene
(
proxy
,
index
,
false
);
if
(
scene
)
if
(
scene
)
{
{
//scene is about to move into new document
//scene is about to move into new document
...
@@ -727,7 +732,7 @@ void UBPersistenceManager::moveSceneToIndex(UBDocumentProxy* proxy, int source,
...
@@ -727,7 +732,7 @@ void UBPersistenceManager::moveSceneToIndex(UBDocumentProxy* proxy, int source,
}
}
UBGraphicsScene
*
UBPersistenceManager
::
loadDocumentScene
(
UBDocumentProxy
*
proxy
,
int
sceneIndex
)
UBGraphicsScene
*
UBPersistenceManager
::
loadDocumentScene
(
UBDocumentProxy
*
proxy
,
int
sceneIndex
,
bool
cacheNeighboringScenes
)
{
{
UBGraphicsScene
*
scene
=
NULL
;
UBGraphicsScene
*
scene
=
NULL
;
...
@@ -740,11 +745,13 @@ UBGraphicsScene* UBPersistenceManager::loadDocumentScene(UBDocumentProxy* proxy,
...
@@ -740,11 +745,13 @@ UBGraphicsScene* UBPersistenceManager::loadDocumentScene(UBDocumentProxy* proxy,
mSceneCache
.
insert
(
proxy
,
sceneIndex
,
scene
);
mSceneCache
.
insert
(
proxy
,
sceneIndex
,
scene
);
}
}
if
(
sceneIndex
+
1
<
proxy
->
pageCount
()
&&
!
mSceneCache
.
contains
(
proxy
,
sceneIndex
+
1
))
if
(
cacheNeighboringScenes
)
{
mWorker
->
readScene
(
proxy
,
sceneIndex
+
1
);
if
(
sceneIndex
+
1
<
proxy
->
pageCount
()
&&
!
mSceneCache
.
contains
(
proxy
,
sceneIndex
+
1
))
mWorker
->
readScene
(
proxy
,
sceneIndex
+
1
);
if
(
sceneIndex
-
1
>=
0
&&
!
mSceneCache
.
contains
(
proxy
,
sceneIndex
-
1
))
if
(
sceneIndex
-
1
>=
0
&&
!
mSceneCache
.
contains
(
proxy
,
sceneIndex
-
1
))
mWorker
->
readScene
(
proxy
,
sceneIndex
-
1
);
mWorker
->
readScene
(
proxy
,
sceneIndex
-
1
);
}
return
scene
;
return
scene
;
}
}
...
@@ -941,7 +948,6 @@ bool UBPersistenceManager::isEmpty(UBDocumentProxy* pDocumentProxy)
...
@@ -941,7 +948,6 @@ bool UBPersistenceManager::isEmpty(UBDocumentProxy* pDocumentProxy)
empty
=
theSoleScene
->
isEmpty
();
empty
=
theSoleScene
->
isEmpty
();
if
(
empty
){
if
(
empty
){
mSceneCache
.
removeScene
(
pDocumentProxy
,
0
);
mSceneCache
.
removeScene
(
pDocumentProxy
,
0
);
delete
theSoleScene
;
theSoleScene
=
NULL
;
theSoleScene
=
NULL
;
}
}
else
{
else
{
...
@@ -958,7 +964,6 @@ bool UBPersistenceManager::isEmpty(UBDocumentProxy* pDocumentProxy)
...
@@ -958,7 +964,6 @@ bool UBPersistenceManager::isEmpty(UBDocumentProxy* pDocumentProxy)
}
}
if
(
!
usefulItemFound
){
if
(
!
usefulItemFound
){
mSceneCache
.
removeScene
(
pDocumentProxy
,
0
);
mSceneCache
.
removeScene
(
pDocumentProxy
,
0
);
delete
theSoleScene
;
theSoleScene
=
NULL
;
theSoleScene
=
NULL
;
empty
=
true
;
empty
=
true
;
}
}
...
...
src/core/UBPersistenceManager.h
View file @
00ab81e3
...
@@ -85,7 +85,7 @@ class UBPersistenceManager : public QObject
...
@@ -85,7 +85,7 @@ class UBPersistenceManager : public QObject
virtual
void
moveSceneToIndex
(
UBDocumentProxy
*
pDocumentProxy
,
int
source
,
int
target
);
virtual
void
moveSceneToIndex
(
UBDocumentProxy
*
pDocumentProxy
,
int
source
,
int
target
);
virtual
UBGraphicsScene
*
loadDocumentScene
(
UBDocumentProxy
*
pDocumentProxy
,
int
sceneIndex
);
virtual
UBGraphicsScene
*
loadDocumentScene
(
UBDocumentProxy
*
pDocumentProxy
,
int
sceneIndex
,
bool
cacheNeighboringScenes
=
true
);
UBGraphicsScene
*
getDocumentScene
(
UBDocumentProxy
*
pDocumentProxy
,
int
sceneIndex
)
{
return
mSceneCache
.
value
(
pDocumentProxy
,
sceneIndex
);}
UBGraphicsScene
*
getDocumentScene
(
UBDocumentProxy
*
pDocumentProxy
,
int
sceneIndex
)
{
return
mSceneCache
.
value
(
pDocumentProxy
,
sceneIndex
);}
QList
<
QPointer
<
UBDocumentProxy
>
>
documentProxies
;
QList
<
QPointer
<
UBDocumentProxy
>
>
documentProxies
;
...
@@ -157,6 +157,8 @@ class UBPersistenceManager : public QObject
...
@@ -157,6 +157,8 @@ class UBPersistenceManager : public QObject
QThread
*
mThread
;
QThread
*
mThread
;
bool
mIsWorkerFinished
;
bool
mIsWorkerFinished
;
bool
mIsApplicationClosing
;
private
slots
:
private
slots
:
void
documentRepositoryChanged
(
const
QString
&
path
);
void
documentRepositoryChanged
(
const
QString
&
path
);
void
errorString
(
QString
error
);
void
errorString
(
QString
error
);
...
...
src/core/UBSettings.cpp
View file @
00ab81e3
...
@@ -71,17 +71,14 @@ const char *UBSettings::sDefaultFontFamily = "Arial";
...
@@ -71,17 +71,14 @@ const char *UBSettings::sDefaultFontFamily = "Arial";
QString
UBSettings
::
currentFileVersion
=
"4.8.0"
;
QString
UBSettings
::
currentFileVersion
=
"4.8.0"
;
QColor
UBSettings
::
crossDarkBackground
=
QColor
(
44
,
44
,
44
,
200
);
QColor
UBSettings
::
crossLightBackground
=
QColor
(
165
,
225
,
255
);
QBrush
UBSettings
::
eraserBrushDarkBackground
=
QBrush
(
QColor
(
127
,
127
,
127
,
80
));
QBrush
UBSettings
::
eraserBrushDarkBackground
=
QBrush
(
QColor
(
127
,
127
,
127
,
80
));
QBrush
UBSettings
::
eraserBrushLightBackground
=
QBrush
(
QColor
(
255
,
255
,
255
,
30
));
QBrush
UBSettings
::
eraserBrushLightBackground
=
QBrush
(
QColor
(
255
,
255
,
255
,
30
));
QPen
UBSettings
::
eraserPenDarkBackground
=
QPen
(
QColor
(
255
,
255
,
255
,
127
));
QPen
UBSettings
::
eraserPenDarkBackground
=
QPen
(
QColor
(
255
,
255
,
255
,
127
));
QPen
UBSettings
::
eraserPenLightBackground
=
QPen
(
QColor
(
0
,
0
,
0
,
127
));
QPen
UBSettings
::
eraserPenLightBackground
=
QPen
(
QColor
(
0
,
0
,
0
,
127
));
QColor
UBSettings
::
markerCircleBrushColorDarkBackground
=
QColor
(
127
,
127
,
127
,
0
);
QColor
UBSettings
::
markerCircleBrushColorDarkBackground
=
QColor
(
127
,
127
,
127
,
8
0
);
QColor
UBSettings
::
markerCircleBrushColorLightBackground
=
QColor
(
255
,
255
,
255
,
0
);
QColor
UBSettings
::
markerCircleBrushColorLightBackground
=
QColor
(
255
,
255
,
255
,
3
0
);
QColor
UBSettings
::
markerCirclePenColorDarkBackground
=
QColor
(
255
,
255
,
255
,
127
);
QColor
UBSettings
::
markerCirclePenColorDarkBackground
=
QColor
(
255
,
255
,
255
,
127
);
QColor
UBSettings
::
markerCirclePenColorLightBackground
=
QColor
(
0
,
0
,
0
,
127
);
QColor
UBSettings
::
markerCirclePenColorLightBackground
=
QColor
(
0
,
0
,
0
,
127
);
...
@@ -272,6 +269,10 @@ void UBSettings::init()
...
@@ -272,6 +269,10 @@ void UBSettings::init()
pageSize
=
new
UBSetting
(
this
,
"Board"
,
"DefaultPageSize"
,
documentSizes
.
value
(
DocumentSizeRatio
::
Ratio4_3
));
pageSize
=
new
UBSetting
(
this
,
"Board"
,
"DefaultPageSize"
,
documentSizes
.
value
(
DocumentSizeRatio
::
Ratio4_3
));
boardCrossColorDarkBackground
=
new
UBSetting
(
this
,
"Board"
,
"CrossColorDarkBackground"
,
"#C82C2C2C"
);
boardCrossColorLightBackground
=
new
UBSetting
(
this
,
"Board"
,
"CrossColorLightBackground"
,
"#A5E1FF"
);
QStringList
penLightBackgroundColors
;
QStringList
penLightBackgroundColors
;
penLightBackgroundColors
<<
"#000000"
<<
"#FF0000"
<<
"#004080"
<<
"#008000"
<<
"#FFDD00"
<<
"#C87400"
<<
"#800040"
<<
"#008080"
<<
"#5F2D0A"
<<
"#FFFFFF"
;
penLightBackgroundColors
<<
"#000000"
<<
"#FF0000"
<<
"#004080"
<<
"#008000"
<<
"#FFDD00"
<<
"#C87400"
<<
"#800040"
<<
"#008080"
<<
"#5F2D0A"
<<
"#FFFFFF"
;
boardPenLightBackgroundColors
=
new
UBColorListSetting
(
this
,
"Board"
,
"PenLightBackgroundColors"
,
penLightBackgroundColors
,
1.0
);
boardPenLightBackgroundColors
=
new
UBColorListSetting
(
this
,
"Board"
,
"PenLightBackgroundColors"
,
penLightBackgroundColors
,
1.0
);
...
...
src/core/UBSettings.h
View file @
00ab81e3
...
@@ -160,8 +160,6 @@ class UBSettings : public QObject
...
@@ -160,8 +160,6 @@ class UBSettings : public QObject
static
int
pointerDiameter
;
static
int
pointerDiameter
;
static
int
boardMargin
;
static
int
boardMargin
;
static
QColor
crossDarkBackground
;
static
QColor
crossLightBackground
;
static
QColor
paletteColor
;
static
QColor
paletteColor
;
static
QColor
opaquePaletteColor
;
static
QColor
opaquePaletteColor
;
...
@@ -275,6 +273,9 @@ class UBSettings : public QObject
...
@@ -275,6 +273,9 @@ class UBSettings : public QObject
UBSetting
*
featureSliderPosition
;
UBSetting
*
featureSliderPosition
;
UBSetting
*
boardCrossColorDarkBackground
;
UBSetting
*
boardCrossColorLightBackground
;
UBColorListSetting
*
boardPenLightBackgroundColors
;
UBColorListSetting
*
boardPenLightBackgroundColors
;
UBColorListSetting
*
boardPenLightBackgroundSelectedColors
;
UBColorListSetting
*
boardPenLightBackgroundSelectedColors
;
...
...
src/desktop/UBDesktopAnnotationController.cpp
View file @
00ab81e3
...
@@ -354,7 +354,10 @@ void UBDesktopAnnotationController::showWindow()
...
@@ -354,7 +354,10 @@ void UBDesktopAnnotationController::showWindow()
void
UBDesktopAnnotationController
::
close
()
void
UBDesktopAnnotationController
::
close
()
{
{
// NOOP
if
(
mTransparentDrawingView
)
mTransparentDrawingView
->
hide
();
mDesktopPalette
->
hide
();
}
}
...
...
src/document/UBDocumentController.cpp
View file @
00ab81e3
...
@@ -805,10 +805,12 @@ void UBDocumentController::deleteTreeItem(QTreeWidgetItem * item, bool showConfi
...
@@ -805,10 +805,12 @@ void UBDocumentController::deleteTreeItem(QTreeWidgetItem * item, bool showConfi
document
->
parent
()
->
removeChild
(
document
);
document
->
parent
()
->
removeChild
(
document
);
UBPersistenceManager
::
persistenceManager
()
->
deleteDocument
(
document
->
proxy
());
UBPersistenceManager
::
persistenceManager
()
->
deleteDocument
(
document
->
proxy
());
if
(
mTrashTi
->
childCount
()
==
0
)
if
(
selectNewDocument
)
{
selectDocument
(
NULL
);
if
(
mTrashTi
->
childCount
()
==
0
)
else
selectDocument
(
NULL
);
selectDocument
(((
UBDocumentProxyTreeItem
*
)
mTrashTi
->
child
(
0
))
->
proxy
());
else
selectDocument
(((
UBDocumentProxyTreeItem
*
)
mTrashTi
->
child
(
0
))
->
proxy
());
}
reloadThumbnails
();
reloadThumbnails
();
}
}
...
...
src/document/UBDocumentController.h
View file @
00ab81e3
...
@@ -55,6 +55,8 @@ class UBDocumentController : public UBDocumentContainer
...
@@ -55,6 +55,8 @@ class UBDocumentController : public UBDocumentContainer
{
{
Q_OBJECT
Q_OBJECT
friend
class
UBDocumentTreeWidget
;
public
:
public
:
UBDocumentController
(
UBMainWindow
*
mainWindow
);
UBDocumentController
(
UBMainWindow
*
mainWindow
);
virtual
~
UBDocumentController
();
virtual
~
UBDocumentController
();
...
@@ -163,5 +165,4 @@ class UBDocumentController : public UBDocumentContainer
...
@@ -163,5 +165,4 @@ class UBDocumentController : public UBDocumentContainer
};
};
#endif
/* UBDOCUMENTCONTROLLER_H_ */
#endif
/* UBDOCUMENTCONTROLLER_H_ */
src/domain/UBGraphicsGroupContainerItem.cpp
View file @
00ab81e3
...
@@ -162,7 +162,10 @@ void UBGraphicsGroupContainerItem::removeFromGroup(QGraphicsItem *item)
...
@@ -162,7 +162,10 @@ void UBGraphicsGroupContainerItem::removeFromGroup(QGraphicsItem *item)
void
UBGraphicsGroupContainerItem
::
deselectCurrentItem
()
void
UBGraphicsGroupContainerItem
::
deselectCurrentItem
()
{
{
if
(
mCurrentItem
&&
mCurrentItem
->
type
()
==
UBGraphicsMediaItem
::
Type
){
if
(
mCurrentItem
&&
(
mCurrentItem
->
type
()
==
UBGraphicsMediaItem
::
Type
||
mCurrentItem
->
type
()
==
UBGraphicsVideoItem
::
Type
||
mCurrentItem
->
type
()
==
UBGraphicsAudioItem
::
Type
))
{
dynamic_cast
<
UBGraphicsMediaItem
*>
(
mCurrentItem
)
->
Delegate
()
->
getToolBarItem
()
->
hide
();
dynamic_cast
<
UBGraphicsMediaItem
*>
(
mCurrentItem
)
->
Delegate
()
->
getToolBarItem
()
->
hide
();
mCurrentItem
->
setSelected
(
false
);
mCurrentItem
->
setSelected
(
false
);
...
...
src/domain/UBGraphicsMediaItem.cpp
View file @
00ab81e3
...
@@ -252,6 +252,12 @@ void UBGraphicsMediaItem::setMinimumSize(const QSize& size)
...
@@ -252,6 +252,12 @@ void UBGraphicsMediaItem::setMinimumSize(const QSize& size)
this
->
setSize
(
width
,
height
);
this
->
setSize
(
width
,
height
);
}
}
void
UBGraphicsMediaItem
::
setUuid
(
const
QUuid
&
pUuid
)
{
UBItem
::
setUuid
(
pUuid
);
setData
(
UBGraphicsItemData
::
ItemUuid
,
QVariant
(
pUuid
));
}
void
UBGraphicsMediaItem
::
setMediaFileUrl
(
QUrl
url
)
void
UBGraphicsMediaItem
::
setMediaFileUrl
(
QUrl
url
)
{
{
mMediaFileUrl
=
url
;
mMediaFileUrl
=
url
;
...
...
src/domain/UBGraphicsMediaItem.h
View file @
00ab81e3
...
@@ -100,6 +100,7 @@ public:
...
@@ -100,6 +100,7 @@ public:
virtual
void
setSourceUrl
(
const
QUrl
&
pSourceUrl
);
virtual
void
setSourceUrl
(
const
QUrl
&
pSourceUrl
);
void
setSelected
(
bool
selected
);
void
setSelected
(
bool
selected
);
void
setMinimumSize
(
const
QSize
&
size
);
void
setMinimumSize
(
const
QSize
&
size
);
void
setUuid
(
const
QUuid
&
pUuid
);
virtual
void
copyItemParameters
(
UBItem
*
copy
)
const
;
virtual
void
copyItemParameters
(
UBItem
*
copy
)
const
;
...
...
src/domain/UBGraphicsScene.cpp
View file @
00ab81e3
...
@@ -1178,15 +1178,22 @@ UBGraphicsScene* UBGraphicsScene::sceneDeepCopy() const
...
@@ -1178,15 +1178,22 @@ UBGraphicsScene* UBGraphicsScene::sceneDeepCopy() const
UBGraphicsGroupContainerItem
*
groupCloned
=
group
->
deepCopyNoChildDuplication
();
UBGraphicsGroupContainerItem
*
groupCloned
=
group
->
deepCopyNoChildDuplication
();
groupCloned
->
resetMatrix
();
groupCloned
->
resetMatrix
();
groupCloned
->
resetTransform
();
groupCloned
->
resetTransform
();
groupCloned
->
set
Matrix
(
group
->
matrix
()
);
groupCloned
->
set
Pos
(
0
,
0
);
groupCloned
->
setTransform
(
group
->
transform
()
);
bool
locked
=
groupCloned
->
Delegate
()
->
isLocked
(
);
foreach
(
QGraphicsItem
*
eachItem
,
group
->
childItems
()){
foreach
(
QGraphicsItem
*
eachItem
,
group
->
childItems
()){
QGraphicsItem
*
copiedChild
=
dynamic_cast
<
QGraphicsItem
*>
(
dynamic_cast
<
UBItem
*>
(
eachItem
)
->
deepCopy
());
QGraphicsItem
*
copiedChild
=
dynamic_cast
<
QGraphicsItem
*>
(
dynamic_cast
<
UBItem
*>
(
eachItem
)
->
deepCopy
());
copy
->
addItem
(
copiedChild
);
copy
->
addItem
(
copiedChild
);
groupCloned
->
addToGroup
(
copiedChild
);
groupCloned
->
addToGroup
(
copiedChild
);
}
}
if
(
locked
)
groupCloned
->
setData
(
UBGraphicsItemData
::
ItemLocked
,
QVariant
(
true
));
copy
->
addItem
(
groupCloned
);
copy
->
addItem
(
groupCloned
);
groupCloned
->
setMatrix
(
group
->
matrix
());
groupCloned
->
setTransform
(
QTransform
::
fromTranslate
(
group
->
pos
().
x
(),
group
->
pos
().
y
()));
groupCloned
->
setTransform
(
group
->
transform
(),
true
);
}
}
if
(
ubItem
&&
!
stroke
&&
!
group
&&
item
->
isVisible
())
if
(
ubItem
&&
!
stroke
&&
!
group
&&
item
->
isVisible
())
...
@@ -2391,9 +2398,9 @@ void UBGraphicsScene::drawBackground(QPainter *painter, const QRectF &rect)
...
@@ -2391,9 +2398,9 @@ void UBGraphicsScene::drawBackground(QPainter *painter, const QRectF &rect)
QColor
bgCrossColor
;
QColor
bgCrossColor
;
if
(
darkBackground
)
if
(
darkBackground
)
bgCrossColor
=
UBSettings
::
crossDarkBackground
;
bgCrossColor
=
QColor
(
UBSettings
::
settings
()
->
boardCrossColorDarkBackground
->
get
().
toString
())
;
else
else
bgCrossColor
=
UBSettings
::
crossLightBackground
;
bgCrossColor
=
QColor
(
UBSettings
::
settings
()
->
boardCrossColorLightBackground
->
get
().
toString
())
;
if
(
mZoomFactor
<
1.0
)
if
(
mZoomFactor
<
1.0
)
{
{
int
alpha
=
255
*
mZoomFactor
/
2
;
int
alpha
=
255
*
mZoomFactor
/
2
;
...
@@ -2608,20 +2615,19 @@ void UBGraphicsScene::updateMarkerCircleColor()
...
@@ -2608,20 +2615,19 @@ void UBGraphicsScene::updateMarkerCircleColor()
if
(
!
mMarkerCircle
)
if
(
!
mMarkerCircle
)
return
;
return
;
QBrush
mcBrush
=
mMarkerCircle
->
brush
();
QPen
mcPen
=
mMarkerCircle
->
pen
();
QPen
mcPen
=
mMarkerCircle
->
pen
();
if
(
mDarkBackground
)
{
if
(
mDarkBackground
)
{
mcBrush
.
setColor
(
UBSettings
::
markerCircleBrushColorDarkBackground
);
mcPen
.
setColor
(
UBSettings
::
markerCirclePenColorDarkBackground
);
mcPen
.
setColor
(
UBSettings
::
markerCirclePenColorDarkBackground
);
mMarkerCircle
->
setBrush
(
UBSettings
::
markerCircleBrushColorDarkBackground
);
}
}
else
{
else
{
mcBrush
.
setColor
(
UBSettings
::
markerCircleBrushColorLightBackground
);
mcPen
.
setColor
(
UBSettings
::
markerCirclePenColorLightBackground
);
mcPen
.
setColor
(
UBSettings
::
markerCirclePenColorLightBackground
);
mMarkerCircle
->
setBrush
(
UBSettings
::
markerCircleBrushColorLightBackground
);
}
}
m
MarkerCircle
->
setBrush
(
mcBrush
);
m
cPen
.
setStyle
(
Qt
::
DotLine
);
mMarkerCircle
->
setPen
(
mcPen
);
mMarkerCircle
->
setPen
(
mcPen
);
}
}
...
...
src/domain/UBGraphicsStrokesGroup.cpp
View file @
00ab81e3
...
@@ -128,10 +128,12 @@ void UBGraphicsStrokesGroup::mousePressEvent(QGraphicsSceneMouseEvent *event)
...
@@ -128,10 +128,12 @@ void UBGraphicsStrokesGroup::mousePressEvent(QGraphicsSceneMouseEvent *event)
void
UBGraphicsStrokesGroup
::
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
)
void
UBGraphicsStrokesGroup
::
mouseMoveEvent
(
QGraphicsSceneMouseEvent
*
event
)
{
{
QGraphicsItemGroup
::
mouseMoveEvent
(
event
);
if
(
!
isLocked
(
this
))
{
QGraphicsItemGroup
::
mouseMoveEvent
(
event
);
event
->
accept
();
event
->
accept
();
setSelected
(
false
);
setSelected
(
false
);
}
}
}
void
UBGraphicsStrokesGroup
::
mouseReleaseEvent
(
QGraphicsSceneMouseEvent
*
event
)
void
UBGraphicsStrokesGroup
::
mouseReleaseEvent
(
QGraphicsSceneMouseEvent
*
event
)
...
@@ -173,7 +175,7 @@ UBItem* UBGraphicsStrokesGroup::deepCopy() const
...
@@ -173,7 +175,7 @@ UBItem* UBGraphicsStrokesGroup::deepCopy() const
}
}
}
}
const_cast
<
UBGraphicsStrokesGroup
*>
(
this
)
->
setTransform
(
groupTransform
);
const_cast
<
UBGraphicsStrokesGroup
*>
(
this
)
->
setTransform
(
groupTransform
);
copy
->
setTransform
(
sceneTransform
()
);
copy
->
setTransform
(
groupTransform
);
return
copy
;
return
copy
;
}
}
...
@@ -184,6 +186,7 @@ void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const
...
@@ -184,6 +186,7 @@ void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const
if
(
NULL
!=
cp
)
if
(
NULL
!=
cp
)
{
{
cp
->
setTransform
(
transform
());
cp
->
setTransform
(
transform
());
cp
->
setPos
(
pos
());
cp
->
setFlag
(
QGraphicsItem
::
ItemIsMovable
,
true
);
cp
->
setFlag
(
QGraphicsItem
::
ItemIsMovable
,
true
);
cp
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
cp
->
setFlag
(
QGraphicsItem
::
ItemIsSelectable
,
true
);
...
...
src/domain/UBGraphicsTextItem.cpp
View file @
00ab81e3
...
@@ -306,8 +306,12 @@ QPainterPath UBGraphicsTextItem::shape() const
...
@@ -306,8 +306,12 @@ QPainterPath UBGraphicsTextItem::shape() const
void
UBGraphicsTextItem
::
setTextWidth
(
qreal
width
)
void
UBGraphicsTextItem
::
setTextWidth
(
qreal
width
)
{
{
qreal
strictMin
=
155
;
// the size of the font customization panel
qreal
titleBarWidth
=
0
;
qreal
newWidth
=
qMax
(
strictMin
,
width
);
UBGraphicsTextItemDelegate
*
del
=
dynamic_cast
<
UBGraphicsTextItemDelegate
*>
(
Delegate
());
if
(
del
)
titleBarWidth
=
del
->
titleBarWidth
();
qreal
newWidth
=
qMax
(
titleBarWidth
,
width
);
QGraphicsTextItem
::
setTextWidth
(
newWidth
);
QGraphicsTextItem
::
setTextWidth
(
newWidth
);
}
}
...
@@ -328,6 +332,39 @@ qreal UBGraphicsTextItem::textHeight() const
...
@@ -328,6 +332,39 @@ qreal UBGraphicsTextItem::textHeight() const
return
mTextHeight
;
return
mTextHeight
;
}
}
/**
* @brief Get the ratio between font size in pixels and points.
* @return The ratio of pixel size to point size of the first character, or 0 if the text item is empty.
*
* Qt may display fonts differently on different platforms -- on the same display,
* the same point size may be displayed at different pixel sizes. This function returns the
* ratio of pixel size to point size, based on the first character in the text item.
*/
qreal
UBGraphicsTextItem
::
pixelsPerPoint
()
const
{
QTextCursor
cursor
=
textCursor
();
if
(
cursor
.
isNull
())
return
0
;
cursor
.
movePosition
(
QTextCursor
::
Start
,
QTextCursor
::
MoveAnchor
);
cursor
.
movePosition
(
QTextCursor
::
NextCharacter
,
QTextCursor
::
KeepAnchor
);
QFont
f
=
cursor
.
charFormat
().
font
();
qDebug
()
<<
"ppp. Font: "
<<
f
;
QFontInfo
fi
(
cursor
.
charFormat
().
font
());
qreal
pixelSize
=
fi
.
pixelSize
();
qreal
pointSize
=
fi
.
pointSizeF
();
//qDebug() << "Pixel size: " << pixelSize;
//qDebug() << "Point size: " << pointSize;
if
(
pointSize
==
0
)
return
0
;
return
pixelSize
/
pointSize
;
}
void
UBGraphicsTextItem
::
contentsChanged
()
void
UBGraphicsTextItem
::
contentsChanged
()
{
{
...
...
src/domain/UBGraphicsTextItem.h
View file @
00ab81e3
...
@@ -65,6 +65,7 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes
...
@@ -65,6 +65,7 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes
void
setTextWidth
(
qreal
width
);
void
setTextWidth
(
qreal
width
);
void
setTextHeight
(
qreal
height
);
void
setTextHeight
(
qreal
height
);
qreal
textHeight
()
const
;
qreal
textHeight
()
const
;
qreal
pixelsPerPoint
()
const
;
void
contentsChanged
();
void
contentsChanged
();
...
@@ -101,6 +102,7 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes
...
@@ -101,6 +102,7 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes
QString
mTypeTextHereLabel
;
QString
mTypeTextHereLabel
;
signals
:
signals
:
void
textUndoCommandAdded
(
UBGraphicsTextItem
*
textItem
);
void
textUndoCommandAdded
(
UBGraphicsTextItem
*
textItem
);
...
...
src/domain/UBGraphicsTextItemDelegate.cpp
View file @
00ab81e3
...
@@ -204,6 +204,31 @@ void UBGraphicsTextItemDelegate::createControls()
...
@@ -204,6 +204,31 @@ void UBGraphicsTextItemDelegate::createControls()
}
}
/**
* @brief Calculate the width of the toolbar containing the text item-related buttons
* @return The space between the left-most and right-most buttons in pixels
*/
qreal
UBGraphicsTextItemDelegate
::
titleBarWidth
()
{
if
(
!
mFontButton
)
return
0
;
// refresh the frame and buttons' positions
positionHandles
();
qreal
titleBarWidth
(
0
);
qreal
frameLeftCoordinate
=
mFontButton
->
pos
().
x
();
qreal
frameRightCoordinate
=
frameLeftCoordinate
;
foreach
(
DelegateButton
*
button
,
mButtons
)
{
if
(
button
->
getSection
()
==
Qt
::
TitleBarArea
)
{
frameLeftCoordinate
=
qMin
(
button
->
pos
().
x
(),
frameLeftCoordinate
);
frameRightCoordinate
=
qMax
(
button
->
pos
().
x
()
+
button
->
boundingRect
().
width
(),
frameRightCoordinate
);
}
}
return
frameRightCoordinate
-
frameLeftCoordinate
;
}
void
UBGraphicsTextItemDelegate
::
freeButtons
()
void
UBGraphicsTextItemDelegate
::
freeButtons
()
{
{
...
@@ -532,6 +557,9 @@ bool UBGraphicsTextItemDelegate::keyReleaseEvent(QKeyEvent *event)
...
@@ -532,6 +557,9 @@ bool UBGraphicsTextItemDelegate::keyReleaseEvent(QKeyEvent *event)
void
UBGraphicsTextItemDelegate
::
ChangeTextSize
(
qreal
factor
,
textChangeMode
changeMode
)
void
UBGraphicsTextItemDelegate
::
ChangeTextSize
(
qreal
factor
,
textChangeMode
changeMode
)
{
{
// round it to the nearest hundredth
factor
=
floor
(
factor
*
100
+
0.5
)
/
100.
;
if
(
scaleSize
==
changeMode
)
if
(
scaleSize
==
changeMode
)
{
{
if
(
1
==
factor
)
if
(
1
==
factor
)
...
...
src/domain/UBGraphicsTextItemDelegate.h
View file @
00ab81e3
...
@@ -114,6 +114,7 @@ class UBGraphicsTextItemDelegate : public UBGraphicsItemDelegate
...
@@ -114,6 +114,7 @@ class UBGraphicsTextItemDelegate : public UBGraphicsItemDelegate
void
scaleTextSize
(
qreal
multiplyer
);
void
scaleTextSize
(
qreal
multiplyer
);
virtual
QVariant
itemChange
(
QGraphicsItem
::
GraphicsItemChange
change
,
const
QVariant
&
value
);
virtual
QVariant
itemChange
(
QGraphicsItem
::
GraphicsItemChange
change
,
const
QVariant
&
value
);
virtual
void
createControls
();
virtual
void
createControls
();
qreal
titleBarWidth
();
public
slots
:
public
slots
:
void
contentsChanged
();
void
contentsChanged
();
...
...
src/frameworks/UBGeometryUtils.cpp
View file @
00ab81e3
...
@@ -188,7 +188,7 @@ QPolygonF UBGeometryUtils::arcToPolygon(const QLineF& startRadius, qreal spanAng
...
@@ -188,7 +188,7 @@ QPolygonF UBGeometryUtils::arcToPolygon(const QLineF& startRadius, qreal spanAng
qreal
radiusLength
=
startRadius
.
length
();
qreal
radiusLength
=
startRadius
.
length
();
qreal
angle
=
2
*
asin
(
width
/
(
2
*
radiusLength
))
*
180
/
PI
;
qreal
angle
=
2
*
asin
(
width
/
(
2
*
radiusLength
))
*
180
/
PI
;
bool
overlap
=
a
bs
(
spanAngleInDegrees
)
>
360
-
angle
;
bool
overlap
=
qA
bs
(
spanAngleInDegrees
)
>
360
-
angle
;
if
(
overlap
)
if
(
overlap
)
spanAngleInDegrees
=
spanAngleInDegrees
<
0
?
-
360
:
360
;
spanAngleInDegrees
=
spanAngleInDegrees
<
0
?
-
360
:
360
;
...
...
src/gui/UBDocumentTreeWidget.cpp
View file @
00ab81e3
...
@@ -214,79 +214,39 @@ void UBDocumentTreeWidget::focusInEvent(QFocusEvent *event)
...
@@ -214,79 +214,39 @@ void UBDocumentTreeWidget::focusInEvent(QFocusEvent *event)
QTreeWidget
::
focusInEvent
(
event
);
QTreeWidget
::
focusInEvent
(
event
);
}
}
void
UBDocumentTreeWidget
::
dropEvent
(
QDropEvent
*
event
)
void
UBDocumentTreeWidget
::
dropEvent
(
QDropEvent
*
event
)
{
{
if
(
mDropTargetProxyTi
)
if
(
mDropTargetProxyTi
)
{
{
mDropTargetProxyTi
->
setBackground
(
0
,
mBackground
);
mDropTargetProxyTi
->
setBackground
(
0
,
mBackground
);
mDropTargetProxyTi
=
0
;
mDropTargetProxyTi
=
0
;
}
}
QTreeWidgetItem
*
underlyingItem
=
this
->
itemAt
(
event
->
pos
());
QTreeWidgetItem
*
underlyingItem
=
this
->
itemAt
(
event
->
pos
());
UBDocumentGroupTreeItem
*
groupItem
=
dynamic_cast
<
UBDocumentGroupTreeItem
*>
(
underlyingItem
);
if
(
groupItem
&&
mSelectedProxyTi
&&
mSelectedProxyTi
->
proxy
())
{
UBDocumentGroupTreeItem
*
sourceGroupItem
=
dynamic_cast
<
UBDocumentGroupTreeItem
*>
(
mSelectedProxyTi
->
parent
());
bool
isTrashItem
=
sourceGroupItem
&&
sourceGroupItem
->
isTrashFolder
();
if
((
isTrashItem
&&
!
groupItem
->
isTrashFolder
())
||
(
!
isTrashItem
&&
mSelectedProxyTi
->
proxy
()
->
groupName
()
!=
groupItem
->
groupName
()))
{
QString
groupName
;
if
(
groupItem
->
isTrashFolder
())
{
QString
oldGroupName
=
mSelectedProxyTi
->
proxy
()
->
metaData
(
UBSettings
::
documentGroupName
).
toString
();
groupName
=
UBSettings
::
trashedDocumentGroupNamePrefix
+
oldGroupName
;
}
else
{
if
(
groupItem
->
groupName
()
==
UBApplication
::
app
()
->
documentController
->
defaultDocumentGroupName
())
groupName
=
""
;
else
groupName
=
groupItem
->
groupName
();
}
mSelectedProxyTi
->
proxy
()
->
setMetaData
(
UBSettings
::
documentGroupName
,
groupName
);
UBPersistenceManager
::
persistenceManager
()
->
persistDocumentMetadata
(
mSelectedProxyTi
->
proxy
());
mSelectedProxyTi
->
parent
()
->
removeChild
(
mSelectedProxyTi
);
// If the destination is a folder, move the selected document(s) there
UBDocumentGroupTreeItem
*
destinationFolder
=
dynamic_cast
<
UBDocumentGroupTreeItem
*>
(
underlyingItem
);
int
i
=
0
;
if
(
destinationFolder
)
{
for
(
i
=
0
;
i
<
groupItem
->
childCount
();
i
++
)
UBDocumentProxyTreeItem
*
lastMovedDocument
;
{
foreach
(
QTreeWidgetItem
*
item
,
this
->
selectedItems
())
{
QTreeWidgetItem
*
ti
=
groupItem
->
child
(
i
);
UBDocumentProxyTreeItem
*
document
=
dynamic_cast
<
UBDocumentProxyTreeItem
*>
(
item
);
UBDocumentProxyTreeItem
*
pi
=
dynamic_cast
<
UBDocumentProxyTreeItem
*>
(
ti
);
if
(
document
&&
moveDocument
(
document
,
destinationFolder
))
if
(
pi
)
lastMovedDocument
=
document
;
{
}
if
(
mSelectedProxyTi
->
proxy
()
->
metaData
(
UBSettings
::
documentDate
).
toString
()
>=
pi
->
proxy
()
->
metaData
(
UBSettings
::
documentDate
).
toString
())
{
break
;
}
}
}
groupItem
->
insertChild
(
i
,
mSelectedProxyTi
);
if
(
isTrashItem
)
mSelectedProxyTi
->
setFlags
(
mSelectedProxyTi
->
flags
()
|
Qt
::
ItemIsEditable
);
if
(
groupItem
->
isTrashFolder
())
mSelectedProxyTi
->
setFlags
(
mSelectedProxyTi
->
flags
()
^
Qt
::
ItemIsEditable
);
expandItem
(
groupItem
);
scrollToItem
(
mSelectedProxyTi
);
// disabled, as those 2 calls are buggy on windows, the item disappears if we selected them
if
(
lastMovedDocument
)
{
//
expandItem
(
destinationFolder
);
setCurrentItem
(
mSelectedProxyTi
);
scrollToItem
(
lastMovedDocument
);
mSelectedProxyTi
->
setSelected
(
true
);
setCurrentItem
(
lastMovedDocument
);
lastMovedDocument
->
setSelected
(
true
);
event
->
setDropAction
(
Qt
::
IgnoreAction
);
event
->
setDropAction
(
Qt
::
IgnoreAction
);
event
->
accept
();
event
->
accept
();
}
}
}
}
else
{
// If the destination is a document and the dropped item is a page, copy the page to that document
else
{
QTreeWidgetItem
*
underlyingTreeItem
=
this
->
itemAt
(
event
->
pos
());
QTreeWidgetItem
*
underlyingTreeItem
=
this
->
itemAt
(
event
->
pos
());
UBDocumentProxyTreeItem
*
targetProxyTreeItem
=
dynamic_cast
<
UBDocumentProxyTreeItem
*>
(
underlyingTreeItem
);
UBDocumentProxyTreeItem
*
targetProxyTreeItem
=
dynamic_cast
<
UBDocumentProxyTreeItem
*>
(
underlyingTreeItem
);
...
@@ -393,6 +353,67 @@ void UBDocumentTreeWidget::documentUpdated(UBDocumentProxy *pDocument)
...
@@ -393,6 +353,67 @@ void UBDocumentTreeWidget::documentUpdated(UBDocumentProxy *pDocument)
}
}
}
}
/**
* @brief Move a document to the specified destination folder
* @param document Pointer to the document to move
* @param destinationFolder Pointer to the folder to move the document to
* @return true if document was moved successfully, false otherwise
*/
bool
UBDocumentTreeWidget
::
moveDocument
(
UBDocumentProxyTreeItem
*
document
,
UBDocumentGroupTreeItem
*
destinationFolder
)
{
if
(
!
document
||
!
(
document
->
proxy
())
||
!
destinationFolder
)
return
false
;
UBDocumentGroupTreeItem
*
sourceFolder
=
dynamic_cast
<
UBDocumentGroupTreeItem
*>
(
document
->
parent
());
bool
documentIsInTrash
=
(
sourceFolder
&&
sourceFolder
->
isTrashFolder
());
if
(
documentIsInTrash
&&
destinationFolder
->
isTrashFolder
())
return
false
;
if
(
!
documentIsInTrash
&&
document
->
proxy
()
->
groupName
()
==
destinationFolder
->
groupName
())
return
false
;
QString
destinationFolderName
;
if
(
destinationFolder
->
isTrashFolder
())
{
UBApplication
::
app
()
->
documentController
->
moveDocumentToTrash
(
sourceFolder
,
document
,
true
);
destinationFolderName
=
document
->
proxy
()
->
metaData
(
UBSettings
::
documentGroupName
).
toString
();
}
else
{
if
(
destinationFolder
->
groupName
()
==
UBApplication
::
app
()
->
documentController
->
defaultDocumentGroupName
())
destinationFolderName
=
""
;
else
destinationFolderName
=
destinationFolder
->
groupName
();
}
// Update the folder name in the document
document
->
proxy
()
->
setMetaData
(
UBSettings
::
documentGroupName
,
destinationFolderName
);
UBPersistenceManager
::
persistenceManager
()
->
persistDocumentMetadata
(
document
->
proxy
());
// Remove document from its old folder
document
->
parent
()
->
removeChild
(
document
);
// Insert document at the right spot in the destination folder (ordered by document date)
int
i
=
0
;
for
(
i
=
0
;
i
<
destinationFolder
->
childCount
();
i
++
)
{
QTreeWidgetItem
*
ti
=
destinationFolder
->
child
(
i
);
UBDocumentProxyTreeItem
*
pi
=
dynamic_cast
<
UBDocumentProxyTreeItem
*>
(
ti
);
if
(
pi
&&
document
->
proxy
()
->
metaData
(
UBSettings
::
documentDate
).
toString
()
>=
pi
->
proxy
()
->
metaData
(
UBSettings
::
documentDate
).
toString
())
break
;
}
destinationFolder
->
insertChild
(
i
,
document
);
// Update editable status of the document if it was moved to or from the trash
if
(
documentIsInTrash
)
document
->
setFlags
(
document
->
flags
()
|
Qt
::
ItemIsEditable
);
if
(
destinationFolder
->
isTrashFolder
())
document
->
setFlags
(
document
->
flags
()
^
Qt
::
ItemIsEditable
);
return
true
;
}
UBDocumentProxyTreeItem
::
UBDocumentProxyTreeItem
(
QTreeWidgetItem
*
parent
,
UBDocumentProxy
*
proxy
,
bool
isEditable
)
UBDocumentProxyTreeItem
::
UBDocumentProxyTreeItem
(
QTreeWidgetItem
*
parent
,
UBDocumentProxy
*
proxy
,
bool
isEditable
)
:
QTreeWidgetItem
()
:
QTreeWidgetItem
()
...
...
src/gui/UBDocumentTreeWidget.h
View file @
00ab81e3
...
@@ -35,6 +35,7 @@
...
@@ -35,6 +35,7 @@
class
UBDocumentProxy
;
class
UBDocumentProxy
;
class
UBDocumentProxyTreeItem
;
class
UBDocumentProxyTreeItem
;
class
UBDocumentGroupTreeItem
;
class
UBDocumentTreeWidget
:
public
QTreeWidget
class
UBDocumentTreeWidget
:
public
QTreeWidget
{
{
...
@@ -60,6 +61,7 @@ class UBDocumentTreeWidget : public QTreeWidget
...
@@ -60,6 +61,7 @@ class UBDocumentTreeWidget : public QTreeWidget
void
autoScroll
();
void
autoScroll
();
private
:
private
:
bool
moveDocument
(
UBDocumentProxyTreeItem
*
document
,
UBDocumentGroupTreeItem
*
destinationFolder
);
UBDocumentProxyTreeItem
*
mSelectedProxyTi
;
UBDocumentProxyTreeItem
*
mSelectedProxyTi
;
QTreeWidgetItem
*
mDropTargetProxyTi
;
QTreeWidgetItem
*
mDropTargetProxyTi
;
QBrush
mBackground
;
QBrush
mBackground
;
...
...
src/tools/UBGraphicsCompass.h
View file @
00ab81e3
...
@@ -126,25 +126,25 @@ class UBGraphicsCompass: public QObject, public QGraphicsRectItem, public UBItem
...
@@ -126,25 +126,25 @@ class UBGraphicsCompass: public QObject, public QGraphicsRectItem, public UBItem
int
mPixelsPerMillimeter
;
int
mPixelsPerMillimeter
;
// Constants
// Constants
static
const
int
sNeedleLength
=
1
8
;
static
const
int
sNeedleLength
=
1
2
;
static
const
int
sNeedleWidth
=
3
;
static
const
int
sNeedleWidth
=
3
;
static
const
int
sNeedleBaseLength
=
12
;
static
const
int
sNeedleBaseLength
=
9
;
static
const
int
sNeedleBaseWidth
=
12
;
static
const
int
sNeedleBaseWidth
=
9
;
static
const
int
sNeedleArmLeftWidth
=
1
8
;
static
const
int
sNeedleArmLeftWidth
=
1
2
;
static
const
int
sNeedleArmRigthWidth
=
24
;
static
const
int
sNeedleArmRigthWidth
=
16
;
static
const
int
sPencilLength
=
12
;
static
const
int
sPencilLength
=
12
;
static
const
int
sPencilWidth
=
3
;
static
const
int
sPencilWidth
=
2
;
static
const
int
sPencilBaseLength
=
18
;
static
const
int
sPencilBaseLength
=
9
;
static
const
int
sPencilBaseWidth
=
12
;
static
const
int
sPencilBaseWidth
=
9
;
static
const
int
sPencilArmLeftWidth
=
24
;
static
const
int
sPencilArmLeftWidth
=
16
;
static
const
int
sPencilArmRightWidth
=
1
8
;
static
const
int
sPencilArmRightWidth
=
1
2
;
static
const
int
sCornerRadius
=
3
;
static
const
int
sCornerRadius
=
2
;
static
const
QRect
sDefaultRect
;
static
const
QRect
sDefaultRect
;
static
const
int
sMinRadius
;
static
const
int
sMinRadius
;
...
...
src/tools/UBGraphicsProtractor.cpp
View file @
00ab81e3
...
@@ -41,6 +41,7 @@
...
@@ -41,6 +41,7 @@
const
QRectF
UBGraphicsProtractor
::
sDefaultRect
=
QRectF
(
-
250
,
-
250
,
500
,
500
);
const
QRectF
UBGraphicsProtractor
::
sDefaultRect
=
QRectF
(
-
250
,
-
250
,
500
,
500
);
const
qreal
UBGraphicsProtractor
::
minRadius
=
70
;
UBGraphicsProtractor
::
UBGraphicsProtractor
()
UBGraphicsProtractor
::
UBGraphicsProtractor
()
:
QGraphicsEllipseItem
(
sDefaultRect
)
:
QGraphicsEllipseItem
(
sDefaultRect
)
...
@@ -213,11 +214,13 @@ void UBGraphicsProtractor::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
...
@@ -213,11 +214,13 @@ void UBGraphicsProtractor::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
case
Resize
:
case
Resize
:
prepareGeometryChange
();
if
(
radius
()
*
mScaleFactor
*
scaleFactor
>
minRadius
)
{
setTransform
(
QTransform
::
fromTranslate
(
rect
().
center
().
x
(),
rect
().
center
().
y
()),
true
);
prepareGeometryChange
();
setTransform
(
QTransform
::
fromScale
(
scaleFactor
,
scaleFactor
),
true
);
setTransform
(
QTransform
::
fromTranslate
(
rect
().
center
().
x
(),
rect
().
center
().
y
()),
true
);
setTransform
(
QTransform
::
fromTranslate
(
-
rect
().
center
().
x
(),
-
rect
().
center
().
y
()),
true
);
setTransform
(
QTransform
::
fromScale
(
scaleFactor
,
scaleFactor
),
true
);
mScaleFactor
*=
scaleFactor
;
setTransform
(
QTransform
::
fromTranslate
(
-
rect
().
center
().
x
(),
-
rect
().
center
().
y
()),
true
);
mScaleFactor
*=
scaleFactor
;
}
break
;
break
;
case
MoveMarker
:
case
MoveMarker
:
...
...
src/tools/UBGraphicsProtractor.h
View file @
00ab81e3
...
@@ -119,6 +119,7 @@ class UBGraphicsProtractor : public UBAbstractDrawRuler, public QGraphicsEllipse
...
@@ -119,6 +119,7 @@ class UBGraphicsProtractor : public UBAbstractDrawRuler, public QGraphicsEllipse
QGraphicsSvgItem
*
mRotateSvgItem
;
QGraphicsSvgItem
*
mRotateSvgItem
;
static
const
QRectF
sDefaultRect
;
static
const
QRectF
sDefaultRect
;
static
const
qreal
minRadius
;
virtual
void
rotateAroundCenter
(
qreal
angle
);
virtual
void
rotateAroundCenter
(
qreal
angle
);
virtual
QPointF
rotationCenter
()
const
;
virtual
QPointF
rotationCenter
()
const
;
...
...
src/tools/UBGraphicsTriangle.cpp
View file @
00ab81e3
...
@@ -49,6 +49,7 @@ UBGraphicsTriangle::UBGraphicsTriangle()
...
@@ -49,6 +49,7 @@ UBGraphicsTriangle::UBGraphicsTriangle()
,
mResizing1
(
false
)
,
mResizing1
(
false
)
,
mResizing2
(
false
)
,
mResizing2
(
false
)
,
mRotating
(
false
)
,
mRotating
(
false
)
,
mShouldPaintInnerTriangle
(
true
)
{
{
setRect
(
sDefaultRect
,
sDefaultOrientation
);
setRect
(
sDefaultRect
,
sDefaultOrientation
);
...
@@ -224,6 +225,29 @@ void UBGraphicsTriangle::calculatePoints(const QRectF& r)
...
@@ -224,6 +225,29 @@ void UBGraphicsTriangle::calculatePoints(const QRectF& r)
C2
.
setX
(
r
.
left
()
+
L
);
C2
.
setY
(
r
.
bottom
()
-
d
);
C2
.
setX
(
r
.
left
()
+
L
);
C2
.
setY
(
r
.
bottom
()
-
d
);
break
;
break
;
}
}
bool
paintInnerTriangle
=
true
;
switch
(
mOrientation
)
{
case
BottomLeft
:
if
(
B2
.
x
()
>
C2
.
x
()
||
B2
.
y
()
<
A2
.
y
())
paintInnerTriangle
=
false
;
break
;
case
TopLeft
:
if
(
B2
.
x
()
>
C2
.
x
()
||
B2
.
y
()
>
A2
.
y
())
paintInnerTriangle
=
false
;
break
;
case
TopRight
:
if
(
B2
.
x
()
<
C2
.
x
()
||
B2
.
y
()
>
A2
.
y
())
paintInnerTriangle
=
false
;
break
;
case
BottomRight
:
if
(
B2
.
x
()
<
C2
.
x
()
||
B2
.
y
()
<
A2
.
y
())
paintInnerTriangle
=
false
;
break
;
}
mShouldPaintInnerTriangle
=
paintInnerTriangle
;
W1
=
rect
().
height
()
*
d
/
C
;
W1
=
rect
().
height
()
*
d
/
C
;
H1
=
rect
().
width
()
*
d
/
C
;
H1
=
rect
().
width
()
*
d
/
C
;
...
@@ -251,40 +275,54 @@ void UBGraphicsTriangle::paint(QPainter *painter, const QStyleOptionGraphicsItem
...
@@ -251,40 +275,54 @@ void UBGraphicsTriangle::paint(QPainter *painter, const QStyleOptionGraphicsItem
QPolygonF
polygon
;
QPolygonF
polygon
;
QLinearGradient
gradient1
(
QPointF
(
A1
.
x
(),
0
),
QPointF
(
A2
.
x
(),
0
));
if
(
mShouldPaintInnerTriangle
)
{
gradient1
.
setColorAt
(
0
,
edgeFillColor
());
QLinearGradient
gradient1
(
QPointF
(
A1
.
x
(),
0
),
QPointF
(
A2
.
x
(),
0
));
gradient1
.
setColorAt
(
1
,
middleFillColor
());
gradient1
.
setColorAt
(
0
,
edgeFillColor
());
painter
->
setBrush
(
gradient1
);
gradient1
.
setColorAt
(
1
,
middleFillColor
());
polygon
<<
A1
<<
A2
<<
B2
<<
B1
;
painter
->
setBrush
(
gradient1
);
painter
->
drawPolygon
(
polygon
);
polygon
<<
A1
<<
A2
<<
B2
<<
B1
;
polygon
.
clear
();
painter
->
drawPolygon
(
polygon
);
polygon
.
clear
();
QLinearGradient
gradient2
(
QPointF
(
0
,
B1
.
y
()),
QPointF
(
0
,
B2
.
y
()));
gradient2
.
setColorAt
(
0
,
edgeFillColor
());
QLinearGradient
gradient2
(
QPointF
(
0
,
B1
.
y
()),
QPointF
(
0
,
B2
.
y
()));
gradient2
.
setColorAt
(
1
,
middleFillColor
());
gradient2
.
setColorAt
(
0
,
edgeFillColor
());
painter
->
setBrush
(
gradient2
);
gradient2
.
setColorAt
(
1
,
middleFillColor
());
polygon
<<
B1
<<
B2
<<
C2
<<
C1
;
painter
->
setBrush
(
gradient2
);
painter
->
drawPolygon
(
polygon
);
polygon
<<
B1
<<
B2
<<
C2
<<
C1
;
polygon
.
clear
();
painter
->
drawPolygon
(
polygon
);
polygon
.
clear
();
QLinearGradient
gradient3
(
CC
,
C2
);
gradient3
.
setColorAt
(
0
,
edgeFillColor
());
QLinearGradient
gradient3
(
CC
,
C2
);
gradient3
.
setColorAt
(
1
,
middleFillColor
());
gradient3
.
setColorAt
(
0
,
edgeFillColor
());
painter
->
setBrush
(
gradient3
);
gradient3
.
setColorAt
(
1
,
middleFillColor
());
polygon
<<
C1
<<
C2
<<
A2
<<
A1
;
painter
->
setBrush
(
gradient3
);
painter
->
drawPolygon
(
polygon
);
polygon
<<
C1
<<
C2
<<
A2
<<
A1
;
polygon
.
clear
();
painter
->
drawPolygon
(
polygon
);
polygon
.
clear
();
painter
->
setBrush
(
Qt
::
NoBrush
);
painter
->
setPen
(
drawColor
());
painter
->
setBrush
(
Qt
::
NoBrush
);
painter
->
setPen
(
drawColor
());
polygon
<<
A1
<<
B1
<<
C1
;
painter
->
drawPolygon
(
polygon
);
polygon
.
clear
();
polygon
<<
A2
<<
B2
<<
C2
;
painter
->
drawPolygon
(
polygon
);
}
polygon
<<
A1
<<
B1
<<
C1
;
else
{
painter
->
drawPolygon
(
polygon
);
QLinearGradient
gradient
(
QPointF
(
A1
.
x
(),
0
),
QPointF
(
C1
.
x
(),
0
));
polygon
.
clear
();
gradient
.
setColorAt
(
0
,
edgeFillColor
());
gradient
.
setColorAt
(
1
,
middleFillColor
());
painter
->
setBrush
(
gradient
);
painter
->
setPen
(
drawColor
());
polygon
<<
A1
<<
B1
<<
C1
;
painter
->
drawPolygon
(
polygon
);
polygon
.
clear
();
}
polygon
<<
A2
<<
B2
<<
C2
;
painter
->
drawPolygon
(
polygon
);
paintGraduations
(
painter
);
paintGraduations
(
painter
);
...
@@ -329,9 +367,11 @@ QPainterPath UBGraphicsTriangle::shape() const
...
@@ -329,9 +367,11 @@ QPainterPath UBGraphicsTriangle::shape() const
tShape
.
addPolygon
(
tPolygon
);
tShape
.
addPolygon
(
tPolygon
);
tPolygon
.
clear
();
tPolygon
.
clear
();
tPolygon
<<
A2
<<
B2
<<
C2
;
if
(
mShouldPaintInnerTriangle
)
{
tShape
.
addPolygon
(
tPolygon
);
tPolygon
<<
A2
<<
B2
<<
C2
;
tPolygon
.
clear
();
tShape
.
addPolygon
(
tPolygon
);
tPolygon
.
clear
();
}
//qDebug() << "UBGraphicsTriangle shape()"<<"A1 ="<<A1<<"B1 ="<<B1<<"C1 ="<<C1;
//qDebug() << "UBGraphicsTriangle shape()"<<"A1 ="<<A1<<"B1 ="<<B1<<"C1 ="<<C1;
//qDebug() << "UBGraphicsTriangle shape()"<<"A2 ="<<A2<<"B2 ="<<B2<<"C2 ="<<C2;
//qDebug() << "UBGraphicsTriangle shape()"<<"A2 ="<<A2<<"B2 ="<<B2<<"C2 ="<<C2;
...
@@ -592,19 +632,21 @@ QRectF UBGraphicsTriangle::vFlipRect() const
...
@@ -592,19 +632,21 @@ QRectF UBGraphicsTriangle::vFlipRect() const
QRectF
UBGraphicsTriangle
::
rotateRect
()
const
QRectF
UBGraphicsTriangle
::
rotateRect
()
const
{
{
QPointF
p
(
C2
);
QPointF
p
(
C2
);
qreal
buttonsX
=
vFlipRect
().
left
();
switch
(
mOrientation
)
switch
(
mOrientation
)
{
{
case
BottomLeft
:
case
BottomLeft
:
p
+=
QPointF
(
20
,
5
);
p
=
QPointF
(
qMax
(
p
.
x
()
+
20
,
buttonsX
),
p
.
y
()
+
5
);
break
;
break
;
case
TopLeft
:
case
TopLeft
:
p
+=
QPointF
(
20
,
-
5
-
mRotateSvgItem
->
boundingRect
().
height
());
p
=
QPointF
(
qMax
(
p
.
x
()
+
20
,
buttonsX
),
p
.
y
()
-
5
-
mRotateSvgItem
->
boundingRect
().
height
());
break
;
break
;
case
TopRight
:
case
TopRight
:
p
+=
QPointF
(
-
20
-
mRotateSvgItem
->
boundingRect
().
width
(),
-
5
-
mRotateSvgItem
->
boundingRect
().
height
());
p
=
QPointF
(
qMin
(
p
.
x
()
-
20
-
mRotateSvgItem
->
boundingRect
().
width
(),
buttonsX
),
p
.
y
()
-
5
-
mRotateSvgItem
->
boundingRect
().
height
());
break
;
break
;
case
BottomRight
:
case
BottomRight
:
p
+=
QPointF
(
-
20
-
mRotateSvgItem
->
boundingRect
().
width
(),
5
);
p
=
QPointF
(
qMin
(
p
.
x
()
-
20
-
mRotateSvgItem
->
boundingRect
().
width
(),
buttonsX
),
p
.
y
()
+
5
);
break
;
break
;
}
}
return
QRectF
(
p
,
QSizeF
(
mRotateSvgItem
->
boundingRect
().
size
()));
return
QRectF
(
p
,
QSizeF
(
mRotateSvgItem
->
boundingRect
().
size
()));
...
@@ -806,9 +848,9 @@ void UBGraphicsTriangle::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
...
@@ -806,9 +848,9 @@ void UBGraphicsTriangle::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
mShowButtons
=
true
;
mShowButtons
=
true
;
mCloseSvgItem
->
setVisible
(
true
);
mCloseSvgItem
->
setVisible
(
true
);
mHFlipSvgItem
->
setVisible
(
true
);
mHFlipSvgItem
->
setVisible
(
contains
(
hFlipRect
())
);
mVFlipSvgItem
->
setVisible
(
true
);
mVFlipSvgItem
->
setVisible
(
contains
(
vFlipRect
())
);
mRotateSvgItem
->
setVisible
(
true
);
mRotateSvgItem
->
setVisible
(
contains
(
rotateRect
())
);
if
(
resize1Polygon
().
containsPoint
(
event
->
pos
().
toPoint
(),
Qt
::
OddEvenFill
))
if
(
resize1Polygon
().
containsPoint
(
event
->
pos
().
toPoint
(),
Qt
::
OddEvenFill
))
setCursor
(
resizeCursor1
());
setCursor
(
resizeCursor1
());
...
@@ -860,9 +902,9 @@ void UBGraphicsTriangle::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
...
@@ -860,9 +902,9 @@ void UBGraphicsTriangle::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
currentTool
==
UBStylusTool
::
Play
)
currentTool
==
UBStylusTool
::
Play
)
{
{
mCloseSvgItem
->
setVisible
(
mShowButtons
);
mCloseSvgItem
->
setVisible
(
mShowButtons
);
mVFlipSvgItem
->
setVisible
(
mShowButtons
);
mVFlipSvgItem
->
setVisible
(
mShowButtons
&&
contains
(
vFlipRect
())
);
mHFlipSvgItem
->
setVisible
(
mShowButtons
);
mHFlipSvgItem
->
setVisible
(
mShowButtons
&&
contains
(
hFlipRect
())
);
mRotateSvgItem
->
setVisible
(
mShowButtons
);
mRotateSvgItem
->
setVisible
(
mShowButtons
&&
contains
(
rotateRect
())
);
if
(
resize1Polygon
().
containsPoint
(
event
->
pos
().
toPoint
(),
Qt
::
OddEvenFill
))
if
(
resize1Polygon
().
containsPoint
(
event
->
pos
().
toPoint
(),
Qt
::
OddEvenFill
))
setCursor
(
resizeCursor1
());
setCursor
(
resizeCursor1
());
...
@@ -935,6 +977,35 @@ void UBGraphicsTriangle::DrawLine(const QPointF &scenePos, qreal width)
...
@@ -935,6 +977,35 @@ void UBGraphicsTriangle::DrawLine(const QPointF &scenePos, qreal width)
UBDrawingController
::
drawingController
()
->
stylusTool
()
!=
UBStylusTool
::
Marker
);
UBDrawingController
::
drawingController
()
->
stylusTool
()
!=
UBStylusTool
::
Marker
);
}
}
/**
* @brief Check whether a given QRectF is inside the triangle (A1, B1, C1).
*
* Returns true if any corner of the rectangle is within the triangle or, if strict is set to true,
* if all corners of the rectangle are within the triangle.
*/
bool
UBGraphicsTriangle
::
contains
(
const
QRectF
&
rect
,
bool
strict
)
{
QPolygonF
poly
;
poly
<<
A1
<<
B1
<<
C1
<<
A1
;
QPainterPath
path
;
path
.
addPolygon
(
poly
);
QList
<
QPointF
>
points
;
points
<<
rect
.
bottomRight
()
<<
rect
.
topLeft
()
<<
rect
.
topRight
();
bool
inside
=
path
.
contains
(
rect
.
bottomLeft
());
foreach
(
QPointF
p
,
points
)
{
if
(
strict
)
inside
=
inside
&&
path
.
contains
(
p
);
else
inside
=
inside
||
path
.
contains
(
p
);
}
return
inside
;
}
void
UBGraphicsTriangle
::
EndLine
()
void
UBGraphicsTriangle
::
EndLine
()
{
{
}
}
...
...
src/tools/UBGraphicsTriangle.h
View file @
00ab81e3
...
@@ -98,7 +98,7 @@ class UBGraphicsTriangle : public UBAbstractDrawRuler, public QGraphicsPolygonIt
...
@@ -98,7 +98,7 @@ class UBGraphicsTriangle : public UBAbstractDrawRuler, public QGraphicsPolygonIt
void
setRect
(
const
QRectF
&
rect
,
UBGraphicsTriangleOrientation
orientation
)
void
setRect
(
const
QRectF
&
rect
,
UBGraphicsTriangleOrientation
orientation
)
{
{
qDebug
()
<<
"setRect"
<<
"rect = "
<<
rect
<<
"orientation :"
<<
orientation
;
//
qDebug() << "setRect"<<"rect = "<<rect<<"orientation :"<<orientation;
setRect
(
rect
.
x
(),
rect
.
y
(),
rect
.
width
(),
rect
.
height
(),
orientation
);
setRect
(
rect
.
x
(),
rect
.
y
(),
rect
.
width
(),
rect
.
height
(),
orientation
);
}
}
...
@@ -178,11 +178,15 @@ class UBGraphicsTriangle : public UBAbstractDrawRuler, public QGraphicsPolygonIt
...
@@ -178,11 +178,15 @@ class UBGraphicsTriangle : public UBAbstractDrawRuler, public QGraphicsPolygonIt
QPointF
CC
;
// Hyp. fillining gradient - top point
QPointF
CC
;
// Hyp. fillining gradient - top point
void
calculatePoints
(
const
QRectF
&
rect
);
void
calculatePoints
(
const
QRectF
&
rect
);
bool
mShouldPaintInnerTriangle
;
static
const
int
d
=
70
;
// width of triangle border
static
const
int
d
=
70
;
// width of triangle border
static
const
int
sArrowLength
=
30
;
static
const
int
sArrowLength
=
30
;
static
const
int
sMinWidth
=
38
0
;
static
const
int
sMinWidth
=
24
0
;
static
const
int
sMinHeight
=
20
0
;
static
const
int
sMinHeight
=
12
0
;
qreal
mStrokeWidth
;
qreal
mStrokeWidth
;
bool
contains
(
const
QRectF
&
rect
,
bool
strict
=
true
);
};
};
#endif
/* UBGRAPHICSTRIANGLE_H_ */
#endif
/* UBGRAPHICSTRIANGLE_H_ */
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