Files
libreoffice/shell/source/backends/gconfbe/gconfaccess.cxx
Stephan Bergmann 84676d50ca Clean up C-style casts from pointers to void
Change-Id: Iaae87d77ea48207c3277e7107b339296f6a99772
2015-03-28 19:09:25 +01:00

846 lines
23 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <sal/macros.h>
#include <sal/config.h>
#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"
#include "rtl/strbuf.hxx"
#include "rtl/ustrbuf.hxx"
#include "gconfaccess.hxx"
#define GCONF_PROXY_MODE_KEY "/system/proxy/mode"
#ifdef ENABLE_LOCKDOWN
#define GCONF_AUTO_SAVE_KEY "/apps/openoffice/auto_save"
#define GCONF_USER_AUTO_SAVE_KEY "/apps/openoffice/user_auto_save"
#endif
namespace gconfaccess {
namespace {
namespace uno = css::uno ;
GConfClient* getGconfClient()
{
static GConfClient* mClient= 0;
if (mClient == NULL)
{
#if !GLIB_CHECK_VERSION(2,36,0)
/* initialize glib object type library */
g_type_init();
#endif
GError* aError = NULL;
if (!gconf_init(0, NULL, &aError))
{
OUString msg("GconfBackend:GconfLayer: Cannot Initialize Gconf connection - " +
OUString::createFromAscii(aError->message));
g_error_free(aError);
aError = NULL;
throw uno::RuntimeException(msg);
}
mClient = gconf_client_get_default();
if (!mClient)
{
throw uno::RuntimeException("GconfBackend:GconfLayer: Cannot Initialize Gconf connection");
}
static const char * const PreloadValuesList[] =
{
"/desktop/gnome/interface",
"/system/proxy",
"/system/http_proxy/host",
"/desktop/gnome/url-handlers/mailto",
#ifdef ENABLE_LOCKDOWN
"/apps/openoffice",
"/desktop/gnome/lockdown",
"/apps/openoffice/lockdown",
#endif // ENABLE_LOCKDOWN
NULL
};
int i = 0;
while( PreloadValuesList[i] != NULL )
gconf_client_preload( mClient, PreloadValuesList[i++], GCONF_CLIENT_PRELOAD_ONELEVEL, NULL );
}
return mClient;
}
static OUString xdg_user_dir_lookup (const char *type)
{
char *config_home;
char *p;
bool bError = false;
osl::Security aSecurity;
oslFileHandle handle;
OUString aHomeDirURL;
OUString aDocumentsDirURL;
OUString aConfigFileURL;
OUStringBuffer aUserDirBuf;
if (!aSecurity.getHomeDir( aHomeDirURL ) )
{
osl::FileBase::getFileURLFromSystemPath(OUString("/tmp"), aDocumentsDirURL);
return aDocumentsDirURL;
}
config_home = getenv ("XDG_CONFIG_HOME");
if (config_home == NULL || config_home[0] == 0)
{
aConfigFileURL = aHomeDirURL + "/.config/user-dirs.dirs";
}
else
{
aConfigFileURL = OUString::createFromAscii(config_home) + "/user-dirs.dirs";
}
if(osl_File_E_None == osl_openFile(aConfigFileURL.pData, &handle, osl_File_OpenFlag_Read))
{
rtl::ByteSequence seq;
while (osl_File_E_None == osl_readLine(handle , reinterpret_cast<sal_Sequence **>(&seq)))
{
/* Remove newline at end */
int relative = 0;
int len = seq.getLength();
if(len>0 && seq[len-1] == '\n')
seq[len-1] = 0;
p = reinterpret_cast<char *>(seq.getArray());
while (*p == ' ' || *p == '\t')
p++;
if (strncmp (p, "XDG_", 4) != 0)
continue;
p += 4;
if (strncmp (p, type, strlen (type)) != 0)
continue;
p += strlen (type);
if (strncmp (p, "_DIR", 4) != 0)
continue;
p += 4;
while (*p == ' ' || *p == '\t')
p++;
if (*p != '=')
continue;
p++;
while (*p == ' ' || *p == '\t')
p++;
if (*p != '"')
continue;
p++;
if (strncmp (p, "$HOME/", 6) == 0)
{
p += 6;
relative = 1;
}
else if (*p != '/')
continue;
if (relative)
{
aUserDirBuf = OUStringBuffer(aHomeDirURL + "/");
}
else
{
aUserDirBuf = OUStringBuffer();
}
while (*p && *p != '"')
{
if ((*p == '\\') && (*(p+1) != 0))
p++;
aUserDirBuf.append((sal_Unicode)*p++);
}
}//end of while
osl_closeFile(handle);
}
else
bError = true;
if (aUserDirBuf.getLength()>0 && !bError)
{
aDocumentsDirURL = aUserDirBuf.makeStringAndClear();
osl::Directory aDocumentsDir( aDocumentsDirURL );
if( osl::FileBase::E_None == aDocumentsDir.open() )
return aDocumentsDirURL;
}
/* Use fallbacks historical compatibility if nothing else exists */
return aHomeDirURL + "/" + OUString::createFromAscii(type);
}
uno::Any makeAnyOfGconfValue( GConfValue *pGconfValue )
{
switch( pGconfValue->type )
{
case GCONF_VALUE_BOOL:
return uno::makeAny( (bool) gconf_value_get_bool( pGconfValue ) );
case GCONF_VALUE_INT:
return uno::makeAny( (sal_Int32) gconf_value_get_int( pGconfValue ) );
case GCONF_VALUE_STRING:
return uno::makeAny( OStringToOUString( OString(
gconf_value_get_string(pGconfValue) ), RTL_TEXTENCODING_UTF8 ) );
default:
fprintf( stderr, "makeAnyOfGconfValue: Type not handled.\n" );
break;
}
return uno::Any();
}
static void splitFontName( GConfValue *pGconfValue, OUString &rName, sal_Int16 &rHeight)
{
OString aFont( gconf_value_get_string( pGconfValue ) );
aFont = aFont.trim();
sal_Int32 nIdx = aFont.lastIndexOf( ' ' );
if (nIdx < 1) { // urk
rHeight = 12;
nIdx = aFont.getLength();
} else {
OString aSize = aFont.copy( nIdx + 1 );
rHeight = static_cast<sal_Int16>( aSize.toInt32() );
}
rName = OStringToOUString( aFont.copy( 0, nIdx ), RTL_TEXTENCODING_UTF8 );
}
uno::Any translateToOOo( const ConfigurationValue &rValue, GConfValue *pGconfValue )
{
switch( rValue.nSettingId )
{
case SETTING_PROXY_MODE:
{
OUString aProxyMode;
uno::Any aOriginalValue = makeAnyOfGconfValue( pGconfValue );
aOriginalValue >>= aProxyMode;
if( aProxyMode == "manual" )
return uno::makeAny( (sal_Int32) 1 );
else if( aProxyMode == "none" )
return uno::makeAny( (sal_Int32) 0 );
}
break;
case SETTING_NO_PROXY_FOR:
{
OStringBuffer aBuffer;
if( (GCONF_VALUE_LIST == pGconfValue->type) && (GCONF_VALUE_STRING == gconf_value_get_list_type(pGconfValue)) )
{
GSList * list = gconf_value_get_list(pGconfValue);
for(; list; list = g_slist_next(list))
{
aBuffer.append(gconf_value_get_string(static_cast<GConfValue *>(list->data)) + OString(";"));
}
// Remove trailing ";"
aBuffer.setLength(aBuffer.getLength()-1);
return uno::makeAny(OStringToOUString(aBuffer.makeStringAndClear(), RTL_TEXTENCODING_UTF8));
}
else
g_warning( "unexpected type for ignore_hosts" );
}
break;
case SETTING_MAILER_PROGRAM:
{
OUString aMailer;
uno::Any aOriginalValue = makeAnyOfGconfValue( pGconfValue );
aOriginalValue >>= aMailer;
sal_Int32 nIndex = 0;
return uno::makeAny( aMailer.getToken( 0, ' ', nIndex ) );
}
#ifdef ENABLE_LOCKDOWN
// "short" values need to be returned a sal_Int16
case SETTING_FONT_ANTI_ALIASING_MIN_PIXEL:
case SETTING_SYMBOL_SET:
{
sal_Int32 nShortValue(0);
uno::Any aOriginalValue = makeAnyOfGconfValue( pGconfValue );
aOriginalValue >>= nShortValue;
return uno::makeAny( (sal_Int16) nShortValue );
}
break;
#endif // ENABLE_LOCKDOWN
// "boolean" values that need a string to be returned
case SETTING_ENABLE_ACCESSIBILITY:
#ifdef ENABLE_LOCKDOWN
case SETTING_DISABLE_PRINTING:
#endif // ENABLE_LOCKDOWN
{
bool bBooleanValue = false;
uno::Any aOriginalValue = makeAnyOfGconfValue( pGconfValue );
aOriginalValue >>= bBooleanValue;
return uno::makeAny( OUString::boolean( bBooleanValue ) );
}
case SETTING_WORK_DIRECTORY:
{
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(
g_get_real_name(), osl_getThreadTextEncoding() ) );
sal_Int32 nIndex = 0;
OUString aGivenName;
do
aGivenName = aCompleteName.getToken( 0, ' ', nIndex );
while ( nIndex == 0 );
return uno::makeAny( aGivenName );
}
case SETTING_USER_SURNAME:
{
OUString aCompleteName( OStringToOUString(
g_get_real_name(), osl_getThreadTextEncoding() ) );
sal_Int32 nIndex = 0;
OUString aSurname;
do
aSurname = aCompleteName.getToken( 0, ' ', nIndex );
while ( nIndex >= 0 );
return uno::makeAny( aSurname );
}
case SETTING_SOURCEVIEWFONT_NAME:
case SETTING_SOURCEVIEWFONT_HEIGHT:
{
OUString aName;
sal_Int16 nHeight;
splitFontName (pGconfValue, aName, nHeight);
if (rValue.nSettingId == SETTING_SOURCEVIEWFONT_NAME)
return uno::makeAny( aName );
else
return uno::makeAny( nHeight );
}
default:
fprintf( stderr, "Unhandled setting to translate.\n" );
break;
}
return uno::Any();
}
bool SAL_CALL isDependencySatisfied( GConfClient* pClient, const ConfigurationValue &rValue )
{
switch( rValue.nDependsOn )
{
case SETTING_PROXY_MODE:
{
GConfValue* pGconfValue = gconf_client_get( pClient, GCONF_PROXY_MODE_KEY, NULL );
if ( pGconfValue != NULL )
{
bool bOk = g_ascii_strcasecmp( "manual", gconf_value_get_string( pGconfValue ) ) == 0;
gconf_value_free( pGconfValue );
if (bOk) return true;
}
}
break;
case SETTING_WORK_DIRECTORY:
{
OUString aDocumentsDirURL = xdg_user_dir_lookup("Documents");
osl::Directory aDocumentsDir( aDocumentsDirURL );
if( osl::FileBase::E_None == aDocumentsDir.open() )
return true;
}
break;
case SETTING_TEMPLATE_DIRECTORY:
{
OUString aTemplatesDirURL = xdg_user_dir_lookup("Templates");
osl::Directory aTemplatesDir( aTemplatesDirURL );
if( osl::FileBase::E_None == aTemplatesDir.open() )
return true;
}
break;
case SETTING_USER_GIVENNAME:
{
OUString aCompleteName( OStringToOUString(
g_get_real_name(), osl_getThreadTextEncoding() ) );
if( aCompleteName != "Unknown" )
return true;
}
break;
case SETTING_USER_SURNAME:
{
OUString aCompleteName( OStringToOUString(
g_get_real_name(), osl_getThreadTextEncoding() ) );
if( aCompleteName != "Unknown" )
{
if( aCompleteName.trim().indexOf( ' ' ) != -1 )
return true;
}
}
break;
#ifdef ENABLE_LOCKDOWN
case SETTING_AUTO_SAVE:
{
GConfValue* pGconfValue = gconf_client_get( pClient, GCONF_AUTO_SAVE_KEY, NULL );
if( ( pGconfValue != NULL ) )
{
bool bOk = gconf_value_get_bool( pGconfValue );
gconf_value_free( pGconfValue );
if (bOk) return true;
}
}
break;
case SETTING_USER_AUTO_SAVE:
{
GConfValue* pGconfValue = gconf_client_get( pClient, GCONF_USER_AUTO_SAVE_KEY, NULL );
if( ( pGconfValue != NULL ) )
{
bool bOk = gconf_value_get_bool( pGconfValue );
gconf_value_free( pGconfValue );
if (bOk) return true;
}
}
break;
#endif // ENABLE_LOCKDOWN
default:
fprintf( stderr, "Unhandled setting to check dependency.\n" );
break;
}
return false;
}
}
ConfigurationValue const ConfigurationValues[] =
{
{
SETTING_ENABLE_ACCESSIBILITY,
"/desktop/gnome/interface/accessibility",
RTL_CONSTASCII_STRINGPARAM("EnableATToolSupport"),
true,
SETTINGS_LAST
},
{
SETTING_PROXY_MODE,
GCONF_PROXY_MODE_KEY,
RTL_CONSTASCII_STRINGPARAM("ooInetProxyType"),
true,
SETTINGS_LAST
},
{
SETTING_PROXY_HTTP_HOST,
"/system/http_proxy/host",
RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyName"),
false,
SETTING_PROXY_MODE
},
{
SETTING_PROXY_HTTP_PORT,
"/system/http_proxy/port",
RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyPort"),
false,
SETTING_PROXY_MODE
},
{
SETTING_PROXY_HTTPS_HOST,
"/system/proxy/secure_host",
RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyName"),
false,
SETTING_PROXY_MODE
},
{
SETTING_PROXY_HTTPS_PORT,
"/system/proxy/secure_port",
RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyPort"),
false,
SETTING_PROXY_MODE
},
{
SETTING_PROXY_FTP_HOST,
"/system/proxy/ftp_host",
RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyName"),
false,
SETTING_PROXY_MODE
},
{
SETTING_PROXY_FTP_PORT,
"/system/proxy/ftp_port",
RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyPort"),
false,
SETTING_PROXY_MODE
},
{
SETTING_NO_PROXY_FOR,
"/system/http_proxy/ignore_hosts",
RTL_CONSTASCII_STRINGPARAM("ooInetNoProxy"),
true,
SETTING_PROXY_MODE
},
{
SETTING_MAILER_PROGRAM,
"/desktop/gnome/url-handlers/mailto/command",
RTL_CONSTASCII_STRINGPARAM("ExternalMailer"),
true,
SETTINGS_LAST
},
{
SETTING_SOURCEVIEWFONT_NAME,
"/desktop/gnome/interface/monospace_font_name",
RTL_CONSTASCII_STRINGPARAM("SourceViewFontName"),
true,
SETTINGS_LAST
},
{
SETTING_SOURCEVIEWFONT_HEIGHT,
"/desktop/gnome/interface/monospace_font_name",
RTL_CONSTASCII_STRINGPARAM("SourceViewFontHeight"),
true,
SETTINGS_LAST
},
{
SETTING_WORK_DIRECTORY,
"/desktop/gnome/url-handlers/mailto/command", // dummy
RTL_CONSTASCII_STRINGPARAM("WorkPathVariable"),
true,
SETTING_WORK_DIRECTORY, // so that the existence of the dir can be checked
},
{
SETTING_TEMPLATE_DIRECTORY,
"/desktop/gnome/url-handlers/mailto/command", // dummy
RTL_CONSTASCII_STRINGPARAM("TemplatePathVariable"),
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"),
true,
SETTING_USER_GIVENNAME
},
{
SETTING_USER_SURNAME,
"/desktop/gnome/url-handlers/mailto/command", // dummy
RTL_CONSTASCII_STRINGPARAM("sn"),
true,
SETTING_USER_SURNAME
},
#ifdef ENABLE_LOCKDOWN
{
SETTING_WRITER_DEFAULT_DOC_FORMAT,
"/apps/openoffice/writer_default_document_format",
RTL_CONSTASCII_STRINGPARAM("TextDocumentSetupFactoryDefaultFilter"),
false,
SETTINGS_LAST
},
{
SETTING_IMPRESS_DEFAULT_DOC_FORMAT,
"/apps/openoffice/impress_default_document_format",
RTL_CONSTASCII_STRINGPARAM("PresentationDocumentSetupFactoryDefaultFilter"),
false,
SETTINGS_LAST
},
{
SETTING_CALC_DEFAULT_DOC_FORMAT,
"/apps/openoffice/calc_default_document_format",
RTL_CONSTASCII_STRINGPARAM("SpreadsheetDocumentSetupFactoryDefaultFilter"),
false,
SETTINGS_LAST
},
{
SETTING_AUTO_SAVE,
GCONF_AUTO_SAVE_KEY,
RTL_CONSTASCII_STRINGPARAM("AutoSaveEnabled"),
false,
SETTINGS_LAST
},
{
SETTING_USER_AUTO_SAVE,
GCONF_USER_AUTO_SAVE_KEY,
RTL_CONSTASCII_STRINGPARAM("UserAutoSaveEnabled"),
false,
SETTINGS_LAST
},
{
SETTING_AUTO_SAVE_INTERVAL,
"/apps/openoffice/auto_save_interval",
RTL_CONSTASCII_STRINGPARAM("AutoSaveTimeIntervall"),
false,
SETTING_AUTO_SAVE
},
{
SETTING_DISABLE_PRINTING,
"/desktop/gnome/lockdown/disable_printing",
RTL_CONSTASCII_STRINGPARAM("DisablePrinting"),
true,
SETTINGS_LAST
},
{
SETTING_USE_SYSTEM_FILE_DIALOG,
"/apps/openoffice/use_system_file_dialog",
RTL_CONSTASCII_STRINGPARAM("UseSystemFileDialog"),
false,
SETTINGS_LAST
},
{
SETTING_PRINTING_MODIFIES_DOCUMENT,
"/apps/openoffice/printing_modifies_doc",
RTL_CONSTASCII_STRINGPARAM("PrintingModifiesDocument"),
false,
SETTINGS_LAST
},
{
SETTING_SHOW_ICONS_IN_MENUS,
"/apps/openoffice/show_menu_icons",
RTL_CONSTASCII_STRINGPARAM("ShowIconsInMenues"),
false,
SETTINGS_LAST
},
{
SETTING_SHOW_INACTIVE_MENUITEMS,
"/apps/openoffice/show_menu_inactive_items",
RTL_CONSTASCII_STRINGPARAM("DontHideDisabledEntry"),
false,
SETTINGS_LAST
},
{
SETTING_SHOW_FONT_PREVIEW,
"/apps/openoffice/show_font_preview",
RTL_CONSTASCII_STRINGPARAM("ShowFontBoxWYSIWYG"),
false,
SETTINGS_LAST
},
{
SETTING_SHOW_FONT_HISTORY,
"/apps/openoffice/show_font_history",
RTL_CONSTASCII_STRINGPARAM("FontViewHistory"),
false,
SETTINGS_LAST
},
{
SETTING_USE_SYSTEM_FONT,
"/apps/openoffice/use_system_font",
RTL_CONSTASCII_STRINGPARAM("AccessibilityIsSystemFont"),
false,
SETTINGS_LAST
},
{
SETTING_USE_FONT_ANTI_ALIASING,
"/apps/openoffice/use_font_anti_aliasing",
RTL_CONSTASCII_STRINGPARAM("FontAntiAliasingEnabled"),
false,
SETTINGS_LAST
},
{
SETTING_FONT_ANTI_ALIASING_MIN_PIXEL,
"/apps/openoffice/font_anti_aliasing_min_pixel",
RTL_CONSTASCII_STRINGPARAM("FontAntiAliasingMinPixelHeight"),
true,
SETTINGS_LAST
},
{
SETTING_WARN_CREATE_PDF,
"/apps/openoffice/lockdown/warn_info_create_pdf",
RTL_CONSTASCII_STRINGPARAM("WarnCreatePDF"),
false,
SETTINGS_LAST
},
{
SETTING_WARN_PRINT_DOC,
"/apps/openoffice/lockdown/warn_info_printing",
RTL_CONSTASCII_STRINGPARAM("WarnPrintDoc"),
false,
SETTINGS_LAST
},
{
SETTING_WARN_SAVEORSEND_DOC,
"/apps/openoffice/lockdown/warn_info_saving",
RTL_CONSTASCII_STRINGPARAM("WarnSaveOrSendDoc"),
false,
SETTINGS_LAST
},
{
SETTING_WARN_SIGN_DOC,
"/apps/openoffice/lockdown/warn_info_signing",
RTL_CONSTASCII_STRINGPARAM("WarnSignDoc"),
false,
SETTINGS_LAST
},
{
SETTING_REMOVE_PERSONAL_INFO,
"/apps/openoffice/lockdown/remove_personal_info_on_save",
RTL_CONSTASCII_STRINGPARAM("RemovePersonalInfoOnSaving"),
false,
SETTINGS_LAST
},
{
SETTING_RECOMMEND_PASSWORD,
"/apps/openoffice/lockdown/recommend_password_on_save",
RTL_CONSTASCII_STRINGPARAM("RecommendPasswordProtection"),
false,
SETTINGS_LAST
},
{
SETTING_UNDO_STEPS,
"/apps/openoffice/undo_steps",
RTL_CONSTASCII_STRINGPARAM("UndoSteps"),
false,
SETTINGS_LAST
},
{
SETTING_SYMBOL_SET,
"/apps/openoffice/icon_size",
RTL_CONSTASCII_STRINGPARAM("SymbolSet"),
true,
SETTINGS_LAST
},
{
SETTING_MACRO_SECURITY_LEVEL,
"/apps/openoffice/lockdown/macro_security_level",
RTL_CONSTASCII_STRINGPARAM("MacroSecurityLevel"),
false,
SETTINGS_LAST
},
{
SETTING_CREATE_BACKUP,
"/apps/openoffice/create_backup",
RTL_CONSTASCII_STRINGPARAM("CreateBackup"),
false,
SETTINGS_LAST
},
{
SETTING_WARN_ALIEN_FORMAT,
"/apps/openoffice/warn_alien_format",
RTL_CONSTASCII_STRINGPARAM("WarnAlienFormat"),
false,
SETTINGS_LAST
},
#endif // ENABLE_LOCKDOWN
};
std::size_t const nConfigurationValues =
sizeof ConfigurationValues / sizeof ConfigurationValues[0];
css::beans::Optional< css::uno::Any > getValue(ConfigurationValue const & data)
{
GConfClient* pClient = getGconfClient();
if( ( data.nDependsOn == SETTINGS_LAST ) || isDependencySatisfied( pClient, data ) )
{
GConfValue* pGconfValue = gconf_client_get( pClient, data.GconfItem, NULL );
if( pGconfValue != NULL )
{
css::uno::Any value;
if( data.bNeedsTranslation )
value = translateToOOo( data, pGconfValue );
else
value = makeAnyOfGconfValue( pGconfValue );
gconf_value_free( pGconfValue );
return css::beans::Optional< css::uno::Any >(true, value);
}
}
return css::beans::Optional< css::uno::Any >();
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */