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_extensions.hxx" 26 #include <comphelper/processfactory.hxx> 27 #include <osl/mutex.hxx> 28 #include <tools/urlobj.hxx> 29 #include <com/sun/star/frame/XDispatch.hpp> 30 #include <com/sun/star/frame/XDispatchProvider.hpp> 31 #include <com/sun/star/util/XURLTransformer.hpp> 32 #include <com/sun/star/frame/FrameSearchFlag.hpp> 33 #include <datman.hxx> 34 #include <tools/debug.hxx> 35 #ifndef _SVX_SVXIDS_HRC 36 #include <svx/svxids.hrc> 37 #endif 38 #include <svtools/miscopt.hxx> 39 #include <svtools/imgdef.hxx> 40 #include <vcl/svapp.hxx> 41 #include <vcl/mnemonic.hxx> 42 #include "bibbeam.hxx" 43 #include "toolbar.hrc" 44 #include "bibresid.hxx" 45 46 #ifndef BIBTOOLS_HXX 47 #include "bibtools.hxx" 48 #endif 49 #include <vos/mutex.hxx> 50 51 using namespace ::rtl; 52 using namespace ::com::sun::star; 53 using namespace ::com::sun::star::uno; 54 using namespace ::com::sun::star::beans; 55 #define C2U(cChar) OUString::createFromAscii(cChar) 56 57 58 // Konstanten ------------------------------------------------------------- 59 60 61 BibToolBarListener::BibToolBarListener(BibToolBar *pTB,rtl::OUString aStr,sal_uInt16 nId): 62 nIndex(nId), 63 aCommand(aStr), 64 pToolBar(pTB) 65 { 66 } 67 68 BibToolBarListener::~BibToolBarListener() 69 { 70 } 71 72 void BibToolBarListener::statusChanged(const ::com::sun::star::frame::FeatureStateEvent& rEvt)throw( ::com::sun::star::uno::RuntimeException ) 73 { 74 if(rEvt.FeatureURL.Complete == aCommand) 75 { 76 vos::OGuard aGuard(Application::GetSolarMutex()); 77 pToolBar->EnableItem(nIndex,rEvt.IsEnabled); 78 79 ::com::sun::star::uno::Any aState=rEvt.State; 80 if(aState.getValueType()==::getBooleanCppuType()) 81 { 82 sal_Bool bChecked= *(sal_Bool*)aState.getValue(); 83 pToolBar->CheckItem(nIndex, bChecked); 84 } 85 86 /* 87 rtl::OUString FeatureDescriptor; 88 sal_Bool Requery; 89 ::com::sun::star::uno::Any State;*/ 90 } 91 }; 92 93 rtl::OUString BibToolBarListener::GetCommand() 94 { 95 return aCommand; 96 } 97 98 BibTBListBoxListener::BibTBListBoxListener(BibToolBar *pTB,rtl::OUString aStr,sal_uInt16 nId): 99 BibToolBarListener(pTB,aStr,nId) 100 { 101 } 102 103 BibTBListBoxListener::~BibTBListBoxListener() 104 { 105 } 106 107 void BibTBListBoxListener::statusChanged(const ::com::sun::star::frame::FeatureStateEvent& rEvt)throw( ::com::sun::star::uno::RuntimeException ) 108 { 109 if(rEvt.FeatureURL.Complete == GetCommand()) 110 { 111 vos::OGuard aGuard(Application::GetSolarMutex()); 112 pToolBar->EnableSourceList(rEvt.IsEnabled); 113 114 Any aState = rEvt.State; 115 if(aState.getValueType() == ::getCppuType((Sequence<rtl::OUString>*)0)) 116 { 117 pToolBar->UpdateSourceList(sal_False); 118 pToolBar->ClearSourceList(); 119 120 Sequence<rtl::OUString>* pStringSeq = (Sequence<rtl::OUString>*)aState.getValue(); 121 const rtl::OUString* pStringArray = (const rtl::OUString*)pStringSeq->getConstArray(); 122 123 sal_uInt32 nCount = pStringSeq->getLength(); 124 XubString aEntry; 125 for( sal_uInt32 i=0; i<nCount; i++ ) 126 { 127 aEntry = String(pStringArray[i]); 128 pToolBar->InsertSourceEntry(aEntry); 129 } 130 pToolBar->UpdateSourceList(sal_True); 131 } 132 133 XubString aStr = String(rEvt.FeatureDescriptor); 134 pToolBar->SelectSourceEntry(aStr); 135 } 136 }; 137 138 BibTBQueryMenuListener::BibTBQueryMenuListener(BibToolBar *pTB,rtl::OUString aStr,sal_uInt16 nId): 139 BibToolBarListener(pTB,aStr,nId) 140 { 141 } 142 143 BibTBQueryMenuListener::~BibTBQueryMenuListener() 144 { 145 } 146 147 void BibTBQueryMenuListener::statusChanged(const frame::FeatureStateEvent& rEvt)throw( uno::RuntimeException ) 148 { 149 if(rEvt.FeatureURL.Complete == GetCommand()) 150 { 151 vos::OGuard aGuard(Application::GetSolarMutex()); 152 pToolBar->EnableSourceList(rEvt.IsEnabled); 153 154 uno::Any aState=rEvt.State; 155 if(aState.getValueType()==::getCppuType((Sequence<rtl::OUString>*)0)) 156 { 157 pToolBar->ClearFilterMenu(); 158 159 Sequence<rtl::OUString>* pStringSeq = (Sequence<rtl::OUString>*) aState.getValue(); 160 const rtl::OUString* pStringArray = (const rtl::OUString*)pStringSeq->getConstArray(); 161 162 sal_uInt32 nCount = pStringSeq->getLength(); 163 for( sal_uInt32 i=0; i<nCount; i++ ) 164 { 165 sal_uInt16 nID=pToolBar->InsertFilterItem(String(pStringArray[i])); 166 if(pStringArray[i]==rEvt.FeatureDescriptor) 167 { 168 // XubString aStr = rEvt.FeatureDescriptor; 169 pToolBar->SelectFilterItem(nID); 170 } 171 } 172 } 173 } 174 }; 175 176 BibTBEditListener::BibTBEditListener(BibToolBar *pTB,rtl::OUString aStr,sal_uInt16 nId): 177 BibToolBarListener(pTB,aStr,nId) 178 { 179 } 180 181 BibTBEditListener::~BibTBEditListener() 182 { 183 } 184 185 void BibTBEditListener::statusChanged(const frame::FeatureStateEvent& rEvt)throw( uno::RuntimeException ) 186 { 187 if(rEvt.FeatureURL.Complete == GetCommand()) 188 { 189 vos::OGuard aGuard(Application::GetSolarMutex()); 190 pToolBar->EnableQuery(rEvt.IsEnabled); 191 192 uno::Any aState=rEvt.State; 193 if(aState.getValueType()==::getCppuType((const OUString*)0)) 194 { 195 String aStr = String(*(OUString*) aState.getValue()); 196 pToolBar->SetQueryString(aStr); 197 } 198 } 199 } 200 201 SV_IMPL_PTRARR( BibToolBarListenerArr, BibToolBarListenerPtr); 202 203 BibToolBar::BibToolBar(Window* pParent, Link aLink, WinBits nStyle): 204 ToolBox(pParent,BibResId(RID_BIB_TOOLBAR)), 205 aImgLst(BibResId( RID_TOOLBAR_IMGLIST )), 206 aImgLstHC(BibResId(RID_TOOLBAR_IMGLIST_HC )), 207 aBigImgLst(BibResId( RID_TOOLBAR_BIGIMGLIST )), 208 aBigImgLstHC(BibResId( RID_TOOLBAR_BIGIMGLIST_HC )), 209 aFtSource(this,WB_VCENTER), 210 aLBSource(this,WB_DROPDOWN), 211 aFtQuery(this,WB_VCENTER), 212 aEdQuery(this), 213 nMenuId(0), 214 nSelMenuItem(0), 215 aLayoutManager( aLink ), 216 nSymbolsSize( SFX_SYMBOLS_SIZE_SMALL ), 217 nOutStyle( 0 ) 218 { 219 SvtMiscOptions aSvtMiscOptions; 220 nSymbolsSize = aSvtMiscOptions.GetCurrentSymbolsSize(); 221 nOutStyle = aSvtMiscOptions.GetToolboxStyle(); 222 223 ApplyImageList(); 224 SetStyle(GetStyle()|nStyle); 225 SetOutStyle(TOOLBOX_STYLE_FLAT); 226 Size aSize=GetSizePixel(); 227 Size a2Size(GetOutputSizePixel()); 228 a2Size.Width()=100; 229 aLBSource.SetSizePixel(a2Size); 230 aLBSource.SetDropDownLineCount(9); 231 aLBSource.Show(); 232 aLBSource.SetSelectHdl(LINK( this, BibToolBar, SelHdl)); 233 234 SvtMiscOptions().AddListenerLink( LINK( this, BibToolBar, OptionsChanged_Impl ) ); 235 Application::AddEventListener( LINK( this, BibToolBar, SettingsChanged_Impl ) ); 236 237 aTimer.SetTimeoutHdl(LINK( this, BibToolBar, SendSelHdl)); 238 aTimer.SetTimeout(400); 239 240 SetDropdownClickHdl( LINK( this, BibToolBar, MenuHdl)); 241 242 aEdQuery.SetSizePixel(aLBSource.GetSizePixel()); 243 aEdQuery.Show(); 244 245 XubString aStr=GetItemText(TBC_FT_SOURCE); 246 Rectangle aRect=GetItemRect(TBC_FT_SOURCE); 247 aFtSource.SetText(aStr); 248 aFtSource.SetSizePixel(aRect.GetSize()); 249 aFtSource.SetBackground(Wallpaper( COL_TRANSPARENT )); 250 251 aStr=GetItemText(TBC_FT_QUERY); 252 aRect=GetItemRect(TBC_FT_QUERY); 253 aFtQuery.SetText(aStr); 254 aFtQuery.SetSizePixel(aRect.GetSize()); 255 aFtQuery.SetBackground(Wallpaper( COL_TRANSPARENT )); 256 257 SetItemWindow(TBC_FT_SOURCE,&aFtSource); 258 SetItemWindow(TBC_LB_SOURCE,&aLBSource); 259 SetItemWindow(TBC_FT_QUERY ,&aFtQuery); 260 SetItemWindow(TBC_ED_QUERY ,&aEdQuery); 261 262 ::bib::AddToTaskPaneList( this ); 263 } 264 265 BibToolBar::~BibToolBar() 266 { 267 SvtMiscOptions().RemoveListenerLink( LINK( this, BibToolBar, OptionsChanged_Impl ) ); 268 Application::RemoveEventListener( LINK( this, BibToolBar, SettingsChanged_Impl ) ); 269 ::bib::RemoveFromTaskPaneList( this ); 270 } 271 272 void BibToolBar::InitListener() 273 { 274 sal_uInt16 nCount=GetItemCount(); 275 276 uno::Reference< lang::XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory(); 277 uno::Reference< frame::XDispatch > xDisp(xController,UNO_QUERY); 278 279 uno::Reference< util::XURLTransformer > xTrans ( xMgr->createInstance( C2U("com.sun.star.util.URLTransformer") ), UNO_QUERY ); 280 if( xTrans.is() ) 281 { 282 util::URL aQueryURL; 283 aQueryURL.Complete = C2U(".uno:Bib/MenuFilter"); 284 xTrans->parseStrict( aQueryURL); 285 BibToolBarListener* pQuery=new BibTBQueryMenuListener(this,aQueryURL.Complete,TBC_BT_AUTOFILTER); 286 xDisp->addStatusListener(uno::Reference< frame::XStatusListener > (pQuery),aQueryURL); 287 288 for(sal_uInt16 nPos=0;nPos<nCount;nPos++) 289 { 290 sal_uInt16 nId=GetItemId(nPos); 291 if(!nId || nId==TBC_FT_SOURCE || nId==TBC_FT_QUERY) 292 continue; 293 294 util::URL aURL; 295 aURL.Complete = GetItemCommand(nId); 296 if(!aURL.Complete.getLength()) 297 continue; 298 299 xTrans->parseStrict( aURL ); 300 301 BibToolBarListener* pListener=NULL; 302 if(nId==TBC_LB_SOURCE) 303 { 304 pListener=new BibTBListBoxListener(this,aURL.Complete,nId); 305 } 306 else if(nId==TBC_ED_QUERY) 307 { 308 pListener=new BibTBEditListener(this,aURL.Complete,nId); 309 } 310 else 311 { 312 pListener=new BibToolBarListener(this,aURL.Complete,nId); 313 } 314 315 BibToolBarListenerPtr pxInsert = new Reference<frame::XStatusListener>; 316 (*pxInsert) = pListener; 317 aListenerArr.Insert( pxInsert, aListenerArr.Count() ); 318 xDisp->addStatusListener(uno::Reference< frame::XStatusListener > (pListener),aURL); 319 } 320 } 321 } 322 323 void BibToolBar::SetXController(const uno::Reference< frame::XController > & xCtr) 324 { 325 xController=xCtr; 326 InitListener(); 327 328 } 329 330 void BibToolBar::Select() 331 { 332 sal_uInt16 nId=GetCurItemId(); 333 334 if(nId!=TBC_BT_AUTOFILTER) 335 { 336 SendDispatch(nId,Sequence<PropertyValue>() ); 337 } 338 else 339 { 340 Sequence<PropertyValue> aPropVal(2); 341 PropertyValue* pPropertyVal = (PropertyValue*)aPropVal.getConstArray(); 342 pPropertyVal[0].Name=C2U("QueryText"); 343 rtl::OUString aSelection = aEdQuery.GetText(); 344 pPropertyVal[0].Value <<= aSelection; 345 346 pPropertyVal[1].Name=C2U("QueryField"); 347 pPropertyVal[1].Value <<= aQueryField; 348 SendDispatch(nId,aPropVal); 349 } 350 } 351 352 void BibToolBar::SendDispatch(sal_uInt16 nId, const Sequence< PropertyValue >& rArgs) 353 { 354 rtl::OUString aCommand = GetItemCommand(nId); 355 356 uno::Reference< frame::XDispatchProvider > xDSP( xController, UNO_QUERY ); 357 358 if( xDSP.is() && aCommand.getLength()) 359 { 360 uno::Reference< lang::XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory(); 361 362 uno::Reference< util::XURLTransformer > xTrans ( xMgr->createInstance( C2U("com.sun.star.util.URLTransformer") ), UNO_QUERY ); 363 if( xTrans.is() ) 364 { 365 // Datei laden 366 util::URL aURL; 367 aURL.Complete = aCommand; 368 369 xTrans->parseStrict( aURL ); 370 371 uno::Reference< frame::XDispatch > xDisp = xDSP->queryDispatch( aURL, rtl::OUString(), frame::FrameSearchFlag::SELF ); 372 373 if ( xDisp.is() ) 374 xDisp->dispatch( aURL, rArgs); 375 } 376 } 377 378 } 379 380 void BibToolBar::Click() 381 { 382 sal_uInt16 nId=GetCurItemId(); 383 384 if(nId == TBC_BT_COL_ASSIGN ) 385 { 386 if(pDatMan) 387 pDatMan->CreateMappingDialog(GetParent()); 388 CheckItem( nId, sal_False ); 389 } 390 else if(nId == TBC_BT_CHANGESOURCE) 391 { 392 if(pDatMan) 393 { 394 OUString sNew = pDatMan->CreateDBChangeDialog(GetParent()); 395 if(sNew.getLength()) 396 pDatMan->setActiveDataSource(sNew); 397 } 398 CheckItem( nId, sal_False ); 399 } 400 } 401 402 void BibToolBar::ClearFilterMenu() 403 { 404 aPopupMenu.Clear(); 405 nMenuId=0; 406 } 407 sal_uInt16 BibToolBar::InsertFilterItem(const XubString& aMenuEntry) 408 { 409 nMenuId++; 410 aPopupMenu.InsertItem(nMenuId,aMenuEntry); 411 412 return nMenuId; 413 } 414 void BibToolBar::SelectFilterItem(sal_uInt16 nId) 415 { 416 aPopupMenu.CheckItem(nId); 417 nSelMenuItem=nId; 418 aQueryField = MnemonicGenerator::EraseAllMnemonicChars( aPopupMenu.GetItemText(nId) ); 419 } 420 421 void BibToolBar::EnableSourceList(sal_Bool bFlag) 422 { 423 aFtSource.Enable(bFlag); 424 aLBSource.Enable(bFlag); 425 } 426 427 void BibToolBar::ClearSourceList() 428 { 429 aLBSource.Clear(); 430 } 431 432 void BibToolBar::UpdateSourceList(sal_Bool bFlag) 433 { 434 aLBSource.SetUpdateMode(bFlag); 435 } 436 437 void BibToolBar::InsertSourceEntry(const XubString& aEntry, sal_uInt16 nPos) 438 { 439 aLBSource.InsertEntry(aEntry, nPos); 440 } 441 442 void BibToolBar::SelectSourceEntry(const XubString& aStr) 443 { 444 aLBSource.SelectEntry(aStr); 445 } 446 447 void BibToolBar::EnableQuery(sal_Bool bFlag) 448 { 449 aFtQuery.Enable(bFlag); 450 aEdQuery.Enable(bFlag); 451 } 452 453 void BibToolBar::SetQueryString(const XubString& aStr) 454 { 455 aEdQuery.SetText(aStr); 456 } 457 458 459 long BibToolBar::PreNotify( NotifyEvent& rNEvt ) 460 { 461 long nResult=sal_True; 462 463 sal_uInt16 nSwitch=rNEvt.GetType(); 464 if(aEdQuery.HasFocus() && nSwitch==EVENT_KEYINPUT)// || nSwitch==EVENT_KEYUP) 465 { 466 const KeyCode& aKeyCode=rNEvt.GetKeyEvent()->GetKeyCode(); 467 sal_uInt16 nKey = aKeyCode.GetCode(); 468 if(nKey == KEY_RETURN) 469 { 470 Sequence<PropertyValue> aPropVal(2); 471 PropertyValue* pPropertyVal = (PropertyValue*)aPropVal.getConstArray(); 472 pPropertyVal[0].Name = C2U("QueryText"); 473 rtl::OUString aSelection = aEdQuery.GetText(); 474 pPropertyVal[0].Value <<= aSelection; 475 pPropertyVal[1].Name=C2U("QueryField"); 476 pPropertyVal[1].Value <<= aQueryField; 477 SendDispatch(TBC_BT_AUTOFILTER,aPropVal); 478 return nResult; 479 } 480 481 } 482 483 nResult=ToolBox::PreNotify(rNEvt); 484 485 return nResult; 486 } 487 488 IMPL_LINK( BibToolBar, SelHdl, ListBox*, /*pLb*/ ) 489 { 490 aTimer.Start(); 491 return 0; 492 } 493 494 IMPL_LINK( BibToolBar, SendSelHdl, Timer*,/*pT*/) 495 { 496 Sequence<PropertyValue> aPropVal(1); 497 PropertyValue* pPropertyVal = (PropertyValue*)aPropVal.getConstArray(); 498 pPropertyVal[0].Name = C2U("DataSourceName"); 499 String aEntry( MnemonicGenerator::EraseAllMnemonicChars( aLBSource.GetSelectEntry() ) ); 500 rtl::OUString aSelection = aEntry; 501 pPropertyVal[0].Value <<= aSelection; 502 SendDispatch(TBC_LB_SOURCE,aPropVal); 503 504 return 0; 505 } 506 //----------------------------------------------------------------------------- 507 IMPL_LINK( BibToolBar, MenuHdl, ToolBox*, /*pToolbox*/) 508 { 509 sal_uInt16 nId=GetCurItemId(); 510 if(nId==TBC_BT_AUTOFILTER) 511 { 512 EndSelection(); // vor SetDropMode (SetDropMode ruft SetItemImage) 513 514 SetItemDown(TBC_BT_AUTOFILTER,sal_True); 515 nId = aPopupMenu.Execute(this, GetItemRect(TBC_BT_AUTOFILTER)); 516 517 518 if(nId>0) 519 { 520 aPopupMenu.CheckItem(nSelMenuItem,sal_False); 521 aPopupMenu.CheckItem(nId); 522 nSelMenuItem=nId; 523 aQueryField = MnemonicGenerator::EraseAllMnemonicChars( aPopupMenu.GetItemText(nId) ); 524 Sequence<PropertyValue> aPropVal(2); 525 PropertyValue* pPropertyVal = (PropertyValue*)aPropVal.getConstArray(); 526 pPropertyVal[0].Name = C2U("QueryText"); 527 rtl::OUString aSelection = aEdQuery.GetText(); 528 pPropertyVal[0].Value <<= aSelection; 529 pPropertyVal[1].Name=C2U("QueryField"); 530 pPropertyVal[1].Value <<= aQueryField; 531 SendDispatch(TBC_BT_AUTOFILTER,aPropVal); 532 } 533 534 Point aPoint; 535 MouseEvent aLeave( aPoint, 0, MOUSE_LEAVEWINDOW | MOUSE_SYNTHETIC ); 536 MouseMove( aLeave ); 537 SetItemDown(TBC_BT_AUTOFILTER,sal_False); 538 539 540 } 541 return 0; 542 } 543 //----------------------------------------------------------------------------- 544 void BibToolBar::statusChanged(const frame::FeatureStateEvent& rEvent) 545 throw( uno::RuntimeException ) 546 { 547 for(sal_uInt16 i = 0; i < aListenerArr.Count(); i++) 548 { 549 BibToolBarListenerPtr pListener = aListenerArr.GetObject(i); 550 (*pListener)->statusChanged(rEvent); 551 } 552 } 553 /* -----------------------------07.05.2002 15:08------------------------------ 554 555 ---------------------------------------------------------------------------*/ 556 void BibToolBar::DataChanged( const DataChangedEvent& rDCEvt ) 557 { 558 if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && 559 (rDCEvt.GetFlags() & SETTINGS_STYLE) ) 560 ApplyImageList(); 561 ToolBox::DataChanged( rDCEvt ); 562 } 563 /* -----------------------------07.05.2002 15:09------------------------------ 564 ---------------------------------------------------------------------------*/ 565 566 IMPL_LINK( BibToolBar, OptionsChanged_Impl, void*, /*pVoid*/ ) 567 { 568 sal_Bool bRebuildToolBar = sal_False; 569 sal_Int16 eSymbolsSize = SvtMiscOptions().GetCurrentSymbolsSize(); 570 if ( nSymbolsSize != eSymbolsSize ) 571 { 572 nSymbolsSize = eSymbolsSize; 573 bRebuildToolBar = sal_True; 574 } 575 else if ( nOutStyle != SvtMiscOptions().GetToolboxStyle() ) 576 { 577 nOutStyle = SvtMiscOptions().GetToolboxStyle(); 578 SetOutStyle( nOutStyle ); 579 bRebuildToolBar = sal_True; 580 } 581 582 if ( bRebuildToolBar ) 583 RebuildToolbar(); 584 585 return 0L; 586 } 587 588 //----------------------------------------------------------------------------- 589 590 IMPL_LINK( BibToolBar, SettingsChanged_Impl, void*, /*pVoid*/ ) 591 { 592 // Check if toolbar button size have changed and we have to use system settings 593 sal_Int16 eSymbolsSize = SvtMiscOptions().GetCurrentSymbolsSize(); 594 if ( eSymbolsSize != nSymbolsSize ) 595 { 596 nSymbolsSize = eSymbolsSize; 597 RebuildToolbar(); 598 } 599 600 return 0L; 601 } 602 603 //----------------------------------------------------------------------------- 604 void BibToolBar::RebuildToolbar() 605 { 606 ApplyImageList(); 607 // We have to call parent asynchronously as SetSize works also asynchronously! 608 Application::PostUserEvent( aLayoutManager, 0 ); 609 } 610 611 //----------------------------------------------------------------------------- 612 613 void BibToolBar::ApplyImageList() 614 { 615 ImageList& rList = ( nSymbolsSize == SFX_SYMBOLS_SIZE_SMALL ) ? 616 ( GetSettings().GetStyleSettings().GetHighContrastMode() ? aImgLstHC : aImgLst ) : 617 ( GetSettings().GetStyleSettings().GetHighContrastMode() ? aBigImgLstHC : aBigImgLst ); 618 619 SetItemImage(TBC_BT_AUTOFILTER , rList.GetImage(SID_FM_AUTOFILTER)); 620 SetItemImage(TBC_BT_FILTERCRIT , rList.GetImage(SID_FM_FILTERCRIT)); 621 SetItemImage(TBC_BT_REMOVEFILTER, rList.GetImage(SID_FM_REMOVE_FILTER_SORT )); 622 AdjustToolBox(); 623 } 624 625 void BibToolBar::AdjustToolBox() 626 { 627 Size aOldSize = GetSizePixel(); 628 Size aSize = CalcWindowSizePixel(); 629 if ( !aSize.Width() ) 630 aSize.Width() = aOldSize.Width(); 631 else if ( !aSize.Height() ) 632 aSize.Height() = aOldSize.Height(); 633 634 Size aTbSize = GetSizePixel(); 635 if ( 636 (aSize.Width() && aSize.Width() != aTbSize.Width()) || 637 (aSize.Height() && aSize.Height() != aTbSize.Height()) 638 ) 639 { 640 SetPosSizePixel( GetPosPixel(), aSize ); 641 Invalidate(); 642 } 643 } 644