diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-02-24 11:38:13 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-02-25 10:45:27 +0000 |
commit | 838b77f5f3d6d8fd98891e99a23ff78a6a357cb2 (patch) | |
tree | ed43d6be36f80ffc9fb90b61bd7189451105e03b | |
parent | 1e0541fadf847e30053c0d8b29f90bdfaecd6be6 (diff) |
Resolves: rhbz#1065807 use xdg ~/Templates for default Template location
(if it exists)
Change-Id: I98fc9fd54d1f56c8bed24ce4d2ebf53756ded2cc
-rw-r--r-- | framework/source/services/pathsettings.cxx | 6 | ||||
-rw-r--r-- | officecfg/registry/data/org/openoffice/Office/Paths.xcu | 13 | ||||
-rw-r--r-- | shell/source/backends/desktopbe/desktopbackend.cxx | 21 | ||||
-rw-r--r-- | shell/source/backends/gconfbe/gconfaccess.cxx | 43 | ||||
-rw-r--r-- | shell/source/backends/gconfbe/gconfaccess.hxx | 1 |
5 files changed, 66 insertions, 18 deletions
diff --git a/framework/source/services/pathsettings.cxx b/framework/source/services/pathsettings.cxx index 90d61d2b6b13..105c5a6fb3f8 100644 --- a/framework/source/services/pathsettings.cxx +++ b/framework/source/services/pathsettings.cxx @@ -644,6 +644,12 @@ PathSettings::PathInfo PathSettings::impl_readNewFormat(const OUString& sPath) // read the writeable path xPath->getByName(CFGPROP_WRITEPATH) >>= aPathVal.sWritePath; + // avoid duplicates, by removing the writeable path from + // the user defined path list if it happens to be there too + OUStringList::iterator aI = aPathVal.lUserPaths.find(aPathVal.sWritePath); + if (aI != aPathVal.lUserPaths.end()) + aPathVal.lUserPaths.erase(aI); + // read state props xPath->getByName(CFGPROP_ISSINGLEPATH) >>= aPathVal.bIsSinglePath; diff --git a/officecfg/registry/data/org/openoffice/Office/Paths.xcu b/officecfg/registry/data/org/openoffice/Office/Paths.xcu index 4b5ec7dd2f8f..2ef605e1dabf 100644 --- a/officecfg/registry/data/org/openoffice/Office/Paths.xcu +++ b/officecfg/registry/data/org/openoffice/Office/Paths.xcu @@ -160,8 +160,21 @@ <node oor:name="InternalPaths"> <node oor:name="$(insturl)/@LIBO_SHARE_FOLDER@/template/$(vlang)" oor:op="fuse"/> </node> + <!-- + On unix check of we have a ~/Templates and use that as the write path. + On other platforms, or if ~/Templates doesn't exist, use the traditional + $(userurl)/template path. + + If we end up using the new ~/Templates as the write path, we then want + to have $(userurl)/template in our userpath for any templates left behind + in that dir. + --> <prop oor:name="WritePath"> <value>$(userurl)/template</value> + <value install:module="unixdesktop" oor:external="com.sun.star.configuration.backend.DesktopBackend TemplatePathVariable"/> + </prop> + <prop oor:name="UserPaths"> + <value install:module="unixdesktop">$(userurl)/template</value> </prop> </node> <node oor:name="UIConfig" oor:op="fuse" oor:mandatory="true"> diff --git a/shell/source/backends/desktopbe/desktopbackend.cxx b/shell/source/backends/desktopbe/desktopbackend.cxx index 8233bffa4488..0acf3375e501 100644 --- a/shell/source/backends/desktopbe/desktopbackend.cxx +++ b/shell/source/backends/desktopbe/desktopbackend.cxx @@ -153,11 +153,22 @@ css::uno::Any Default::getPropertyValue(OUString const & PropertyName) css::beans::UnknownPropertyException, css::lang::WrappedTargetException, css::uno::RuntimeException) { - if ( PropertyName == "EnableATToolSupport" || PropertyName == "ExternalMailer" || PropertyName == "SourceViewFontHeight" - || PropertyName == "SourceViewFontName" || PropertyName == "WorkPathVariable" || PropertyName == "ooInetFTPProxyName" - || PropertyName == "ooInetFTPProxyPort" || PropertyName == "ooInetHTTPProxyName" || PropertyName == "ooInetHTTPProxyPort" - || PropertyName == "ooInetHTTPSProxyName" || PropertyName == "ooInetHTTPSProxyPort" || PropertyName == "ooInetNoProxy" - || PropertyName == "ooInetProxyType" || PropertyName == "givenname" || PropertyName == "sn" ) + if ( PropertyName == "EnableATToolSupport" || + PropertyName == "ExternalMailer" || + PropertyName == "SourceViewFontHeight" || + PropertyName == "SourceViewFontName" || + PropertyName == "TemplatePathVariable" || + PropertyName == "WorkPathVariable" || + PropertyName == "ooInetFTPProxyName" || + PropertyName == "ooInetFTPProxyPort" || + PropertyName == "ooInetHTTPProxyName" || + PropertyName == "ooInetHTTPProxyPort" || + PropertyName == "ooInetHTTPSProxyName" || + PropertyName == "ooInetHTTPSProxyPort" || + PropertyName == "ooInetNoProxy" || + PropertyName == "ooInetProxyType" || + PropertyName == "givenname" || + PropertyName == "sn" ) { return css::uno::makeAny(css::beans::Optional< css::uno::Any >()); } diff --git a/shell/source/backends/gconfbe/gconfaccess.cxx b/shell/source/backends/gconfbe/gconfaccess.cxx index 8cf9f4b9ee0f..1bdad661f6e3 100644 --- a/shell/source/backends/gconfbe/gconfaccess.cxx +++ b/shell/source/backends/gconfbe/gconfaccess.cxx @@ -23,6 +23,7 @@ #include <string.h> #include "com/sun/star/uno/RuntimeException.hpp" +#include "com/sun/star/uno/Sequence.hxx" #include "osl/file.hxx" #include "osl/security.hxx" #include "osl/thread.h" @@ -189,19 +190,10 @@ static OUString xdg_user_dir_lookup (const char *type) if( osl::FileBase::E_None == aDocumentsDir.open() ) return aDocumentsDirURL; } - /* Special case desktop for historical compatibility */ - if (strcmp (type, "DESKTOP") == 0) - { - return aHomeDirURL + "/Desktop"; - } - else - { - return aHomeDirURL + "/Documents"; - } + /* Use fallbacks historical compatibility if nothing else exists */ + return aHomeDirURL + "/" + OUString::createFromAscii(type); } - - uno::Any makeAnyOfGconfValue( GConfValue *pGconfValue ) { switch( pGconfValue->type ) @@ -317,11 +309,18 @@ uno::Any translateToOOo( const ConfigurationValue &rValue, GConfValue *pGconfVal case SETTING_WORK_DIRECTORY: { - OUString aDocumentsDirURL = xdg_user_dir_lookup("DOCUMENTS"); + OUString aDocumentsDirURL = xdg_user_dir_lookup("Documents"); return uno::makeAny( aDocumentsDirURL ); } + case SETTING_TEMPLATE_DIRECTORY: + { + OUString aTemplatesDirURL = xdg_user_dir_lookup("Templates"); + + return uno::makeAny( aTemplatesDirURL ); + } + case SETTING_USER_GIVENNAME: { OUString aCompleteName( OStringToOUString( @@ -392,7 +391,7 @@ sal_Bool SAL_CALL isDependencySatisfied( GConfClient* pClient, const Configurati case SETTING_WORK_DIRECTORY: { - OUString aDocumentsDirURL = xdg_user_dir_lookup("DOCUMENTS"); + OUString aDocumentsDirURL = xdg_user_dir_lookup("Documents"); osl::Directory aDocumentsDir( aDocumentsDirURL ); if( osl::FileBase::E_None == aDocumentsDir.open() ) @@ -400,6 +399,16 @@ sal_Bool SAL_CALL isDependencySatisfied( GConfClient* pClient, const Configurati } break; + case SETTING_TEMPLATE_DIRECTORY: + { + OUString aTemplatesDirURL = xdg_user_dir_lookup("Templates"); + osl::Directory aTemplatesDir( aTemplatesDirURL ); + + if( osl::FileBase::E_None == aTemplatesDir.open() ) + return sal_True; + } + break; + case SETTING_USER_GIVENNAME: { OUString aCompleteName( OStringToOUString( @@ -563,6 +572,14 @@ ConfigurationValue const ConfigurationValues[] = }, { + SETTING_TEMPLATE_DIRECTORY, + "/desktop/gnome/url-handlers/mailto/command", // dummy + RTL_CONSTASCII_STRINGPARAM("TemplatePathVariable"), + sal_True, + SETTING_TEMPLATE_DIRECTORY, // so that the existence of the dir can be checked + }, + + { SETTING_USER_GIVENNAME, "/desktop/gnome/url-handlers/mailto/command", // dummy RTL_CONSTASCII_STRINGPARAM("givenname"), diff --git a/shell/source/backends/gconfbe/gconfaccess.hxx b/shell/source/backends/gconfbe/gconfaccess.hxx index 7f0a52a61c42..3fcd2171a03d 100644 --- a/shell/source/backends/gconfbe/gconfaccess.hxx +++ b/shell/source/backends/gconfbe/gconfaccess.hxx @@ -47,6 +47,7 @@ enum ConfigurationSetting SETTING_ENABLE_ACCESSIBILITY, SETTING_MAILER_PROGRAM, SETTING_WORK_DIRECTORY, + SETTING_TEMPLATE_DIRECTORY, SETTING_SOURCEVIEWFONT_NAME, SETTING_SOURCEVIEWFONT_HEIGHT, SETTING_USER_GIVENNAME, |