summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorCao Cuong Ngo <cao.cuong.ngo@gmail.com>2013-07-09 18:54:35 +0200
committerCédric Bosdonnat <cedric.bosdonnat.ooo@free.fr>2013-09-02 13:51:49 +0200
commitd259e07e851cafa4e0ca68f7ab18535e82c7aed5 (patch)
tree3d1ea1858ffc9cd3b57d24d7a5cbcc131eff0e18 /sfx2
parentb56a9a22dadc2f78be1c898505a884774fc19e25 (diff)
CMIS properties dialog: update properties
Change-Id: Ia506713b61dc6c1343eac3640863c86a2fc3f18f
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/source/dialog/dinfdlg.cxx22
-rw-r--r--sfx2/source/doc/objserv.cxx5
-rw-r--r--sfx2/source/doc/sfxbasemodel.cxx23
3 files changed, 49 insertions, 1 deletions
diff --git a/sfx2/source/dialog/dinfdlg.cxx b/sfx2/source/dialog/dinfdlg.cxx
index d5a68c8c6621..e2de7c9b5b03 100644
--- a/sfx2/source/dialog/dinfdlg.cxx
+++ b/sfx2/source/dialog/dinfdlg.cxx
@@ -576,6 +576,28 @@ std::vector< CmisProperty* > SfxDocumentInfoItem::GetCmisProperties() const
return aRet;
}
+uno::Sequence< document::CmisProperty > SfxDocumentInfoItem::GetCmisPropertiesSeq() const
+{
+ Sequence< document::CmisProperty > aPropertiesSeq( m_aCmisProperties.size() );
+ sal_Int32 i = 0;
+ std::vector< CmisProperty* >::const_iterator pIter;
+ for ( pIter = m_aCmisProperties.begin();
+ pIter != m_aCmisProperties.end(); ++pIter, ++i )
+ {
+ CmisProperty* aProp = *pIter;
+ aPropertiesSeq[i].Id = aProp->m_sId;
+ aPropertiesSeq[i].Name = aProp->m_sName;
+ aPropertiesSeq[i].Updatable = aProp->m_bUpdatable;
+ aPropertiesSeq[i].Required = aProp->m_bRequired;
+ aPropertiesSeq[i].MultiValued = aProp->m_bMultiValued;
+ aPropertiesSeq[i].OpenChoice = aProp->m_bOpenChoice;
+ aPropertiesSeq[i].Choices = aProp->m_aChoices;
+ aPropertiesSeq[i].Value = aProp->m_aValue;
+ }
+
+ return aPropertiesSeq;
+}
+
void SfxDocumentInfoItem::ClearCmisProperties()
{
for ( sal_uInt32 i = 0; i < m_aCmisProperties.size(); i++ )
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index f7b7a7fc4a4e..b89343ec7440 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -518,10 +518,13 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
{
// user has done some changes to DocumentInfo
pDocInfoItem->UpdateDocumentInfo(getDocProperties());
+ uno::Sequence< document::CmisProperty > aNewCmisProperties =
+ pDocInfoItem->GetCmisPropertiesSeq( );
+ xCmisDoc->updateCmisProperties( aNewCmisProperties );
SetUseUserData( ((const SfxDocumentInfoItem *)pDocInfoItem)->IsUseUserData() );
// add data from dialog for possible recording purpose
rReq.AppendItem( SfxDocumentInfoItem( GetTitle(),
- getDocProperties(), aCmisProperties, IsUseUserData() ) );
+ getDocProperties(), aNewCmisProperties, IsUseUserData() ) );
}
rReq.Done();
diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx
index 8ee40854fe21..1fc65d2279af 100644
--- a/sfx2/source/doc/sfxbasemodel.cxx
+++ b/sfx2/source/doc/sfxbasemodel.cxx
@@ -2474,6 +2474,29 @@ void SAL_CALL SfxBaseModel::setCmisProperties( const Sequence< document::CmisPro
m_pData->m_cmisProperties = _cmisproperties;
}
+void SAL_CALL SfxBaseModel::updateCmisProperties( const Sequence< document::CmisProperty >& aProperties )
+ throw ( RuntimeException )
+{
+ SfxMedium* pMedium = m_pData->m_pObjectShell->GetMedium();
+ if ( pMedium )
+ {
+ try
+ {
+ ::ucbhelper::Content aContent( pMedium->GetName( ),
+ Reference<ucb::XCommandEnvironment>(),
+ comphelper::getProcessComponentContext() );\
+
+ aContent.executeCommand( "updateProperties", uno::makeAny( aProperties ) );
+ loadCmisProperties( );
+ }
+ catch (const Exception & e)
+ {
+ throw RuntimeException( e.Message, e.Context );
+ }
+ }
+
+}
+
void SAL_CALL SfxBaseModel::checkOut( ) throw ( RuntimeException )
{
SfxMedium* pMedium = m_pData->m_pObjectShell->GetMedium();