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

Generated by: LCOV version 1.10