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
f941091f
Commit
f941091f
authored
Apr 12, 2013
by
Claudio Valerio
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
some changes
parent
2b81a9ee
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
40 additions
and
126 deletions
+40
-126
UBSvgSubsetAdaptor.cpp
src/adaptors/UBSvgSubsetAdaptor.cpp
+14
-72
UBSvgSubsetAdaptor.h
src/adaptors/UBSvgSubsetAdaptor.h
+1
-1
UBThumbnailAdaptor.cpp
src/adaptors/UBThumbnailAdaptor.cpp
+3
-1
UBBoardController.cpp
src/board/UBBoardController.cpp
+2
-14
UBBoardController.h
src/board/UBBoardController.h
+0
-1
UBGraphicsItemDelegate.cpp
src/domain/UBGraphicsItemDelegate.cpp
+18
-35
UBGraphicsStrokesGroup.cpp
src/domain/UBGraphicsStrokesGroup.cpp
+1
-1
UBCachePropertiesWidget.cpp
src/gui/UBCachePropertiesWidget.cpp
+1
-1
No files found.
src/adaptors/UBSvgSubsetAdaptor.cpp
View file @
f941091f
...
@@ -383,6 +383,7 @@ UBSvgSubsetAdaptor::UBSvgSubsetReader::UBSvgSubsetReader(UBDocumentProxy* pProxy
...
@@ -383,6 +383,7 @@ UBSvgSubsetAdaptor::UBSvgSubsetReader::UBSvgSubsetReader(UBDocumentProxy* pProxy
UBGraphicsScene
*
UBSvgSubsetAdaptor
::
UBSvgSubsetReader
::
loadScene
()
UBGraphicsScene
*
UBSvgSubsetAdaptor
::
UBSvgSubsetReader
::
loadScene
()
{
{
qDebug
()
<<
"loadScene() : starting reading..."
;
mScene
=
0
;
mScene
=
0
;
UBGraphicsWidgetItem
*
currentWidget
=
0
;
UBGraphicsWidgetItem
*
currentWidget
=
0
;
...
@@ -984,10 +985,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
...
@@ -984,10 +985,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
{
{
if
(
mXmlReader
.
name
()
==
"g"
)
if
(
mXmlReader
.
name
()
==
"g"
)
{
{
// if(strokesGroup && mScene){
// mScene->addItem(strokesGroup);
// }
if
(
annotationGroup
)
if
(
annotationGroup
)
{
{
if
(
!
annotationGroup
->
polygons
().
empty
())
if
(
!
annotationGroup
->
polygons
().
empty
())
...
@@ -1007,7 +1004,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
...
@@ -1007,7 +1004,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
}
}
qDebug
()
<<
"Number of detected strokes: "
<<
mStrokesList
.
count
();
qDebug
()
<<
"Number of detected strokes: "
<<
mStrokesList
.
count
();
Q
Map
Iterator
<
QString
,
UBGraphicsStrokesGroup
*>
iterator
(
mStrokesList
);
Q
Hash
Iterator
<
QString
,
UBGraphicsStrokesGroup
*>
iterator
(
mStrokesList
);
while
(
iterator
.
hasNext
())
{
while
(
iterator
.
hasNext
())
{
iterator
.
next
();
iterator
.
next
();
mScene
->
addItem
(
iterator
.
value
());
mScene
->
addItem
(
iterator
.
value
());
...
@@ -1024,6 +1021,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
...
@@ -1024,6 +1021,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
}
}
mScene
->
enableUndoRedoStack
();
mScene
->
enableUndoRedoStack
();
qDebug
()
<<
"loadScene() : created scene and read file"
;
return
mScene
;
return
mScene
;
}
}
...
@@ -1031,9 +1029,15 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
...
@@ -1031,9 +1029,15 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
UBGraphicsGroupContainerItem
*
UBSvgSubsetAdaptor
::
UBSvgSubsetReader
::
readGroup
()
UBGraphicsGroupContainerItem
*
UBSvgSubsetAdaptor
::
UBSvgSubsetReader
::
readGroup
()
{
{
UBGraphicsGroupContainerItem
*
group
=
new
UBGraphicsGroupContainerItem
();
UBGraphicsGroupContainerItem
*
group
=
new
UBGraphicsGroupContainerItem
();
// QMultiMap<QString, UBGraphicsPolygonItem *> strokesGroupsContainer;
QList
<
QGraphicsItem
*>
groupContainer
;
QList
<
QGraphicsItem
*>
groupContainer
;
QString
id
=
mXmlReader
.
attributes
().
value
(
aId
).
toString
();
id
=
id
.
mid
(
1
,
id
.
length
()
-
2
);
qDebug
()
<<
id
;
bool
shouldSkipSubElements
=
false
;
if
(
mStrokesList
.
contains
(
id
))
shouldSkipSubElements
=
true
;
mXmlReader
.
readNext
();
mXmlReader
.
readNext
();
while
(
!
mXmlReader
.
atEnd
())
while
(
!
mXmlReader
.
atEnd
())
{
{
...
@@ -1043,34 +1047,18 @@ UBGraphicsGroupContainerItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroup()
...
@@ -1043,34 +1047,18 @@ UBGraphicsGroupContainerItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroup()
}
}
else
if
(
mXmlReader
.
isStartElement
())
{
else
if
(
mXmlReader
.
isStartElement
())
{
if
(
mXmlReader
.
name
()
==
tGroup
)
{
if
(
mXmlReader
.
name
()
==
tGroup
)
{
qDebug
()
<<
"came across the group id is"
<<
mXmlReader
.
attributes
().
value
(
aId
);
UBGraphicsGroupContainerItem
*
curGroup
=
readGroup
();
UBGraphicsGroupContainerItem
*
curGroup
=
readGroup
();
if
(
curGroup
)
if
(
curGroup
)
groupContainer
.
append
(
curGroup
);
groupContainer
.
append
(
curGroup
);
else
qDebug
()
<<
"this is an error"
;
}
}
else
if
(
mXmlReader
.
name
()
==
tElement
)
{
else
if
(
mXmlReader
.
name
()
==
tElement
&&
!
shouldSkipSubElements
)
{
QString
id
=
mXmlReader
.
attributes
().
value
(
aId
).
toString
();
QString
id
=
mXmlReader
.
attributes
().
value
(
aId
).
toString
();
// QString itemId = id.right(QUuid().toString().size());
// QString groupId = id.left(QUuid().toString().size());
QGraphicsItem
*
curItem
=
readElementFromGroup
();
QGraphicsItem
*
curItem
=
readElementFromGroup
();
// UBGraphicsPolygonItem *curPolygon = qgraphicsitem_cast<UBGraphicsPolygonItem *>(curItem);
//
// if (curPolygon && !groupId.isEmpty() && !itemId.isEmpty() && itemId != groupId) {
// strokesGroupsContainer.insert(groupId, curPolygon);
// }
// else {// item
// Explanation: the second condition discriminate the old storage version that should
// Explanation: the second condition discriminate the old storage version that should
// not be interpreted anymore
// not be interpreted anymore
if
(
curItem
&&
id
.
count
(
"{"
)
<
2
)
if
(
curItem
&&
id
.
count
(
"{"
)
<
2
)
groupContainer
.
append
(
curItem
);
groupContainer
.
append
(
curItem
);
else
qDebug
()
<<
"this is an error"
;
// }
}
}
else
{
else
{
mXmlReader
.
skipCurrentElement
();
mXmlReader
.
skipCurrentElement
();
...
@@ -1081,39 +1069,6 @@ UBGraphicsGroupContainerItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroup()
...
@@ -1081,39 +1069,6 @@ UBGraphicsGroupContainerItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::readGroup()
}
}
}
}
// foreach (QString key, strokesGroupsContainer.keys().toSet())
// {
// UBGraphicsStrokesGroup* pStrokesGroup = new UBGraphicsStrokesGroup();
// UBGraphicsStroke *currentStroke = new UBGraphicsStroke();
// foreach(UBGraphicsPolygonItem* poly, strokesGroupsContainer.values(key))
// {
// if (poly)
// {
// mScene->removeItem(poly);
// mScene->removeItemFromDeletion(poly);
// poly->setStrokesGroup(pStrokesGroup);
// poly->setStroke(currentStroke);
// pStrokesGroup->addToGroup(poly);
// }
// }
// if (currentStroke->polygons().empty())
// delete currentStroke;
// if (pStrokesGroup->childItems().count())
// mScene->addItem(pStrokesGroup);
// else
// delete pStrokesGroup;
// if (pStrokesGroup)
// {
// QGraphicsItem *strokeGroup = qgraphicsitem_cast<QGraphicsItem *>(pStrokesGroup);
// if(strokeGroup)
// groupContainer.append(strokeGroup);
// else
// qDebug() << "this is an error";
// }
// }
foreach
(
QGraphicsItem
*
item
,
groupContainer
)
foreach
(
QGraphicsItem
*
item
,
groupContainer
)
group
->
addToGroup
(
item
);
group
->
addToGroup
(
item
);
...
@@ -1164,8 +1119,6 @@ QGraphicsItem *UBSvgSubsetAdaptor::UBSvgSubsetReader::readElementFromGroup()
...
@@ -1164,8 +1119,6 @@ QGraphicsItem *UBSvgSubsetAdaptor::UBSvgSubsetReader::readElementFromGroup()
if
(
!
result
)
if
(
!
result
)
result
=
mStrokesList
.
take
(
uuid
.
replace
(
"}"
,
""
).
replace
(
"{"
,
""
));
result
=
mStrokesList
.
take
(
uuid
.
replace
(
"}"
,
""
).
replace
(
"{"
,
""
));
//Q_ASSERT(result);
mXmlReader
.
skipCurrentElement
();
mXmlReader
.
skipCurrentElement
();
mXmlReader
.
readNext
();
mXmlReader
.
readNext
();
...
@@ -1561,14 +1514,6 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistGroupToDom(QGraphicsItem *gro
...
@@ -1561,14 +1514,6 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistGroupToDom(QGraphicsItem *gro
if
(
item
->
type
()
==
UBGraphicsGroupContainerItem
::
Type
&&
item
->
childItems
().
count
())
{
if
(
item
->
type
()
==
UBGraphicsGroupContainerItem
::
Type
&&
item
->
childItems
().
count
())
{
persistGroupToDom
(
item
,
curParent
,
groupDomDocument
);
persistGroupToDom
(
item
,
curParent
,
groupDomDocument
);
}
}
// else if (item->type() == UBGraphicsStrokesGroup::Type) {
// foreach (QGraphicsItem *polygonItem, item->childItems()) {
// QDomElement curPolygonElement = groupDomDocument->createElement(tElement);
// curPolygonElement.setAttribute(aId, tmpUuid.toString()
// + UBGraphicsItem::getOwnUuid(polygonItem).toString());
// curGroupElement.appendChild(curPolygonElement);
// }
// }
else
{
else
{
QDomElement
curSubElement
=
groupDomDocument
->
createElement
(
tElement
);
QDomElement
curSubElement
=
groupDomDocument
->
createElement
(
tElement
);
...
@@ -2509,15 +2454,12 @@ qreal UBSvgSubsetAdaptor::UBSvgSubsetReader::getZValueFromSvg()
...
@@ -2509,15 +2454,12 @@ qreal UBSvgSubsetAdaptor::UBSvgSubsetReader::getZValueFromSvg()
QUuid
UBSvgSubsetAdaptor
::
UBSvgSubsetReader
::
getUuidFromSvg
()
QUuid
UBSvgSubsetAdaptor
::
UBSvgSubsetReader
::
getUuidFromSvg
()
{
{
QUuid
result
;
QString
strUuid
=
mXmlReader
.
attributes
().
value
(
mNamespaceUri
,
"uuid"
).
toString
();
QString
strUuid
=
mXmlReader
.
attributes
().
value
(
mNamespaceUri
,
"uuid"
).
toString
();
QUuid
uuid
=
QUuid
(
strUuid
);
QUuid
uuid
=
QUuid
(
strUuid
);
if
(
!
uuid
.
isNull
())
{
if
(
!
uuid
.
isNull
())
result
=
uuid
;
return
uuid
;
}
return
result
;
return
QUuid
::
createUuid
()
;
}
}
...
...
src/adaptors/UBSvgSubsetAdaptor.h
View file @
f941091f
...
@@ -174,7 +174,7 @@ class UBSvgSubsetAdaptor
...
@@ -174,7 +174,7 @@ class UBSvgSubsetAdaptor
QString
mNamespaceUri
;
QString
mNamespaceUri
;
UBGraphicsScene
*
mScene
;
UBGraphicsScene
*
mScene
;
Q
Map
<
QString
,
UBGraphicsStrokesGroup
*>
mStrokesList
;
Q
Hash
<
QString
,
UBGraphicsStrokesGroup
*>
mStrokesList
;
};
};
class
UBSvgSubsetWriter
class
UBSvgSubsetWriter
...
...
src/adaptors/UBThumbnailAdaptor.cpp
View file @
f941091f
...
@@ -120,8 +120,10 @@ void UBThumbnailAdaptor::load(UBDocumentProxy* proxy, QList<const QPixmap*>& lis
...
@@ -120,8 +120,10 @@ void UBThumbnailAdaptor::load(UBDocumentProxy* proxy, QList<const QPixmap*>& lis
updateDocumentToHandleZeroPage
(
proxy
);
updateDocumentToHandleZeroPage
(
proxy
);
generateMissingThumbnails
(
proxy
);
generateMissingThumbnails
(
proxy
);
foreach
(
const
QPixmap
*
pm
,
list
)
foreach
(
const
QPixmap
*
pm
,
list
)
{
delete
pm
;
delete
pm
;
pm
=
NULL
;
}
list
.
clear
();
list
.
clear
();
for
(
int
i
=
0
;
i
<
proxy
->
pageCount
();
i
++
)
for
(
int
i
=
0
;
i
<
proxy
->
pageCount
();
i
++
)
list
.
append
(
get
(
proxy
,
i
));
list
.
append
(
get
(
proxy
,
i
));
...
...
src/board/UBBoardController.cpp
View file @
f941091f
...
@@ -541,8 +541,6 @@ void UBBoardController::duplicateScene(int nIndex)
...
@@ -541,8 +541,6 @@ void UBBoardController::duplicateScene(int nIndex)
setActiveDocumentScene
(
nIndex
+
1
);
setActiveDocumentScene
(
nIndex
+
1
);
QApplication
::
restoreOverrideCursor
();
QApplication
::
restoreOverrideCursor
();
emit
pageChanged
();
}
}
void
UBBoardController
::
duplicateScene
()
void
UBBoardController
::
duplicateScene
()
...
@@ -920,7 +918,6 @@ void UBBoardController::previousScene()
...
@@ -920,7 +918,6 @@ void UBBoardController::previousScene()
}
}
updateActionStates
();
updateActionStates
();
emit
pageChanged
();
}
}
...
@@ -935,7 +932,6 @@ void UBBoardController::nextScene()
...
@@ -935,7 +932,6 @@ void UBBoardController::nextScene()
}
}
updateActionStates
();
updateActionStates
();
emit
pageChanged
();
}
}
...
@@ -950,7 +946,6 @@ void UBBoardController::firstScene()
...
@@ -950,7 +946,6 @@ void UBBoardController::firstScene()
}
}
updateActionStates
();
updateActionStates
();
emit
pageChanged
();
}
}
...
@@ -965,7 +960,6 @@ void UBBoardController::lastScene()
...
@@ -965,7 +960,6 @@ void UBBoardController::lastScene()
}
}
updateActionStates
();
updateActionStates
();
emit
pageChanged
();
}
}
void
UBBoardController
::
groupButtonClicked
()
void
UBBoardController
::
groupButtonClicked
()
...
@@ -1539,16 +1533,10 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy,
...
@@ -1539,16 +1533,10 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy,
updateBackgroundState
();
updateBackgroundState
();
if
(
documentChange
)
if
(
documentChange
)
{
UBGraphicsTextItem
::
lastUsedTextColor
=
QColor
();
UBGraphicsTextItem
::
lastUsedTextColor
=
QColor
();
}
if
(
sceneChange
)
if
(
sceneChange
)
{
emit
activeSceneChanged
();
emit
activeSceneChanged
();
emit
pageChanged
();
}
}
}
...
@@ -2476,7 +2464,7 @@ void UBBoardController::importPage()
...
@@ -2476,7 +2464,7 @@ void UBBoardController::importPage()
void
UBBoardController
::
notifyPageChanged
()
void
UBBoardController
::
notifyPageChanged
()
{
{
emit
pag
eChanged
();
emit
activeScen
eChanged
();
}
}
void
UBBoardController
::
onDownloadModalFinished
()
void
UBBoardController
::
onDownloadModalFinished
()
...
...
src/board/UBBoardController.h
View file @
f941091f
...
@@ -245,7 +245,6 @@ class UBBoardController : public UBDocumentContainer
...
@@ -245,7 +245,6 @@ class UBBoardController : public UBDocumentContainer
void
backgroundChanged
();
void
backgroundChanged
();
void
cacheEnabled
();
void
cacheEnabled
();
void
cacheDisabled
();
void
cacheDisabled
();
void
pageChanged
();
void
documentReorganized
(
int
index
);
void
documentReorganized
(
int
index
);
void
displayMetadata
(
QMap
<
QString
,
QString
>
metadata
);
void
displayMetadata
(
QMap
<
QString
,
QString
>
metadata
);
void
pageSelectionChanged
(
int
index
);
void
pageSelectionChanged
(
int
index
);
...
...
src/domain/UBGraphicsItemDelegate.cpp
View file @
f941091f
...
@@ -359,17 +359,13 @@ bool UBGraphicsItemDelegate::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
...
@@ -359,17 +359,13 @@ bool UBGraphicsItemDelegate::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void
UBGraphicsItemDelegate
::
hoverEnterEvent
(
QGraphicsSceneHoverEvent
*
event
)
void
UBGraphicsItemDelegate
::
hoverEnterEvent
(
QGraphicsSceneHoverEvent
*
event
)
{
{
Q_UNUSED
(
event
)
Q_UNUSED
(
event
)
// if (!mDelegated->isSelected()) {
// setZOrderButtonsVisible(true);
// }
}
}
void
UBGraphicsItemDelegate
::
hoverLeaveEvent
(
QGraphicsSceneHoverEvent
*
event
)
void
UBGraphicsItemDelegate
::
hoverLeaveEvent
(
QGraphicsSceneHoverEvent
*
event
)
{
{
Q_UNUSED
(
event
)
Q_UNUSED
(
event
)
// if (!mDelegated->isSelected()) {
// setZOrderButtonsVisible(false);
// }
}
}
QGraphicsItem
*
UBGraphicsItemDelegate
::
delegated
()
QGraphicsItem
*
UBGraphicsItemDelegate
::
delegated
()
...
@@ -440,22 +436,9 @@ void UBGraphicsItemDelegate::setZOrderButtonsVisible(bool visible)
...
@@ -440,22 +436,9 @@ void UBGraphicsItemDelegate::setZOrderButtonsVisible(bool visible)
void
UBGraphicsItemDelegate
::
remove
(
bool
canUndo
)
void
UBGraphicsItemDelegate
::
remove
(
bool
canUndo
)
{
{
/*UBGraphicsScene* scene = dynamic_cast<UBGraphicsScene*>(mDelegated->scene());
if (scene && canUndo)
{
UBGraphicsItemUndoCommand *uc = new UBGraphicsItemUndoCommand(scene, mDelegated, 0);
UBApplication::undoStack->push(uc);
}
mDelegated->hide(); */
UBGraphicsScene
*
scene
=
dynamic_cast
<
UBGraphicsScene
*>
(
mDelegated
->
scene
());
UBGraphicsScene
*
scene
=
dynamic_cast
<
UBGraphicsScene
*>
(
mDelegated
->
scene
());
if
(
scene
)
if
(
scene
)
{
{
// bool shownOnDisplay = mDelegated->data(UBGraphicsItemData::ItemLayerType).toInt() != UBItemLayerType::Control;
// showHide(shownOnDisplay);
// updateFrame();
// updateButtons();
if
(
mFrame
&&
!
mFrame
->
scene
()
&&
mDelegated
->
scene
())
if
(
mFrame
&&
!
mFrame
->
scene
()
&&
mDelegated
->
scene
())
{
{
mDelegated
->
scene
()
->
addItem
(
mFrame
);
mDelegated
->
scene
()
->
addItem
(
mFrame
);
...
...
src/domain/UBGraphicsStrokesGroup.cpp
View file @
f941091f
src/gui/UBCachePropertiesWidget.cpp
View file @
f941091f
...
@@ -142,7 +142,7 @@ UBCachePropertiesWidget::UBCachePropertiesWidget(QWidget *parent, const char *na
...
@@ -142,7 +142,7 @@ UBCachePropertiesWidget::UBCachePropertiesWidget(QWidget *parent, const char *na
connect
(
mpCircleButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
updateShapeButtons
()));
connect
(
mpCircleButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
updateShapeButtons
()));
connect
(
mpSquareButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
updateShapeButtons
()));
connect
(
mpSquareButton
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
updateShapeButtons
()));
connect
(
mpSizeSlider
,
SIGNAL
(
valueChanged
(
int
)),
this
,
SLOT
(
onSizeChanged
(
int
)));
connect
(
mpSizeSlider
,
SIGNAL
(
valueChanged
(
int
)),
this
,
SLOT
(
onSizeChanged
(
int
)));
connect
(
UBApplication
::
boardController
,
SIGNAL
(
pag
eChanged
()),
this
,
SLOT
(
updateCurrentCache
()));
connect
(
UBApplication
::
boardController
,
SIGNAL
(
activeScen
eChanged
()),
this
,
SLOT
(
updateCurrentCache
()));
connect
(
UBApplication
::
boardController
,
SIGNAL
(
cacheEnabled
()),
this
,
SLOT
(
onCacheEnabled
()));
connect
(
UBApplication
::
boardController
,
SIGNAL
(
cacheEnabled
()),
this
,
SLOT
(
onCacheEnabled
()));
}
}
...
...
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