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: */
|