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 #include <sfx2/sidebar/propertypanel.hrc> 23 #include <sfx2/sidebar/Theme.hxx> 24 #include <sfx2/sidebar/ControlFactory.hxx> 25 #include <GraphicPropertyPanel.hxx> 26 #include <GraphicPropertyPanel.hrc> 27 #include <svx/dialogs.hrc> 28 #include <svx/dialmgr.hxx> 29 #include <vcl/field.hxx> 30 #include <vcl/lstbox.hxx> 31 #include <svl/intitem.hxx> 32 #include <sfx2/bindings.hxx> 33 #include <sfx2/dispatch.hxx> 34 35 using namespace css; 36 using namespace cssu; 37 using ::sfx2::sidebar::Theme; 38 39 #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString))) 40 41 ////////////////////////////////////////////////////////////////////////////// 42 // namespace open 43 44 namespace svx { namespace sidebar { 45 46 ////////////////////////////////////////////////////////////////////////////// 47 48 GraphicPropertyPanel::GraphicPropertyPanel( 49 Window* pParent, 50 const cssu::Reference<css::frame::XFrame>& rxFrame, 51 SfxBindings* pBindings) 52 : Control( 53 pParent, 54 SVX_RES(RID_SIDEBAR_GRAPHIC_PANEL)), 55 mpFtBrightness(new FixedText(this, SVX_RES(FT_BRIGHTNESS))), 56 mpMtrBrightness(new MetricField(this, SVX_RES(MTR_BRIGHTNESS))), 57 mpFtContrast(new FixedText(this, SVX_RES(FT_CONTRAST))), 58 mpMtrContrast(new MetricField(this, SVX_RES(MTR_CONTRAST))), 59 mpFtColorMode(new FixedText(this, SVX_RES(FT_COLOR_MODE))), 60 mpLBColorMode(new ListBox(this, SVX_RES(LB_COLOR_MODE))), 61 mpFtTrans(new FixedText(this, SVX_RES(FT_TRANSPARENT))), 62 mpMtrTrans(new MetricField(this, SVX_RES(MTR_TRANSPARENT))), 63 mpMtrRed(new MetricField(this, SVX_RES(MF_RED))), 64 mpMtrGreen(new MetricField(this, SVX_RES(MF_GREEN))), 65 mpMtrBlue(new MetricField(this, SVX_RES(MF_BLUE))), 66 mpMtrGamma(new MetricField(this, SVX_RES(MF_GAMMA))), 67 maBrightControl(SID_ATTR_GRAF_LUMINANCE, *pBindings, *this), 68 maContrastControl(SID_ATTR_GRAF_CONTRAST, *pBindings, *this), 69 maTransparenceControl(SID_ATTR_GRAF_TRANSPARENCE, *pBindings, *this), 70 maRedControl(SID_ATTR_GRAF_RED, *pBindings, *this), 71 maGreenControl(SID_ATTR_GRAF_GREEN, *pBindings, *this), 72 maBlueControl(SID_ATTR_GRAF_BLUE, *pBindings, *this), 73 maGammaControl(SID_ATTR_GRAF_GAMMA, *pBindings, *this), 74 maModeControl(SID_ATTR_GRAF_MODE, *pBindings, *this), 75 maImgNormal(SVX_RES(IMG_NORMAL)), 76 maImgBW(SVX_RES(IMG_BW)), 77 maImgGray(SVX_RES(IMG_GRAY)), 78 maImgWater(SVX_RES(IMG_WATER)), 79 maImgRed(this, SVX_RES(IMG_RED)), 80 maImgGreen(this, SVX_RES(IMG_GREEN)), 81 maImgBlue(this, SVX_RES(IMG_BLUE)), 82 maImgGamma(this, SVX_RES(IMG_GAMMA)), 83 msNormal(SVX_RES(STR_NORMAL)), 84 msBW(SVX_RES(STR_BW)), 85 msGray(SVX_RES(STR_GRAY)), 86 msWater(SVX_RES(STR_WATER)), 87 mxFrame(rxFrame), 88 mpBindings(pBindings) 89 { 90 Initialize(); 91 FreeResource(); 92 } 93 94 ////////////////////////////////////////////////////////////////////////////// 95 96 GraphicPropertyPanel::~GraphicPropertyPanel() 97 { 98 } 99 100 ////////////////////////////////////////////////////////////////////////////// 101 102 void GraphicPropertyPanel::Initialize() 103 { 104 mpFtBrightness->SetBackground(Wallpaper()); 105 mpFtContrast->SetBackground(Wallpaper()); 106 mpFtColorMode->SetBackground(Wallpaper()); 107 mpFtTrans->SetBackground(Wallpaper()); 108 109 mpMtrBrightness->SetModifyHdl( LINK( this, GraphicPropertyPanel, ModifyBrightnessHdl ) ); 110 mpMtrBrightness->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Brightness"))); //wj acc 111 mpMtrContrast->SetModifyHdl( LINK( this, GraphicPropertyPanel, ModifyContrastHdl ) ); 112 mpMtrContrast->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Contrast"))); //wj acc 113 mpMtrTrans->SetModifyHdl( LINK( this, GraphicPropertyPanel, ModifyTransHdl ) ); 114 mpMtrTrans->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Transparency"))); //wj acc 115 116 mpLBColorMode->InsertEntry( msNormal, maImgNormal ); 117 mpLBColorMode->InsertEntry( msGray, maImgGray ); 118 mpLBColorMode->InsertEntry( msBW, maImgBW ); 119 mpLBColorMode->InsertEntry( msWater, maImgWater ); 120 mpLBColorMode->SetSelectHdl( LINK( this, GraphicPropertyPanel, ClickColorModeHdl )); 121 mpLBColorMode->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Color mode"))); //wj acc 122 123 mpMtrRed->SetModifyHdl( LINK( this, GraphicPropertyPanel, RedHdl ) ); 124 mpMtrGreen->SetModifyHdl( LINK( this, GraphicPropertyPanel, GreenHdl ) ); 125 mpMtrBlue->SetModifyHdl( LINK( this, GraphicPropertyPanel, BlueHdl ) ); 126 mpMtrGamma->SetModifyHdl( LINK( this, GraphicPropertyPanel, GammaHdl ) ); 127 mpMtrRed->SetAccessibleName(mpMtrRed->GetQuickHelpText()); //wj acc 128 mpMtrGreen->SetAccessibleName(mpMtrGreen->GetQuickHelpText()); //wj acc 129 mpMtrBlue->SetAccessibleName(mpMtrBlue->GetQuickHelpText()); //wj acc 130 mpMtrGamma->SetAccessibleName(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Gamma value"))); //wj acc 131 132 mpMtrRed->SetAccessibleRelationLabeledBy(mpMtrRed.get()); 133 mpMtrGreen->SetAccessibleRelationLabeledBy(mpMtrGreen.get()); 134 mpMtrBlue->SetAccessibleRelationLabeledBy(mpMtrBlue.get()); 135 mpMtrGamma->SetAccessibleRelationLabeledBy(mpMtrGamma.get()); 136 mpMtrBrightness->SetAccessibleRelationLabeledBy(mpFtBrightness.get()); //7874 137 mpMtrContrast->SetAccessibleRelationLabeledBy(mpFtContrast.get()); //7874 138 mpMtrTrans->SetAccessibleRelationLabeledBy(mpFtTrans.get()); //7874 139 mpLBColorMode->SetAccessibleRelationLabeledBy(mpFtColorMode.get()); //7874 140 } 141 142 ////////////////////////////////////////////////////////////////////////////// 143 144 IMPL_LINK( GraphicPropertyPanel, ModifyBrightnessHdl, void *, EMPTYARG ) 145 { 146 sal_Int16 nBright = mpMtrBrightness->GetValue(); 147 SfxInt16Item aBrightItem( SID_ATTR_GRAF_LUMINANCE, nBright ); 148 GetBindings()->GetDispatcher()->Execute( 149 SID_ATTR_GRAF_LUMINANCE, SFX_CALLMODE_RECORD, &aBrightItem, 0L); 150 return 0L; 151 } 152 153 ////////////////////////////////////////////////////////////////////////////// 154 155 IMPL_LINK( GraphicPropertyPanel, ModifyContrastHdl, void *, EMPTYARG ) 156 { 157 sal_Int16 nContrast = mpMtrContrast->GetValue(); 158 SfxInt16Item aContrastItem( SID_ATTR_GRAF_CONTRAST, nContrast ); 159 GetBindings()->GetDispatcher()->Execute( 160 SID_ATTR_GRAF_CONTRAST, SFX_CALLMODE_RECORD, &aContrastItem, 0L); 161 return 0L; 162 } 163 164 ////////////////////////////////////////////////////////////////////////////// 165 166 IMPL_LINK( GraphicPropertyPanel, ModifyTransHdl, void *, EMPTYARG ) 167 { 168 sal_Int16 nTrans = mpMtrTrans->GetValue(); 169 SfxInt16Item aTransItem( SID_ATTR_GRAF_TRANSPARENCE, nTrans ); 170 GetBindings()->GetDispatcher()->Execute( 171 SID_ATTR_GRAF_TRANSPARENCE, SFX_CALLMODE_RECORD, &aTransItem, 0L); 172 return 0L; 173 } 174 175 ////////////////////////////////////////////////////////////////////////////// 176 177 IMPL_LINK( GraphicPropertyPanel, ClickColorModeHdl, ToolBox *, pBox ) 178 { 179 sal_Int16 nTrans = mpLBColorMode->GetSelectEntryPos(); 180 SfxInt16Item aTransItem( SID_ATTR_GRAF_MODE, nTrans ); 181 GetBindings()->GetDispatcher()->Execute( 182 SID_ATTR_GRAF_MODE, SFX_CALLMODE_RECORD, &aTransItem, 0L); 183 return 0L; 184 } 185 186 ////////////////////////////////////////////////////////////////////////////// 187 188 IMPL_LINK( GraphicPropertyPanel, RedHdl, void*, EMPTYARG ) 189 { 190 sal_Int16 nRed = mpMtrRed->GetValue(); 191 SfxInt16Item aRedItem( SID_ATTR_GRAF_RED, nRed ); 192 GetBindings()->GetDispatcher()->Execute( 193 SID_ATTR_GRAF_RED, SFX_CALLMODE_RECORD, &aRedItem, 0L); 194 return 0L; 195 } 196 197 ////////////////////////////////////////////////////////////////////////////// 198 199 IMPL_LINK( GraphicPropertyPanel, GreenHdl, void*, EMPTYARG ) 200 { 201 sal_Int16 nGreen = mpMtrGreen->GetValue(); 202 SfxInt16Item aGreenItem( SID_ATTR_GRAF_GREEN, nGreen ); 203 GetBindings()->GetDispatcher()->Execute( 204 SID_ATTR_GRAF_GREEN, SFX_CALLMODE_RECORD, &aGreenItem, 0L); 205 return 0L; 206 } 207 208 ////////////////////////////////////////////////////////////////////////////// 209 210 IMPL_LINK(GraphicPropertyPanel, BlueHdl, void *, EMPTYARG) 211 { 212 sal_Int16 nBlue = mpMtrBlue->GetValue(); 213 SfxInt16Item aBlueItem( SID_ATTR_GRAF_BLUE, nBlue ); 214 GetBindings()->GetDispatcher()->Execute( 215 SID_ATTR_GRAF_BLUE, SFX_CALLMODE_RECORD, &aBlueItem, 0L); 216 return 0L; 217 } 218 219 ////////////////////////////////////////////////////////////////////////////// 220 221 IMPL_LINK(GraphicPropertyPanel, GammaHdl, void *, EMPTYARG) 222 { 223 sal_Int32 nGamma = mpMtrGamma->GetValue(); 224 SfxInt32Item nGammaItem( SID_ATTR_GRAF_GAMMA, nGamma ); 225 GetBindings()->GetDispatcher()->Execute( 226 SID_ATTR_GRAF_GAMMA, SFX_CALLMODE_RECORD, &nGammaItem, 0L); 227 return 0L; 228 } 229 230 ////////////////////////////////////////////////////////////////////////////// 231 232 void GraphicPropertyPanel::SetupIcons(void) 233 { 234 if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons)) 235 { 236 // todo 237 } 238 else 239 { 240 // todo 241 } 242 } 243 244 ////////////////////////////////////////////////////////////////////////////// 245 246 GraphicPropertyPanel* GraphicPropertyPanel::Create ( 247 Window* pParent, 248 const cssu::Reference<css::frame::XFrame>& rxFrame, 249 SfxBindings* pBindings) 250 { 251 if (pParent == NULL) 252 throw lang::IllegalArgumentException(A2S("no parent Window given to GraphicPropertyPanel::Create"), NULL, 0); 253 if ( ! rxFrame.is()) 254 throw lang::IllegalArgumentException(A2S("no XFrame given to GraphicPropertyPanel::Create"), NULL, 1); 255 if (pBindings == NULL) 256 throw lang::IllegalArgumentException(A2S("no SfxBindings given to GraphicPropertyPanel::Create"), NULL, 2); 257 258 return new GraphicPropertyPanel( 259 pParent, 260 rxFrame, 261 pBindings); 262 } 263 264 ////////////////////////////////////////////////////////////////////////////// 265 266 void GraphicPropertyPanel::DataChanged( 267 const DataChangedEvent& rEvent) 268 { 269 (void)rEvent; 270 271 SetupIcons(); 272 } 273 274 ////////////////////////////////////////////////////////////////////////////// 275 276 void GraphicPropertyPanel::NotifyItemUpdate( 277 sal_uInt16 nSID, 278 SfxItemState eState, 279 const SfxPoolItem* pState) 280 { 281 switch( nSID ) 282 { 283 case SID_ATTR_GRAF_LUMINANCE: 284 if( eState >= SFX_ITEM_AVAILABLE) 285 { 286 mpMtrBrightness->Enable(); 287 const SfxInt16Item* pItem = dynamic_cast< const SfxInt16Item* >(pState); 288 289 if(pItem) 290 { 291 sal_Int64 nBright = pItem->GetValue(); 292 mpMtrBrightness->SetValue(nBright); 293 } 294 } 295 else if( eState == SFX_ITEM_DISABLED ) 296 mpMtrBrightness->Disable(); 297 else 298 { 299 mpMtrBrightness->Enable(); 300 mpMtrBrightness->SetText( String()); 301 } 302 break; 303 case SID_ATTR_GRAF_CONTRAST: 304 if( eState >= SFX_ITEM_AVAILABLE) 305 { 306 mpMtrContrast->Enable(); 307 const SfxInt16Item* pItem = dynamic_cast< const SfxInt16Item* >(pState); 308 309 if(pItem) 310 { 311 sal_Int64 nContrast = pItem->GetValue(); 312 mpMtrContrast->SetValue(nContrast); 313 } 314 } 315 else if( eState == SFX_ITEM_DISABLED ) 316 mpMtrContrast->Disable(); 317 else 318 { 319 mpMtrContrast->Enable(); 320 mpMtrContrast->SetText( String()); 321 } 322 break; 323 case SID_ATTR_GRAF_TRANSPARENCE: 324 if( eState >= SFX_ITEM_AVAILABLE) 325 { 326 mpMtrTrans->Enable(); 327 const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState); 328 329 if(pItem) 330 { 331 sal_Int64 nTrans = pItem->GetValue(); 332 mpMtrTrans->SetValue(nTrans); 333 } 334 } 335 else if( eState == SFX_ITEM_DISABLED ) 336 mpMtrTrans->Disable(); 337 else 338 { 339 mpMtrTrans->Enable(); 340 mpMtrTrans->SetText( String()); 341 } 342 break; 343 case SID_ATTR_GRAF_MODE: 344 if( eState >= SFX_ITEM_AVAILABLE) 345 { 346 mpLBColorMode->Enable(); 347 const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState); 348 349 if(pItem) 350 { 351 sal_Int64 nTrans = pItem->GetValue(); 352 mpLBColorMode->SelectEntryPos(nTrans); 353 } 354 } 355 else if( eState == SFX_ITEM_DISABLED ) 356 mpLBColorMode->Disable(); 357 else 358 { 359 mpLBColorMode->Enable(); 360 mpLBColorMode->SetNoSelection(); 361 } 362 break; 363 case SID_ATTR_GRAF_RED: 364 if( eState >= SFX_ITEM_AVAILABLE) 365 { 366 mpMtrRed->Enable(); 367 const SfxInt16Item* pItem = dynamic_cast< const SfxInt16Item* >(pState); 368 369 if(pItem) 370 { 371 sal_Int64 nRed = pItem->GetValue(); 372 mpMtrRed->SetValue( nRed ); 373 } 374 } 375 else if( eState == SFX_ITEM_DISABLED ) 376 mpMtrRed->Disable(); 377 else 378 { 379 mpMtrRed->Enable(); 380 mpMtrRed->SetText( String()); 381 } 382 break; 383 case SID_ATTR_GRAF_GREEN: 384 if( eState >= SFX_ITEM_AVAILABLE) 385 { 386 mpMtrGreen->Enable(); 387 const SfxInt16Item* pItem = dynamic_cast< const SfxInt16Item* >(pState); 388 389 if(pItem) 390 { 391 sal_Int64 nGreen = pItem->GetValue(); 392 mpMtrGreen->SetValue( nGreen ); 393 } 394 } 395 else if( eState == SFX_ITEM_DISABLED ) 396 mpMtrGreen->Disable(); 397 else 398 { 399 mpMtrGreen->Enable(); 400 mpMtrGreen->SetText( String()); 401 } 402 break; 403 case SID_ATTR_GRAF_BLUE: 404 if( eState >= SFX_ITEM_AVAILABLE) 405 { 406 mpMtrBlue->Enable(); 407 const SfxInt16Item* pItem = dynamic_cast< const SfxInt16Item* >(pState); 408 409 if(pItem) 410 { 411 sal_Int64 nBlue = pItem->GetValue(); 412 mpMtrBlue->SetValue( nBlue ); 413 } 414 } 415 else if( eState == SFX_ITEM_DISABLED ) 416 mpMtrBlue->Disable(); 417 else 418 { 419 mpMtrBlue->Enable(); 420 mpMtrBlue->SetText( String()); 421 } 422 break; 423 case SID_ATTR_GRAF_GAMMA: 424 if( eState >= SFX_ITEM_AVAILABLE) 425 { 426 mpMtrGamma->Enable(); 427 const SfxUInt32Item* pItem = dynamic_cast< const SfxUInt32Item* >(pState); 428 429 if(pItem) 430 { 431 sal_Int64 nGamma = pItem->GetValue(); 432 mpMtrGamma->SetValue( nGamma ); 433 } 434 } 435 else if( eState == SFX_ITEM_DISABLED ) 436 mpMtrGamma->Disable(); 437 else 438 { 439 mpMtrGamma->Enable(); 440 mpMtrGamma->SetText( String()); 441 } 442 break; 443 } 444 } 445 446 ////////////////////////////////////////////////////////////////////////////// 447 448 SfxBindings* GraphicPropertyPanel::GetBindings() 449 { 450 return mpBindings; 451 } 452 453 ////////////////////////////////////////////////////////////////////////////// 454 // namespace close 455 456 }} // end of namespace ::svx::sidebar 457 458 ////////////////////////////////////////////////////////////////////////////// 459 // eof 460