Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
f9a55579
Kaydet (Commit)
f9a55579
authored
Haz 19, 2015
tarafından
Miklos Vajna
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
cui: prefix remaining svx::DbRegistrationOptionsPage members
Change-Id: If6786c2df54d7ccad61c00fddf28b0a00372dab2
üst
ba70050d
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
38 deletions
+38
-38
dbregister.hxx
cui/source/inc/dbregister.hxx
+3
-3
dbregister.cxx
cui/source/options/dbregister.cxx
+35
-35
No files found.
cui/source/inc/dbregister.hxx
Dosyayı görüntüle @
f9a55579
...
@@ -38,15 +38,15 @@ namespace svx
...
@@ -38,15 +38,15 @@ namespace svx
class
DbRegistrationOptionsPage
:
public
SfxTabPage
class
DbRegistrationOptionsPage
:
public
SfxTabPage
{
{
private
:
private
:
OUString
aTypeText
;
OUString
m_
aTypeText
;
OUString
aPathText
;
OUString
m_
aPathText
;
VclPtr
<
SvSimpleTableContainer
>
m_pPathCtrl
;
VclPtr
<
SvSimpleTableContainer
>
m_pPathCtrl
;
VclPtr
<
PushButton
>
m_pNew
;
VclPtr
<
PushButton
>
m_pNew
;
VclPtr
<
PushButton
>
m_pEdit
;
VclPtr
<
PushButton
>
m_pEdit
;
VclPtr
<
PushButton
>
m_pDelete
;
VclPtr
<
PushButton
>
m_pDelete
;
VclPtr
<
svx
::
OptHeaderTabListBox
>
pPathBox
;
VclPtr
<
svx
::
OptHeaderTabListBox
>
m_
pPathBox
;
SvTreeListEntry
*
m_pCurEntry
;
SvTreeListEntry
*
m_pCurEntry
;
sal_uLong
m_nOldCount
;
sal_uLong
m_nOldCount
;
bool
m_bModified
;
bool
m_bModified
;
...
...
cui/source/options/dbregister.cxx
Dosyayı görüntüle @
f9a55579
...
@@ -101,9 +101,9 @@ DbRegistrationOptionsPage::DbRegistrationOptionsPage( vcl::Window* pParent, cons
...
@@ -101,9 +101,9 @@ DbRegistrationOptionsPage::DbRegistrationOptionsPage( vcl::Window* pParent, cons
SfxTabPage
(
pParent
,
"DbRegisterPage"
,
"cui/ui/dbregisterpage.ui"
,
&
rSet
),
SfxTabPage
(
pParent
,
"DbRegisterPage"
,
"cui/ui/dbregisterpage.ui"
,
&
rSet
),
aTypeText
(
CUI_RES
(
RID_SVXSTR_TYPE
)
),
m_
aTypeText
(
CUI_RES
(
RID_SVXSTR_TYPE
)
),
aPathText
(
CUI_RES
(
RID_SVXSTR_PATH
)
),
m_
aPathText
(
CUI_RES
(
RID_SVXSTR_PATH
)
),
pPathBox
(
NULL
),
m_
pPathBox
(
NULL
),
m_pCurEntry
(
NULL
),
m_pCurEntry
(
NULL
),
m_nOldCount
(
0
),
m_nOldCount
(
0
),
m_bModified
(
false
)
m_bModified
(
false
)
...
@@ -125,38 +125,38 @@ DbRegistrationOptionsPage::DbRegistrationOptionsPage( vcl::Window* pParent, cons
...
@@ -125,38 +125,38 @@ DbRegistrationOptionsPage::DbRegistrationOptionsPage( vcl::Window* pParent, cons
Size
aBoxSize
=
m_pPathCtrl
->
GetOutputSizePixel
();
Size
aBoxSize
=
m_pPathCtrl
->
GetOutputSizePixel
();
WinBits
nBits
=
WB_SORT
|
WB_HSCROLL
|
WB_CLIPCHILDREN
|
WB_TABSTOP
;
WinBits
nBits
=
WB_SORT
|
WB_HSCROLL
|
WB_CLIPCHILDREN
|
WB_TABSTOP
;
pPathBox
=
VclPtr
<
svx
::
OptHeaderTabListBox
>::
Create
(
*
m_pPathCtrl
,
nBits
);
m_
pPathBox
=
VclPtr
<
svx
::
OptHeaderTabListBox
>::
Create
(
*
m_pPathCtrl
,
nBits
);
HeaderBar
&
rBar
=
pPathBox
->
GetTheHeaderBar
();
HeaderBar
&
rBar
=
m_
pPathBox
->
GetTheHeaderBar
();
rBar
.
SetSelectHdl
(
LINK
(
this
,
DbRegistrationOptionsPage
,
HeaderSelect_Impl
)
);
rBar
.
SetSelectHdl
(
LINK
(
this
,
DbRegistrationOptionsPage
,
HeaderSelect_Impl
)
);
rBar
.
SetEndDragHdl
(
LINK
(
this
,
DbRegistrationOptionsPage
,
HeaderEndDrag_Impl
)
);
rBar
.
SetEndDragHdl
(
LINK
(
this
,
DbRegistrationOptionsPage
,
HeaderEndDrag_Impl
)
);
Size
aSz
;
Size
aSz
;
aSz
.
Width
()
=
TAB_WIDTH1
;
aSz
.
Width
()
=
TAB_WIDTH1
;
rBar
.
InsertItem
(
ITEMID_TYPE
,
aTypeText
,
rBar
.
InsertItem
(
ITEMID_TYPE
,
m_
aTypeText
,
LogicToPixel
(
aSz
,
MapMode
(
MAP_APPFONT
)
).
Width
(),
LogicToPixel
(
aSz
,
MapMode
(
MAP_APPFONT
)
).
Width
(),
HeaderBarItemBits
::
LEFT
|
HeaderBarItemBits
::
VCENTER
|
HeaderBarItemBits
::
CLICKABLE
|
HeaderBarItemBits
::
UPARROW
);
HeaderBarItemBits
::
LEFT
|
HeaderBarItemBits
::
VCENTER
|
HeaderBarItemBits
::
CLICKABLE
|
HeaderBarItemBits
::
UPARROW
);
aSz
.
Width
()
=
TAB_WIDTH2
;
aSz
.
Width
()
=
TAB_WIDTH2
;
rBar
.
InsertItem
(
ITEMID_PATH
,
aPathText
,
rBar
.
InsertItem
(
ITEMID_PATH
,
m_
aPathText
,
LogicToPixel
(
aSz
,
MapMode
(
MAP_APPFONT
)
).
Width
(),
LogicToPixel
(
aSz
,
MapMode
(
MAP_APPFONT
)
).
Width
(),
HeaderBarItemBits
::
LEFT
|
HeaderBarItemBits
::
VCENTER
);
HeaderBarItemBits
::
LEFT
|
HeaderBarItemBits
::
VCENTER
);
static
long
aTabs
[]
=
{
3
,
0
,
TAB_WIDTH1
,
TAB_WIDTH1
+
TAB_WIDTH2
};
static
long
aTabs
[]
=
{
3
,
0
,
TAB_WIDTH1
,
TAB_WIDTH1
+
TAB_WIDTH2
};
Size
aHeadSize
=
rBar
.
GetSizePixel
();
Size
aHeadSize
=
rBar
.
GetSizePixel
();
pPathBox
->
SetStyle
(
pPathBox
->
GetStyle
()
|
nBits
);
m_pPathBox
->
SetStyle
(
m_
pPathBox
->
GetStyle
()
|
nBits
);
pPathBox
->
SetDoubleClickHdl
(
LINK
(
this
,
DbRegistrationOptionsPage
,
EditHdl
)
);
m_
pPathBox
->
SetDoubleClickHdl
(
LINK
(
this
,
DbRegistrationOptionsPage
,
EditHdl
)
);
pPathBox
->
SetSelectHdl
(
LINK
(
this
,
DbRegistrationOptionsPage
,
PathSelect_Impl
)
);
m_
pPathBox
->
SetSelectHdl
(
LINK
(
this
,
DbRegistrationOptionsPage
,
PathSelect_Impl
)
);
pPathBox
->
SetSelectionMode
(
SINGLE_SELECTION
);
m_
pPathBox
->
SetSelectionMode
(
SINGLE_SELECTION
);
pPathBox
->
SetPosSizePixel
(
Point
(
0
,
aHeadSize
.
Height
()
),
m_
pPathBox
->
SetPosSizePixel
(
Point
(
0
,
aHeadSize
.
Height
()
),
Size
(
aBoxSize
.
Width
(),
aBoxSize
.
Height
()
-
aHeadSize
.
Height
()
)
);
Size
(
aBoxSize
.
Width
(),
aBoxSize
.
Height
()
-
aHeadSize
.
Height
()
)
);
pPathBox
->
SvSimpleTable
::
SetTabs
(
aTabs
,
MAP_APPFONT
);
m_
pPathBox
->
SvSimpleTable
::
SetTabs
(
aTabs
,
MAP_APPFONT
);
pPathBox
->
SetHighlightRange
();
m_
pPathBox
->
SetHighlightRange
();
pPathBox
->
SetHelpId
(
HID_DBPATH_CTL_PATH
);
m_
pPathBox
->
SetHelpId
(
HID_DBPATH_CTL_PATH
);
rBar
.
SetHelpId
(
HID_DBPATH_HEADERBAR
);
rBar
.
SetHelpId
(
HID_DBPATH_HEADERBAR
);
pPathBox
->
ShowTable
();
m_
pPathBox
->
ShowTable
();
}
}
...
@@ -168,9 +168,9 @@ DbRegistrationOptionsPage::~DbRegistrationOptionsPage()
...
@@ -168,9 +168,9 @@ DbRegistrationOptionsPage::~DbRegistrationOptionsPage()
void
DbRegistrationOptionsPage
::
dispose
()
void
DbRegistrationOptionsPage
::
dispose
()
{
{
for
(
sal_uLong
i
=
0
;
i
<
pPathBox
->
GetEntryCount
();
++
i
)
for
(
sal_uLong
i
=
0
;
i
<
m_
pPathBox
->
GetEntryCount
();
++
i
)
delete
static_cast
<
DatabaseRegistration
*
>
(
pPathBox
->
GetEntry
(
i
)
->
GetUserData
()
);
delete
static_cast
<
DatabaseRegistration
*
>
(
m_
pPathBox
->
GetEntry
(
i
)
->
GetUserData
()
);
pPathBox
.
disposeAndClear
();
m_
pPathBox
.
disposeAndClear
();
m_pPathCtrl
.
clear
();
m_pPathCtrl
.
clear
();
m_pNew
.
clear
();
m_pNew
.
clear
();
m_pEdit
.
clear
();
m_pEdit
.
clear
();
...
@@ -193,10 +193,10 @@ bool DbRegistrationOptionsPage::FillItemSet( SfxItemSet* rCoreSet )
...
@@ -193,10 +193,10 @@ bool DbRegistrationOptionsPage::FillItemSet( SfxItemSet* rCoreSet )
// the settings for the single drivers
// the settings for the single drivers
bool
bModified
=
false
;
bool
bModified
=
false
;
DatabaseRegistrations
aRegistrations
;
DatabaseRegistrations
aRegistrations
;
sal_uLong
nCount
=
pPathBox
->
GetEntryCount
();
sal_uLong
nCount
=
m_
pPathBox
->
GetEntryCount
();
for
(
sal_uLong
i
=
0
;
i
<
nCount
;
++
i
)
for
(
sal_uLong
i
=
0
;
i
<
nCount
;
++
i
)
{
{
SvTreeListEntry
*
pEntry
=
pPathBox
->
GetEntry
(
i
);
SvTreeListEntry
*
pEntry
=
m_
pPathBox
->
GetEntry
(
i
);
DatabaseRegistration
*
pRegistration
=
static_cast
<
DatabaseRegistration
*
>
(
pEntry
->
GetUserData
()
);
DatabaseRegistration
*
pRegistration
=
static_cast
<
DatabaseRegistration
*
>
(
pEntry
->
GetUserData
()
);
if
(
pRegistration
&&
!
pRegistration
->
sLocation
.
isEmpty
()
)
if
(
pRegistration
&&
!
pRegistration
->
sLocation
.
isEmpty
()
)
{
{
...
@@ -223,7 +223,7 @@ void DbRegistrationOptionsPage::Reset( const SfxItemSet* rSet )
...
@@ -223,7 +223,7 @@ void DbRegistrationOptionsPage::Reset( const SfxItemSet* rSet )
if
(
!
pRegistrations
)
if
(
!
pRegistrations
)
return
;
return
;
pPathBox
->
Clear
();
m_
pPathBox
->
Clear
();
const
DatabaseRegistrations
&
rRegistrations
=
pRegistrations
->
getRegistrations
();
const
DatabaseRegistrations
&
rRegistrations
=
pRegistrations
->
getRegistrations
();
m_nOldCount
=
rRegistrations
.
size
();
m_nOldCount
=
rRegistrations
.
size
();
...
@@ -238,7 +238,7 @@ void DbRegistrationOptionsPage::Reset( const SfxItemSet* rSet )
...
@@ -238,7 +238,7 @@ void DbRegistrationOptionsPage::Reset( const SfxItemSet* rSet )
OUString
aUserData
=
GetUserData
();
OUString
aUserData
=
GetUserData
();
if
(
!
aUserData
.
isEmpty
()
)
if
(
!
aUserData
.
isEmpty
()
)
{
{
HeaderBar
&
rBar
=
pPathBox
->
GetTheHeaderBar
();
HeaderBar
&
rBar
=
m_
pPathBox
->
GetTheHeaderBar
();
// restore column width
// restore column width
rBar
.
SetItemSize
(
ITEMID_TYPE
,
aUserData
.
getToken
(
0
,
';'
).
toInt32
()
);
rBar
.
SetItemSize
(
ITEMID_TYPE
,
aUserData
.
getToken
(
0
,
';'
).
toInt32
()
);
...
@@ -264,7 +264,7 @@ void DbRegistrationOptionsPage::Reset( const SfxItemSet* rSet )
...
@@ -264,7 +264,7 @@ void DbRegistrationOptionsPage::Reset( const SfxItemSet* rSet )
void
DbRegistrationOptionsPage
::
FillUserData
()
void
DbRegistrationOptionsPage
::
FillUserData
()
{
{
HeaderBar
&
rBar
=
pPathBox
->
GetTheHeaderBar
();
HeaderBar
&
rBar
=
m_
pPathBox
->
GetTheHeaderBar
();
OUString
aUserData
=
OUString
::
number
(
rBar
.
GetItemSize
(
ITEMID_TYPE
)
)
+
";"
;
OUString
aUserData
=
OUString
::
number
(
rBar
.
GetItemSize
(
ITEMID_TYPE
)
)
+
";"
;
HeaderBarItemBits
nBits
=
rBar
.
GetItemBits
(
ITEMID_TYPE
);
HeaderBarItemBits
nBits
=
rBar
.
GetItemBits
(
ITEMID_TYPE
);
...
@@ -275,12 +275,12 @@ void DbRegistrationOptionsPage::FillUserData()
...
@@ -275,12 +275,12 @@ void DbRegistrationOptionsPage::FillUserData()
IMPL_LINK_NOARG
(
DbRegistrationOptionsPage
,
DeleteHdl
)
IMPL_LINK_NOARG
(
DbRegistrationOptionsPage
,
DeleteHdl
)
{
{
SvTreeListEntry
*
pEntry
=
pPathBox
->
FirstSelected
();
SvTreeListEntry
*
pEntry
=
m_
pPathBox
->
FirstSelected
();
if
(
pEntry
)
if
(
pEntry
)
{
{
ScopedVclPtrInstance
<
MessageDialog
>
aQuery
(
this
,
CUI_RES
(
RID_SVXSTR_QUERY_DELETE_CONFIRM
),
VCL_MESSAGE_QUESTION
,
VCL_BUTTONS_YES_NO
);
ScopedVclPtrInstance
<
MessageDialog
>
aQuery
(
this
,
CUI_RES
(
RID_SVXSTR_QUERY_DELETE_CONFIRM
),
VCL_MESSAGE_QUESTION
,
VCL_BUTTONS_YES_NO
);
if
(
aQuery
->
Execute
()
==
RET_YES
)
if
(
aQuery
->
Execute
()
==
RET_YES
)
pPathBox
->
GetModel
()
->
Remove
(
pEntry
);
m_
pPathBox
->
GetModel
()
->
Remove
(
pEntry
);
}
}
return
0
;
return
0
;
}
}
...
@@ -294,7 +294,7 @@ IMPL_LINK_NOARG(DbRegistrationOptionsPage, NewHdl)
...
@@ -294,7 +294,7 @@ IMPL_LINK_NOARG(DbRegistrationOptionsPage, NewHdl)
IMPL_LINK_NOARG
(
DbRegistrationOptionsPage
,
EditHdl
)
IMPL_LINK_NOARG
(
DbRegistrationOptionsPage
,
EditHdl
)
{
{
SvTreeListEntry
*
pEntry
=
pPathBox
->
GetCurEntry
();
SvTreeListEntry
*
pEntry
=
m_
pPathBox
->
GetCurEntry
();
if
(
!
pEntry
)
if
(
!
pEntry
)
return
0L
;
return
0L
;
...
@@ -335,7 +335,7 @@ IMPL_LINK( DbRegistrationOptionsPage, HeaderSelect_Impl, HeaderBar*, pBar )
...
@@ -335,7 +335,7 @@ IMPL_LINK( DbRegistrationOptionsPage, HeaderSelect_Impl, HeaderBar*, pBar )
nBits
|=
HeaderBarItemBits
::
UPARROW
;
nBits
|=
HeaderBarItemBits
::
UPARROW
;
}
}
pBar
->
SetItemBits
(
ITEMID_TYPE
,
nBits
);
pBar
->
SetItemBits
(
ITEMID_TYPE
,
nBits
);
SvTreeList
*
pModel
=
pPathBox
->
GetModel
();
SvTreeList
*
pModel
=
m_
pPathBox
->
GetModel
();
pModel
->
SetSortMode
(
eMode
);
pModel
->
SetSortMode
(
eMode
);
pModel
->
Resort
();
pModel
->
Resort
();
return
1
;
return
1
;
...
@@ -368,7 +368,7 @@ IMPL_LINK( DbRegistrationOptionsPage, HeaderEndDrag_Impl, HeaderBar*, pBar )
...
@@ -368,7 +368,7 @@ IMPL_LINK( DbRegistrationOptionsPage, HeaderEndDrag_Impl, HeaderBar*, pBar )
long
_nWidth
=
pBar
->
GetItemSize
(
i
);
long
_nWidth
=
pBar
->
GetItemSize
(
i
);
aSz
.
Width
()
=
_nWidth
+
nTmpSz
;
aSz
.
Width
()
=
_nWidth
+
nTmpSz
;
nTmpSz
+=
_nWidth
;
nTmpSz
+=
_nWidth
;
pPathBox
->
SetTab
(
i
,
PixelToLogic
(
aSz
,
MapMode
(
MAP_APPFONT
)
).
Width
(),
MAP_APPFONT
);
m_
pPathBox
->
SetTab
(
i
,
PixelToLogic
(
aSz
,
MapMode
(
MAP_APPFONT
)
).
Width
(),
MAP_APPFONT
);
}
}
}
}
return
1
;
return
1
;
...
@@ -377,7 +377,7 @@ IMPL_LINK( DbRegistrationOptionsPage, HeaderEndDrag_Impl, HeaderBar*, pBar )
...
@@ -377,7 +377,7 @@ IMPL_LINK( DbRegistrationOptionsPage, HeaderEndDrag_Impl, HeaderBar*, pBar )
IMPL_LINK_NOARG
(
DbRegistrationOptionsPage
,
PathSelect_Impl
)
IMPL_LINK_NOARG
(
DbRegistrationOptionsPage
,
PathSelect_Impl
)
{
{
SvTreeListEntry
*
pEntry
=
pPathBox
->
FirstSelected
();
SvTreeListEntry
*
pEntry
=
m_
pPathBox
->
FirstSelected
();
bool
bReadOnly
=
true
;
bool
bReadOnly
=
true
;
if
(
pEntry
)
if
(
pEntry
)
...
@@ -401,11 +401,11 @@ void DbRegistrationOptionsPage::insertNewEntry( const OUString& _sName,const OUS
...
@@ -401,11 +401,11 @@ void DbRegistrationOptionsPage::insertNewEntry( const OUString& _sName,const OUS
if
(
_bReadOnly
)
if
(
_bReadOnly
)
{
{
Image
aLocked
(
CUI_RES
(
RID_SVXBMP_LOCK
)
);
Image
aLocked
(
CUI_RES
(
RID_SVXBMP_LOCK
)
);
pEntry
=
pPathBox
->
InsertEntry
(
aStr
,
aLocked
,
aLocked
);
pEntry
=
m_
pPathBox
->
InsertEntry
(
aStr
,
aLocked
,
aLocked
);
}
}
else
else
{
{
pEntry
=
pPathBox
->
InsertEntry
(
aStr
);
pEntry
=
m_
pPathBox
->
InsertEntry
(
aStr
);
}
}
pEntry
->
SetUserData
(
new
DatabaseRegistration
(
_sLocation
,
_bReadOnly
)
);
pEntry
->
SetUserData
(
new
DatabaseRegistration
(
_sLocation
,
_bReadOnly
)
);
...
@@ -428,7 +428,7 @@ void DbRegistrationOptionsPage::openLinkDialog(const OUString& _sOldName,const O
...
@@ -428,7 +428,7 @@ void DbRegistrationOptionsPage::openLinkDialog(const OUString& _sOldName,const O
if
(
_pEntry
)
if
(
_pEntry
)
{
{
delete
static_cast
<
DatabaseRegistration
*
>
(
_pEntry
->
GetUserData
()
);
delete
static_cast
<
DatabaseRegistration
*
>
(
_pEntry
->
GetUserData
()
);
pPathBox
->
GetModel
()
->
Remove
(
_pEntry
);
m_
pPathBox
->
GetModel
()
->
Remove
(
_pEntry
);
}
}
insertNewEntry
(
sNewName
,
sNewLocation
,
false
);
insertNewEntry
(
sNewName
,
sNewLocation
,
false
);
m_bModified
=
true
;
m_bModified
=
true
;
...
@@ -440,10 +440,10 @@ IMPL_LINK( DbRegistrationOptionsPage, NameValidator, OUString*, _pName )
...
@@ -440,10 +440,10 @@ IMPL_LINK( DbRegistrationOptionsPage, NameValidator, OUString*, _pName )
{
{
if
(
_pName
)
if
(
_pName
)
{
{
sal_uLong
nCount
=
pPathBox
->
GetEntryCount
();
sal_uLong
nCount
=
m_
pPathBox
->
GetEntryCount
();
for
(
sal_uLong
i
=
0
;
i
<
nCount
;
++
i
)
for
(
sal_uLong
i
=
0
;
i
<
nCount
;
++
i
)
{
{
SvTreeListEntry
*
pEntry
=
pPathBox
->
GetEntry
(
i
);
SvTreeListEntry
*
pEntry
=
m_
pPathBox
->
GetEntry
(
i
);
if
(
(
!
m_pCurEntry
||
m_pCurEntry
!=
pEntry
)
&&
SvTabListBox
::
GetEntryText
(
pEntry
,
0
)
==
*
_pName
)
if
(
(
!
m_pCurEntry
||
m_pCurEntry
!=
pEntry
)
&&
SvTabListBox
::
GetEntryText
(
pEntry
,
0
)
==
*
_pName
)
return
0L
;
return
0L
;
}
}
...
...
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