1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_svtools.hxx" 26 27 #include <svtools/apearcfg.hxx> 28 #include "com/sun/star/uno/Any.hxx" 29 30 #include "tools/debug.hxx" 31 #include "vcl/settings.hxx" 32 #include "vcl/svapp.hxx" 33 #include <rtl/logfile.hxx> 34 35 #define DEFAULT_LOOKNFEEL 0 36 #define DEFAULT_DRAGMODE 2 37 #define DEFAULT_SNAPMODE 0 38 #define DEFAULT_SCALEFACTOR 100 39 #define DEFAULT_AAMINHEIGHT 8 40 41 using namespace ::rtl; 42 using namespace ::com::sun::star::uno; 43 44 sal_Bool SvtTabAppearanceCfg::bInitialized = sal_False; 45 46 /*-------------------------------------------------------------------- 47 Beschreibung: 48 --------------------------------------------------------------------*/ 49 SvtTabAppearanceCfg::SvtTabAppearanceCfg() 50 :ConfigItem(OUString::createFromAscii("Office.Common/View")) 51 ,nDragMode ( DEFAULT_DRAGMODE ) 52 ,nScaleFactor ( DEFAULT_SCALEFACTOR ) 53 ,nSnapMode ( DEFAULT_SNAPMODE ) 54 ,nMiddleMouse ( MOUSE_MIDDLE_AUTOSCROLL ) 55 #if defined( UNX ) || defined ( FS_PRIV_DEBUG ) 56 ,nAAMinPixelHeight ( DEFAULT_AAMINHEIGHT ) 57 #endif 58 ,bMenuMouseFollow(sal_False) 59 #if defined( UNX ) || defined ( FS_PRIV_DEBUG ) 60 ,bFontAntialiasing ( sal_True ) 61 #endif 62 { 63 RTL_LOGFILE_CONTEXT(aLog, "svtools SvtTabAppearanceCfg::SvtTabAppearanceCfg()"); 64 65 const Sequence<OUString>& rNames = GetPropertyNames(); 66 Sequence<Any> aValues = GetProperties(rNames); 67 const Any* pValues = aValues.getConstArray(); 68 DBG_ASSERT(aValues.getLength() == rNames.getLength(), "GetProperties failed"); 69 70 if(aValues.getLength() == rNames.getLength()) 71 { 72 for(int nProp = 0; nProp < rNames.getLength(); ++nProp, ++pValues) 73 { 74 if(pValues->hasValue()) 75 { 76 switch(nProp) 77 { 78 case 0: *pValues >>= nScaleFactor; break; //"FontScaling", 79 case 1: *pValues >>= nDragMode; break; //"Window/Drag", 80 case 2: bMenuMouseFollow = *(sal_Bool*)pValues->getValue(); break; //"Menu/FollowMouse", 81 case 3: *pValues >>= nSnapMode; break; //"Dialog/MousePositioning", 82 case 4: *pValues >>= nMiddleMouse; break; //"Dialog/MiddleMouseButton", 83 #if defined( UNX ) || defined ( FS_PRIV_DEBUG ) 84 case 5: bFontAntialiasing = *(sal_Bool*)pValues->getValue(); break; // "FontAntialising/Enabled", 85 case 6: *pValues >>= nAAMinPixelHeight; break; // "FontAntialising/MinPixelHeight", 86 #endif 87 } 88 } 89 } 90 } 91 } 92 /* -----------------------------22.05.01 11:53-------------------------------- 93 94 ---------------------------------------------------------------------------*/ 95 SvtTabAppearanceCfg::~SvtTabAppearanceCfg( ) 96 { 97 } 98 /* -----------------------------22.05.01 11:54-------------------------------- 99 100 ---------------------------------------------------------------------------*/ 101 const Sequence<OUString>& SvtTabAppearanceCfg::GetPropertyNames() 102 { 103 static Sequence<OUString> aNames; 104 if(!aNames.getLength()) 105 { 106 static const sal_Char* aPropNames[] = 107 { 108 "FontScaling" // 0 109 ,"Window/Drag" // 1 110 ,"Menu/FollowMouse" // 2 111 ,"Dialog/MousePositioning" // 3 112 ,"Dialog/MiddleMouseButton" // 4 113 #if defined( UNX ) || defined ( FS_PRIV_DEBUG ) 114 ,"FontAntiAliasing/Enabled" // 5 115 ,"FontAntiAliasing/MinPixelHeight" // 6 116 #endif 117 }; 118 const int nCount = sizeof( aPropNames ) / sizeof( aPropNames[0] ); 119 aNames.realloc(nCount); 120 121 const sal_Char** pAsciiNames = aPropNames; 122 OUString* pNames = aNames.getArray(); 123 for(int i = 0; i < nCount; ++i, ++pNames, ++pAsciiNames) 124 *pNames = OUString::createFromAscii( *pAsciiNames ); 125 } 126 return aNames; 127 } 128 /* -----------------------------22.05.01 11:54-------------------------------- 129 130 ---------------------------------------------------------------------------*/ 131 void SvtTabAppearanceCfg::Commit() 132 { 133 const Sequence<OUString>& rNames = GetPropertyNames(); 134 Sequence<Any> aValues(rNames.getLength()); 135 Any* pValues = aValues.getArray(); 136 137 const Type& rType = ::getBooleanCppuType(); 138 for(int nProp = 0; nProp < rNames.getLength(); nProp++) 139 { 140 switch(nProp) 141 { 142 case 0: pValues[nProp] <<= nScaleFactor; break; // "FontScaling", 143 case 1: pValues[nProp] <<= nDragMode; break; //"Window/Drag", 144 case 2: pValues[nProp].setValue(&bMenuMouseFollow, rType); break; //"Menu/FollowMouse", 145 case 3: pValues[nProp] <<= nSnapMode; break; //"Dialog/MousePositioning", 146 case 4: pValues[nProp] <<= nMiddleMouse; break; //"Dialog/MiddleMouseButton", 147 #if defined( UNX ) || defined ( FS_PRIV_DEBUG ) 148 case 5: pValues[nProp].setValue(&bFontAntialiasing, rType); break; // "FontAntialising/Enabled", 149 case 6: pValues[nProp] <<= nAAMinPixelHeight; break; // "FontAntialising/MinPixelHeight", 150 #endif 151 } 152 } 153 PutProperties(rNames, aValues); 154 } 155 156 void SvtTabAppearanceCfg::Notify( const com::sun::star::uno::Sequence< rtl::OUString >& ) 157 { 158 } 159 160 /*-------------------------------------------------------------------- 161 Beschreibung: 162 --------------------------------------------------------------------*/ 163 164 void SvtTabAppearanceCfg::SetDragMode ( sal_uInt16 nSet ) 165 { 166 nDragMode = nSet; 167 SetModified(); 168 } 169 170 /*-------------------------------------------------------------------- 171 Beschreibung: 172 --------------------------------------------------------------------*/ 173 174 void SvtTabAppearanceCfg::SetScaleFactor ( sal_uInt16 nSet ) 175 { 176 nScaleFactor = nSet; 177 SetModified(); 178 } 179 180 /*-------------------------------------------------------------------- 181 Beschreibung: 182 --------------------------------------------------------------------*/ 183 184 void SvtTabAppearanceCfg::SetSnapMode ( sal_uInt16 nSet ) 185 { 186 nSnapMode = nSet; 187 SetModified(); 188 } 189 /*-------------------------------------------------------------------- 190 Beschreibung: 191 --------------------------------------------------------------------*/ 192 void SvtTabAppearanceCfg::SetMiddleMouseButton ( sal_uInt16 nSet ) 193 { 194 nMiddleMouse = nSet; 195 SetModified(); 196 } 197 /*-------------------------------------------------------------------- 198 Beschreibung: 199 --------------------------------------------------------------------*/ 200 201 void SvtTabAppearanceCfg::SetApplicationDefaults ( Application* pApp ) 202 { 203 AllSettings hAppSettings = pApp->GetSettings(); 204 StyleSettings hAppStyle = hAppSettings.GetStyleSettings(); 205 206 // Look & Feel 207 208 // SetStandard...Styles() resets the UseSystemUIFonts flag, 209 // but we don't want to change it now, so save the flag before ... 210 sal_Bool bUseSystemUIFonts = hAppStyle.GetUseSystemUIFonts(); 211 hAppStyle.SetStandardStyles(); 212 // and set it here 213 hAppStyle.SetUseSystemUIFonts( bUseSystemUIFonts ); 214 215 // Screen and ScreenFont Scaling 216 217 hAppStyle.SetScreenZoom( nScaleFactor ); 218 hAppStyle.SetScreenFontZoom( nScaleFactor ); 219 220 #if defined( UNX ) || defined ( FS_PRIV_DEBUG ) 221 // font anti aliasing 222 hAppStyle.SetAntialiasingMinPixelHeight( nAAMinPixelHeight ); 223 hAppStyle.SetDisplayOptions( bFontAntialiasing ? 0 : DISPLAY_OPTION_AA_DISABLE ); 224 #endif 225 226 // Mouse Snap 227 228 MouseSettings hMouseSettings = hAppSettings.GetMouseSettings(); 229 sal_uLong nMouseOptions = hMouseSettings.GetOptions(); 230 231 nMouseOptions &= ! (MOUSE_OPTION_AUTOCENTERPOS | MOUSE_OPTION_AUTODEFBTNPOS); 232 233 switch ( nSnapMode ) 234 { 235 case SnapToButton: 236 nMouseOptions |= MOUSE_OPTION_AUTODEFBTNPOS; 237 break; 238 case SnapToMiddle: 239 nMouseOptions |= MOUSE_OPTION_AUTOCENTERPOS; 240 break; 241 case NoSnap: 242 default: 243 break; 244 } 245 hMouseSettings.SetOptions(nMouseOptions); 246 hMouseSettings.SetMiddleButtonAction(nMiddleMouse); 247 248 // Merge and Publish Settings 249 250 sal_uLong nFollow = hMouseSettings.GetFollow(); 251 if(bMenuMouseFollow) 252 nFollow |= MOUSE_FOLLOW_MENU; 253 else 254 nFollow &= ~MOUSE_FOLLOW_MENU; 255 hMouseSettings.SetFollow( nFollow ); 256 257 hAppSettings.SetMouseSettings( hMouseSettings ); 258 259 hAppSettings.SetStyleSettings( hAppStyle ); 260 pApp->MergeSystemSettings ( hAppSettings ); // Allow system-settings to apply 261 pApp->SystemSettingsChanging ( hAppSettings, NULL );// Allow overruling of system-settings 262 //is concerned with window drag 263 264 pApp->SetSettings ( hAppSettings ); 265 } 266 267 268 269