LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/shell/source/backends/gconfbe - gconfaccess.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 191 0.0 %
Date: 2013-07-09 Functions: 0 7 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <sal/macros.h>
      21             : #include <sal/config.h>
      22             : 
      23             : #include <string.h>
      24             : 
      25             : #include "com/sun/star/uno/RuntimeException.hpp"
      26             : #include "osl/file.hxx"
      27             : #include "osl/security.hxx"
      28             : #include "osl/thread.h"
      29             : #include "rtl/strbuf.hxx"
      30             : #include "rtl/ustrbuf.hxx"
      31             : #include "sal/macros.h"
      32             : 
      33             : #include "gconfaccess.hxx"
      34             : 
      35             : #define GCONF_PROXY_MODE_KEY "/system/proxy/mode"
      36             : 
      37             : #ifdef ENABLE_LOCKDOWN
      38             : #define GCONF_AUTO_SAVE_KEY  "/apps/openoffice/auto_save"
      39             : #define GCONF_USER_AUTO_SAVE_KEY  "/apps/openoffice/user_auto_save"
      40             : #endif
      41             : 
      42             : namespace gconfaccess {
      43             : 
      44             : namespace {
      45             : 
      46             : namespace uno = css::uno ;
      47             : 
      48             : 
      49           0 : GConfClient* getGconfClient()
      50             : {
      51             :     static GConfClient* mClient= 0;
      52           0 :     if (mClient == NULL)
      53             :     {
      54             : #if !GLIB_CHECK_VERSION(2,36,0)
      55             :         /* initialize glib object type library */
      56             :         g_type_init();
      57             : #endif
      58             : 
      59           0 :         GError* aError = NULL;
      60           0 :         if (!gconf_init(0, NULL, &aError))
      61             :         {
      62           0 :             OUString msg("GconfBackend:GconfLayer: Cannot Initialize Gconf connection - " +
      63           0 :                          OUString::createFromAscii(aError->message));
      64             : 
      65           0 :             g_error_free(aError);
      66           0 :             aError = NULL;
      67           0 :             throw uno::RuntimeException(msg, NULL);
      68             :         }
      69             : 
      70           0 :         mClient = gconf_client_get_default();
      71           0 :         if (!mClient)
      72             :         {
      73           0 :             throw uno::RuntimeException("GconfBackend:GconfLayer: Cannot Initialize Gconf connection",NULL);
      74             :         }
      75             : 
      76             :         static const char * const PreloadValuesList[] =
      77             :         {
      78             :             "/desktop/gnome/interface",
      79             :             "/system/proxy",
      80             :             "/system/http_proxy/host",
      81             :             "/desktop/gnome/url-handlers/mailto",
      82             : #ifdef ENABLE_LOCKDOWN
      83             :             "/apps/openoffice",
      84             :             "/desktop/gnome/lockdown",
      85             :             "/apps/openoffice/lockdown",
      86             : #endif // ENABLE_LOCKDOWN
      87             :             NULL
      88             :         };
      89           0 :         int i = 0;
      90           0 :         while( PreloadValuesList[i] != NULL )
      91           0 :             gconf_client_preload( mClient, PreloadValuesList[i++], GCONF_CLIENT_PRELOAD_ONELEVEL, NULL );
      92             :     }
      93             : 
      94           0 :     return mClient;
      95             : }
      96             : 
      97           0 : static OUString xdg_user_dir_lookup (const char *type)
      98             : {
      99             :     char *config_home;
     100             :     char *p;
     101           0 :     bool bError = false;
     102             : 
     103           0 :     osl::Security aSecurity;
     104             :     oslFileHandle handle;
     105           0 :     OUString aHomeDirURL;
     106           0 :     OUString aDocumentsDirURL;
     107           0 :     OUString aConfigFileURL;
     108           0 :     OUStringBuffer aUserDirBuf;
     109             : 
     110           0 :     if (!aSecurity.getHomeDir( aHomeDirURL ) )
     111             :     {
     112           0 :         osl::FileBase::getFileURLFromSystemPath(OUString("/tmp"), aDocumentsDirURL);
     113           0 :         return aDocumentsDirURL;
     114             :     }
     115             : 
     116           0 :     config_home = getenv ("XDG_CONFIG_HOME");
     117           0 :     if (config_home == NULL || config_home[0] == 0)
     118             :     {
     119           0 :         aConfigFileURL = aHomeDirURL + "/.config/user-dirs.dirs";
     120             :     }
     121             :     else
     122             :     {
     123           0 :         aConfigFileURL = OUString::createFromAscii(config_home) + "/user-dirs.dirs";
     124             :     }
     125             : 
     126           0 :     if(osl_File_E_None == osl_openFile(aConfigFileURL.pData, &handle, osl_File_OpenFlag_Read))
     127             :     {
     128           0 :         rtl::ByteSequence seq;
     129           0 :         while (osl_File_E_None == osl_readLine(handle , (sal_Sequence **)&seq))
     130             :         {
     131             :             /* Remove newline at end */
     132           0 :             int relative = 0;
     133           0 :             int len = seq.getLength();
     134           0 :             if(len>0 && seq[len-1] == '\n')
     135           0 :                 seq[len-1] = 0;
     136             : 
     137           0 :             p = (char *)seq.getArray();
     138           0 :             while (*p == ' ' || *p == '\t')
     139           0 :                 p++;
     140           0 :             if (strncmp (p, "XDG_", 4) != 0)
     141           0 :                 continue;
     142           0 :             p += 4;
     143           0 :             if (strncmp (p, type, strlen (type)) != 0)
     144           0 :                 continue;
     145           0 :             p += strlen (type);
     146           0 :             if (strncmp (p, "_DIR", 4) != 0)
     147           0 :                 continue;
     148           0 :             p += 4;
     149           0 :             while (*p == ' ' || *p == '\t')
     150           0 :                 p++;
     151           0 :             if (*p != '=')
     152           0 :                 continue;
     153           0 :             p++;
     154           0 :             while (*p == ' ' || *p == '\t')
     155           0 :                 p++;
     156           0 :             if (*p != '"')
     157           0 :                 continue;
     158           0 :             p++;
     159           0 :             if (strncmp (p, "$HOME/", 6) == 0)
     160             :             {
     161           0 :                 p += 6;
     162           0 :                 relative = 1;
     163             :             }
     164           0 :             else if (*p != '/')
     165           0 :                 continue;
     166           0 :             if (relative)
     167             :             {
     168           0 :                 aUserDirBuf = OUStringBuffer(aHomeDirURL + "/");
     169             :             }
     170             :             else
     171             :             {
     172           0 :                 aUserDirBuf = OUStringBuffer();
     173             :             }
     174           0 :             while (*p && *p != '"')
     175             :             {
     176           0 :                 if ((*p == '\\') && (*(p+1) != 0))
     177           0 :                     p++;
     178           0 :                 aUserDirBuf.append((sal_Unicode)*p++);
     179             :             }
     180             :         }//end of while
     181           0 :         osl_closeFile(handle);
     182             :     }
     183             :     else
     184           0 :         bError = true;
     185           0 :     if (aUserDirBuf.getLength()>0 && !bError)
     186             :     {
     187           0 :         aDocumentsDirURL = aUserDirBuf.makeStringAndClear();
     188           0 :         osl::Directory aDocumentsDir( aDocumentsDirURL );
     189           0 :         if( osl::FileBase::E_None == aDocumentsDir.open() )
     190           0 :             return aDocumentsDirURL;
     191             :     }
     192             :     /* Special case desktop for historical compatibility */
     193           0 :     if (strcmp (type, "DESKTOP") == 0)
     194             :     {
     195           0 :         return aHomeDirURL + "/Desktop";
     196             :     }
     197             :     else
     198             :     {
     199           0 :         return aHomeDirURL + "/Documents";
     200           0 :     }
     201             : }
     202             : 
     203             : //------------------------------------------------------------------------------
     204             : 
     205           0 : uno::Any makeAnyOfGconfValue( GConfValue *pGconfValue )
     206             : {
     207           0 :     switch( pGconfValue->type )
     208             :     {
     209             :         case GCONF_VALUE_BOOL:
     210           0 :             return uno::makeAny( (sal_Bool) gconf_value_get_bool( pGconfValue ) );
     211             : 
     212             :         case GCONF_VALUE_INT:
     213           0 :             return uno::makeAny( (sal_Int32) gconf_value_get_int( pGconfValue ) );
     214             : 
     215             :         case GCONF_VALUE_STRING:
     216             :             return uno::makeAny( OStringToOUString( OString(
     217           0 :                 gconf_value_get_string(pGconfValue) ), RTL_TEXTENCODING_UTF8 ) );
     218             : 
     219             :         default:
     220           0 :             fprintf( stderr, "makeAnyOfGconfValue: Type not handled.\n" );
     221           0 :             break;
     222             :     }
     223             : 
     224           0 :     return uno::Any();
     225             : }
     226             : 
     227             : //------------------------------------------------------------------------------
     228             : 
     229           0 : static void splitFontName( GConfValue *pGconfValue, OUString &rName, sal_Int16 &rHeight)
     230             : {
     231           0 :    OString aFont( gconf_value_get_string( pGconfValue ) );
     232           0 :    aFont = aFont.trim();
     233           0 :    sal_Int32 nIdx = aFont.lastIndexOf( ' ' );
     234           0 :    if (nIdx < 1) { // urk
     235           0 :        rHeight = 12;
     236           0 :        nIdx = aFont.getLength();
     237             :    } else {
     238           0 :        OString aSize = aFont.copy( nIdx + 1 );
     239           0 :        rHeight = static_cast<sal_Int16>( aSize.toInt32() );
     240             :    }
     241             : 
     242           0 :    rName = OStringToOUString( aFont.copy( 0, nIdx ), RTL_TEXTENCODING_UTF8 );
     243           0 : }
     244             : 
     245             : //------------------------------------------------------------------------------
     246             : 
     247           0 : uno::Any translateToOOo( const ConfigurationValue &rValue, GConfValue *pGconfValue )
     248             : {
     249             : 
     250           0 :     switch( rValue.nSettingId )
     251             :     {
     252             :         case SETTING_PROXY_MODE:
     253             :         {
     254           0 :             OUString aProxyMode;
     255           0 :             uno::Any aOriginalValue = makeAnyOfGconfValue( pGconfValue );
     256           0 :             aOriginalValue >>= aProxyMode;
     257             : 
     258           0 :             if( aProxyMode == "manual" )
     259           0 :                 return uno::makeAny( (sal_Int32) 1 );
     260           0 :             else if( aProxyMode == "none" )
     261           0 :                 return uno::makeAny( (sal_Int32) 0 );
     262             :         }
     263           0 :             break;
     264             : 
     265             :         case SETTING_NO_PROXY_FOR:
     266             :         {
     267           0 :             OStringBuffer aBuffer;
     268           0 :             if( (GCONF_VALUE_LIST == pGconfValue->type) && (GCONF_VALUE_STRING == gconf_value_get_list_type(pGconfValue)) )
     269             :             {
     270           0 :                 GSList * list = gconf_value_get_list(pGconfValue);
     271           0 :                 for(; list; list = g_slist_next(list))
     272             :                 {
     273           0 :                     aBuffer.append(gconf_value_get_string((GConfValue *) list->data) + OString(";"));
     274             :                 }
     275             :                 // Remove trailing ";"
     276           0 :                 aBuffer.setLength(aBuffer.getLength()-1);
     277           0 :                 return uno::makeAny(OStringToOUString(aBuffer.makeStringAndClear(), RTL_TEXTENCODING_UTF8));
     278             :             }
     279             :             else
     280           0 :                 g_warning( "unexpected type for ignore_hosts" );
     281             :         }
     282           0 :             break;
     283             : 
     284             :         case SETTING_MAILER_PROGRAM:
     285             :         {
     286           0 :             OUString aMailer;
     287           0 :             uno::Any aOriginalValue = makeAnyOfGconfValue( pGconfValue );
     288           0 :             aOriginalValue >>= aMailer;
     289           0 :             sal_Int32 nIndex = 0;
     290           0 :             return uno::makeAny( aMailer.getToken( 0, ' ', nIndex ) );
     291             :         }
     292             : 
     293             : #ifdef ENABLE_LOCKDOWN
     294             :         // "short" values need to be returned a sal_Int16
     295             :         case SETTING_FONT_ANTI_ALIASING_MIN_PIXEL:
     296             :         case SETTING_SYMBOL_SET:
     297             :         {
     298             :             sal_Int32 nShortValue(0);
     299             :             uno::Any aOriginalValue = makeAnyOfGconfValue( pGconfValue );
     300             :             aOriginalValue >>= nShortValue;
     301             :             return uno::makeAny( (sal_Int16) nShortValue );
     302             :         }
     303             :             break;
     304             : #endif // ENABLE_LOCKDOWN
     305             : 
     306             :         // "boolean" values that need a string to be returned
     307             :         case SETTING_ENABLE_ACCESSIBILITY:
     308             : #ifdef ENABLE_LOCKDOWN
     309             :         case SETTING_DISABLE_PRINTING:
     310             : #endif // ENABLE_LOCKDOWN
     311             :         {
     312           0 :             sal_Bool bBooleanValue = false;
     313           0 :             uno::Any aOriginalValue = makeAnyOfGconfValue( pGconfValue );
     314           0 :             aOriginalValue >>= bBooleanValue;
     315           0 :             return uno::makeAny( OUString::valueOf( (sal_Bool) bBooleanValue ) );
     316             :         }
     317             : 
     318             :         case SETTING_WORK_DIRECTORY:
     319             :         {
     320           0 :             OUString aDocumentsDirURL = xdg_user_dir_lookup("DOCUMENTS");
     321             : 
     322           0 :             return uno::makeAny( aDocumentsDirURL );
     323             :         }
     324             : 
     325             :         case SETTING_USER_GIVENNAME:
     326             :         {
     327             :             OUString aCompleteName( OStringToOUString(
     328           0 :                 g_get_real_name(), osl_getThreadTextEncoding() ) );
     329           0 :             sal_Int32 nIndex = 0;
     330           0 :             OUString aGivenName;
     331           0 :             do
     332           0 :                 aGivenName = aCompleteName.getToken( 0, ' ', nIndex );
     333           0 :             while ( nIndex == 0 );
     334             : 
     335           0 :             return uno::makeAny( aGivenName );
     336             : 
     337             :         }
     338             : 
     339             :         case SETTING_USER_SURNAME:
     340             :         {
     341             :             OUString aCompleteName( OStringToOUString(
     342           0 :                 g_get_real_name(), osl_getThreadTextEncoding() ) );
     343           0 :             sal_Int32 nIndex = 0;
     344           0 :             OUString aSurname;
     345           0 :             do
     346           0 :                 aSurname = aCompleteName.getToken( 0, ' ', nIndex );
     347           0 :             while ( nIndex >= 0 );
     348             : 
     349           0 :             return uno::makeAny( aSurname );
     350             :         }
     351             : 
     352             :         case SETTING_SOURCEVIEWFONT_NAME:
     353             :         case SETTING_SOURCEVIEWFONT_HEIGHT:
     354             :         {
     355           0 :             OUString aName;
     356             :             sal_Int16 nHeight;
     357             : 
     358           0 :             splitFontName (pGconfValue, aName, nHeight);
     359           0 :             if (rValue.nSettingId == SETTING_SOURCEVIEWFONT_NAME)
     360           0 :                 return uno::makeAny( aName );
     361             :             else
     362           0 :                 return uno::makeAny( nHeight );
     363             :         }
     364             : 
     365             : 
     366             :         default:
     367           0 :             fprintf( stderr, "Unhandled setting to translate.\n" );
     368           0 :             break;
     369             :     }
     370             : 
     371           0 :     return uno::Any();
     372             : }
     373             : 
     374             : //------------------------------------------------------------------------------
     375             : 
     376           0 : sal_Bool SAL_CALL isDependencySatisfied( GConfClient* pClient, const ConfigurationValue &rValue )
     377             : {
     378           0 :     switch( rValue.nDependsOn )
     379             :     {
     380             :         case SETTING_PROXY_MODE:
     381             :         {
     382           0 :             GConfValue* pGconfValue = gconf_client_get( pClient, GCONF_PROXY_MODE_KEY, NULL );
     383             : 
     384           0 :             if ( pGconfValue != NULL )
     385             :             {
     386           0 :                 bool bOk = g_ascii_strcasecmp( "manual", gconf_value_get_string( pGconfValue ) ) == 0;
     387           0 :                 gconf_value_free( pGconfValue );
     388           0 :                 if (bOk) return sal_True;
     389             :             }
     390             :         }
     391           0 :             break;
     392             : 
     393             :         case SETTING_WORK_DIRECTORY:
     394             :         {
     395           0 :             OUString aDocumentsDirURL = xdg_user_dir_lookup("DOCUMENTS");
     396           0 :             osl::Directory aDocumentsDir( aDocumentsDirURL );
     397             : 
     398           0 :             if( osl::FileBase::E_None == aDocumentsDir.open() )
     399           0 :                 return sal_True;
     400             :         }
     401           0 :             break;
     402             : 
     403             :         case SETTING_USER_GIVENNAME:
     404             :         {
     405             :             OUString aCompleteName( OStringToOUString(
     406           0 :                 g_get_real_name(), osl_getThreadTextEncoding() ) );
     407           0 :             if( aCompleteName != "Unknown" )
     408           0 :                 return sal_True;
     409             :         }
     410           0 :             break;
     411             : 
     412             :         case SETTING_USER_SURNAME:
     413             :         {
     414             :             OUString aCompleteName( OStringToOUString(
     415           0 :                 g_get_real_name(), osl_getThreadTextEncoding() ) );
     416           0 :             if( aCompleteName != "Unknown" )
     417             :             {
     418           0 :                 if( aCompleteName.trim().indexOf( ' ' ) != -1 )
     419           0 :                     return sal_True;
     420           0 :             }
     421             :         }
     422           0 :             break;
     423             : 
     424             : #ifdef ENABLE_LOCKDOWN
     425             :         case SETTING_AUTO_SAVE:
     426             :         {
     427             :             GConfValue* pGconfValue = gconf_client_get( pClient, GCONF_AUTO_SAVE_KEY, NULL );
     428             : 
     429             :             if( ( pGconfValue != NULL ) )
     430             :             {
     431             :                 bool bOk = gconf_value_get_bool( pGconfValue );
     432             :                 gconf_value_free( pGconfValue );
     433             :                 if (bOk) return sal_True;
     434             :             }
     435             :         }
     436             :             break;
     437             :         case SETTING_USER_AUTO_SAVE:
     438             :         {
     439             :             GConfValue* pGconfValue = gconf_client_get( pClient, GCONF_USER_AUTO_SAVE_KEY, NULL );
     440             : 
     441             :             if( ( pGconfValue != NULL ) )
     442             :             {
     443             :                 bool bOk = gconf_value_get_bool( pGconfValue );
     444             :                 gconf_value_free( pGconfValue );
     445             :                 if (bOk) return sal_True;
     446             :             }
     447             :         }
     448             :             break;
     449             : #endif // ENABLE_LOCKDOWN
     450             : 
     451             :         default:
     452           0 :             fprintf( stderr, "Unhandled setting to check dependency.\n" );
     453           0 :             break;
     454             :     }
     455             : 
     456           0 :     return sal_False;
     457             : }
     458             : 
     459             : }
     460             : 
     461             : ConfigurationValue const ConfigurationValues[] =
     462             : {
     463             :     {
     464             :         SETTING_ENABLE_ACCESSIBILITY,
     465             :         "/desktop/gnome/interface/accessibility",
     466             :         RTL_CONSTASCII_STRINGPARAM("EnableATToolSupport"),
     467             :         sal_True,
     468             :         SETTINGS_LAST
     469             :     },
     470             : 
     471             :     {
     472             :         SETTING_PROXY_MODE,
     473             :         GCONF_PROXY_MODE_KEY,
     474             :         RTL_CONSTASCII_STRINGPARAM("ooInetProxyType"),
     475             :         sal_True,
     476             :         SETTINGS_LAST
     477             :     },
     478             : 
     479             :     {
     480             :         SETTING_PROXY_HTTP_HOST,
     481             :         "/system/http_proxy/host",
     482             :         RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyName"),
     483             :         sal_False,
     484             :         SETTING_PROXY_MODE
     485             :     },
     486             : 
     487             :     {
     488             :         SETTING_PROXY_HTTP_PORT,
     489             :         "/system/http_proxy/port",
     490             :         RTL_CONSTASCII_STRINGPARAM("ooInetHTTPProxyPort"),
     491             :         sal_False,
     492             :         SETTING_PROXY_MODE
     493             :     },
     494             : 
     495             :      {
     496             :         SETTING_PROXY_HTTPS_HOST,
     497             :         "/system/proxy/secure_host",
     498             :         RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyName"),
     499             :         sal_False,
     500             :         SETTING_PROXY_MODE
     501             :     },
     502             : 
     503             :     {
     504             :         SETTING_PROXY_HTTPS_PORT,
     505             :         "/system/proxy/secure_port",
     506             :         RTL_CONSTASCII_STRINGPARAM("ooInetHTTPSProxyPort"),
     507             :         sal_False,
     508             :         SETTING_PROXY_MODE
     509             :     },
     510             : 
     511             :     {
     512             :         SETTING_PROXY_FTP_HOST,
     513             :         "/system/proxy/ftp_host",
     514             :         RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyName"),
     515             :         sal_False,
     516             :         SETTING_PROXY_MODE
     517             :     },
     518             : 
     519             :     {
     520             :         SETTING_PROXY_FTP_PORT,
     521             :         "/system/proxy/ftp_port",
     522             :         RTL_CONSTASCII_STRINGPARAM("ooInetFTPProxyPort"),
     523             :         sal_False,
     524             :         SETTING_PROXY_MODE
     525             :     },
     526             : 
     527             :     {
     528             :         SETTING_NO_PROXY_FOR,
     529             :         "/system/http_proxy/ignore_hosts",
     530             :         RTL_CONSTASCII_STRINGPARAM("ooInetNoProxy"),
     531             :         sal_True,
     532             :         SETTING_PROXY_MODE
     533             :     },
     534             : 
     535             :     {
     536             :         SETTING_MAILER_PROGRAM,
     537             :         "/desktop/gnome/url-handlers/mailto/command",
     538             :         RTL_CONSTASCII_STRINGPARAM("ExternalMailer"),
     539             :         sal_True,
     540             :         SETTINGS_LAST
     541             :     },
     542             :     {
     543             :         SETTING_SOURCEVIEWFONT_NAME,
     544             :         "/desktop/gnome/interface/monospace_font_name",
     545             :         RTL_CONSTASCII_STRINGPARAM("SourceViewFontName"),
     546             :         sal_True,
     547             :         SETTINGS_LAST
     548             :     },
     549             :     {
     550             :         SETTING_SOURCEVIEWFONT_HEIGHT,
     551             :         "/desktop/gnome/interface/monospace_font_name",
     552             :         RTL_CONSTASCII_STRINGPARAM("SourceViewFontHeight"),
     553             :         sal_True,
     554             :         SETTINGS_LAST
     555             :     },
     556             : 
     557             :     {
     558             :         SETTING_WORK_DIRECTORY,
     559             :         "/desktop/gnome/url-handlers/mailto/command", // dummy
     560             :         RTL_CONSTASCII_STRINGPARAM("WorkPathVariable"),
     561             :         sal_True,
     562             :         SETTING_WORK_DIRECTORY, // so that the existence of the dir can be checked
     563             :     },
     564             : 
     565             :     {
     566             :         SETTING_USER_GIVENNAME,
     567             :         "/desktop/gnome/url-handlers/mailto/command", // dummy
     568             :         RTL_CONSTASCII_STRINGPARAM("givenname"),
     569             :         sal_True,
     570             :         SETTING_USER_GIVENNAME
     571             :     },
     572             : 
     573             :     {
     574             :         SETTING_USER_SURNAME,
     575             :         "/desktop/gnome/url-handlers/mailto/command", // dummy
     576             :         RTL_CONSTASCII_STRINGPARAM("sn"),
     577             :         sal_True,
     578             :         SETTING_USER_SURNAME
     579             :     },
     580             : 
     581             : #ifdef ENABLE_LOCKDOWN
     582             :     {
     583             :         SETTING_WRITER_DEFAULT_DOC_FORMAT,
     584             :         "/apps/openoffice/writer_default_document_format",
     585             :         RTL_CONSTASCII_STRINGPARAM("TextDocumentSetupFactoryDefaultFilter"),
     586             :         sal_False,
     587             :         SETTINGS_LAST
     588             :     },
     589             : 
     590             :     {
     591             :         SETTING_IMPRESS_DEFAULT_DOC_FORMAT,
     592             :         "/apps/openoffice/impress_default_document_format",
     593             :         RTL_CONSTASCII_STRINGPARAM("PresentationDocumentSetupFactoryDefaultFilter"),
     594             :         sal_False,
     595             :         SETTINGS_LAST
     596             :     },
     597             : 
     598             :     {
     599             :         SETTING_CALC_DEFAULT_DOC_FORMAT,
     600             :         "/apps/openoffice/calc_default_document_format",
     601             :         RTL_CONSTASCII_STRINGPARAM("SpreadsheetDocumentSetupFactoryDefaultFilter"),
     602             :         sal_False,
     603             :         SETTINGS_LAST
     604             :     },
     605             : 
     606             :     {
     607             :         SETTING_AUTO_SAVE,
     608             :         GCONF_AUTO_SAVE_KEY,
     609             :         RTL_CONSTASCII_STRINGPARAM("AutoSaveEnabled"),
     610             :         sal_False,
     611             :         SETTINGS_LAST
     612             :     },
     613             : 
     614             :     {
     615             :         SETTING_USER_AUTO_SAVE,
     616             :         GCONF_USER_AUTO_SAVE_KEY,
     617             :         RTL_CONSTASCII_STRINGPARAM("UserAutoSaveEnabled"),
     618             :         sal_False,
     619             :         SETTINGS_LAST
     620             :     },
     621             : 
     622             :     {
     623             :         SETTING_AUTO_SAVE_INTERVAL,
     624             :         "/apps/openoffice/auto_save_interval",
     625             :         RTL_CONSTASCII_STRINGPARAM("AutoSaveTimeIntervall"),
     626             :         sal_False,
     627             :         SETTING_AUTO_SAVE
     628             :     },
     629             : 
     630             :     {
     631             :         SETTING_DISABLE_PRINTING,
     632             :         "/desktop/gnome/lockdown/disable_printing",
     633             :         RTL_CONSTASCII_STRINGPARAM("DisablePrinting"),
     634             :         sal_True,
     635             :         SETTINGS_LAST
     636             :     },
     637             : 
     638             :     {
     639             :         SETTING_USE_SYSTEM_FILE_DIALOG,
     640             :         "/apps/openoffice/use_system_file_dialog",
     641             :         RTL_CONSTASCII_STRINGPARAM("UseSystemFileDialog"),
     642             :         sal_False,
     643             :         SETTINGS_LAST
     644             :     },
     645             : 
     646             :     {
     647             :         SETTING_PRINTING_MODIFIES_DOCUMENT,
     648             :         "/apps/openoffice/printing_modifies_doc",
     649             :         RTL_CONSTASCII_STRINGPARAM("PrintingModifiesDocument"),
     650             :         sal_False,
     651             :         SETTINGS_LAST
     652             :     },
     653             : 
     654             :     {
     655             :         SETTING_SHOW_ICONS_IN_MENUS,
     656             :         "/apps/openoffice/show_menu_icons",
     657             :         RTL_CONSTASCII_STRINGPARAM("ShowIconsInMenues"),
     658             :         sal_False,
     659             :         SETTINGS_LAST
     660             :     },
     661             : 
     662             :     {
     663             :         SETTING_SHOW_INACTIVE_MENUITEMS,
     664             :         "/apps/openoffice/show_menu_inactive_items",
     665             :         RTL_CONSTASCII_STRINGPARAM("DontHideDisabledEntry"),
     666             :         sal_False,
     667             :         SETTINGS_LAST
     668             :     },
     669             : 
     670             :     {
     671             :         SETTING_SHOW_FONT_PREVIEW,
     672             :         "/apps/openoffice/show_font_preview",
     673             :         RTL_CONSTASCII_STRINGPARAM("ShowFontBoxWYSIWYG"),
     674             :         sal_False,
     675             :         SETTINGS_LAST
     676             :     },
     677             : 
     678             :     {
     679             :         SETTING_SHOW_FONT_HISTORY,
     680             :         "/apps/openoffice/show_font_history",
     681             :         RTL_CONSTASCII_STRINGPARAM("FontViewHistory"),
     682             :         sal_False,
     683             :         SETTINGS_LAST
     684             :     },
     685             : 
     686             :     {
     687             :         SETTING_ENABLE_OPENGL,
     688             :         "/apps/openoffice/use_opengl",
     689             :         RTL_CONSTASCII_STRINGPARAM("OpenGL"),
     690             :         sal_False,
     691             :         SETTINGS_LAST
     692             :     },
     693             : 
     694             :     {
     695             :         SETTING_OPTIMIZE_OPENGL,
     696             :         "/apps/openoffice/optimize_opengl",
     697             :         RTL_CONSTASCII_STRINGPARAM("OpenGL_Faster"),
     698             :         sal_False,
     699             :         SETTINGS_LAST
     700             :     },
     701             : 
     702             :     {
     703             :         SETTING_USE_SYSTEM_FONT,
     704             :         "/apps/openoffice/use_system_font",
     705             :         RTL_CONSTASCII_STRINGPARAM("AccessibilityIsSystemFont"),
     706             :         sal_False,
     707             :         SETTINGS_LAST
     708             :     },
     709             : 
     710             :     {
     711             :         SETTING_USE_FONT_ANTI_ALIASING,
     712             :         "/apps/openoffice/use_font_anti_aliasing",
     713             :         RTL_CONSTASCII_STRINGPARAM("FontAntiAliasingEnabled"),
     714             :         sal_False,
     715             :         SETTINGS_LAST
     716             :     },
     717             : 
     718             :     {
     719             :         SETTING_FONT_ANTI_ALIASING_MIN_PIXEL,
     720             :         "/apps/openoffice/font_anti_aliasing_min_pixel",
     721             :         RTL_CONSTASCII_STRINGPARAM("FontAntiAliasingMinPixelHeight"),
     722             :         sal_True,
     723             :         SETTINGS_LAST
     724             :     },
     725             : 
     726             :     {
     727             :         SETTING_WARN_CREATE_PDF,
     728             :         "/apps/openoffice/lockdown/warn_info_create_pdf",
     729             :         RTL_CONSTASCII_STRINGPARAM("WarnCreatePDF"),
     730             :         sal_False,
     731             :         SETTINGS_LAST
     732             :     },
     733             : 
     734             :     {
     735             :         SETTING_WARN_PRINT_DOC,
     736             :         "/apps/openoffice/lockdown/warn_info_printing",
     737             :         RTL_CONSTASCII_STRINGPARAM("WarnPrintDoc"),
     738             :         sal_False,
     739             :         SETTINGS_LAST
     740             :     },
     741             : 
     742             :     {
     743             :         SETTING_WARN_SAVEORSEND_DOC,
     744             :         "/apps/openoffice/lockdown/warn_info_saving",
     745             :         RTL_CONSTASCII_STRINGPARAM("WarnSaveOrSendDoc"),
     746             :         sal_False,
     747             :         SETTINGS_LAST
     748             :     },
     749             : 
     750             :     {
     751             :         SETTING_WARN_SIGN_DOC,
     752             :         "/apps/openoffice/lockdown/warn_info_signing",
     753             :         RTL_CONSTASCII_STRINGPARAM("WarnSignDoc"),
     754             :         sal_False,
     755             :         SETTINGS_LAST
     756             :     },
     757             : 
     758             :     {
     759             :         SETTING_REMOVE_PERSONAL_INFO,
     760             :         "/apps/openoffice/lockdown/remove_personal_info_on_save",
     761             :         RTL_CONSTASCII_STRINGPARAM("RemovePersonalInfoOnSaving"),
     762             :         sal_False,
     763             :         SETTINGS_LAST
     764             :     },
     765             : 
     766             :     {
     767             :         SETTING_RECOMMEND_PASSWORD,
     768             :         "/apps/openoffice/lockdown/recommend_password_on_save",
     769             :         RTL_CONSTASCII_STRINGPARAM("RecommendPasswordProtection"),
     770             :         sal_False,
     771             :         SETTINGS_LAST
     772             :     },
     773             : 
     774             :     {
     775             :         SETTING_UNDO_STEPS,
     776             :         "/apps/openoffice/undo_steps",
     777             :         RTL_CONSTASCII_STRINGPARAM("UndoSteps"),
     778             :         sal_False,
     779             :         SETTINGS_LAST
     780             :     },
     781             : 
     782             :     {
     783             :         SETTING_SYMBOL_SET,
     784             :         "/apps/openoffice/icon_size",
     785             :         RTL_CONSTASCII_STRINGPARAM("SymbolSet"),
     786             :         sal_True,
     787             :         SETTINGS_LAST
     788             :     },
     789             : 
     790             :     {
     791             :         SETTING_MACRO_SECURITY_LEVEL,
     792             :         "/apps/openoffice/lockdown/macro_security_level",
     793             :         RTL_CONSTASCII_STRINGPARAM("MacroSecurityLevel"),
     794             :         sal_False,
     795             :         SETTINGS_LAST
     796             :     },
     797             : 
     798             :     {
     799             :         SETTING_CREATE_BACKUP,
     800             :         "/apps/openoffice/create_backup",
     801             :         RTL_CONSTASCII_STRINGPARAM("CreateBackup"),
     802             :         sal_False,
     803             :         SETTINGS_LAST
     804             :     },
     805             : 
     806             :     {
     807             :         SETTING_WARN_ALIEN_FORMAT,
     808             :         "/apps/openoffice/warn_alien_format",
     809             :         RTL_CONSTASCII_STRINGPARAM("WarnAlienFormat"),
     810             :         sal_False,
     811             :         SETTINGS_LAST
     812             :     },
     813             : 
     814             : #endif // ENABLE_LOCKDOWN
     815             : };
     816             : 
     817             : std::size_t const nConfigurationValues =
     818             :     sizeof ConfigurationValues / sizeof ConfigurationValues[0];
     819             : 
     820           0 : css::beans::Optional< css::uno::Any > getValue(ConfigurationValue const & data)
     821             : {
     822           0 :     GConfClient* pClient = getGconfClient();
     823             :     GConfValue* pGconfValue;
     824           0 :     if( ( data.nDependsOn == SETTINGS_LAST ) || isDependencySatisfied( pClient, data ) )
     825             :     {
     826           0 :         pGconfValue = gconf_client_get( pClient, data.GconfItem, NULL );
     827             : 
     828           0 :         if( pGconfValue != NULL )
     829             :         {
     830           0 :             css::uno::Any value;
     831           0 :             if( data.bNeedsTranslation )
     832           0 :                 value = translateToOOo( data, pGconfValue );
     833             :             else
     834           0 :                 value = makeAnyOfGconfValue( pGconfValue );
     835             : 
     836           0 :             gconf_value_free( pGconfValue );
     837             : 
     838           0 :             return css::beans::Optional< css::uno::Any >(true, value);
     839             :         }
     840             :     }
     841           0 :     return css::beans::Optional< css::uno::Any >();
     842             : }
     843             : 
     844             : }
     845             : 
     846             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10