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

Generated by: LCOV version 1.10