CMIS: use another name to show than the one extracted from the base URL
In CMIS, the URL is only providing an easy access to the CMIS interface and doesn't reflect the public path on the server. A new property has been added in the SfxMedium items to hold the document name on the server and set it as the window title.
This commit is contained in:
@@ -55,6 +55,7 @@
|
||||
#include <com/sun/star/document/XStorageChangeListener.hpp>
|
||||
#include <com/sun/star/document/XActionLockable.hpp>
|
||||
#include <com/sun/star/beans/XPropertySet.hpp>
|
||||
#include <com/sun/star/beans/XPropertySetInfo.hpp>
|
||||
#include <com/sun/star/container/XIndexContainer.hpp>
|
||||
#include <com/sun/star/script/provider/XScriptProviderFactory.hpp>
|
||||
#include <com/sun/star/script/provider/XScriptProvider.hpp>
|
||||
@@ -65,6 +66,7 @@
|
||||
#include <com/sun/star/embed/Aspects.hpp>
|
||||
#include <com/sun/star/document/XDocumentProperties.hpp>
|
||||
#include <com/sun/star/frame/XTransientDocumentsDocumentContentFactory.hpp>
|
||||
#include <com/sun/star/ucb/XCommandEnvironment.hpp>
|
||||
#include <comphelper/enumhelper.hxx> // can be removed when this is a "real" service
|
||||
|
||||
#include <cppuhelper/interfacecontainer.hxx>
|
||||
@@ -3768,11 +3770,25 @@ css::uno::Reference< css::frame::XUntitledNumbers > SfxBaseModel::impl_getUntitl
|
||||
{
|
||||
SfxMedium* pMedium = m_pData->m_pObjectShell->GetMedium();
|
||||
if ( pMedium )
|
||||
{
|
||||
::ucbhelper::Content aContent( pMedium->GetName(), com::sun::star::uno::Reference < ucb::XCommandEnvironment >() );
|
||||
com::sun::star::uno::Reference < beans::XPropertySetInfo > xProps = aContent.getProperties();
|
||||
if ( xProps.is() )
|
||||
{
|
||||
::rtl::OUString aServerTitle( RTL_CONSTASCII_USTRINGPARAM("TitleOnServer") );
|
||||
if ( xProps->hasPropertyByName( aServerTitle ) )
|
||||
{
|
||||
uno::Any aAny = aContent.getPropertyValue( aServerTitle );
|
||||
aAny >>= aResult;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SFX_ITEMSET_ARG( pMedium->GetItemSet(), pRepairedDocItem, SfxBoolItem, SID_REPAIRPACKAGE, sal_False );
|
||||
if ( pRepairedDocItem && pRepairedDocItem->GetValue() )
|
||||
aResult += String( SfxResId(STR_REPAIREDDOCUMENT) );
|
||||
}
|
||||
}
|
||||
|
||||
if ( m_pData->m_pObjectShell->IsReadOnlyUI() || (pMedium && pMedium->IsReadOnly()) )
|
||||
aResult += ::rtl::OUString( String( SfxResId(STR_READONLY) ) );
|
||||
|
@@ -126,6 +126,9 @@ namespace cmis
|
||||
for( sal_Int32 n = 0; n < nProps; ++n )
|
||||
{
|
||||
const beans::Property& rProp = pProps[ n ];
|
||||
#if OSL_DEBUG_LEVEL > 1
|
||||
fprintf( stderr, "Property: %s\n", rtl::OUStringToOString( rProp.Name, RTL_TEXTENCODING_UTF8 ).getStr() );
|
||||
#endif
|
||||
|
||||
if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsDocument" ) ) )
|
||||
{
|
||||
@@ -141,8 +144,9 @@ namespace cmis
|
||||
else
|
||||
xRow->appendVoid( rProp );
|
||||
}
|
||||
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Title" ) ) )
|
||||
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "TitleOnServer" ) ) )
|
||||
{
|
||||
// TODO Set the path instead of the name
|
||||
xRow->appendString( rProp, rtl::OUString::createFromAscii( m_pObject->getName().c_str() ) );
|
||||
}
|
||||
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsReadOnly" ) ) )
|
||||
@@ -354,7 +358,7 @@ namespace cmis
|
||||
beans::Property( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsFolder" ) ),
|
||||
-1, getCppuBooleanType(),
|
||||
beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY ),
|
||||
beans::Property( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ),
|
||||
beans::Property( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TitleOnServer" ) ),
|
||||
-1, getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
|
||||
beans::PropertyAttribute::BOUND ),
|
||||
beans::Property( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsReadOnly" ) ),
|
||||
|
Reference in New Issue
Block a user