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 #ifndef INCLUDED_TOOLKIT_CONTROLS_UNOCONTROLS_HXX 21 #define INCLUDED_TOOLKIT_CONTROLS_UNOCONTROLS_HXX 22 23 #include <config_options.h> 24 #include <toolkit/dllapi.h> 25 #include <com/sun/star/awt/XTextComponent.hpp> 26 #include <com/sun/star/awt/XTextListener.hpp> 27 #include <com/sun/star/awt/XLayoutConstrains.hpp> 28 #include <com/sun/star/awt/XTextLayoutConstrains.hpp> 29 #include <com/sun/star/awt/XButton.hpp> 30 #include <com/sun/star/awt/XToggleButton.hpp> 31 #include <com/sun/star/awt/XRadioButton.hpp> 32 #include <com/sun/star/awt/XItemListener.hpp> 33 #include <com/sun/star/awt/XCheckBox.hpp> 34 #include <com/sun/star/awt/XFixedHyperlink.hpp> 35 #include <com/sun/star/awt/XFixedText.hpp> 36 #include <com/sun/star/awt/XListBox.hpp> 37 #include <com/sun/star/awt/XComboBox.hpp> 38 #include <com/sun/star/awt/XDateField.hpp> 39 #include <com/sun/star/awt/XSpinField.hpp> 40 #include <com/sun/star/awt/XTimeField.hpp> 41 #include <com/sun/star/awt/XNumericField.hpp> 42 #include <com/sun/star/awt/XCurrencyField.hpp> 43 #include <com/sun/star/awt/XPatternField.hpp> 44 #include <com/sun/star/awt/XProgressBar.hpp> 45 #include <com/sun/star/awt/XItemList.hpp> 46 #include <toolkit/controls/unocontrolmodel.hxx> 47 #include <toolkit/controls/unocontrolbase.hxx> 48 #include <toolkit/helper/macros.hxx> 49 #include <cppuhelper/implbase5.hxx> 50 #include <cppuhelper/implbase4.hxx> 51 #include <cppuhelper/implbase1.hxx> 52 #include <comphelper/uno3.hxx> 53 #include <tools/gen.hxx> 54 55 #include <memory> 56 #include <vector> 57 58 #include <optional> 59 60 namespace com::sun::star::graphic { class XGraphic; } 61 namespace com::sun::star::graphic { class XGraphicObject; } 62 63 class ImageHelper 64 { 65 public: 66 // The routine will always attempt to return a valid XGraphic for the 67 // passed _rURL, additionally xOutGraphicObject will contain the 68 // associated XGraphicObject ( if url is valid for that ) and is set 69 // appropriately ( e.g. NULL if non GraphicObject scheme ) or a valid 70 // object if the rURL points to a valid object 71 static css::uno::Reference< css::graphic::XGraphic > getGraphicAndGraphicObjectFromURL_nothrow( css::uno::Reference< css::graphic::XGraphicObject >& xOutGraphicObject, const OUString& _rURL ); 72 static css::uno::Reference< css::graphic::XGraphic > getGraphicFromURL_nothrow( const OUString& _rURL ); 73 74 }; 75 76 77 78 class UnoControlEditModel final : public UnoControlModel 79 { 80 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 81 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 82 83 public: 84 UnoControlEditModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); UnoControlEditModel(const UnoControlEditModel & rModel)85 UnoControlEditModel( const UnoControlEditModel& rModel ) : UnoControlModel( rModel ) {} 86 Clone() const87 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlEditModel( *this ); } 88 89 // css::io::XPersistObject 90 OUString SAL_CALL getServiceName() override; 91 92 // css::beans::XMultiPropertySet 93 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 94 95 96 // XServiceInfo 97 OUString SAL_CALL getImplementationName() override; 98 99 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 100 }; 101 102 103 104 typedef ::cppu::ImplHelper4 < css::awt::XTextComponent 105 , css::awt::XTextListener 106 , css::awt::XLayoutConstrains 107 , css::awt::XTextLayoutConstrains 108 > UnoEditControl_Base; 109 class UNLESS_MERGELIBS(TOOLKIT_DLLPUBLIC) UnoEditControl :public UnoControlBase 110 ,public UnoEditControl_Base 111 { 112 private: 113 TextListenerMultiplexer maTextListeners; 114 115 // Not all fields derived from UnoEditCOntrol have the property "Text" 116 // They only support XTextComponent, so keep the text 117 // here, maybe there is no Peer when calling setText()... 118 OUString maText; 119 sal_uInt16 mnMaxTextLen; 120 121 bool mbSetTextInPeer; 122 bool mbSetMaxTextLenInPeer; 123 bool mbHasTextProperty; 124 125 public: 126 127 UnoEditControl(); 128 OUString GetComponentServiceName() override; 129 TextListenerMultiplexer& GetTextListeners() { return maTextListeners; } 130 131 void ImplSetPeerProperty( const OUString& rPropName, const css::uno::Any& rVal ) override; 132 133 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 134 void SAL_CALL disposing( const css::lang::EventObject& Source ) override { UnoControlBase::disposing( Source ); } 135 void SAL_CALL dispose( ) override; 136 137 // disambiguate XInterface 138 DECLARE_XINTERFACE() 139 140 // XAggregation 141 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 142 143 // XTypeProvider 144 DECLARE_XTYPEPROVIDER() 145 146 // XTextListener 147 void SAL_CALL textChanged( const css::awt::TextEvent& rEvent ) override; 148 149 // XTextComponent 150 void SAL_CALL addTextListener( const css::uno::Reference< css::awt::XTextListener >& l ) override; 151 void SAL_CALL removeTextListener( const css::uno::Reference< css::awt::XTextListener >& l ) override; 152 void SAL_CALL setText( const OUString& aText ) override; 153 void SAL_CALL insertText( const css::awt::Selection& Sel, const OUString& Text ) override; 154 OUString SAL_CALL getText( ) override; 155 OUString SAL_CALL getSelectedText( ) override; 156 void SAL_CALL setSelection( const css::awt::Selection& aSelection ) override; 157 css::awt::Selection SAL_CALL getSelection( ) override; 158 sal_Bool SAL_CALL isEditable( ) override; 159 void SAL_CALL setEditable( sal_Bool bEditable ) override; 160 void SAL_CALL setMaxTextLen( sal_Int16 nLen ) override; 161 sal_Int16 SAL_CALL getMaxTextLen( ) override; 162 163 // XLayoutConstrains 164 css::awt::Size SAL_CALL getMinimumSize( ) override; 165 css::awt::Size SAL_CALL getPreferredSize( ) override; 166 css::awt::Size SAL_CALL calcAdjustedSize( const css::awt::Size& aNewSize ) override; 167 168 // XTextLayoutConstrains 169 css::awt::Size SAL_CALL getMinimumSize( sal_Int16 nCols, sal_Int16 nLines ) override; 170 void SAL_CALL getColumnsAndLines( sal_Int16& nCols, sal_Int16& nLines ) override; 171 172 // XServiceInfo 173 OUString SAL_CALL getImplementationName( ) override; 174 css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; 175 176 sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel >& Model) override; 177 }; 178 179 180 181 class UnoControlFileControlModel final : public UnoControlModel 182 { 183 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 184 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 185 186 public: 187 UnoControlFileControlModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 188 UnoControlFileControlModel( const UnoControlFileControlModel& rModel ) : UnoControlModel( rModel ) {} 189 190 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlFileControlModel( *this ); } 191 192 // css::io::XPersistObject 193 OUString SAL_CALL getServiceName() override; 194 195 // css::beans::XMultiPropertySet 196 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 197 198 // css::lang::XServiceInfo 199 OUString SAL_CALL getImplementationName() override; 200 201 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 202 }; 203 204 205 206 class UnoFileControl final : public UnoEditControl 207 { 208 public: 209 UnoFileControl(); 210 OUString GetComponentServiceName() override; 211 212 // css::lang::XServiceInfo 213 OUString SAL_CALL getImplementationName() override; 214 215 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 216 }; 217 218 219 220 class GraphicControlModel : public UnoControlModel 221 { 222 private: 223 bool mbAdjustingImagePosition; 224 bool mbAdjustingGraphic; 225 226 protected: 227 GraphicControlModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ) 228 :UnoControlModel( rxContext ) 229 ,mbAdjustingImagePosition( false ) 230 ,mbAdjustingGraphic( false ) 231 { 232 } 233 GraphicControlModel( const GraphicControlModel& _rSource ) : UnoControlModel( _rSource ), mbAdjustingImagePosition( false ), mbAdjustingGraphic( false ) { } 234 235 // ::cppu::OPropertySetHelper 236 void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const css::uno::Any& rValue ) override; 237 238 // UnoControlModel 239 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 240 241 private: 242 GraphicControlModel& operator=( const GraphicControlModel& ) = delete; 243 }; 244 245 246 247 class UnoControlButtonModel final : public GraphicControlModel 248 { 249 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 250 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 251 252 public: 253 UnoControlButtonModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 254 UnoControlButtonModel( const UnoControlButtonModel& rModel ) : GraphicControlModel( rModel ) {} 255 256 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlButtonModel( *this ); } 257 258 // css::beans::XMultiPropertySet 259 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 260 261 // css::io::XPersistObject 262 OUString SAL_CALL getServiceName() override; 263 264 // css::lang::XServiceInfo 265 OUString SAL_CALL getImplementationName() override; 266 267 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 268 }; 269 270 271 272 typedef ::cppu::AggImplInheritanceHelper4 < UnoControlBase 273 , css::awt::XButton 274 , css::awt::XToggleButton 275 , css::awt::XLayoutConstrains 276 , css::awt::XItemListener 277 > UnoButtonControl_Base; 278 class UnoButtonControl final : public UnoButtonControl_Base 279 { 280 private: 281 ActionListenerMultiplexer maActionListeners; 282 ItemListenerMultiplexer maItemListeners; 283 OUString maActionCommand; 284 285 public: 286 287 UnoButtonControl(); 288 OUString GetComponentServiceName() override; 289 290 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 291 void SAL_CALL dispose( ) override; 292 293 // css::awt::XButton 294 void SAL_CALL addActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 295 void SAL_CALL removeActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 296 void SAL_CALL setLabel( const OUString& Label ) override; 297 void SAL_CALL setActionCommand( const OUString& Command ) override; 298 299 // css::awt::XToggleButton 300 // css::awt::XItemEventBroadcaster 301 void SAL_CALL addItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override; 302 void SAL_CALL removeItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override; 303 304 // css::lang::XEventListener 305 virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override; 306 307 // XItemListener 308 virtual void SAL_CALL itemStateChanged( const css::awt::ItemEvent& rEvent ) override; 309 310 // css::awt::XLayoutConstrains 311 css::awt::Size SAL_CALL getMinimumSize( ) override; 312 css::awt::Size SAL_CALL getPreferredSize( ) override; 313 css::awt::Size SAL_CALL calcAdjustedSize( const css::awt::Size& aNewSize ) override; 314 315 // css::lang::XServiceInfo 316 OUString SAL_CALL getImplementationName() override; 317 318 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 319 }; 320 321 322 323 class UnoControlImageControlModel final : public GraphicControlModel 324 { 325 private: 326 bool mbAdjustingImageScaleMode; 327 328 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 329 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 330 331 public: 332 UnoControlImageControlModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 333 UnoControlImageControlModel( const UnoControlImageControlModel& rModel ) : GraphicControlModel( rModel ), mbAdjustingImageScaleMode( false ) { } 334 335 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlImageControlModel( *this ); } 336 337 // css::beans::XMultiPropertySet 338 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 339 340 // css::io::XPersistObject 341 OUString SAL_CALL getServiceName() override; 342 343 // css::lang::XServiceInfo 344 OUString SAL_CALL getImplementationName() override; 345 346 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 347 348 // ::cppu::OPropertySetHelper 349 void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const css::uno::Any& rValue ) override; 350 }; 351 352 353 354 typedef ::cppu::AggImplInheritanceHelper1 < UnoControlBase 355 , css::awt::XLayoutConstrains 356 > UnoImageControlControl_Base; 357 class UnoImageControlControl final : public UnoImageControlControl_Base 358 { 359 private: 360 ActionListenerMultiplexer maActionListeners; 361 362 public: 363 364 UnoImageControlControl(); 365 OUString GetComponentServiceName() override; 366 367 void SAL_CALL dispose( ) override; 368 369 // css::awt::XControl 370 sal_Bool SAL_CALL isTransparent( ) override; 371 372 // css::awt::XLayoutConstrains 373 css::awt::Size SAL_CALL getMinimumSize( ) override; 374 css::awt::Size SAL_CALL getPreferredSize( ) override; 375 css::awt::Size SAL_CALL calcAdjustedSize( const css::awt::Size& aNewSize ) override; 376 377 // css::lang::XServiceInfo 378 OUString SAL_CALL getImplementationName() override; 379 380 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 381 }; 382 383 384 385 class UnoControlRadioButtonModel final : public GraphicControlModel 386 { 387 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 388 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 389 390 public: 391 UnoControlRadioButtonModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 392 UnoControlRadioButtonModel( const UnoControlRadioButtonModel& rModel ) : GraphicControlModel( rModel ) {} 393 394 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlRadioButtonModel( *this ); } 395 396 // css::io::XPersistObject 397 OUString SAL_CALL getServiceName() override; 398 399 // css::beans::XMultiPropertySet 400 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 401 402 // css::lang::XServiceInfo 403 OUString SAL_CALL getImplementationName() override; 404 405 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 406 }; 407 408 409 410 typedef ::cppu::AggImplInheritanceHelper4 < UnoControlBase 411 , css::awt::XButton 412 , css::awt::XRadioButton 413 , css::awt::XItemListener 414 , css::awt::XLayoutConstrains 415 > UnoRadioButtonControl_Base; 416 class UnoRadioButtonControl final : public UnoRadioButtonControl_Base 417 { 418 private: 419 ItemListenerMultiplexer maItemListeners; 420 ActionListenerMultiplexer maActionListeners; 421 OUString maActionCommand; 422 423 public: 424 425 UnoRadioButtonControl(); 426 OUString GetComponentServiceName() override; 427 428 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 429 void SAL_CALL dispose( ) override; 430 void SAL_CALL disposing( const css::lang::EventObject& Source ) override { UnoControlBase::disposing( Source ); } 431 432 // css::awt::XControl 433 sal_Bool SAL_CALL isTransparent( ) override; 434 435 // css::awt::XButton 436 void SAL_CALL addActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 437 void SAL_CALL removeActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 438 void SAL_CALL setActionCommand( const OUString& Command ) override; 439 440 // css::awt::XRadioButton 441 void SAL_CALL addItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override; 442 void SAL_CALL removeItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override; 443 sal_Bool SAL_CALL getState( ) override; 444 void SAL_CALL setState( sal_Bool b ) override; 445 void SAL_CALL setLabel( const OUString& Label ) override; 446 447 // css::awt::XItemListener 448 void SAL_CALL itemStateChanged( const css::awt::ItemEvent& rEvent ) override; 449 450 // css::awt::XLayoutConstrains 451 css::awt::Size SAL_CALL getMinimumSize( ) override; 452 css::awt::Size SAL_CALL getPreferredSize( ) override; 453 css::awt::Size SAL_CALL calcAdjustedSize( const css::awt::Size& aNewSize ) override; 454 455 // css::lang::XServiceInfo 456 OUString SAL_CALL getImplementationName() override; 457 458 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 459 }; 460 461 462 463 class UnoControlCheckBoxModel final : public GraphicControlModel 464 { 465 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 466 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 467 468 public: 469 UnoControlCheckBoxModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 470 UnoControlCheckBoxModel( const UnoControlCheckBoxModel& rModel ) : GraphicControlModel( rModel ) {} 471 472 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlCheckBoxModel( *this ); } 473 474 // css::io::XPersistObject 475 OUString SAL_CALL getServiceName() override; 476 477 // css::beans::XMultiPropertySet 478 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 479 480 // css::lang::XServiceInfo 481 OUString SAL_CALL getImplementationName() override; 482 483 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 484 }; 485 486 487 488 typedef ::cppu::AggImplInheritanceHelper4 < UnoControlBase 489 , css::awt::XButton 490 , css::awt::XCheckBox 491 , css::awt::XItemListener 492 , css::awt::XLayoutConstrains 493 > UnoCheckBoxControl_Base; 494 class UnoCheckBoxControl final : public UnoCheckBoxControl_Base 495 { 496 private: 497 ItemListenerMultiplexer maItemListeners; 498 ActionListenerMultiplexer maActionListeners; 499 OUString maActionCommand; 500 501 public: 502 503 UnoCheckBoxControl(); 504 OUString GetComponentServiceName() override; 505 506 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 507 void SAL_CALL dispose( ) override; 508 void SAL_CALL disposing( const css::lang::EventObject& Source ) override { UnoControlBase::disposing( Source ); } 509 510 // css::awt::XControl 511 sal_Bool SAL_CALL isTransparent( ) override; 512 513 // css::awt::XButton 514 void SAL_CALL addActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 515 void SAL_CALL removeActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 516 void SAL_CALL setActionCommand( const OUString& Command ) override; 517 518 virtual void SAL_CALL addItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override; 519 virtual void SAL_CALL removeItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override; 520 521 522 sal_Int16 SAL_CALL getState( ) override; 523 void SAL_CALL setState( sal_Int16 n ) override; 524 void SAL_CALL setLabel( const OUString& Label ) override; 525 void SAL_CALL enableTriState( sal_Bool b ) override; 526 527 // css::awt::XItemListener 528 void SAL_CALL itemStateChanged( const css::awt::ItemEvent& rEvent ) override; 529 530 // css::awt::XLayoutConstrains 531 css::awt::Size SAL_CALL getMinimumSize( ) override; 532 css::awt::Size SAL_CALL getPreferredSize( ) override; 533 css::awt::Size SAL_CALL calcAdjustedSize( const css::awt::Size& aNewSize ) override; 534 535 // css::lang::XServiceInfo 536 OUString SAL_CALL getImplementationName() override; 537 538 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 539 }; 540 541 542 543 class UnoControlFixedHyperlinkModel final : public UnoControlModel 544 { 545 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 546 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 547 548 public: 549 UnoControlFixedHyperlinkModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 550 UnoControlFixedHyperlinkModel( const UnoControlFixedHyperlinkModel& rModel ) : UnoControlModel( rModel ) {} 551 552 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlFixedHyperlinkModel( *this ); } 553 554 // css::io::XPersistObject 555 OUString SAL_CALL getServiceName() override; 556 557 // css::beans::XMultiPropertySet 558 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 559 560 // css::lang::XServiceInfo 561 DECLIMPL_SERVICEINFO_DERIVED( UnoControlFixedHyperlinkModel, UnoControlModel, "com.sun.star.awt.UnoControlFixedHyperlinkModel" ) 562 }; 563 564 565 566 class UnoFixedHyperlinkControl final : public UnoControlBase, 567 public css::awt::XFixedHyperlink, 568 public css::awt::XLayoutConstrains 569 { 570 private: 571 ActionListenerMultiplexer maActionListeners; 572 573 public: 574 UnoFixedHyperlinkControl(); 575 576 OUString GetComponentServiceName() override; 577 578 css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override { return UnoControlBase::queryInterface(rType); } 579 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 580 void SAL_CALL acquire() noexcept override { OWeakAggObject::acquire(); } 581 void SAL_CALL release() noexcept override { OWeakAggObject::release(); } 582 583 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 584 void SAL_CALL dispose( ) override; 585 586 // css::lang::XTypeProvider 587 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; 588 css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 589 590 // css::awt::XControl 591 sal_Bool SAL_CALL isTransparent( ) override; 592 593 // css::awt::XFixedHyperlink 594 void SAL_CALL setText( const OUString& Text ) override; 595 OUString SAL_CALL getText( ) override; 596 void SAL_CALL setURL( const OUString& URL ) override; 597 OUString SAL_CALL getURL( ) override; 598 void SAL_CALL setAlignment( sal_Int16 nAlign ) override; 599 sal_Int16 SAL_CALL getAlignment( ) override; 600 void SAL_CALL addActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 601 void SAL_CALL removeActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 602 603 // css::awt::XLayoutConstrains 604 css::awt::Size SAL_CALL getMinimumSize( ) override; 605 css::awt::Size SAL_CALL getPreferredSize( ) override; 606 css::awt::Size SAL_CALL calcAdjustedSize( const css::awt::Size& aNewSize ) override; 607 608 // css::lang::XServiceInfo 609 DECLIMPL_SERVICEINFO_DERIVED( UnoFixedHyperlinkControl, UnoControlBase, "com.sun.star.awt.UnoControlFixedHyperlink" ) 610 }; 611 612 613 614 class UnoControlFixedTextModel final : public UnoControlModel 615 { 616 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 617 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 618 619 public: 620 UnoControlFixedTextModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 621 UnoControlFixedTextModel( const UnoControlFixedTextModel& rModel ) : UnoControlModel( rModel ) {} 622 623 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlFixedTextModel( *this ); } 624 625 // css::io::XPersistObject 626 OUString SAL_CALL getServiceName() override; 627 628 // css::beans::XMultiPropertySet 629 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 630 631 // css::lang::XServiceInfo 632 OUString SAL_CALL getImplementationName() override; 633 634 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 635 }; 636 637 638 639 class UnoFixedTextControl final : public UnoControlBase, 640 public css::awt::XFixedText, 641 public css::awt::XLayoutConstrains 642 { 643 public: 644 UnoFixedTextControl(); 645 OUString GetComponentServiceName() override; 646 647 css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override { return UnoControlBase::queryInterface(rType); } 648 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 649 void SAL_CALL acquire() noexcept override { OWeakAggObject::acquire(); } 650 void SAL_CALL release() noexcept override { OWeakAggObject::release(); } 651 652 // css::lang::XTypeProvider 653 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; 654 css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 655 656 // css::awt::XControl 657 sal_Bool SAL_CALL isTransparent( ) override; 658 659 // css::awt::XFixedText 660 void SAL_CALL setText( const OUString& Text ) override; 661 OUString SAL_CALL getText( ) override; 662 void SAL_CALL setAlignment( sal_Int16 nAlign ) override; 663 sal_Int16 SAL_CALL getAlignment( ) override; 664 665 // css::awt::XLayoutConstrains 666 css::awt::Size SAL_CALL getMinimumSize( ) override; 667 css::awt::Size SAL_CALL getPreferredSize( ) override; 668 css::awt::Size SAL_CALL calcAdjustedSize( const css::awt::Size& aNewSize ) override; 669 670 // css::lang::XServiceInfo 671 OUString SAL_CALL getImplementationName() override; 672 673 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 674 }; 675 676 677 678 class UnoControlGroupBoxModel final : public UnoControlModel 679 { 680 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 681 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 682 683 public: 684 UnoControlGroupBoxModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 685 UnoControlGroupBoxModel( const UnoControlGroupBoxModel& rModel ) : UnoControlModel( rModel ) {} 686 687 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlGroupBoxModel( *this ); } 688 689 // css::io::XPersistObject 690 OUString SAL_CALL getServiceName() override; 691 692 // css::beans::XMultiPropertySet 693 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 694 695 // css::lang::XServiceInfo 696 OUString SAL_CALL getImplementationName() override; 697 698 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 699 }; 700 701 702 703 class UnoGroupBoxControl final : public UnoControlBase 704 { 705 public: 706 UnoGroupBoxControl(); 707 OUString GetComponentServiceName() override; 708 709 sal_Bool SAL_CALL isTransparent( ) override; 710 711 // css::lang::XServiceInfo 712 OUString SAL_CALL getImplementationName() override; 713 714 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 715 }; 716 717 718 719 struct UnoControlListBoxModel_Data; 720 typedef ::cppu::AggImplInheritanceHelper1 < UnoControlModel 721 , css::awt::XItemList 722 > UnoControlListBoxModel_Base; 723 class UnoControlListBoxModel : public UnoControlListBoxModel_Base 724 { 725 protected: 726 enum ConstructorMode 727 { 728 ConstructDefault, 729 ConstructWithoutProperties 730 }; 731 732 public: 733 UnoControlListBoxModel( 734 const css::uno::Reference< css::uno::XComponentContext >& rxContext, 735 ConstructorMode const i_mode = ConstructDefault 736 ); 737 UnoControlListBoxModel( const UnoControlListBoxModel& i_rSource ); 738 virtual ~UnoControlListBoxModel() override; 739 740 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlListBoxModel( *this ); } 741 742 virtual void ImplNormalizePropertySequence( 743 const sal_Int32 _nCount, /// the number of entries in the arrays 744 sal_Int32* _pHandles, /// the handles of the properties to set 745 css::uno::Any* _pValues, /// the values of the properties to set 746 sal_Int32* _pValidHandles /// pointer to the valid handles, allowed to be adjusted 747 ) const override; 748 749 // css::beans::XMultiPropertySet 750 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 751 752 // css::io::XPersistObject 753 OUString SAL_CALL getServiceName() override; 754 755 // css::lang::XServiceInfo 756 OUString SAL_CALL getImplementationName( ) override; 757 css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; 758 759 // css::awt::XItemList 760 virtual ::sal_Int32 SAL_CALL getItemCount() override; 761 virtual void SAL_CALL insertItem( ::sal_Int32 Position, const OUString& ItemText, const OUString& ItemImageURL ) override; 762 virtual void SAL_CALL insertItemText( ::sal_Int32 Position, const OUString& ItemText ) override; 763 virtual void SAL_CALL insertItemImage( ::sal_Int32 Position, const OUString& ItemImageURL ) override; 764 virtual void SAL_CALL removeItem( ::sal_Int32 Position ) override; 765 virtual void SAL_CALL removeAllItems( ) override; 766 virtual void SAL_CALL setItemText( ::sal_Int32 Position, const OUString& ItemText ) override; 767 virtual void SAL_CALL setItemImage( ::sal_Int32 Position, const OUString& ItemImageURL ) override; 768 virtual void SAL_CALL setItemTextAndImage( ::sal_Int32 Position, const OUString& ItemText, const OUString& ItemImageURL ) override; 769 virtual void SAL_CALL setItemData( ::sal_Int32 Position, const css::uno::Any& DataValue ) override; 770 virtual OUString SAL_CALL getItemText( ::sal_Int32 Position ) override; 771 virtual OUString SAL_CALL getItemImage( ::sal_Int32 Position ) override; 772 virtual css::beans::Pair< OUString, OUString > SAL_CALL getItemTextAndImage( ::sal_Int32 Position ) override; 773 virtual css::uno::Any SAL_CALL getItemData( ::sal_Int32 Position ) override; 774 virtual css::uno::Sequence< css::beans::Pair< OUString, OUString > > SAL_CALL getAllItems( ) override; 775 virtual void SAL_CALL addItemListListener( const css::uno::Reference< css::awt::XItemListListener >& Listener ) override; 776 virtual void SAL_CALL removeItemListListener( const css::uno::Reference< css::awt::XItemListListener >& Listener ) override; 777 778 // OPropertySetHelper 779 void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const css::uno::Any& rValue ) override; 780 781 protected: 782 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 783 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 784 785 private: 786 void impl_notifyItemListEvent_nolck( 787 const sal_Int32 i_nItemPosition, 788 const ::std::optional< OUString >& i_rItemText, 789 const ::std::optional< OUString >& i_rItemImageURL, 790 void ( SAL_CALL css::awt::XItemListListener::*NotificationMethod )( const css::awt::ItemListEvent& ) 791 ); 792 793 void impl_handleInsert( 794 const sal_Int32 i_nItemPosition, 795 const ::std::optional< OUString >& i_rItemText, 796 const ::std::optional< OUString >& i_rItemImageURL, 797 ::osl::ClearableMutexGuard& i_rClearBeforeNotify 798 ); 799 800 void impl_handleRemove( 801 const sal_Int32 i_nItemPosition, 802 ::osl::ClearableMutexGuard& i_rClearBeforeNotify 803 ); 804 805 void impl_handleModify( 806 const sal_Int32 i_nItemPosition, 807 const ::std::optional< OUString >& i_rItemText, 808 const ::std::optional< OUString >& i_rItemImageURL, 809 ::osl::ClearableMutexGuard& i_rClearBeforeNotify 810 ); 811 812 void impl_getStringItemList( ::std::vector< OUString >& o_rStringItems ) const; 813 void impl_setStringItemList_nolck( const ::std::vector< OUString >& i_rStringItems ); 814 815 protected: 816 std::unique_ptr<UnoControlListBoxModel_Data> m_xData; 817 ::comphelper::OInterfaceContainerHelper2 m_aItemListListeners; 818 }; 819 820 821 822 typedef ::cppu::AggImplInheritanceHelper5 < UnoControlBase 823 , css::awt::XListBox 824 , css::awt::XItemListener 825 , css::awt::XLayoutConstrains 826 , css::awt::XTextLayoutConstrains 827 , css::awt::XItemListListener 828 > UnoListBoxControl_Base; 829 class UnoListBoxControl final : public UnoListBoxControl_Base 830 { 831 public: 832 UnoListBoxControl(); 833 OUString GetComponentServiceName() override; 834 835 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 836 void SAL_CALL dispose( ) override; 837 void SAL_CALL disposing( const css::lang::EventObject& Source ) override { UnoControlBase::disposing( Source ); } 838 839 // css::awt::XListBox 840 void SAL_CALL addItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override; 841 void SAL_CALL removeItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override; 842 void SAL_CALL addActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 843 void SAL_CALL removeActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 844 void SAL_CALL addItem( const OUString& aItem, sal_Int16 nPos ) override; 845 void SAL_CALL addItems( const css::uno::Sequence< OUString >& aItems, sal_Int16 nPos ) override; 846 void SAL_CALL removeItems( sal_Int16 nPos, sal_Int16 nCount ) override; 847 sal_Int16 SAL_CALL getItemCount( ) override; 848 OUString SAL_CALL getItem( sal_Int16 nPos ) override; 849 css::uno::Sequence< OUString > SAL_CALL getItems( ) override; 850 sal_Int16 SAL_CALL getSelectedItemPos( ) override; 851 css::uno::Sequence< sal_Int16 > SAL_CALL getSelectedItemsPos( ) override; 852 OUString SAL_CALL getSelectedItem( ) override; 853 css::uno::Sequence< OUString > SAL_CALL getSelectedItems( ) override; 854 void SAL_CALL selectItemPos( sal_Int16 nPos, sal_Bool bSelect ) override; 855 void SAL_CALL selectItemsPos( const css::uno::Sequence< sal_Int16 >& aPositions, sal_Bool bSelect ) override; 856 void SAL_CALL selectItem( const OUString& aItem, sal_Bool bSelect ) override; 857 sal_Bool SAL_CALL isMutipleMode( ) override; 858 void SAL_CALL setMultipleMode( sal_Bool bMulti ) override; 859 sal_Int16 SAL_CALL getDropDownLineCount( ) override; 860 void SAL_CALL setDropDownLineCount( sal_Int16 nLines ) override; 861 void SAL_CALL makeVisible( sal_Int16 nEntry ) override; 862 863 // css::awt::XItemListener 864 void SAL_CALL itemStateChanged( const css::awt::ItemEvent& rEvent ) override; 865 866 // css::awt::XLayoutConstrains 867 css::awt::Size SAL_CALL getMinimumSize( ) override; 868 css::awt::Size SAL_CALL getPreferredSize( ) override; 869 css::awt::Size SAL_CALL calcAdjustedSize( const css::awt::Size& aNewSize ) override; 870 871 // css::awt::XTextLayoutConstrains 872 css::awt::Size SAL_CALL getMinimumSize( sal_Int16 nCols, sal_Int16 nLines ) override; 873 void SAL_CALL getColumnsAndLines( sal_Int16& nCols, sal_Int16& nLines ) override; 874 875 // XUnoControl 876 sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel >& Model) override; 877 878 // XItemListListener 879 virtual void SAL_CALL listItemInserted( const css::awt::ItemListEvent& Event ) override; 880 virtual void SAL_CALL listItemRemoved( const css::awt::ItemListEvent& Event ) override; 881 virtual void SAL_CALL listItemModified( const css::awt::ItemListEvent& Event ) override; 882 virtual void SAL_CALL allItemsRemoved( const css::lang::EventObject& Event ) override; 883 virtual void SAL_CALL itemListChanged( const css::lang::EventObject& Event ) override; 884 885 // css::lang::XServiceInfo 886 OUString SAL_CALL getImplementationName( ) override; 887 css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; 888 889 private: 890 void ImplUpdateSelectedItemsProperty(); 891 virtual void ImplSetPeerProperty( const OUString& rPropName, const css::uno::Any& rVal ) override; 892 virtual void updateFromModel() override; 893 894 ActionListenerMultiplexer maActionListeners; 895 ItemListenerMultiplexer maItemListeners; 896 }; 897 898 899 900 class UnoControlComboBoxModel final : public UnoControlListBoxModel 901 { 902 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 903 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 904 905 public: 906 UnoControlComboBoxModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 907 UnoControlComboBoxModel( const UnoControlComboBoxModel& rModel ) : UnoControlListBoxModel( rModel ) {} 908 909 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlComboBoxModel( *this ); } 910 911 // css::io::XPersistObject 912 OUString SAL_CALL getServiceName() override; 913 914 // css::beans::XMultiPropertySet 915 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 916 // OPropertySetHelper 917 void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const css::uno::Any& rValue ) override; 918 919 // css::lang::XServiceInfo 920 OUString SAL_CALL getImplementationName( ) override; 921 css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; 922 923 }; 924 925 926 927 class UnoComboBoxControl final : public UnoEditControl 928 , public css::awt::XComboBox 929 , public css::awt::XItemListener 930 , public css::awt::XItemListListener 931 { 932 private: 933 ActionListenerMultiplexer maActionListeners; 934 ItemListenerMultiplexer maItemListeners; 935 936 public: 937 938 UnoComboBoxControl(); 939 OUString GetComponentServiceName() override; 940 941 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 942 void SAL_CALL disposing( const css::lang::EventObject& Source ) override { UnoEditControl::disposing( Source ); } 943 void SAL_CALL dispose( ) override; 944 945 css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override { return UnoEditControl::queryInterface(rType); } 946 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 947 void SAL_CALL acquire() noexcept override { OWeakAggObject::acquire(); } 948 void SAL_CALL release() noexcept override { OWeakAggObject::release(); } 949 950 951 // css::lang::XTypeProvider 952 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; 953 css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 954 955 // css::awt::XComboBox 956 void SAL_CALL addItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override; 957 void SAL_CALL removeItemListener( const css::uno::Reference< css::awt::XItemListener >& l ) override; 958 void SAL_CALL addActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 959 void SAL_CALL removeActionListener( const css::uno::Reference< css::awt::XActionListener >& l ) override; 960 void SAL_CALL addItem( const OUString& aItem, sal_Int16 nPos ) override; 961 void SAL_CALL addItems( const css::uno::Sequence< OUString >& aItems, sal_Int16 nPos ) override; 962 void SAL_CALL removeItems( sal_Int16 nPos, sal_Int16 nCount ) override; 963 sal_Int16 SAL_CALL getItemCount( ) override; 964 OUString SAL_CALL getItem( sal_Int16 nPos ) override; 965 css::uno::Sequence< OUString > SAL_CALL getItems( ) override; 966 sal_Int16 SAL_CALL getDropDownLineCount( ) override; 967 void SAL_CALL setDropDownLineCount( sal_Int16 nLines ) override; 968 969 // XUnoControl 970 virtual sal_Bool SAL_CALL setModel(const css::uno::Reference< css::awt::XControlModel >& Model) override; 971 972 // XItemListListener 973 virtual void SAL_CALL listItemInserted( const css::awt::ItemListEvent& Event ) override; 974 virtual void SAL_CALL listItemRemoved( const css::awt::ItemListEvent& Event ) override; 975 virtual void SAL_CALL listItemModified( const css::awt::ItemListEvent& Event ) override; 976 virtual void SAL_CALL allItemsRemoved( const css::lang::EventObject& Event ) override; 977 virtual void SAL_CALL itemListChanged( const css::lang::EventObject& Event ) override; 978 979 // XItemListener 980 virtual void SAL_CALL itemStateChanged( const css::awt::ItemEvent& rEvent ) override; 981 982 // css::lang::XServiceInfo 983 OUString SAL_CALL getImplementationName( ) override; 984 css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; 985 private: 986 virtual void ImplSetPeerProperty( const OUString& rPropName, const css::uno::Any& rVal ) override; 987 virtual void updateFromModel() override; 988 989 }; 990 991 992 993 class UnoSpinFieldControl : public UnoEditControl, 994 public css::awt::XSpinField 995 { 996 private: 997 SpinListenerMultiplexer maSpinListeners; 998 bool mbRepeat; 999 1000 public: 1001 UnoSpinFieldControl(); 1002 1003 css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override { return UnoEditControl::queryInterface(rType); } 1004 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 1005 void SAL_CALL acquire() noexcept override { OWeakAggObject::acquire(); } 1006 void SAL_CALL release() noexcept override { OWeakAggObject::release(); } 1007 1008 // css::lang::XTypeProvider 1009 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; 1010 css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 1011 1012 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 1013 1014 // css::awt::XSpinField 1015 void SAL_CALL addSpinListener( const css::uno::Reference< css::awt::XSpinListener >& l ) override; 1016 void SAL_CALL removeSpinListener( const css::uno::Reference< css::awt::XSpinListener >& l ) override; 1017 void SAL_CALL up() override; 1018 void SAL_CALL down() override; 1019 void SAL_CALL first() override; 1020 void SAL_CALL last() override; 1021 void SAL_CALL enableRepeat( sal_Bool bRepeat ) override; 1022 1023 1024 // css::lang::XServiceInfo 1025 // No service info, only base class for other fields. 1026 }; 1027 1028 1029 1030 class UnoControlDateFieldModel final : public UnoControlModel 1031 { 1032 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 1033 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 1034 1035 public: 1036 UnoControlDateFieldModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 1037 UnoControlDateFieldModel( const UnoControlDateFieldModel& rModel ) : UnoControlModel( rModel ) {} 1038 1039 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlDateFieldModel( *this ); } 1040 1041 // css::io::XPersistObject 1042 OUString SAL_CALL getServiceName() override; 1043 1044 // css::beans::XMultiPropertySet 1045 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 1046 1047 // css::lang::XServiceInfo 1048 OUString SAL_CALL getImplementationName() override; 1049 1050 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1051 }; 1052 1053 1054 1055 class UnoDateFieldControl final : public UnoSpinFieldControl, 1056 public css::awt::XDateField 1057 { 1058 private: 1059 css::util::Date mnFirst; 1060 css::util::Date mnLast; 1061 TriState mbLongFormat; 1062 public: 1063 UnoDateFieldControl(); 1064 OUString GetComponentServiceName() override; 1065 1066 css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override { return UnoSpinFieldControl::queryInterface(rType); } 1067 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 1068 void SAL_CALL acquire() noexcept override { OWeakAggObject::acquire(); } 1069 void SAL_CALL release() noexcept override { OWeakAggObject::release(); } 1070 1071 // css::lang::XTypeProvider 1072 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; 1073 css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 1074 1075 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 1076 1077 // css::awt::XTextListener 1078 void SAL_CALL textChanged( const css::awt::TextEvent& rEvent ) override; 1079 1080 //XDateField 1081 void SAL_CALL setDate( const css::util::Date& Date ) override; 1082 css::util::Date SAL_CALL getDate( ) override; 1083 void SAL_CALL setMin( const css::util::Date& Date ) override; 1084 css::util::Date SAL_CALL getMin( ) override; 1085 void SAL_CALL setMax( const css::util::Date& Date ) override; 1086 css::util::Date SAL_CALL getMax( ) override; 1087 void SAL_CALL setFirst( const css::util::Date& Date ) override; 1088 css::util::Date SAL_CALL getFirst( ) override; 1089 void SAL_CALL setLast( const css::util::Date& Date ) override; 1090 css::util::Date SAL_CALL getLast( ) override; 1091 void SAL_CALL setLongFormat( sal_Bool bLong ) override; 1092 sal_Bool SAL_CALL isLongFormat( ) override; 1093 void SAL_CALL setEmpty( ) override; 1094 sal_Bool SAL_CALL isEmpty( ) override; 1095 void SAL_CALL setStrictFormat( sal_Bool bStrict ) override; 1096 sal_Bool SAL_CALL isStrictFormat( ) override; 1097 1098 // css::lang::XServiceInfo 1099 OUString SAL_CALL getImplementationName() override; 1100 1101 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1102 }; 1103 1104 1105 1106 class UnoControlTimeFieldModel final : public UnoControlModel 1107 { 1108 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 1109 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 1110 1111 public: 1112 UnoControlTimeFieldModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 1113 UnoControlTimeFieldModel( const UnoControlTimeFieldModel& rModel ) : UnoControlModel( rModel ) {} 1114 1115 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlTimeFieldModel( *this ); } 1116 1117 // css::io::XPersistObject 1118 OUString SAL_CALL getServiceName() override; 1119 1120 // css::beans::XMultiPropertySet 1121 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 1122 1123 // css::lang::XServiceInfo 1124 OUString SAL_CALL getImplementationName() override; 1125 1126 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1127 }; 1128 1129 1130 1131 class UnoTimeFieldControl final : public UnoSpinFieldControl, 1132 public css::awt::XTimeField 1133 { 1134 private: 1135 css::util::Time mnFirst; 1136 css::util::Time mnLast; 1137 1138 public: 1139 UnoTimeFieldControl(); 1140 OUString GetComponentServiceName() override; 1141 1142 css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override { return UnoSpinFieldControl::queryInterface(rType); } 1143 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 1144 void SAL_CALL acquire() noexcept override { OWeakAggObject::acquire(); } 1145 void SAL_CALL release() noexcept override { OWeakAggObject::release(); } 1146 1147 // css::lang::XTypeProvider 1148 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; 1149 css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 1150 1151 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 1152 1153 // css::awt::XTextListener 1154 void SAL_CALL textChanged( const css::awt::TextEvent& rEvent ) override; 1155 1156 //XTimeField 1157 void SAL_CALL setTime( const css::util::Time& Time ) override; 1158 css::util::Time SAL_CALL getTime( ) override; 1159 void SAL_CALL setMin( const css::util::Time& Time ) override; 1160 css::util::Time SAL_CALL getMin( ) override; 1161 void SAL_CALL setMax( const css::util::Time& Time ) override; 1162 css::util::Time SAL_CALL getMax( ) override; 1163 void SAL_CALL setFirst( const css::util::Time& Time ) override; 1164 css::util::Time SAL_CALL getFirst( ) override; 1165 void SAL_CALL setLast( const css::util::Time& Time ) override; 1166 css::util::Time SAL_CALL getLast( ) override; 1167 void SAL_CALL setEmpty( ) override; 1168 sal_Bool SAL_CALL isEmpty( ) override; 1169 void SAL_CALL setStrictFormat( sal_Bool bStrict ) override; 1170 sal_Bool SAL_CALL isStrictFormat( ) override; 1171 1172 // css::lang::XServiceInfo 1173 OUString SAL_CALL getImplementationName() override; 1174 1175 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1176 }; 1177 1178 1179 1180 class UnoControlNumericFieldModel final : public UnoControlModel 1181 { 1182 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 1183 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 1184 1185 public: 1186 UnoControlNumericFieldModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 1187 UnoControlNumericFieldModel( const UnoControlNumericFieldModel& rModel ) : UnoControlModel( rModel ) {} 1188 1189 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlNumericFieldModel( *this ); } 1190 1191 // css::io::XPersistObject 1192 OUString SAL_CALL getServiceName() override; 1193 1194 // css::beans::XMultiPropertySet 1195 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 1196 1197 // css::lang::XServiceInfo 1198 OUString SAL_CALL getImplementationName() override; 1199 1200 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1201 }; 1202 1203 1204 1205 class UnoNumericFieldControl final : public UnoSpinFieldControl, 1206 public css::awt::XNumericField 1207 { 1208 private: 1209 double mnFirst; 1210 double mnLast; 1211 1212 public: 1213 UnoNumericFieldControl(); 1214 OUString GetComponentServiceName() override; 1215 1216 css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override { return UnoSpinFieldControl::queryInterface(rType); } 1217 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 1218 void SAL_CALL acquire() noexcept override { OWeakAggObject::acquire(); } 1219 void SAL_CALL release() noexcept override { OWeakAggObject::release(); } 1220 1221 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 1222 1223 // css::lang::XTypeProvider 1224 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; 1225 css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 1226 1227 // css::awt::XTextListener 1228 void SAL_CALL textChanged( const css::awt::TextEvent& rEvent ) override; 1229 1230 // css::awt::XNumericField 1231 void SAL_CALL setValue( double Value ) override; 1232 double SAL_CALL getValue( ) override; 1233 void SAL_CALL setMin( double Value ) override; 1234 double SAL_CALL getMin( ) override; 1235 void SAL_CALL setMax( double Value ) override; 1236 double SAL_CALL getMax( ) override; 1237 void SAL_CALL setFirst( double Value ) override; 1238 double SAL_CALL getFirst( ) override; 1239 void SAL_CALL setLast( double Value ) override; 1240 double SAL_CALL getLast( ) override; 1241 void SAL_CALL setSpinSize( double Value ) override; 1242 double SAL_CALL getSpinSize( ) override; 1243 void SAL_CALL setDecimalDigits( sal_Int16 nDigits ) override; 1244 sal_Int16 SAL_CALL getDecimalDigits( ) override; 1245 void SAL_CALL setStrictFormat( sal_Bool bStrict ) override; 1246 sal_Bool SAL_CALL isStrictFormat( ) override; 1247 1248 // css::lang::XServiceInfo 1249 OUString SAL_CALL getImplementationName() override; 1250 1251 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1252 }; 1253 1254 1255 1256 class UnoControlCurrencyFieldModel final : public UnoControlModel 1257 { 1258 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 1259 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 1260 1261 public: 1262 UnoControlCurrencyFieldModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 1263 UnoControlCurrencyFieldModel( const UnoControlCurrencyFieldModel& rModel ) : UnoControlModel( rModel ) {} 1264 1265 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlCurrencyFieldModel( *this ); } 1266 1267 // css::io::XPersistObject 1268 OUString SAL_CALL getServiceName() override; 1269 1270 // css::beans::XMultiPropertySet 1271 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 1272 1273 // css::lang::XServiceInfo 1274 OUString SAL_CALL getImplementationName() override; 1275 1276 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1277 }; 1278 1279 1280 1281 class UnoCurrencyFieldControl final : public UnoSpinFieldControl, 1282 public css::awt::XCurrencyField 1283 { 1284 private: 1285 double mnFirst; 1286 double mnLast; 1287 1288 public: 1289 UnoCurrencyFieldControl(); 1290 OUString GetComponentServiceName() override; 1291 1292 css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override { return UnoSpinFieldControl::queryInterface(rType); } 1293 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 1294 void SAL_CALL acquire() noexcept override { OWeakAggObject::acquire(); } 1295 void SAL_CALL release() noexcept override { OWeakAggObject::release(); } 1296 1297 void SAL_CALL createPeer( const css::uno::Reference< css::awt::XToolkit >& Toolkit, const css::uno::Reference< css::awt::XWindowPeer >& Parent ) override; 1298 1299 // css::lang::XTypeProvider 1300 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; 1301 css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 1302 1303 // css::awt::XTextListener 1304 void SAL_CALL textChanged( const css::awt::TextEvent& rEvent ) override; 1305 1306 // css::awt::XCurrencyField 1307 void SAL_CALL setValue( double Value ) override; 1308 double SAL_CALL getValue( ) override; 1309 void SAL_CALL setMin( double Value ) override; 1310 double SAL_CALL getMin( ) override; 1311 void SAL_CALL setMax( double Value ) override; 1312 double SAL_CALL getMax( ) override; 1313 void SAL_CALL setFirst( double Value ) override; 1314 double SAL_CALL getFirst( ) override; 1315 void SAL_CALL setLast( double Value ) override; 1316 double SAL_CALL getLast( ) override; 1317 void SAL_CALL setSpinSize( double Value ) override; 1318 double SAL_CALL getSpinSize( ) override; 1319 void SAL_CALL setDecimalDigits( sal_Int16 nDigits ) override; 1320 sal_Int16 SAL_CALL getDecimalDigits( ) override; 1321 void SAL_CALL setStrictFormat( sal_Bool bStrict ) override; 1322 sal_Bool SAL_CALL isStrictFormat( ) override; 1323 1324 // css::lang::XServiceInfo 1325 OUString SAL_CALL getImplementationName() override; 1326 1327 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1328 }; 1329 1330 1331 1332 class UnoControlPatternFieldModel final : public UnoControlModel 1333 { 1334 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 1335 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 1336 1337 public: 1338 UnoControlPatternFieldModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 1339 UnoControlPatternFieldModel( const UnoControlPatternFieldModel& rModel ) : UnoControlModel( rModel ) {} 1340 1341 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlPatternFieldModel( *this ); } 1342 1343 // css::io::XPersistObject 1344 OUString SAL_CALL getServiceName() override; 1345 1346 // css::beans::XMultiPropertySet 1347 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 1348 1349 // css::lang::XServiceInfo 1350 OUString SAL_CALL getImplementationName() override; 1351 1352 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1353 }; 1354 1355 1356 1357 class UnoPatternFieldControl final : public UnoSpinFieldControl, 1358 public css::awt::XPatternField 1359 { 1360 void ImplSetPeerProperty( const OUString& rPropName, const css::uno::Any& rVal ) override; 1361 1362 public: 1363 UnoPatternFieldControl(); 1364 OUString GetComponentServiceName() override; 1365 1366 css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override { return UnoSpinFieldControl::queryInterface(rType); } 1367 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 1368 void SAL_CALL acquire() noexcept override { OWeakAggObject::acquire(); } 1369 void SAL_CALL release() noexcept override { OWeakAggObject::release(); } 1370 1371 // css::lang::XTypeProvider 1372 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; 1373 css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 1374 1375 // css::awt::XPatternField 1376 void SAL_CALL setMasks( const OUString& EditMask, const OUString& LiteralMask ) override; 1377 void SAL_CALL getMasks( OUString& EditMask, OUString& LiteralMask ) override; 1378 void SAL_CALL setString( const OUString& Str ) override; 1379 OUString SAL_CALL getString( ) override; 1380 void SAL_CALL setStrictFormat( sal_Bool bStrict ) override; 1381 sal_Bool SAL_CALL isStrictFormat( ) override; 1382 1383 // css::lang::XServiceInfo 1384 OUString SAL_CALL getImplementationName() override; 1385 1386 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1387 }; 1388 1389 1390 1391 class UnoControlProgressBarModel final : public UnoControlModel 1392 { 1393 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 1394 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 1395 1396 public: 1397 UnoControlProgressBarModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 1398 UnoControlProgressBarModel( const UnoControlProgressBarModel& rModel ) : UnoControlModel( rModel ) {} 1399 1400 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlProgressBarModel( *this ); } 1401 1402 // css::beans::XMultiPropertySet 1403 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 1404 1405 // css::io::XPersistObject 1406 OUString SAL_CALL getServiceName() override; 1407 1408 // XServiceInfo 1409 OUString SAL_CALL getImplementationName() override; 1410 1411 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1412 }; 1413 1414 1415 1416 class UnoProgressBarControl final : public UnoControlBase, 1417 public css::awt::XProgressBar 1418 { 1419 public: 1420 UnoProgressBarControl(); 1421 OUString GetComponentServiceName() override; 1422 1423 css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override { return UnoControlBase::queryInterface(rType); } 1424 css::uno::Any SAL_CALL queryAggregation( const css::uno::Type & rType ) override; 1425 void SAL_CALL acquire() noexcept override { OWeakAggObject::acquire(); } 1426 void SAL_CALL release() noexcept override { OWeakAggObject::release(); } 1427 1428 // css::lang::XTypeProvider 1429 css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; 1430 css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 1431 1432 // css::awt::XProgressBar 1433 void SAL_CALL setForegroundColor( sal_Int32 nColor ) override; 1434 void SAL_CALL setBackgroundColor( sal_Int32 nColor ) override; 1435 void SAL_CALL setValue( sal_Int32 nValue ) override; 1436 void SAL_CALL setRange( sal_Int32 nMin, sal_Int32 nMax ) override; 1437 sal_Int32 SAL_CALL getValue() override; 1438 1439 // css::lang::XServiceInfo 1440 OUString SAL_CALL getImplementationName() override; 1441 1442 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1443 }; 1444 1445 1446 1447 class UnoControlFixedLineModel final : public UnoControlModel 1448 { 1449 css::uno::Any ImplGetDefaultValue( sal_uInt16 nPropId ) const override; 1450 ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override; 1451 1452 public: 1453 UnoControlFixedLineModel( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); 1454 UnoControlFixedLineModel( const UnoControlFixedLineModel& rModel ) : UnoControlModel( rModel ) {} 1455 1456 rtl::Reference<UnoControlModel> Clone() const override { return new UnoControlFixedLineModel( *this ); } 1457 1458 // css::beans::XMultiPropertySet 1459 css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 1460 1461 // css::io::XPersistObject 1462 OUString SAL_CALL getServiceName() override; 1463 1464 // css::lang::XServiceInfo 1465 OUString SAL_CALL getImplementationName() override; 1466 1467 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1468 }; 1469 1470 1471 1472 class UnoFixedLineControl final : public UnoControlBase 1473 { 1474 public: 1475 UnoFixedLineControl(); 1476 OUString GetComponentServiceName() override; 1477 1478 sal_Bool SAL_CALL isTransparent( ) override; 1479 1480 // css::lang::XServiceInfo 1481 OUString SAL_CALL getImplementationName() override; 1482 1483 css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; 1484 }; 1485 1486 1487 #endif // INCLUDED_TOOLKIT_CONTROLS_UNOCONTROLS_HXX 1488 1489 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 1490