summaryrefslogtreecommitdiff
path: root/svtools/source/config/apearcfg.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/source/config/apearcfg.cxx')
-rw-r--r--svtools/source/config/apearcfg.cxx321
1 files changed, 321 insertions, 0 deletions
diff --git a/svtools/source/config/apearcfg.cxx b/svtools/source/config/apearcfg.cxx
new file mode 100644
index 000000000000..316e6ab34656
--- /dev/null
+++ b/svtools/source/config/apearcfg.cxx
@@ -0,0 +1,321 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svtools.hxx"
+
+#include "apearcfg.hxx"
+#include "com/sun/star/uno/Any.hxx"
+
+#include "tools/debug.hxx"
+#include "vcl/settings.hxx"
+#include "vcl/svapp.hxx"
+#include <rtl/logfile.hxx>
+
+#define DEFAULT_LOOKNFEEL 0
+#define DEFAULT_DRAGMODE 2
+#define DEFAULT_SNAPMODE 0
+#define DEFAULT_SCALEFACTOR 100
+#define DEFAULT_AAMINHEIGHT 8
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+
+sal_Bool SvtTabAppearanceCfg::bInitialized = sal_False;
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+SvtTabAppearanceCfg::SvtTabAppearanceCfg()
+ :ConfigItem(OUString::createFromAscii("Office.Common/View"))
+ ,nLookNFeel ( DEFAULT_LOOKNFEEL )
+ ,nDragMode ( DEFAULT_DRAGMODE )
+ ,nScaleFactor ( DEFAULT_SCALEFACTOR )
+ ,nSnapMode ( DEFAULT_SNAPMODE )
+ ,nMiddleMouse ( MOUSE_MIDDLE_AUTOSCROLL )
+#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+ ,nAAMinPixelHeight ( DEFAULT_AAMINHEIGHT )
+#endif
+ ,bMenuMouseFollow(FALSE)
+ ,bSingleLineTabCtrl(FALSE)
+ ,bColoredTabCtrl(FALSE)
+#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+ ,bFontAntialiasing ( TRUE )
+#endif
+{
+ RTL_LOGFILE_CONTEXT(aLog, "svtools SvtTabAppearanceCfg::SvtTabAppearanceCfg()");
+
+ const Sequence<OUString>& rNames = GetPropertyNames();
+ Sequence<Any> aValues = GetProperties(rNames);
+ const Any* pValues = aValues.getConstArray();
+ DBG_ASSERT(aValues.getLength() == rNames.getLength(), "GetProperties failed");
+
+ if(aValues.getLength() == rNames.getLength())
+ {
+ for(int nProp = 0; nProp < rNames.getLength(); ++nProp, ++pValues)
+ {
+ if(pValues->hasValue())
+ {
+ switch(nProp)
+ {
+ case 0: *pValues >>= nScaleFactor; break; //"FontScaling",
+ case 1: *pValues >>= nLookNFeel; break; //"LookAndFeel",
+ case 2: *pValues >>= nDragMode; break; //"Window/Drag",
+ case 3: bMenuMouseFollow = *(sal_Bool*)pValues->getValue(); break; //"Menu/FollowMouse",
+ case 4: bSingleLineTabCtrl = *(sal_Bool*)pValues->getValue(); break; //"Dialog/SingleLineTab",
+ case 5: bColoredTabCtrl = *(sal_Bool*)pValues->getValue(); break; //"Dialog/ColoredTab",
+ case 6: *pValues >>= nSnapMode; break; //"Dialog/MousePositioning",
+ case 7: *pValues >>= nMiddleMouse; break; //"Dialog/MiddleMouseButton",
+#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+ case 8: bFontAntialiasing = *(sal_Bool*)pValues->getValue(); break; // "FontAntialising/Enabled",
+ case 9: *pValues >>= nAAMinPixelHeight; break; // "FontAntialising/MinPixelHeight",
+#endif
+ }
+ }
+ }
+ }
+}
+/* -----------------------------22.05.01 11:53--------------------------------
+
+ ---------------------------------------------------------------------------*/
+SvtTabAppearanceCfg::~SvtTabAppearanceCfg( )
+{
+}
+/* -----------------------------22.05.01 11:54--------------------------------
+
+ ---------------------------------------------------------------------------*/
+const Sequence<OUString>& SvtTabAppearanceCfg::GetPropertyNames()
+{
+ static Sequence<OUString> aNames;
+ if(!aNames.getLength())
+ {
+ static const sal_Char* aPropNames[] =
+ {
+ "FontScaling" // 0
+ ,"LookAndFeel" // 1
+ ,"Window/Drag" // 2
+ ,"Menu/FollowMouse" // 3
+ ,"Dialog/SingleLineTab" // 4
+ ,"Dialog/ColoredTab" // 5
+ ,"Dialog/MousePositioning" // 6
+ ,"Dialog/MiddleMouseButton" // 7
+#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+ ,"FontAntiAliasing/Enabled" // 8
+ ,"FontAntiAliasing/MinPixelHeight" // 9
+#endif
+ };
+ const int nCount = sizeof( aPropNames ) / sizeof( aPropNames[0] );
+ aNames.realloc(nCount);
+
+ const sal_Char** pAsciiNames = aPropNames;
+ OUString* pNames = aNames.getArray();
+ for(int i = 0; i < nCount; ++i, ++pNames, ++pAsciiNames)
+ *pNames = OUString::createFromAscii( *pAsciiNames );
+ }
+ return aNames;
+}
+/* -----------------------------22.05.01 11:54--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SvtTabAppearanceCfg::Commit()
+{
+ const Sequence<OUString>& rNames = GetPropertyNames();
+ Sequence<Any> aValues(rNames.getLength());
+ Any* pValues = aValues.getArray();
+
+ const Type& rType = ::getBooleanCppuType();
+ for(int nProp = 0; nProp < rNames.getLength(); nProp++)
+ {
+ switch(nProp)
+ {
+ case 0: pValues[nProp] <<= nScaleFactor; break; // "FontScaling",
+ case 1: pValues[nProp] <<= nLookNFeel; break; //"LookAndFeel",
+ case 2: pValues[nProp] <<= nDragMode; break; //"Window/Drag",
+ case 3: pValues[nProp].setValue(&bMenuMouseFollow, rType); break; //"Menu/FollowMouse",
+ case 4: pValues[nProp].setValue(&bSingleLineTabCtrl, rType); break; //"Dialog/SingleLineTab",
+ case 5: pValues[nProp].setValue(&bColoredTabCtrl, rType); break; //"Dialog/ColoredTab",
+ case 6: pValues[nProp] <<= nSnapMode; break; //"Dialog/MousePositioning",
+ case 7: pValues[nProp] <<= nMiddleMouse; break; //"Dialog/MiddleMouseButton",
+#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+ case 8: pValues[nProp].setValue(&bFontAntialiasing, rType); break; // "FontAntialising/Enabled",
+ case 9: pValues[nProp] <<= nAAMinPixelHeight; break; // "FontAntialising/MinPixelHeight",
+#endif
+ }
+ }
+ PutProperties(rNames, aValues);
+}
+
+void SvtTabAppearanceCfg::Notify( const com::sun::star::uno::Sequence< rtl::OUString >& )
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SvtTabAppearanceCfg::SetLookNFeel ( USHORT nSet )
+{
+ nLookNFeel = nSet;
+ SetModified();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SvtTabAppearanceCfg::SetDragMode ( USHORT nSet )
+{
+ nDragMode = nSet;
+ SetModified();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SvtTabAppearanceCfg::SetScaleFactor ( USHORT nSet )
+{
+ nScaleFactor = nSet;
+ SetModified();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SvtTabAppearanceCfg::SetSnapMode ( USHORT nSet )
+{
+ nSnapMode = nSet;
+ SetModified();
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+void SvtTabAppearanceCfg::SetMiddleMouseButton ( USHORT nSet )
+{
+ nMiddleMouse = nSet;
+ SetModified();
+}
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SvtTabAppearanceCfg::SetApplicationDefaults ( Application* pApp )
+{
+ AllSettings hAppSettings = pApp->GetSettings();
+ StyleSettings hAppStyle = hAppSettings.GetStyleSettings();
+
+ // Look & Feel
+
+ // SetStandard...Styles() resets the UseSystemUIFonts flag,
+ // but we don't want to change it now, so save the flag before ...
+ BOOL bUseSystemUIFonts = hAppStyle.GetUseSystemUIFonts();
+
+ switch ( nLookNFeel )
+ {
+ case LookMotif:
+ hAppStyle.SetStandardUnixStyles(); break;
+
+ case LookOSTwo:
+ hAppStyle.SetStandardOS2Styles(); break;
+
+ case LookMacintosh:
+ hAppStyle.SetStandardMacStyles(); break;
+
+ case LookWindows:
+ hAppStyle.SetStandardWinStyles(); break;
+
+ case LookStardivision:
+ default:
+ hAppStyle.SetStandardStyles(); break;
+ }
+
+ // and set it here
+ hAppStyle.SetUseSystemUIFonts( bUseSystemUIFonts );
+
+ // Screen and ScreenFont Scaling
+
+ hAppStyle.SetScreenZoom( nScaleFactor );
+ hAppStyle.SetScreenFontZoom( nScaleFactor );
+
+#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+ // font anti aliasing
+ hAppStyle.SetAntialiasingMinPixelHeight( nAAMinPixelHeight );
+ hAppStyle.SetDisplayOptions( bFontAntialiasing ? 0 : DISPLAY_OPTION_AA_DISABLE );
+#endif
+
+ // Mouse Snap
+
+ MouseSettings hMouseSettings = hAppSettings.GetMouseSettings();
+ ULONG nMouseOptions = hMouseSettings.GetOptions();
+
+ nMouseOptions &= ! (MOUSE_OPTION_AUTOCENTERPOS | MOUSE_OPTION_AUTODEFBTNPOS);
+
+ switch ( nSnapMode )
+ {
+ case SnapToButton:
+ nMouseOptions |= MOUSE_OPTION_AUTODEFBTNPOS;
+ break;
+ case SnapToMiddle:
+ nMouseOptions |= MOUSE_OPTION_AUTOCENTERPOS;
+ break;
+ case NoSnap:
+ default:
+ break;
+ }
+ hMouseSettings.SetOptions(nMouseOptions);
+ hMouseSettings.SetMiddleButtonAction(nMiddleMouse);
+
+ // Merge and Publish Settings
+
+ ULONG nFollow = hMouseSettings.GetFollow();
+ if(bMenuMouseFollow)
+ nFollow |= MOUSE_FOLLOW_MENU;
+ else
+ nFollow &= ~MOUSE_FOLLOW_MENU;
+ hMouseSettings.SetFollow( nFollow );
+ sal_uInt16 nTabStyle = 0;
+ if(bSingleLineTabCtrl)
+ nTabStyle |= STYLE_TABCONTROL_SINGLELINE;
+
+ if(bColoredTabCtrl)
+ nTabStyle |= STYLE_TABCONTROL_COLOR;
+ hAppStyle.SetTabControlStyle(nTabStyle);
+
+
+ hAppSettings.SetMouseSettings( hMouseSettings );
+
+ hAppSettings.SetStyleSettings( hAppStyle );
+ pApp->MergeSystemSettings ( hAppSettings ); // Allow system-settings to apply
+ pApp->SystemSettingsChanging ( hAppSettings, NULL );// Allow overruling of system-settings
+ //is concerned with window drag
+
+ pApp->SetSettings ( hAppSettings );
+}
+
+
+