Line data Source code
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 : #include <com/sun/star/awt/XTextArea.hpp>
21 : #include <com/sun/star/awt/XVclWindowPeer.hpp>
22 : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
23 : #include <com/sun/star/uno/XComponentContext.hpp>
24 : #include <com/sun/star/awt/PosSize.hpp>
25 : #include <com/sun/star/awt/VisualEffect.hpp>
26 : #include <com/sun/star/awt/LineEndFormat.hpp>
27 : #include <com/sun/star/graphic/GraphicProvider.hpp>
28 : #include <com/sun/star/graphic/XGraphicProvider.hpp>
29 : #include <com/sun/star/graphic/GraphicObject.hpp>
30 : #include <com/sun/star/util/Date.hpp>
31 : #include <com/sun/star/awt/ImageScaleMode.hpp>
32 :
33 :
34 : #include <toolkit/controls/formattedcontrol.hxx>
35 : #include <toolkit/controls/roadmapcontrol.hxx>
36 : #include <toolkit/controls/unocontrols.hxx>
37 : #include <toolkit/controls/stdtabcontroller.hxx>
38 : #include <toolkit/helper/property.hxx>
39 : #include <toolkit/helper/servicenames.hxx>
40 : #include <toolkit/helper/macros.hxx>
41 :
42 : // for introspection
43 : #include <toolkit/awt/vclxwindows.hxx>
44 : #include <cppuhelper/typeprovider.hxx>
45 : #include <comphelper/processfactory.hxx>
46 : #include <vcl/wrkwin.hxx>
47 : #include <vcl/svapp.hxx>
48 : #include <vcl/edit.hxx>
49 : #include <vcl/button.hxx>
50 : #include <vcl/group.hxx>
51 : #include <vcl/fixed.hxx>
52 : #include <vcl/lstbox.hxx>
53 : #include <vcl/combobox.hxx>
54 : #include <tools/debug.hxx>
55 : #include <tools/diagnose_ex.h>
56 : #include <tools/date.hxx>
57 : #include <tools/time.hxx>
58 :
59 : #include <algorithm>
60 : #include <functional>
61 :
62 : #include "helper/imagealign.hxx"
63 : #include "helper/unopropertyarrayhelper.hxx"
64 :
65 : using namespace css;
66 : using namespace css::awt;
67 : using namespace css::lang;
68 : using namespace css::uno;
69 : using ::com::sun::star::graphic::XGraphic;
70 : using ::com::sun::star::uno::Reference;
71 : using namespace ::toolkit;
72 :
73 : #define IMPL_SERVICEINFO_DERIVED( ImplName, BaseClass, ServiceName ) \
74 : OUString SAL_CALL ImplName::getImplementationName( ) throw(::com::sun::star::uno::RuntimeException, std::exception) { return OUString( "stardiv.Toolkit." #ImplName ); } \
75 : ::com::sun::star::uno::Sequence< OUString > SAL_CALL ImplName::getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) \
76 : { \
77 : ::com::sun::star::uno::Sequence< OUString > aNames = BaseClass::getSupportedServiceNames( ); \
78 : aNames.realloc( aNames.getLength() + 1 ); \
79 : aNames[ aNames.getLength() - 1 ] = OUString::createFromAscii( ServiceName ); \
80 : return aNames; \
81 : } \
82 :
83 :
84 : uno::Reference< graphic::XGraphic >
85 4 : ImageHelper::getGraphicAndGraphicObjectFromURL_nothrow( uno::Reference< graphic::XGraphicObject >& xOutGraphicObj, const OUString& _rURL )
86 : {
87 4 : if ( _rURL.startsWith( UNO_NAME_GRAPHOBJ_URLPREFIX ) )
88 : {
89 : // graphic manager uniqueid
90 0 : OUString sID = _rURL.copy( sizeof( UNO_NAME_GRAPHOBJ_URLPREFIX ) - 1 );
91 0 : xOutGraphicObj = graphic::GraphicObject::createWithId( ::comphelper::getProcessComponentContext(), sID );
92 : }
93 : else // linked
94 4 : xOutGraphicObj = NULL; // release the GraphicObject
95 :
96 4 : return ImageHelper::getGraphicFromURL_nothrow( _rURL );
97 : }
98 :
99 : ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >
100 57 : ImageHelper::getGraphicFromURL_nothrow( const OUString& _rURL )
101 : {
102 57 : uno::Reference< graphic::XGraphic > xGraphic;
103 57 : if ( _rURL.isEmpty() )
104 0 : return xGraphic;
105 :
106 : try
107 : {
108 57 : uno::Reference< uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
109 114 : uno::Reference< graphic::XGraphicProvider > xProvider( graphic::GraphicProvider::create(xContext) );
110 114 : uno::Sequence< beans::PropertyValue > aMediaProperties(1);
111 57 : aMediaProperties[0].Name = "URL";
112 57 : aMediaProperties[0].Value <<= _rURL;
113 114 : xGraphic = xProvider->queryGraphic( aMediaProperties );
114 : }
115 0 : catch (const Exception&)
116 : {
117 : DBG_UNHANDLED_EXCEPTION();
118 : }
119 :
120 57 : return xGraphic;
121 : }
122 :
123 : // class UnoControlEditModel
124 :
125 28 : UnoControlEditModel::UnoControlEditModel( const Reference< XComponentContext >& rxContext )
126 28 : :UnoControlModel( rxContext )
127 : {
128 28 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXEdit );
129 28 : }
130 :
131 2 : OUString UnoControlEditModel::getServiceName( ) throw(::com::sun::star::uno::RuntimeException, std::exception)
132 : {
133 2 : return OUString::createFromAscii( szServiceName_UnoControlEditModel );
134 : }
135 :
136 1258 : uno::Any UnoControlEditModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
137 : {
138 1258 : uno::Any aReturn;
139 :
140 1258 : switch ( nPropId )
141 : {
142 : case BASEPROPERTY_LINE_END_FORMAT:
143 42 : aReturn <<= (sal_Int16)awt::LineEndFormat::LINE_FEED; // LF
144 42 : break;
145 : case BASEPROPERTY_DEFAULTCONTROL:
146 34 : aReturn <<= OUString::createFromAscii( szServiceName_UnoControlEdit );
147 34 : break;
148 : default:
149 1182 : aReturn = UnoControlModel::ImplGetDefaultValue( nPropId );
150 1182 : break;
151 : }
152 1258 : return aReturn;
153 : }
154 :
155 4202 : ::cppu::IPropertyArrayHelper& UnoControlEditModel::getInfoHelper()
156 : {
157 : static UnoPropertyArrayHelper* pHelper = NULL;
158 4202 : if ( !pHelper )
159 : {
160 12 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
161 12 : pHelper = new UnoPropertyArrayHelper( aIDs );
162 : }
163 4202 : return *pHelper;
164 : }
165 :
166 : // beans::XMultiPropertySet
167 130 : uno::Reference< beans::XPropertySetInfo > UnoControlEditModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
168 : {
169 130 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
170 130 : return xInfo;
171 : }
172 :
173 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
174 14 : stardiv_Toolkit_UnoControlEditModel_get_implementation(
175 : css::uno::XComponentContext *context,
176 : css::uno::Sequence<css::uno::Any> const &)
177 : {
178 14 : return cppu::acquire(new UnoControlEditModel(context));
179 : }
180 :
181 :
182 : // class UnoEditControl
183 :
184 232 : UnoEditControl::UnoEditControl()
185 : :UnoControlBase()
186 : ,maTextListeners( *this )
187 : ,mnMaxTextLen( 0 )
188 : ,mbSetTextInPeer( false )
189 : ,mbSetMaxTextLenInPeer( false )
190 232 : ,mbHasTextProperty( false )
191 : {
192 232 : maComponentInfos.nWidth = 100;
193 232 : maComponentInfos.nHeight = 12;
194 232 : mnMaxTextLen = 0;
195 232 : mbSetMaxTextLenInPeer = false;
196 232 : }
197 :
198 7776 : uno::Any SAL_CALL UnoEditControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
199 : {
200 7776 : uno::Any aReturn = UnoControlBase::queryAggregation( rType );
201 7776 : if ( !aReturn.hasValue() )
202 790 : aReturn = UnoEditControl_Base::queryInterface( rType );
203 7776 : return aReturn;
204 : }
205 :
206 9865 : uno::Any SAL_CALL UnoEditControl::queryInterface( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
207 : {
208 9865 : return UnoControlBase::queryInterface( rType );
209 : }
210 :
211 12914 : void SAL_CALL UnoEditControl::acquire( ) throw ()
212 : {
213 12914 : UnoControlBase::acquire();
214 12914 : }
215 :
216 12846 : void SAL_CALL UnoEditControl::release( ) throw ()
217 : {
218 12846 : UnoControlBase::release();
219 12846 : }
220 :
221 42 : IMPLEMENT_FORWARD_XTYPEPROVIDER2( UnoEditControl, UnoControlBase, UnoEditControl_Base )
222 :
223 130 : OUString UnoEditControl::GetComponentServiceName()
224 : {
225 : // by default, we want a simple edit field
226 130 : OUString sName( "Edit" );
227 :
228 : // but maybe we are to display multi-line text?
229 260 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_MULTILINE ) );
230 130 : bool b = bool();
231 130 : if ( ( aVal >>= b ) && b )
232 22 : sName = "MultiLineEdit";
233 :
234 260 : return sName;
235 : }
236 :
237 458 : sal_Bool SAL_CALL UnoEditControl::setModel(const uno::Reference< awt::XControlModel >& _rModel) throw ( uno::RuntimeException, std::exception )
238 : {
239 458 : bool bReturn = UnoControlBase::setModel( _rModel );
240 458 : mbHasTextProperty = ImplHasProperty( BASEPROPERTY_TEXT );
241 458 : return bReturn;
242 : }
243 :
244 41481 : void UnoEditControl::ImplSetPeerProperty( const OUString& rPropName, const uno::Any& rVal )
245 : {
246 41481 : bool bDone = false;
247 41481 : if ( GetPropertyId( rPropName ) == BASEPROPERTY_TEXT )
248 : {
249 : // #96986# use setText(), or text listener will not be called.
250 598 : uno::Reference < awt::XTextComponent > xTextComponent( getPeer(), uno::UNO_QUERY );
251 598 : if ( xTextComponent.is() )
252 : {
253 550 : OUString sText;
254 550 : rVal >>= sText;
255 550 : ImplCheckLocalize( sText );
256 550 : xTextComponent->setText( sText );
257 550 : bDone = true;
258 598 : }
259 : }
260 :
261 41481 : if ( !bDone )
262 40931 : UnoControlBase::ImplSetPeerProperty( rPropName, rVal );
263 41481 : }
264 :
265 178 : void UnoEditControl::dispose() throw(uno::RuntimeException, std::exception)
266 : {
267 178 : lang::EventObject aEvt( *this );
268 178 : maTextListeners.disposeAndClear( aEvt );
269 178 : UnoControl::dispose();
270 178 : }
271 :
272 386 : void UnoEditControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
273 : {
274 386 : UnoControl::createPeer( rxToolkit, rParentPeer );
275 :
276 386 : uno::Reference< awt::XTextComponent > xText( getPeer(), uno::UNO_QUERY );
277 386 : if ( xText.is() )
278 : {
279 386 : xText->addTextListener( this );
280 :
281 386 : if ( mbSetMaxTextLenInPeer )
282 0 : xText->setMaxTextLen( mnMaxTextLen );
283 386 : if ( mbSetTextInPeer )
284 0 : xText->setText( maText );
285 386 : }
286 386 : }
287 :
288 0 : void UnoEditControl::textChanged(const awt::TextEvent& e) throw(uno::RuntimeException, std::exception)
289 : {
290 0 : uno::Reference< awt::XTextComponent > xText( getPeer(), uno::UNO_QUERY );
291 :
292 0 : if ( mbHasTextProperty )
293 : {
294 0 : uno::Any aAny;
295 0 : aAny <<= xText->getText();
296 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_TEXT ), aAny, false );
297 : }
298 : else
299 : {
300 0 : maText = xText->getText();
301 : }
302 :
303 0 : if ( maTextListeners.getLength() )
304 0 : maTextListeners.textChanged( e );
305 0 : }
306 :
307 64 : void UnoEditControl::addTextListener(const uno::Reference< awt::XTextListener > & l) throw(uno::RuntimeException, std::exception)
308 : {
309 64 : maTextListeners.addInterface( l );
310 64 : }
311 :
312 30 : void UnoEditControl::removeTextListener(const uno::Reference< awt::XTextListener > & l) throw(uno::RuntimeException, std::exception)
313 : {
314 30 : maTextListeners.removeInterface( l );
315 30 : }
316 :
317 274 : void UnoEditControl::setText( const OUString& aText ) throw(uno::RuntimeException, std::exception)
318 : {
319 274 : if ( mbHasTextProperty )
320 : {
321 202 : uno::Any aAny;
322 202 : aAny <<= aText;
323 202 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_TEXT ), aAny, true );
324 : }
325 : else
326 : {
327 72 : maText = aText;
328 72 : mbSetTextInPeer = true;
329 72 : uno::Reference < awt::XTextComponent > xText( getPeer(), uno::UNO_QUERY );
330 72 : if ( xText.is() )
331 72 : xText->setText( maText );
332 : }
333 :
334 : // Setting the property to the VCLXWindow doesn't call textChanged
335 274 : if ( maTextListeners.getLength() )
336 : {
337 274 : awt::TextEvent aEvent;
338 274 : aEvent.Source = *this;
339 274 : maTextListeners.textChanged( aEvent );
340 : }
341 274 : }
342 :
343 : namespace
344 : {
345 30 : static void lcl_normalize( awt::Selection& _rSel )
346 : {
347 30 : if ( _rSel.Min > _rSel.Max )
348 0 : ::std::swap( _rSel.Min, _rSel.Max );
349 30 : }
350 : }
351 :
352 30 : void UnoEditControl::insertText( const awt::Selection& rSel, const OUString& rNewText ) throw(uno::RuntimeException, std::exception)
353 : {
354 : // normalize the selection - OUString::replaceAt has a strange behaviour if the min is greater than the max
355 30 : awt::Selection aSelection( rSel );
356 30 : lcl_normalize( aSelection );
357 :
358 : // preserve the selection resp. cursor position
359 30 : awt::Selection aNewSelection( getSelection() );
360 : #ifdef ALSO_PRESERVE_COMPLETE_SELECTION
361 : // (not sure - looks uglier ...)
362 : sal_Int32 nDeletedCharacters = ( aSelection.Max - aSelection.Min ) - rNewText.getLength();
363 : if ( aNewSelection.Min > aSelection.Min )
364 : aNewSelection.Min -= nDeletedCharacters;
365 : if ( aNewSelection.Max > aSelection.Max )
366 : aNewSelection.Max -= nDeletedCharacters;
367 : #else
368 30 : aNewSelection.Max = ::std::min( aNewSelection.Min, aNewSelection.Max ) + rNewText.getLength();
369 30 : aNewSelection.Min = aNewSelection.Max;
370 : #endif
371 :
372 30 : OUString aOldText = getText();
373 60 : OUString aNewText = aOldText.replaceAt( aSelection.Min, aSelection.Max - aSelection.Min, rNewText );
374 30 : setText( aNewText );
375 :
376 60 : setSelection( aNewSelection );
377 30 : }
378 :
379 188 : OUString UnoEditControl::getText() throw(uno::RuntimeException, std::exception)
380 : {
381 188 : OUString aText = maText;
382 :
383 188 : if ( mbHasTextProperty )
384 140 : aText = ImplGetPropertyValue_UString( BASEPROPERTY_TEXT );
385 : else
386 : {
387 48 : uno::Reference< awt::XTextComponent > xText( getPeer(), uno::UNO_QUERY );
388 48 : if ( xText.is() )
389 48 : aText = xText->getText();
390 : }
391 :
392 188 : return aText;
393 : }
394 :
395 30 : OUString UnoEditControl::getSelectedText( void ) throw(uno::RuntimeException, std::exception)
396 : {
397 30 : OUString sSelected;
398 60 : uno::Reference< awt::XTextComponent > xText( getPeer(), uno::UNO_QUERY );
399 30 : if ( xText.is() )
400 30 : sSelected = xText->getSelectedText();
401 :
402 60 : return sSelected;
403 : }
404 :
405 120 : void UnoEditControl::setSelection( const awt::Selection& aSelection ) throw(uno::RuntimeException, std::exception)
406 : {
407 120 : uno::Reference< awt::XTextComponent > xText( getPeer(), uno::UNO_QUERY );
408 120 : if ( xText.is() )
409 120 : xText->setSelection( aSelection );
410 120 : }
411 :
412 90 : awt::Selection UnoEditControl::getSelection( void ) throw(uno::RuntimeException, std::exception)
413 : {
414 90 : awt::Selection aSel;
415 90 : uno::Reference< awt::XTextComponent > xText( getPeer(), uno::UNO_QUERY );
416 90 : if ( xText.is() )
417 90 : aSel = xText->getSelection();
418 90 : return aSel;
419 : }
420 :
421 60 : sal_Bool UnoEditControl::isEditable( void ) throw(uno::RuntimeException, std::exception)
422 : {
423 60 : return !ImplGetPropertyValue_BOOL( BASEPROPERTY_READONLY );
424 : }
425 :
426 60 : void UnoEditControl::setEditable( sal_Bool bEditable ) throw(uno::RuntimeException, std::exception)
427 : {
428 60 : uno::Any aAny;
429 60 : aAny <<= !bEditable;
430 60 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_READONLY ), aAny, true );
431 60 : }
432 :
433 90 : sal_Int16 UnoEditControl::getMaxTextLen() throw(uno::RuntimeException, std::exception)
434 : {
435 90 : sal_Int16 nMaxLen = mnMaxTextLen;
436 :
437 90 : if ( ImplHasProperty( BASEPROPERTY_MAXTEXTLEN ) )
438 42 : nMaxLen = ImplGetPropertyValue_INT16( BASEPROPERTY_MAXTEXTLEN );
439 :
440 90 : return nMaxLen;
441 : }
442 :
443 60 : void UnoEditControl::setMaxTextLen( sal_Int16 nLen ) throw(uno::RuntimeException, std::exception)
444 : {
445 60 : if ( ImplHasProperty( BASEPROPERTY_MAXTEXTLEN) )
446 : {
447 28 : uno::Any aAny;
448 28 : aAny <<= (sal_Int16)nLen;
449 28 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_MAXTEXTLEN ), aAny, true );
450 : }
451 : else
452 : {
453 32 : mnMaxTextLen = nLen;
454 32 : mbSetMaxTextLenInPeer = true;
455 32 : uno::Reference < awt::XTextComponent > xText( getPeer(), uno::UNO_QUERY );
456 32 : if ( xText.is() )
457 32 : xText->setMaxTextLen( mnMaxTextLen );
458 : }
459 60 : }
460 :
461 30 : awt::Size UnoEditControl::getMinimumSize( ) throw(uno::RuntimeException, std::exception)
462 : {
463 30 : return Impl_getMinimumSize();
464 : }
465 :
466 32 : awt::Size UnoEditControl::getPreferredSize( ) throw(uno::RuntimeException, std::exception)
467 : {
468 32 : return Impl_getPreferredSize();
469 : }
470 :
471 30 : awt::Size UnoEditControl::calcAdjustedSize( const awt::Size& rNewSize ) throw(uno::RuntimeException, std::exception)
472 : {
473 30 : return Impl_calcAdjustedSize( rNewSize );
474 : }
475 :
476 32 : awt::Size UnoEditControl::getMinimumSize( sal_Int16 nCols, sal_Int16 nLines ) throw(uno::RuntimeException, std::exception)
477 : {
478 32 : return Impl_getMinimumSize( nCols, nLines );
479 : }
480 :
481 30 : void UnoEditControl::getColumnsAndLines( sal_Int16& nCols, sal_Int16& nLines ) throw(uno::RuntimeException, std::exception)
482 : {
483 30 : Impl_getColumnsAndLines( nCols, nLines );
484 30 : }
485 :
486 2 : OUString UnoEditControl::getImplementationName( ) throw(uno::RuntimeException, std::exception)
487 : {
488 2 : return OUString( "stardiv.Toolkit.UnoEditControl" );
489 : }
490 :
491 0 : uno::Sequence< OUString > UnoEditControl::getSupportedServiceNames() throw(uno::RuntimeException, std::exception)
492 : {
493 0 : uno::Sequence< OUString > aNames = UnoControlBase::getSupportedServiceNames( );
494 0 : aNames.realloc( aNames.getLength() + 1 );
495 0 : aNames[ aNames.getLength() - 1 ] = OUString::createFromAscii( szServiceName2_UnoControlEdit );
496 0 : return aNames;
497 : }
498 :
499 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
500 4 : stardiv_Toolkit_UnoEditControl_get_implementation(
501 : css::uno::XComponentContext *,
502 : css::uno::Sequence<css::uno::Any> const &)
503 : {
504 4 : return cppu::acquire(new UnoEditControl());
505 : }
506 :
507 :
508 : // class UnoControlFileControlModel
509 :
510 14 : UnoControlFileControlModel::UnoControlFileControlModel( const Reference< XComponentContext >& rxContext )
511 14 : :UnoControlModel( rxContext )
512 : {
513 14 : ImplRegisterProperty( BASEPROPERTY_ALIGN );
514 14 : ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
515 14 : ImplRegisterProperty( BASEPROPERTY_BORDER );
516 14 : ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR );
517 14 : ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL );
518 14 : ImplRegisterProperty( BASEPROPERTY_ENABLED );
519 14 : ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE );
520 14 : ImplRegisterProperty( BASEPROPERTY_FONTDESCRIPTOR );
521 14 : ImplRegisterProperty( BASEPROPERTY_HELPTEXT );
522 14 : ImplRegisterProperty( BASEPROPERTY_HELPURL );
523 14 : ImplRegisterProperty( BASEPROPERTY_PRINTABLE );
524 14 : ImplRegisterProperty( BASEPROPERTY_READONLY );
525 14 : ImplRegisterProperty( BASEPROPERTY_TABSTOP );
526 14 : ImplRegisterProperty( BASEPROPERTY_TEXT );
527 14 : ImplRegisterProperty( BASEPROPERTY_VERTICALALIGN );
528 14 : ImplRegisterProperty( BASEPROPERTY_WRITING_MODE );
529 14 : ImplRegisterProperty( BASEPROPERTY_CONTEXT_WRITING_MODE );
530 14 : ImplRegisterProperty( BASEPROPERTY_HIDEINACTIVESELECTION );
531 14 : }
532 :
533 2 : OUString UnoControlFileControlModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
534 : {
535 2 : return OUString::createFromAscii( szServiceName_UnoControlFileControlModel );
536 : }
537 :
538 350 : uno::Any UnoControlFileControlModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
539 : {
540 350 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
541 : {
542 16 : uno::Any aAny;
543 16 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlFileControl );
544 16 : return aAny;
545 : }
546 334 : return UnoControlModel::ImplGetDefaultValue( nPropId );
547 : }
548 :
549 1694 : ::cppu::IPropertyArrayHelper& UnoControlFileControlModel::getInfoHelper()
550 : {
551 : static UnoPropertyArrayHelper* pHelper = NULL;
552 1694 : if ( !pHelper )
553 : {
554 2 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
555 2 : pHelper = new UnoPropertyArrayHelper( aIDs );
556 : }
557 1694 : return *pHelper;
558 : }
559 :
560 : // beans::XMultiPropertySet
561 82 : uno::Reference< beans::XPropertySetInfo > UnoControlFileControlModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
562 : {
563 82 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
564 82 : return xInfo;
565 : }
566 :
567 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
568 12 : stardiv_Toolkit_UnoControlFileControlModel_get_implementation(
569 : css::uno::XComponentContext *context,
570 : css::uno::Sequence<css::uno::Any> const &)
571 : {
572 12 : return cppu::acquire(new UnoControlFileControlModel(context));
573 : }
574 :
575 :
576 : // class UnoFileControl
577 :
578 0 : UnoFileControl::UnoFileControl()
579 0 : :UnoEditControl()
580 : {
581 0 : }
582 :
583 0 : OUString UnoFileControl::GetComponentServiceName()
584 : {
585 0 : return OUString("filecontrol");
586 : }
587 :
588 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
589 0 : stardiv_Toolkit_UnoFileControl_get_implementation(
590 : css::uno::XComponentContext *,
591 : css::uno::Sequence<css::uno::Any> const &)
592 : {
593 0 : return cppu::acquire(new UnoFileControl());
594 : }
595 :
596 :
597 : // class GraphicControlModel
598 :
599 6924 : uno::Any GraphicControlModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
600 : {
601 6924 : if ( nPropId == BASEPROPERTY_GRAPHIC )
602 272 : return uno::makeAny( uno::Reference< graphic::XGraphic >() );
603 :
604 6652 : return UnoControlModel::ImplGetDefaultValue( nPropId );
605 : }
606 :
607 3415 : void SAL_CALL GraphicControlModel::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) throw (::com::sun::star::uno::Exception, std::exception)
608 : {
609 3415 : UnoControlModel::setFastPropertyValue_NoBroadcast( nHandle, rValue );
610 :
611 : // - ImageAlign and ImagePosition need to correspond to each other
612 : // - Graphic and ImageURL need to correspond to each other
613 : try
614 : {
615 3415 : switch ( nHandle )
616 : {
617 : case BASEPROPERTY_IMAGEURL:
618 49 : if ( !mbAdjustingGraphic && ImplHasProperty( BASEPROPERTY_GRAPHIC ) )
619 : {
620 49 : mbAdjustingGraphic = true;
621 49 : OUString sImageURL;
622 49 : OSL_VERIFY( rValue >>= sImageURL );
623 49 : setDependentFastPropertyValue( BASEPROPERTY_GRAPHIC, uno::makeAny( ImageHelper::getGraphicFromURL_nothrow( sImageURL ) ) );
624 49 : mbAdjustingGraphic = false;
625 : }
626 49 : break;
627 :
628 : case BASEPROPERTY_GRAPHIC:
629 0 : if ( !mbAdjustingGraphic && ImplHasProperty( BASEPROPERTY_IMAGEURL ) )
630 : {
631 0 : mbAdjustingGraphic = true;
632 0 : setDependentFastPropertyValue( BASEPROPERTY_IMAGEURL, uno::makeAny( OUString() ) );
633 0 : mbAdjustingGraphic = false;
634 : }
635 0 : break;
636 :
637 : case BASEPROPERTY_IMAGEALIGN:
638 16 : if ( !mbAdjustingImagePosition && ImplHasProperty( BASEPROPERTY_IMAGEPOSITION ) )
639 : {
640 12 : mbAdjustingImagePosition = true;
641 12 : sal_Int16 nUNOValue = 0;
642 12 : OSL_VERIFY( rValue >>= nUNOValue );
643 12 : setDependentFastPropertyValue( BASEPROPERTY_IMAGEPOSITION, uno::makeAny( getExtendedImagePosition( nUNOValue ) ) );
644 12 : mbAdjustingImagePosition = false;
645 : }
646 16 : break;
647 : case BASEPROPERTY_IMAGEPOSITION:
648 276 : if ( !mbAdjustingImagePosition && ImplHasProperty( BASEPROPERTY_IMAGEALIGN ) )
649 : {
650 178 : mbAdjustingImagePosition = true;
651 178 : sal_Int16 nUNOValue = 0;
652 178 : OSL_VERIFY( rValue >>= nUNOValue );
653 178 : setDependentFastPropertyValue( BASEPROPERTY_IMAGEALIGN, uno::makeAny( getCompatibleImageAlign( translateImagePosition( nUNOValue ) ) ) );
654 178 : mbAdjustingImagePosition = false;
655 : }
656 276 : break;
657 : }
658 : }
659 0 : catch( const ::com::sun::star::uno::Exception& )
660 : {
661 : OSL_FAIL( "GraphicControlModel::setFastPropertyValue_NoBroadcast: caught an exception while aligning the ImagePosition/ImageAlign properties!" );
662 : DBG_UNHANDLED_EXCEPTION();
663 0 : mbAdjustingImagePosition = false;
664 : }
665 3415 : }
666 :
667 :
668 : // class UnoControlButtonModel
669 :
670 118 : UnoControlButtonModel::UnoControlButtonModel( const Reference< XComponentContext >& rxContext )
671 118 : :GraphicControlModel( rxContext )
672 : {
673 118 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXButton );
674 :
675 118 : osl_atomic_increment( &m_refCount );
676 : {
677 118 : setFastPropertyValue_NoBroadcast( BASEPROPERTY_IMAGEPOSITION, ImplGetDefaultValue( BASEPROPERTY_IMAGEPOSITION ) );
678 : // this ensures that our ImagePosition is consistent with our ImageAlign property (since both
679 : // defaults are not per se consistent), since both are coupled in setFastPropertyValue_NoBroadcast
680 : }
681 118 : osl_atomic_decrement( &m_refCount );
682 118 : }
683 :
684 2 : OUString UnoControlButtonModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
685 : {
686 2 : return OUString::createFromAscii( szServiceName_UnoControlButtonModel );
687 : }
688 :
689 3874 : uno::Any UnoControlButtonModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
690 : {
691 3874 : switch ( nPropId )
692 : {
693 : case BASEPROPERTY_DEFAULTCONTROL:
694 120 : return uno::makeAny( OUString::createFromAscii( szServiceName_UnoControlButton ) );
695 : case BASEPROPERTY_TOGGLE:
696 120 : return uno::makeAny( false );
697 : case BASEPROPERTY_ALIGN:
698 122 : return uno::makeAny( (sal_Int16)PROPERTY_ALIGN_CENTER );
699 : case BASEPROPERTY_FOCUSONCLICK:
700 122 : return uno::makeAny( true );
701 : }
702 :
703 3390 : return GraphicControlModel::ImplGetDefaultValue( nPropId );
704 : }
705 :
706 9776 : ::cppu::IPropertyArrayHelper& UnoControlButtonModel::getInfoHelper()
707 : {
708 : static UnoPropertyArrayHelper* pHelper = NULL;
709 9776 : if ( !pHelper )
710 : {
711 24 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
712 24 : pHelper = new UnoPropertyArrayHelper( aIDs );
713 : }
714 9776 : return *pHelper;
715 : }
716 :
717 : // beans::XMultiPropertySet
718 128 : uno::Reference< beans::XPropertySetInfo > UnoControlButtonModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
719 : {
720 128 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
721 128 : return xInfo;
722 : }
723 :
724 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
725 106 : stardiv_Toolkit_UnoControlButtonModel_get_implementation(
726 : css::uno::XComponentContext *context,
727 : css::uno::Sequence<css::uno::Any> const &)
728 : {
729 106 : return cppu::acquire(new UnoControlButtonModel(context));
730 : }
731 :
732 :
733 : // class UnoButtonControl
734 :
735 250 : UnoButtonControl::UnoButtonControl()
736 : :UnoButtonControl_Base()
737 : ,maActionListeners( *this )
738 250 : ,maItemListeners( *this )
739 : {
740 250 : maComponentInfos.nWidth = 50;
741 250 : maComponentInfos.nHeight = 14;
742 250 : }
743 :
744 91 : OUString UnoButtonControl::GetComponentServiceName()
745 : {
746 91 : OUString aName( "pushbutton" );
747 182 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_PUSHBUTTONTYPE ) );
748 91 : sal_Int16 n = sal_Int16();
749 91 : if ( ( aVal >>= n ) && n )
750 : {
751 : // Use PushButtonType later when available...
752 0 : switch ( n )
753 : {
754 0 : case 1 /*PushButtonType::OK*/: aName = "okbutton";
755 0 : break;
756 0 : case 2 /*PushButtonType::CANCEL*/: aName = "cancelbutton";
757 0 : break;
758 0 : case 3 /*PushButtonType::HELP*/: aName = "helpbutton";
759 0 : break;
760 : default:
761 : {
762 : OSL_FAIL( "Unknown Button Type!" );
763 : }
764 : }
765 : }
766 182 : return aName;
767 : }
768 :
769 363 : void UnoButtonControl::dispose() throw(uno::RuntimeException, std::exception)
770 : {
771 363 : lang::EventObject aEvt;
772 363 : aEvt.Source = (::cppu::OWeakObject*)this;
773 363 : maActionListeners.disposeAndClear( aEvt );
774 363 : maItemListeners.disposeAndClear( aEvt );
775 363 : UnoControlBase::dispose();
776 363 : }
777 :
778 95 : void UnoButtonControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
779 : {
780 95 : UnoControlBase::createPeer( rxToolkit, rParentPeer );
781 :
782 95 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
783 95 : xButton->setActionCommand( maActionCommand );
784 95 : if ( maActionListeners.getLength() )
785 85 : xButton->addActionListener( &maActionListeners );
786 :
787 190 : uno::Reference< XToggleButton > xPushButton( getPeer(), uno::UNO_QUERY );
788 95 : if ( xPushButton.is() )
789 190 : xPushButton->addItemListener( this );
790 95 : }
791 :
792 238 : void UnoButtonControl::addActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
793 : {
794 238 : maActionListeners.addInterface( l );
795 238 : if( getPeer().is() && maActionListeners.getLength() == 1 )
796 : {
797 4 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
798 4 : xButton->addActionListener( &maActionListeners );
799 : }
800 238 : }
801 :
802 2 : void UnoButtonControl::removeActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
803 : {
804 2 : if( getPeer().is() && maActionListeners.getLength() == 1 )
805 : {
806 2 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
807 2 : xButton->removeActionListener( &maActionListeners );
808 : }
809 2 : maActionListeners.removeInterface( l );
810 2 : }
811 :
812 4 : void UnoButtonControl::addItemListener(const uno::Reference< awt::XItemListener > & l) throw(uno::RuntimeException, std::exception)
813 : {
814 4 : maItemListeners.addInterface( l );
815 4 : }
816 :
817 2 : void UnoButtonControl::removeItemListener(const uno::Reference< awt::XItemListener > & l) throw(uno::RuntimeException, std::exception)
818 : {
819 2 : maItemListeners.removeInterface( l );
820 2 : }
821 :
822 637 : void SAL_CALL UnoButtonControl::disposing( const lang::EventObject& Source ) throw (uno::RuntimeException, std::exception)
823 : {
824 637 : UnoControlBase::disposing( Source );
825 637 : }
826 :
827 0 : void SAL_CALL UnoButtonControl::itemStateChanged( const awt::ItemEvent& rEvent ) throw (uno::RuntimeException, std::exception)
828 : {
829 : // forward to model
830 0 : uno::Any aAny;
831 0 : aAny <<= (sal_Int16)rEvent.Selected;
832 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STATE ), aAny, false );
833 :
834 : // multiplex
835 0 : ItemEvent aEvent( rEvent );
836 0 : aEvent.Source = *this;
837 0 : maItemListeners.itemStateChanged( aEvent );
838 0 : }
839 :
840 4 : void UnoButtonControl::setLabel( const OUString& rLabel ) throw(uno::RuntimeException, std::exception)
841 : {
842 4 : uno::Any aAny;
843 4 : aAny <<= rLabel;
844 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_LABEL ), aAny, true );
845 4 : }
846 :
847 4 : void UnoButtonControl::setActionCommand( const OUString& rCommand ) throw(uno::RuntimeException, std::exception)
848 : {
849 4 : maActionCommand = rCommand;
850 4 : if ( getPeer().is() )
851 : {
852 4 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
853 4 : xButton->setActionCommand( rCommand );
854 : }
855 4 : }
856 :
857 4 : awt::Size UnoButtonControl::getMinimumSize( ) throw(uno::RuntimeException, std::exception)
858 : {
859 4 : return Impl_getMinimumSize();
860 : }
861 :
862 6 : awt::Size UnoButtonControl::getPreferredSize( ) throw(uno::RuntimeException, std::exception)
863 : {
864 6 : return Impl_getPreferredSize();
865 : }
866 :
867 4 : awt::Size UnoButtonControl::calcAdjustedSize( const awt::Size& rNewSize ) throw(uno::RuntimeException, std::exception)
868 : {
869 4 : return Impl_calcAdjustedSize( rNewSize );
870 : }
871 :
872 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
873 250 : stardiv_Toolkit_UnoButtonControl_get_implementation(
874 : css::uno::XComponentContext *,
875 : css::uno::Sequence<css::uno::Any> const &)
876 : {
877 250 : return cppu::acquire(new UnoButtonControl());
878 : }
879 :
880 :
881 : // class UnoControlImageControlModel
882 :
883 48 : UnoControlImageControlModel::UnoControlImageControlModel( const Reference< XComponentContext >& rxContext )
884 : :GraphicControlModel( rxContext )
885 48 : ,mbAdjustingImageScaleMode( false )
886 : {
887 48 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXImageControl );
888 48 : }
889 :
890 2 : OUString UnoControlImageControlModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
891 : {
892 2 : return OUString::createFromAscii( szServiceName_UnoControlImageControlModel );
893 : }
894 :
895 868 : uno::Any UnoControlImageControlModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
896 : {
897 868 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
898 54 : return uno::makeAny( OUString::createFromAscii( szServiceName_UnoControlImageControl ) );
899 :
900 814 : if ( nPropId == BASEPROPERTY_IMAGE_SCALE_MODE )
901 54 : return makeAny( awt::ImageScaleMode::ANISOTROPIC );
902 :
903 760 : return GraphicControlModel::ImplGetDefaultValue( nPropId );
904 : }
905 :
906 4973 : ::cppu::IPropertyArrayHelper& UnoControlImageControlModel::getInfoHelper()
907 : {
908 : static UnoPropertyArrayHelper* pHelper = NULL;
909 4973 : if ( !pHelper )
910 : {
911 6 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
912 6 : pHelper = new UnoPropertyArrayHelper( aIDs );
913 : }
914 4973 : return *pHelper;
915 : }
916 :
917 : // beans::XMultiPropertySet
918 76 : uno::Reference< beans::XPropertySetInfo > UnoControlImageControlModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
919 : {
920 76 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
921 76 : return xInfo;
922 : }
923 :
924 614 : void SAL_CALL UnoControlImageControlModel::setFastPropertyValue_NoBroadcast( sal_Int32 _nHandle, const ::com::sun::star::uno::Any& _rValue ) throw (::com::sun::star::uno::Exception, std::exception)
925 : {
926 614 : GraphicControlModel::setFastPropertyValue_NoBroadcast( _nHandle, _rValue );
927 :
928 : // ScaleImage is an older (and less powerful) version of ScaleMode, but keep both in sync as far as possible
929 : try
930 : {
931 614 : switch ( _nHandle )
932 : {
933 : case BASEPROPERTY_IMAGE_SCALE_MODE:
934 88 : if ( !mbAdjustingImageScaleMode && ImplHasProperty( BASEPROPERTY_SCALEIMAGE ) )
935 : {
936 44 : mbAdjustingImageScaleMode = true;
937 44 : sal_Int16 nScaleMode( awt::ImageScaleMode::ANISOTROPIC );
938 44 : OSL_VERIFY( _rValue >>= nScaleMode );
939 44 : setDependentFastPropertyValue( BASEPROPERTY_SCALEIMAGE, uno::makeAny( nScaleMode != awt::ImageScaleMode::NONE ) );
940 44 : mbAdjustingImageScaleMode = false;
941 : }
942 88 : break;
943 : case BASEPROPERTY_SCALEIMAGE:
944 88 : if ( !mbAdjustingImageScaleMode && ImplHasProperty( BASEPROPERTY_IMAGE_SCALE_MODE ) )
945 : {
946 44 : mbAdjustingImageScaleMode = true;
947 44 : bool bScale = true;
948 44 : OSL_VERIFY( _rValue >>= bScale );
949 44 : setDependentFastPropertyValue( BASEPROPERTY_IMAGE_SCALE_MODE, uno::makeAny( bScale ? awt::ImageScaleMode::ANISOTROPIC : awt::ImageScaleMode::NONE ) );
950 44 : mbAdjustingImageScaleMode = false;
951 : }
952 88 : break;
953 : }
954 : }
955 0 : catch( const Exception& )
956 : {
957 0 : mbAdjustingImageScaleMode = false;
958 0 : throw;
959 : }
960 614 : }
961 :
962 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
963 46 : stardiv_Toolkit_UnoControlImageControlModel_get_implementation(
964 : css::uno::XComponentContext *context,
965 : css::uno::Sequence<css::uno::Any> const &)
966 : {
967 46 : return cppu::acquire(new UnoControlImageControlModel(context));
968 : }
969 :
970 :
971 : // class UnoImageControlControl
972 :
973 22 : UnoImageControlControl::UnoImageControlControl()
974 : :UnoImageControlControl_Base()
975 22 : ,maActionListeners( *this )
976 : {
977 : // TODO: Where should I look for defaults?
978 22 : maComponentInfos.nWidth = 100;
979 22 : maComponentInfos.nHeight = 100;
980 22 : }
981 :
982 22 : OUString UnoImageControlControl::GetComponentServiceName()
983 : {
984 22 : return OUString("fixedimage");
985 : }
986 :
987 24 : void UnoImageControlControl::dispose() throw(uno::RuntimeException, std::exception)
988 : {
989 24 : lang::EventObject aEvt;
990 24 : aEvt.Source = (::cppu::OWeakObject*)this;
991 24 : maActionListeners.disposeAndClear( aEvt );
992 24 : UnoControl::dispose();
993 24 : }
994 :
995 4 : sal_Bool UnoImageControlControl::isTransparent() throw(uno::RuntimeException, std::exception)
996 : {
997 4 : return sal_True;
998 : }
999 :
1000 6 : awt::Size UnoImageControlControl::getMinimumSize( ) throw(uno::RuntimeException, std::exception)
1001 : {
1002 6 : return Impl_getMinimumSize();
1003 : }
1004 :
1005 6 : awt::Size UnoImageControlControl::getPreferredSize( ) throw(uno::RuntimeException, std::exception)
1006 : {
1007 6 : return Impl_getPreferredSize();
1008 : }
1009 :
1010 6 : awt::Size UnoImageControlControl::calcAdjustedSize( const awt::Size& rNewSize ) throw(uno::RuntimeException, std::exception)
1011 : {
1012 6 : return Impl_calcAdjustedSize( rNewSize );
1013 : }
1014 :
1015 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1016 22 : stardiv_Toolkit_UnoImageControlControl_get_implementation(
1017 : css::uno::XComponentContext *,
1018 : css::uno::Sequence<css::uno::Any> const &)
1019 : {
1020 22 : return cppu::acquire(new UnoImageControlControl());
1021 : }
1022 :
1023 :
1024 : // class UnoControlRadioButtonModel
1025 :
1026 54 : UnoControlRadioButtonModel::UnoControlRadioButtonModel( const Reference< XComponentContext >& rxContext )
1027 54 : :GraphicControlModel( rxContext )
1028 : {
1029 54 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXRadioButton );
1030 54 : }
1031 :
1032 2 : OUString UnoControlRadioButtonModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
1033 : {
1034 2 : return OUString::createFromAscii( szServiceName_UnoControlRadioButtonModel );
1035 : }
1036 :
1037 1540 : uno::Any UnoControlRadioButtonModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
1038 : {
1039 1540 : switch ( nPropId )
1040 : {
1041 : case BASEPROPERTY_DEFAULTCONTROL:
1042 58 : return uno::makeAny( OUString::createFromAscii( szServiceName_UnoControlRadioButton ) );
1043 :
1044 : case BASEPROPERTY_VISUALEFFECT:
1045 60 : return uno::makeAny( (sal_Int16)awt::VisualEffect::LOOK3D );
1046 : }
1047 :
1048 1422 : return GraphicControlModel::ImplGetDefaultValue( nPropId );
1049 : }
1050 :
1051 11484 : ::cppu::IPropertyArrayHelper& UnoControlRadioButtonModel::getInfoHelper()
1052 : {
1053 : static UnoPropertyArrayHelper* pHelper = NULL;
1054 11484 : if ( !pHelper )
1055 : {
1056 12 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
1057 12 : pHelper = new UnoPropertyArrayHelper( aIDs );
1058 : }
1059 11484 : return *pHelper;
1060 : }
1061 :
1062 : // beans::XMultiPropertySet
1063 132 : uno::Reference< beans::XPropertySetInfo > UnoControlRadioButtonModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
1064 : {
1065 132 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
1066 132 : return xInfo;
1067 : }
1068 :
1069 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1070 52 : stardiv_Toolkit_UnoControlRadioButtonModel_get_implementation(
1071 : css::uno::XComponentContext *context,
1072 : css::uno::Sequence<css::uno::Any> const &)
1073 : {
1074 52 : return cppu::acquire(new UnoControlRadioButtonModel(context));
1075 : }
1076 :
1077 :
1078 : // class UnoRadioButtonControl
1079 :
1080 38 : UnoRadioButtonControl::UnoRadioButtonControl()
1081 : :UnoRadioButtonControl_Base()
1082 : ,maItemListeners( *this )
1083 38 : ,maActionListeners( *this )
1084 : {
1085 38 : maComponentInfos.nWidth = 100;
1086 38 : maComponentInfos.nHeight = 12;
1087 38 : }
1088 :
1089 42 : OUString UnoRadioButtonControl::GetComponentServiceName()
1090 : {
1091 42 : return OUString("radiobutton");
1092 : }
1093 :
1094 40 : void UnoRadioButtonControl::dispose() throw(uno::RuntimeException, std::exception)
1095 : {
1096 40 : lang::EventObject aEvt;
1097 40 : aEvt.Source = (::cppu::OWeakObject*)this;
1098 40 : maItemListeners.disposeAndClear( aEvt );
1099 40 : UnoControlBase::dispose();
1100 40 : }
1101 :
1102 :
1103 4 : sal_Bool UnoRadioButtonControl::isTransparent() throw(uno::RuntimeException, std::exception)
1104 : {
1105 4 : return sal_True;
1106 : }
1107 :
1108 46 : void UnoRadioButtonControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
1109 : {
1110 46 : UnoControlBase::createPeer( rxToolkit, rParentPeer );
1111 :
1112 46 : uno::Reference < awt::XRadioButton > xRadioButton( getPeer(), uno::UNO_QUERY );
1113 46 : xRadioButton->addItemListener( this );
1114 :
1115 92 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
1116 46 : xButton->setActionCommand( maActionCommand );
1117 46 : if ( maActionListeners.getLength() )
1118 0 : xButton->addActionListener( &maActionListeners );
1119 :
1120 : // as default, set the "AutoToggle" to true
1121 : // (it is set to false in VCLXToolkit::ImplCreateWindow because of #87254#, but we want to
1122 : // have it enabled by default because of 85071)
1123 92 : uno::Reference< awt::XVclWindowPeer > xVclWindowPeer( getPeer(), uno::UNO_QUERY );
1124 46 : if ( xVclWindowPeer.is() )
1125 92 : xVclWindowPeer->setProperty( GetPropertyName( BASEPROPERTY_AUTOTOGGLE ), css::uno::Any(true) );
1126 46 : }
1127 :
1128 6 : void UnoRadioButtonControl::addItemListener(const uno::Reference < awt::XItemListener > & l) throw(uno::RuntimeException, std::exception)
1129 : {
1130 6 : maItemListeners.addInterface( l );
1131 6 : }
1132 :
1133 0 : void UnoRadioButtonControl::removeItemListener(const uno::Reference < awt::XItemListener > & l) throw(uno::RuntimeException, std::exception)
1134 : {
1135 0 : maItemListeners.removeInterface( l );
1136 0 : }
1137 :
1138 2 : void UnoRadioButtonControl::addActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
1139 : {
1140 2 : maActionListeners.addInterface( l );
1141 2 : if( getPeer().is() && maActionListeners.getLength() == 1 )
1142 : {
1143 2 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
1144 2 : xButton->addActionListener( &maActionListeners );
1145 : }
1146 2 : }
1147 :
1148 0 : void UnoRadioButtonControl::removeActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
1149 : {
1150 0 : if( getPeer().is() && maActionListeners.getLength() == 1 )
1151 : {
1152 0 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
1153 0 : xButton->removeActionListener( &maActionListeners );
1154 : }
1155 0 : maActionListeners.removeInterface( l );
1156 0 : }
1157 :
1158 4 : void UnoRadioButtonControl::setLabel( const OUString& rLabel ) throw(uno::RuntimeException, std::exception)
1159 : {
1160 4 : uno::Any aAny;
1161 4 : aAny <<= rLabel;
1162 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_LABEL ), aAny, true );
1163 4 : }
1164 :
1165 0 : void UnoRadioButtonControl::setActionCommand( const OUString& rCommand ) throw(uno::RuntimeException, std::exception)
1166 : {
1167 0 : maActionCommand = rCommand;
1168 0 : if ( getPeer().is() )
1169 : {
1170 0 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
1171 0 : xButton->setActionCommand( rCommand );
1172 : }
1173 0 : }
1174 :
1175 4 : void UnoRadioButtonControl::setState( sal_Bool bOn ) throw(uno::RuntimeException, std::exception)
1176 : {
1177 4 : sal_Int16 nState = bOn ? 1 : 0;
1178 4 : uno::Any aAny;
1179 4 : aAny <<= nState;
1180 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STATE ), aAny, true );
1181 4 : }
1182 :
1183 8 : sal_Bool UnoRadioButtonControl::getState() throw(uno::RuntimeException, std::exception)
1184 : {
1185 8 : sal_Int16 nState = 0;
1186 8 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STATE ) );
1187 8 : aVal >>= nState;
1188 8 : return nState ? sal_True : sal_False;
1189 : }
1190 :
1191 0 : void UnoRadioButtonControl::itemStateChanged( const awt::ItemEvent& rEvent ) throw(uno::RuntimeException, std::exception)
1192 : {
1193 0 : uno::Any aAny;
1194 0 : aAny <<= (sal_Int16)rEvent.Selected;
1195 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STATE ), aAny, false );
1196 :
1197 : // compatibility:
1198 : // in OOo 1.0.x, when the user clicked a radio button in a group of buttons, this resulted
1199 : // in _one_ itemStateChanged call for exactly the radio button which's state changed from
1200 : // "0" to "1".
1201 : // Nowadays, since the listener handling changed a lot towards 1.1 (the VCLXWindow reacts on more
1202 : // basic events from the VCL-windows, not anymore on the Link-based events like in 1.0.x), this
1203 : // isn't the case anymore: For instance, this method here gets called for the radio button
1204 : // which is being implicitily _de_selected, too. This is pretty bad for compatibility.
1205 : // Thus, we suppress all events with a new state other than "1". This is unlogical, and weird, when looking
1206 : // from a pure API perspective, but it's _compatible_ with older product versions, and this is
1207 : // all which matters here.
1208 : // #i14703#
1209 0 : if ( 1 == rEvent.Selected )
1210 : {
1211 0 : if ( maItemListeners.getLength() )
1212 0 : maItemListeners.itemStateChanged( rEvent );
1213 0 : }
1214 : // note that speaking stricly, this is wrong: When in 1.0.x, the user would have de-selected
1215 : // a radio button _without_ selecing another one, this would have caused a notification.
1216 : // With the change done here, this today won't cause a notification anymore.
1217 :
1218 : // Fortunately, it's not possible for the user to de-select a radio button without selecting another on,
1219 : // at least not via the regular UI. It _would_ be possible via the Accessibility API, which
1220 : // counts as "user input", too. But in 1.0.x, there was no Accessibility API, so there is nothing
1221 : // to be inconsistent with.
1222 0 : }
1223 :
1224 4 : awt::Size UnoRadioButtonControl::getMinimumSize( ) throw(uno::RuntimeException, std::exception)
1225 : {
1226 4 : return Impl_getMinimumSize();
1227 : }
1228 :
1229 4 : awt::Size UnoRadioButtonControl::getPreferredSize( ) throw(uno::RuntimeException, std::exception)
1230 : {
1231 4 : return Impl_getPreferredSize();
1232 : }
1233 :
1234 4 : awt::Size UnoRadioButtonControl::calcAdjustedSize( const awt::Size& rNewSize ) throw(uno::RuntimeException, std::exception)
1235 : {
1236 4 : return Impl_calcAdjustedSize( rNewSize );
1237 : }
1238 :
1239 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1240 38 : stardiv_Toolkit_UnoRadioButtonControl_get_implementation(
1241 : css::uno::XComponentContext *,
1242 : css::uno::Sequence<css::uno::Any> const &)
1243 : {
1244 38 : return cppu::acquire(new UnoRadioButtonControl());
1245 : }
1246 :
1247 :
1248 : // class UnoControlCheckBoxModel
1249 :
1250 50 : UnoControlCheckBoxModel::UnoControlCheckBoxModel( const Reference< XComponentContext >& rxContext )
1251 50 : :GraphicControlModel( rxContext )
1252 : {
1253 50 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXCheckBox );
1254 50 : }
1255 :
1256 2 : OUString UnoControlCheckBoxModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
1257 : {
1258 2 : return OUString::createFromAscii( szServiceName_UnoControlCheckBoxModel );
1259 : }
1260 :
1261 1436 : uno::Any UnoControlCheckBoxModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
1262 : {
1263 1436 : switch ( nPropId )
1264 : {
1265 : case BASEPROPERTY_DEFAULTCONTROL:
1266 54 : return uno::makeAny( OUString::createFromAscii( szServiceName_UnoControlCheckBox ) );
1267 :
1268 : case BASEPROPERTY_VISUALEFFECT:
1269 56 : return uno::makeAny( (sal_Int16)awt::VisualEffect::LOOK3D );
1270 : }
1271 :
1272 1326 : return GraphicControlModel::ImplGetDefaultValue( nPropId );
1273 : }
1274 :
1275 10794 : ::cppu::IPropertyArrayHelper& UnoControlCheckBoxModel::getInfoHelper()
1276 : {
1277 : static UnoPropertyArrayHelper* pHelper = NULL;
1278 10794 : if ( !pHelper )
1279 : {
1280 14 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
1281 14 : pHelper = new UnoPropertyArrayHelper( aIDs );
1282 : }
1283 10794 : return *pHelper;
1284 : }
1285 :
1286 : // beans::XMultiPropertySet
1287 118 : uno::Reference< beans::XPropertySetInfo > UnoControlCheckBoxModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
1288 : {
1289 118 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
1290 118 : return xInfo;
1291 : }
1292 :
1293 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1294 44 : stardiv_Toolkit_UnoControlCheckBoxModel_get_implementation(
1295 : css::uno::XComponentContext *context,
1296 : css::uno::Sequence<css::uno::Any> const &)
1297 : {
1298 44 : return cppu::acquire(new UnoControlCheckBoxModel(context));
1299 : }
1300 :
1301 :
1302 : // class UnoCheckBoxControl
1303 :
1304 40 : UnoCheckBoxControl::UnoCheckBoxControl()
1305 : :UnoCheckBoxControl_Base()
1306 40 : ,maItemListeners( *this ), maActionListeners( *this )
1307 : {
1308 40 : maComponentInfos.nWidth = 100;
1309 40 : maComponentInfos.nHeight = 12;
1310 40 : }
1311 :
1312 42 : OUString UnoCheckBoxControl::GetComponentServiceName()
1313 : {
1314 42 : return OUString("checkbox");
1315 : }
1316 :
1317 42 : void UnoCheckBoxControl::dispose() throw(uno::RuntimeException, std::exception)
1318 : {
1319 42 : lang::EventObject aEvt;
1320 42 : aEvt.Source = (::cppu::OWeakObject*)this;
1321 42 : maItemListeners.disposeAndClear( aEvt );
1322 42 : UnoControlBase::dispose();
1323 42 : }
1324 :
1325 4 : sal_Bool UnoCheckBoxControl::isTransparent() throw(uno::RuntimeException, std::exception)
1326 : {
1327 4 : return sal_True;
1328 : }
1329 :
1330 46 : void UnoCheckBoxControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
1331 : {
1332 46 : UnoControlBase::createPeer( rxToolkit, rParentPeer );
1333 :
1334 46 : uno::Reference < awt::XCheckBox > xCheckBox( getPeer(), uno::UNO_QUERY );
1335 46 : xCheckBox->addItemListener( this );
1336 :
1337 92 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
1338 46 : xButton->setActionCommand( maActionCommand );
1339 46 : if ( maActionListeners.getLength() )
1340 46 : xButton->addActionListener( &maActionListeners );
1341 46 : }
1342 :
1343 10 : void UnoCheckBoxControl::addItemListener(const uno::Reference < awt::XItemListener > & l) throw(uno::RuntimeException, std::exception)
1344 : {
1345 10 : maItemListeners.addInterface( l );
1346 10 : }
1347 :
1348 4 : void UnoCheckBoxControl::removeItemListener(const uno::Reference < awt::XItemListener > & l) throw(uno::RuntimeException, std::exception)
1349 : {
1350 4 : maItemListeners.removeInterface( l );
1351 4 : }
1352 :
1353 2 : void UnoCheckBoxControl::addActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
1354 : {
1355 2 : maActionListeners.addInterface( l );
1356 2 : if( getPeer().is() && maActionListeners.getLength() == 1 )
1357 : {
1358 2 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
1359 2 : xButton->addActionListener( &maActionListeners );
1360 : }
1361 2 : }
1362 :
1363 0 : void UnoCheckBoxControl::removeActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
1364 : {
1365 0 : if( getPeer().is() && maActionListeners.getLength() == 1 )
1366 : {
1367 0 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
1368 0 : xButton->removeActionListener( &maActionListeners );
1369 : }
1370 0 : maActionListeners.removeInterface( l );
1371 0 : }
1372 :
1373 0 : void UnoCheckBoxControl::setActionCommand( const OUString& rCommand ) throw(uno::RuntimeException, std::exception)
1374 : {
1375 0 : maActionCommand = rCommand;
1376 0 : if ( getPeer().is() )
1377 : {
1378 0 : uno::Reference < awt::XButton > xButton( getPeer(), uno::UNO_QUERY );
1379 0 : xButton->setActionCommand( rCommand );
1380 : }
1381 0 : }
1382 :
1383 :
1384 4 : void UnoCheckBoxControl::setLabel( const OUString& rLabel ) throw(uno::RuntimeException, std::exception)
1385 : {
1386 4 : uno::Any aAny;
1387 4 : aAny <<= rLabel;
1388 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_LABEL ), aAny, true );
1389 4 : }
1390 :
1391 4 : void UnoCheckBoxControl::setState( short n ) throw(uno::RuntimeException, std::exception)
1392 : {
1393 4 : uno::Any aAny;
1394 4 : aAny <<= (sal_Int16)n;
1395 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STATE ), aAny, true );
1396 4 : }
1397 :
1398 8 : short UnoCheckBoxControl::getState() throw(uno::RuntimeException, std::exception)
1399 : {
1400 8 : short nState = 0;
1401 8 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STATE ) );
1402 8 : aVal >>= nState;
1403 8 : return nState;
1404 : }
1405 :
1406 4 : void UnoCheckBoxControl::enableTriState( sal_Bool b ) throw(uno::RuntimeException, std::exception)
1407 : {
1408 4 : uno::Any aAny;
1409 4 : aAny <<= b;
1410 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_TRISTATE ), aAny, true );
1411 4 : }
1412 :
1413 0 : void UnoCheckBoxControl::itemStateChanged( const awt::ItemEvent& rEvent ) throw(uno::RuntimeException, std::exception)
1414 : {
1415 0 : uno::Any aAny;
1416 0 : aAny <<= (sal_Int16)rEvent.Selected;
1417 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STATE ), aAny, false );
1418 :
1419 0 : if ( maItemListeners.getLength() )
1420 0 : maItemListeners.itemStateChanged( rEvent );
1421 0 : }
1422 :
1423 4 : awt::Size UnoCheckBoxControl::getMinimumSize( ) throw(uno::RuntimeException, std::exception)
1424 : {
1425 4 : return Impl_getMinimumSize();
1426 : }
1427 :
1428 4 : awt::Size UnoCheckBoxControl::getPreferredSize( ) throw(uno::RuntimeException, std::exception)
1429 : {
1430 4 : return Impl_getPreferredSize();
1431 : }
1432 :
1433 4 : awt::Size UnoCheckBoxControl::calcAdjustedSize( const awt::Size& rNewSize ) throw(uno::RuntimeException, std::exception)
1434 : {
1435 4 : return Impl_calcAdjustedSize( rNewSize );
1436 : }
1437 :
1438 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1439 40 : stardiv_Toolkit_UnoCheckBoxControl_get_implementation(
1440 : css::uno::XComponentContext *,
1441 : css::uno::Sequence<css::uno::Any> const &)
1442 : {
1443 40 : return cppu::acquire(new UnoCheckBoxControl());
1444 : }
1445 :
1446 :
1447 : // class UnoControlFixedHyperlinkModel
1448 :
1449 0 : UnoControlFixedHyperlinkModel::UnoControlFixedHyperlinkModel( const Reference< XComponentContext >& rxContext )
1450 0 : :UnoControlModel( rxContext )
1451 : {
1452 0 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXFixedHyperlink );
1453 0 : }
1454 :
1455 0 : OUString UnoControlFixedHyperlinkModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
1456 : {
1457 0 : return OUString::createFromAscii( szServiceName_UnoControlFixedHyperlinkModel );
1458 : }
1459 :
1460 0 : uno::Any UnoControlFixedHyperlinkModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
1461 : {
1462 0 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
1463 : {
1464 0 : uno::Any aAny;
1465 0 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlFixedHyperlink );
1466 0 : return aAny;
1467 : }
1468 0 : else if ( nPropId == BASEPROPERTY_BORDER )
1469 : {
1470 0 : uno::Any aAny;
1471 0 : aAny <<= (sal_Int16)0;
1472 0 : return aAny;
1473 : }
1474 0 : else if ( nPropId == BASEPROPERTY_URL )
1475 : {
1476 0 : uno::Any aAny;
1477 0 : aAny <<= OUString();
1478 0 : return aAny;
1479 : }
1480 :
1481 0 : return UnoControlModel::ImplGetDefaultValue( nPropId );
1482 : }
1483 :
1484 0 : ::cppu::IPropertyArrayHelper& UnoControlFixedHyperlinkModel::getInfoHelper()
1485 : {
1486 : static UnoPropertyArrayHelper* pHelper = NULL;
1487 0 : if ( !pHelper )
1488 : {
1489 0 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
1490 0 : pHelper = new UnoPropertyArrayHelper( aIDs );
1491 : }
1492 0 : return *pHelper;
1493 : }
1494 :
1495 : // beans::XMultiPropertySet
1496 0 : uno::Reference< beans::XPropertySetInfo > UnoControlFixedHyperlinkModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
1497 : {
1498 0 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
1499 0 : return xInfo;
1500 : }
1501 :
1502 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1503 0 : stardiv_Toolkit_UnoControlFixedHyperlinkModel_get_implementation(
1504 : css::uno::XComponentContext *context,
1505 : css::uno::Sequence<css::uno::Any> const &)
1506 : {
1507 0 : return cppu::acquire(new UnoControlFixedHyperlinkModel(context));
1508 : }
1509 :
1510 :
1511 : // class UnoFixedHyperlinkControl
1512 :
1513 0 : UnoFixedHyperlinkControl::UnoFixedHyperlinkControl()
1514 : :UnoControlBase()
1515 0 : ,maActionListeners( *this )
1516 : {
1517 0 : maComponentInfos.nWidth = 100;
1518 0 : maComponentInfos.nHeight = 12;
1519 0 : }
1520 :
1521 0 : OUString UnoFixedHyperlinkControl::GetComponentServiceName()
1522 : {
1523 0 : return OUString("fixedhyperlink");
1524 : }
1525 :
1526 : // uno::XInterface
1527 0 : uno::Any UnoFixedHyperlinkControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
1528 : {
1529 : uno::Any aRet = ::cppu::queryInterface( rType,
1530 : (static_cast< awt::XFixedHyperlink* >(this)),
1531 0 : (static_cast< awt::XLayoutConstrains* >(this)) );
1532 0 : return (aRet.hasValue() ? aRet : UnoControlBase::queryAggregation( rType ));
1533 : }
1534 :
1535 : // lang::XTypeProvider
1536 0 : IMPL_XTYPEPROVIDER_START( UnoFixedHyperlinkControl )
1537 0 : cppu::UnoType<awt::XFixedHyperlink>::get(),
1538 0 : cppu::UnoType<awt::XLayoutConstrains>::get(),
1539 : UnoControlBase::getTypes()
1540 0 : IMPL_XTYPEPROVIDER_END
1541 :
1542 0 : sal_Bool UnoFixedHyperlinkControl::isTransparent() throw(uno::RuntimeException, std::exception)
1543 : {
1544 0 : return sal_True;
1545 : }
1546 :
1547 0 : void UnoFixedHyperlinkControl::setText( const OUString& Text ) throw(uno::RuntimeException, std::exception)
1548 : {
1549 0 : uno::Any aAny;
1550 0 : aAny <<= Text;
1551 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_LABEL ), aAny, true );
1552 0 : }
1553 :
1554 0 : OUString UnoFixedHyperlinkControl::getText() throw(uno::RuntimeException, std::exception)
1555 : {
1556 0 : return ImplGetPropertyValue_UString( BASEPROPERTY_LABEL );
1557 : }
1558 :
1559 0 : void UnoFixedHyperlinkControl::setURL( const OUString& URL ) throw(::com::sun::star::uno::RuntimeException, std::exception)
1560 : {
1561 0 : uno::Any aAny;
1562 0 : aAny <<= URL;
1563 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_URL ), aAny, true );
1564 0 : }
1565 :
1566 0 : OUString UnoFixedHyperlinkControl::getURL( ) throw(::com::sun::star::uno::RuntimeException, std::exception)
1567 : {
1568 0 : return ImplGetPropertyValue_UString( BASEPROPERTY_URL );
1569 : }
1570 :
1571 0 : void UnoFixedHyperlinkControl::setAlignment( short nAlign ) throw(uno::RuntimeException, std::exception)
1572 : {
1573 0 : uno::Any aAny;
1574 0 : aAny <<= (sal_Int16)nAlign;
1575 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_ALIGN ), aAny, true );
1576 0 : }
1577 :
1578 0 : short UnoFixedHyperlinkControl::getAlignment() throw(uno::RuntimeException, std::exception)
1579 : {
1580 0 : short nAlign = 0;
1581 0 : if ( mxModel.is() )
1582 : {
1583 0 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_ALIGN ) );
1584 0 : aVal >>= nAlign;
1585 : }
1586 0 : return nAlign;
1587 : }
1588 :
1589 0 : awt::Size UnoFixedHyperlinkControl::getMinimumSize( ) throw(uno::RuntimeException, std::exception)
1590 : {
1591 0 : return Impl_getMinimumSize();
1592 : }
1593 :
1594 0 : awt::Size UnoFixedHyperlinkControl::getPreferredSize( ) throw(uno::RuntimeException, std::exception)
1595 : {
1596 0 : return Impl_getPreferredSize();
1597 : }
1598 :
1599 0 : awt::Size UnoFixedHyperlinkControl::calcAdjustedSize( const awt::Size& rNewSize ) throw(uno::RuntimeException, std::exception)
1600 : {
1601 0 : return Impl_calcAdjustedSize( rNewSize );
1602 : }
1603 :
1604 0 : void UnoFixedHyperlinkControl::dispose() throw(uno::RuntimeException, std::exception)
1605 : {
1606 0 : lang::EventObject aEvt;
1607 0 : aEvt.Source = (::cppu::OWeakObject*)this;
1608 0 : maActionListeners.disposeAndClear( aEvt );
1609 0 : UnoControlBase::dispose();
1610 0 : }
1611 :
1612 0 : void UnoFixedHyperlinkControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
1613 : {
1614 0 : UnoControlBase::createPeer( rxToolkit, rParentPeer );
1615 :
1616 0 : uno::Reference < awt::XFixedHyperlink > xFixedHyperlink( getPeer(), uno::UNO_QUERY );
1617 0 : if ( maActionListeners.getLength() )
1618 0 : xFixedHyperlink->addActionListener( &maActionListeners );
1619 0 : }
1620 :
1621 0 : void UnoFixedHyperlinkControl::addActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
1622 : {
1623 0 : maActionListeners.addInterface( l );
1624 0 : if( getPeer().is() && maActionListeners.getLength() == 1 )
1625 : {
1626 0 : uno::Reference < awt::XFixedHyperlink > xFixedHyperlink( getPeer(), uno::UNO_QUERY );
1627 0 : xFixedHyperlink->addActionListener( &maActionListeners );
1628 : }
1629 0 : }
1630 :
1631 0 : void UnoFixedHyperlinkControl::removeActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
1632 : {
1633 0 : if( getPeer().is() && maActionListeners.getLength() == 1 )
1634 : {
1635 0 : uno::Reference < awt::XFixedHyperlink > xFixedHyperlink( getPeer(), uno::UNO_QUERY );
1636 0 : xFixedHyperlink->removeActionListener( &maActionListeners );
1637 : }
1638 0 : maActionListeners.removeInterface( l );
1639 0 : }
1640 :
1641 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1642 0 : stardiv_Toolkit_UnoFixedHyperlinkControl_get_implementation(
1643 : css::uno::XComponentContext *,
1644 : css::uno::Sequence<css::uno::Any> const &)
1645 : {
1646 0 : return cppu::acquire(new UnoFixedHyperlinkControl());
1647 : }
1648 :
1649 :
1650 : // class UnoControlFixedTextModel
1651 :
1652 158 : UnoControlFixedTextModel::UnoControlFixedTextModel( const Reference< XComponentContext >& rxContext )
1653 158 : :UnoControlModel( rxContext )
1654 : {
1655 158 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXFixedText );
1656 158 : }
1657 :
1658 2 : OUString UnoControlFixedTextModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
1659 : {
1660 2 : return OUString::createFromAscii( szServiceName_UnoControlFixedTextModel );
1661 : }
1662 :
1663 3726 : uno::Any UnoControlFixedTextModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
1664 : {
1665 3726 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
1666 : {
1667 162 : uno::Any aAny;
1668 162 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlFixedText );
1669 162 : return aAny;
1670 : }
1671 3564 : else if ( nPropId == BASEPROPERTY_BORDER )
1672 : {
1673 162 : uno::Any aAny;
1674 162 : aAny <<= (sal_Int16)0;
1675 162 : return aAny;
1676 : }
1677 :
1678 3402 : return UnoControlModel::ImplGetDefaultValue( nPropId );
1679 : }
1680 :
1681 5848 : ::cppu::IPropertyArrayHelper& UnoControlFixedTextModel::getInfoHelper()
1682 : {
1683 : static UnoPropertyArrayHelper* pHelper = NULL;
1684 5848 : if ( !pHelper )
1685 : {
1686 6 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
1687 6 : pHelper = new UnoPropertyArrayHelper( aIDs );
1688 : }
1689 5848 : return *pHelper;
1690 : }
1691 :
1692 : // beans::XMultiPropertySet
1693 192 : uno::Reference< beans::XPropertySetInfo > UnoControlFixedTextModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
1694 : {
1695 192 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
1696 192 : return xInfo;
1697 : }
1698 :
1699 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1700 158 : stardiv_Toolkit_UnoControlFixedTextModel_get_implementation(
1701 : css::uno::XComponentContext *context,
1702 : css::uno::Sequence<css::uno::Any> const &)
1703 : {
1704 158 : return cppu::acquire(new UnoControlFixedTextModel(context));
1705 : }
1706 :
1707 :
1708 : // class UnoFixedTextControl
1709 :
1710 24 : UnoFixedTextControl::UnoFixedTextControl()
1711 24 : :UnoControlBase()
1712 : {
1713 24 : maComponentInfos.nWidth = 100;
1714 24 : maComponentInfos.nHeight = 12;
1715 24 : }
1716 :
1717 4 : OUString UnoFixedTextControl::GetComponentServiceName()
1718 : {
1719 4 : return OUString("fixedtext");
1720 : }
1721 :
1722 : // uno::XInterface
1723 160 : uno::Any UnoFixedTextControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
1724 : {
1725 : uno::Any aRet = ::cppu::queryInterface( rType,
1726 : (static_cast< awt::XFixedText* >(this)),
1727 160 : (static_cast< awt::XLayoutConstrains* >(this)) );
1728 160 : return (aRet.hasValue() ? aRet : UnoControlBase::queryAggregation( rType ));
1729 : }
1730 :
1731 : // lang::XTypeProvider
1732 0 : IMPL_XTYPEPROVIDER_START( UnoFixedTextControl )
1733 0 : cppu::UnoType<awt::XFixedText>::get(),
1734 0 : cppu::UnoType<awt::XLayoutConstrains>::get(),
1735 : UnoControlBase::getTypes()
1736 0 : IMPL_XTYPEPROVIDER_END
1737 :
1738 2 : sal_Bool UnoFixedTextControl::isTransparent() throw(uno::RuntimeException, std::exception)
1739 : {
1740 2 : return sal_True;
1741 : }
1742 :
1743 4 : void UnoFixedTextControl::setText( const OUString& Text ) throw(uno::RuntimeException, std::exception)
1744 : {
1745 4 : uno::Any aAny;
1746 4 : aAny <<= Text;
1747 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_LABEL ), aAny, true );
1748 4 : }
1749 :
1750 4 : OUString UnoFixedTextControl::getText() throw(uno::RuntimeException, std::exception)
1751 : {
1752 4 : return ImplGetPropertyValue_UString( BASEPROPERTY_LABEL );
1753 : }
1754 :
1755 2 : void UnoFixedTextControl::setAlignment( short nAlign ) throw(uno::RuntimeException, std::exception)
1756 : {
1757 2 : uno::Any aAny;
1758 2 : aAny <<= (sal_Int16)nAlign;
1759 2 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_ALIGN ), aAny, true );
1760 2 : }
1761 :
1762 4 : short UnoFixedTextControl::getAlignment() throw(uno::RuntimeException, std::exception)
1763 : {
1764 4 : short nAlign = 0;
1765 4 : if ( mxModel.is() )
1766 : {
1767 4 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_ALIGN ) );
1768 4 : aVal >>= nAlign;
1769 : }
1770 4 : return nAlign;
1771 : }
1772 :
1773 2 : awt::Size UnoFixedTextControl::getMinimumSize( ) throw(uno::RuntimeException, std::exception)
1774 : {
1775 2 : return Impl_getMinimumSize();
1776 : }
1777 :
1778 2 : awt::Size UnoFixedTextControl::getPreferredSize( ) throw(uno::RuntimeException, std::exception)
1779 : {
1780 2 : return Impl_getPreferredSize();
1781 : }
1782 :
1783 2 : awt::Size UnoFixedTextControl::calcAdjustedSize( const awt::Size& rNewSize ) throw(uno::RuntimeException, std::exception)
1784 : {
1785 2 : return Impl_calcAdjustedSize( rNewSize );
1786 : }
1787 :
1788 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1789 24 : stardiv_Toolkit_UnoFixedTextControl_get_implementation(
1790 : css::uno::XComponentContext *,
1791 : css::uno::Sequence<css::uno::Any> const &)
1792 : {
1793 24 : return cppu::acquire(new UnoFixedTextControl());
1794 : }
1795 :
1796 :
1797 : // class UnoControlGroupBoxModel
1798 :
1799 38 : UnoControlGroupBoxModel::UnoControlGroupBoxModel( const Reference< XComponentContext >& rxContext )
1800 38 : :UnoControlModel( rxContext )
1801 : {
1802 38 : ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL );
1803 38 : ImplRegisterProperty( BASEPROPERTY_ENABLED );
1804 38 : ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE );
1805 38 : ImplRegisterProperty( BASEPROPERTY_FONTDESCRIPTOR );
1806 38 : ImplRegisterProperty( BASEPROPERTY_HELPTEXT );
1807 38 : ImplRegisterProperty( BASEPROPERTY_HELPURL );
1808 38 : ImplRegisterProperty( BASEPROPERTY_LABEL );
1809 38 : ImplRegisterProperty( BASEPROPERTY_PRINTABLE );
1810 38 : ImplRegisterProperty( BASEPROPERTY_WRITING_MODE );
1811 38 : ImplRegisterProperty( BASEPROPERTY_CONTEXT_WRITING_MODE );
1812 38 : }
1813 :
1814 2 : OUString UnoControlGroupBoxModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
1815 : {
1816 2 : return OUString::createFromAscii( szServiceName_UnoControlGroupBoxModel );
1817 : }
1818 :
1819 592 : uno::Any UnoControlGroupBoxModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
1820 : {
1821 592 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
1822 : {
1823 42 : uno::Any aAny;
1824 42 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlGroupBox );
1825 42 : return aAny;
1826 : }
1827 550 : return UnoControlModel::ImplGetDefaultValue( nPropId );
1828 : }
1829 :
1830 6664 : ::cppu::IPropertyArrayHelper& UnoControlGroupBoxModel::getInfoHelper()
1831 : {
1832 : static UnoPropertyArrayHelper* pHelper = NULL;
1833 6664 : if ( !pHelper )
1834 : {
1835 10 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
1836 10 : pHelper = new UnoPropertyArrayHelper( aIDs );
1837 : }
1838 6664 : return *pHelper;
1839 : }
1840 :
1841 : // beans::XMultiPropertySet
1842 96 : uno::Reference< beans::XPropertySetInfo > UnoControlGroupBoxModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
1843 : {
1844 96 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
1845 96 : return xInfo;
1846 : }
1847 :
1848 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1849 36 : stardiv_Toolkit_UnoControlGroupBoxModel_get_implementation(
1850 : css::uno::XComponentContext *context,
1851 : css::uno::Sequence<css::uno::Any> const &)
1852 : {
1853 36 : return cppu::acquire(new UnoControlGroupBoxModel(context));
1854 : }
1855 :
1856 :
1857 : // class UnoGroupBoxControl
1858 :
1859 26 : UnoGroupBoxControl::UnoGroupBoxControl()
1860 26 : :UnoControlBase()
1861 : {
1862 26 : maComponentInfos.nWidth = 100;
1863 26 : maComponentInfos.nHeight = 100;
1864 26 : }
1865 :
1866 26 : OUString UnoGroupBoxControl::GetComponentServiceName()
1867 : {
1868 26 : return OUString("groupbox");
1869 : }
1870 :
1871 4 : sal_Bool UnoGroupBoxControl::isTransparent() throw(uno::RuntimeException, std::exception)
1872 : {
1873 4 : return sal_True;
1874 : }
1875 :
1876 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
1877 26 : stardiv_Toolkit_UnoGroupBoxControl_get_implementation(
1878 : css::uno::XComponentContext *,
1879 : css::uno::Sequence<css::uno::Any> const &)
1880 : {
1881 26 : return cppu::acquire(new UnoGroupBoxControl());
1882 : }
1883 :
1884 :
1885 : // = UnoControlListBoxModel_Data
1886 :
1887 1772 : struct ListItem
1888 : {
1889 : OUString ItemText;
1890 : OUString ItemImageURL;
1891 : Any ItemData;
1892 :
1893 356 : ListItem()
1894 : :ItemText()
1895 : ,ItemImageURL()
1896 356 : ,ItemData()
1897 : {
1898 356 : }
1899 :
1900 356 : ListItem( const OUString& i_rItemText )
1901 : :ItemText( i_rItemText )
1902 : ,ItemImageURL()
1903 356 : ,ItemData()
1904 : {
1905 356 : }
1906 : };
1907 :
1908 : typedef beans::Pair< OUString, OUString > UnoListItem;
1909 :
1910 : struct StripItemData : public ::std::unary_function< ListItem, UnoListItem >
1911 : {
1912 224 : UnoListItem operator()( const ListItem& i_rItem )
1913 : {
1914 224 : return UnoListItem( i_rItem.ItemText, i_rItem.ItemImageURL );
1915 : }
1916 : };
1917 :
1918 94 : struct UnoControlListBoxModel_Data
1919 : {
1920 102 : UnoControlListBoxModel_Data( UnoControlListBoxModel& i_rAntiImpl )
1921 : :m_bSettingLegacyProperty( false )
1922 : ,m_rAntiImpl( i_rAntiImpl )
1923 102 : ,m_aListItems()
1924 : {
1925 102 : }
1926 :
1927 0 : sal_Int32 getItemCount() const { return sal_Int32( m_aListItems.size() ); }
1928 :
1929 0 : const ListItem& getItem( const sal_Int32 i_nIndex ) const
1930 : {
1931 0 : if ( ( i_nIndex < 0 ) || ( i_nIndex >= sal_Int32( m_aListItems.size() ) ) )
1932 0 : throw IndexOutOfBoundsException( OUString(), m_rAntiImpl );
1933 0 : return m_aListItems[ i_nIndex ];
1934 : }
1935 :
1936 0 : ListItem& getItem( const sal_Int32 i_nIndex )
1937 : {
1938 0 : return const_cast< ListItem& >( static_cast< const UnoControlListBoxModel_Data* >( this )->getItem( i_nIndex ) );
1939 : }
1940 :
1941 0 : ListItem& insertItem( const sal_Int32 i_nIndex )
1942 : {
1943 0 : if ( ( i_nIndex < 0 ) || ( i_nIndex > sal_Int32( m_aListItems.size() ) ) )
1944 0 : throw IndexOutOfBoundsException( OUString(), m_rAntiImpl );
1945 0 : return *m_aListItems.insert( m_aListItems.begin() + i_nIndex, ListItem() );
1946 : }
1947 :
1948 158 : Sequence< UnoListItem > getAllItems() const
1949 : {
1950 158 : Sequence< UnoListItem > aItems( sal_Int32( m_aListItems.size() ) );
1951 158 : ::std::transform( m_aListItems.begin(), m_aListItems.end(), aItems.getArray(), StripItemData() );
1952 158 : return aItems;
1953 : }
1954 :
1955 8 : void copyItems( const UnoControlListBoxModel_Data& i_copySource )
1956 : {
1957 8 : m_aListItems = i_copySource.m_aListItems;
1958 8 : }
1959 :
1960 138 : void setAllItems( const ::std::vector< ListItem >& i_rItems )
1961 : {
1962 138 : m_aListItems = i_rItems;
1963 138 : }
1964 :
1965 0 : void removeItem( const sal_Int32 i_nIndex )
1966 : {
1967 0 : if ( ( i_nIndex < 0 ) || ( i_nIndex >= sal_Int32( m_aListItems.size() ) ) )
1968 0 : throw IndexOutOfBoundsException( OUString(), m_rAntiImpl );
1969 0 : m_aListItems.erase( m_aListItems.begin() + i_nIndex );
1970 0 : }
1971 :
1972 0 : void removeAllItems()
1973 : {
1974 0 : ::std::vector< ListItem > aEmpty;
1975 0 : m_aListItems.swap( aEmpty );
1976 0 : }
1977 :
1978 : public:
1979 : bool m_bSettingLegacyProperty;
1980 :
1981 : private:
1982 : UnoControlListBoxModel& m_rAntiImpl;
1983 : ::std::vector< ListItem > m_aListItems;
1984 : };
1985 :
1986 :
1987 : // = UnoControlListBoxModel
1988 :
1989 :
1990 94 : UnoControlListBoxModel::UnoControlListBoxModel( const Reference< XComponentContext >& rxContext, ConstructorMode const i_mode )
1991 : :UnoControlListBoxModel_Base( rxContext )
1992 94 : ,m_pData( new UnoControlListBoxModel_Data( *this ) )
1993 188 : ,m_aItemListListeners( GetMutex() )
1994 : {
1995 94 : if ( i_mode == ConstructDefault )
1996 : {
1997 28 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXListBox );
1998 : }
1999 94 : }
2000 :
2001 8 : UnoControlListBoxModel::UnoControlListBoxModel( const UnoControlListBoxModel& i_rSource )
2002 : :UnoControlListBoxModel_Base( i_rSource )
2003 8 : ,m_pData( new UnoControlListBoxModel_Data( *this ) )
2004 16 : ,m_aItemListListeners( GetMutex() )
2005 : {
2006 8 : m_pData->copyItems( *i_rSource.m_pData );
2007 8 : }
2008 122 : UnoControlListBoxModel::~UnoControlListBoxModel()
2009 : {
2010 122 : }
2011 192 : IMPL_SERVICEINFO_DERIVED( UnoControlListBoxModel, UnoControlModel, szServiceName2_UnoControlListBoxModel )
2012 :
2013 2 : OUString UnoControlListBoxModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
2014 : {
2015 2 : return OUString::createFromAscii( szServiceName_UnoControlListBoxModel );
2016 : }
2017 :
2018 :
2019 928 : uno::Any UnoControlListBoxModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
2020 : {
2021 928 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
2022 : {
2023 32 : uno::Any aAny;
2024 32 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlListBox );
2025 32 : return aAny;
2026 : }
2027 896 : return UnoControlModel::ImplGetDefaultValue( nPropId );
2028 : }
2029 :
2030 :
2031 12151 : ::cppu::IPropertyArrayHelper& UnoControlListBoxModel::getInfoHelper()
2032 : {
2033 : static UnoPropertyArrayHelper* pHelper = NULL;
2034 12151 : if ( !pHelper )
2035 : {
2036 8 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
2037 8 : pHelper = new UnoPropertyArrayHelper( aIDs );
2038 : }
2039 12151 : return *pHelper;
2040 : }
2041 :
2042 :
2043 : // beans::XMultiPropertySet
2044 150 : uno::Reference< beans::XPropertySetInfo > UnoControlListBoxModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
2045 : {
2046 150 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
2047 150 : return xInfo;
2048 : }
2049 :
2050 :
2051 : namespace
2052 : {
2053 : struct CreateListItem : public ::std::unary_function< OUString, ListItem >
2054 : {
2055 356 : ListItem operator()( const OUString& i_rItemText )
2056 : {
2057 356 : return ListItem( i_rItemText );
2058 : }
2059 : };
2060 : }
2061 :
2062 :
2063 1161 : void SAL_CALL UnoControlListBoxModel::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const uno::Any& rValue ) throw (uno::Exception, std::exception)
2064 : {
2065 1161 : UnoControlModel::setFastPropertyValue_NoBroadcast( nHandle, rValue );
2066 :
2067 1161 : if ( nHandle == BASEPROPERTY_STRINGITEMLIST )
2068 : {
2069 : // reset selection
2070 52 : uno::Sequence<sal_Int16> aSeq;
2071 104 : uno::Any aAny;
2072 52 : aAny <<= aSeq;
2073 52 : setDependentFastPropertyValue( BASEPROPERTY_SELECTEDITEMS, aAny );
2074 :
2075 52 : if ( !m_pData->m_bSettingLegacyProperty )
2076 : {
2077 : // synchronize the legacy StringItemList property with our list items
2078 52 : Sequence< OUString > aStringItemList;
2079 104 : Any aPropValue;
2080 52 : getFastPropertyValue( aPropValue, BASEPROPERTY_STRINGITEMLIST );
2081 52 : OSL_VERIFY( aPropValue >>= aStringItemList );
2082 :
2083 104 : ::std::vector< ListItem > aItems( aStringItemList.getLength() );
2084 : ::std::transform(
2085 : aStringItemList.getConstArray(),
2086 52 : aStringItemList.getConstArray() + aStringItemList.getLength(),
2087 : aItems.begin(),
2088 : CreateListItem()
2089 104 : );
2090 52 : m_pData->setAllItems( aItems );
2091 :
2092 : // since an XItemListListener does not have a "all items modified" or some such method,
2093 : // we simulate this by notifying removal of all items, followed by insertion of all new
2094 : // items
2095 104 : lang::EventObject aEvent;
2096 52 : aEvent.Source = *this;
2097 104 : m_aItemListListeners.notifyEach( &XItemListListener::itemListChanged, aEvent );
2098 : // TODO: OPropertySetHelper calls into this method with the mutex locked ...
2099 : // which is wrong for the above notifications ...
2100 52 : }
2101 : }
2102 1161 : }
2103 :
2104 :
2105 360 : void UnoControlListBoxModel::ImplNormalizePropertySequence( const sal_Int32 _nCount, sal_Int32* _pHandles,
2106 : uno::Any* _pValues, sal_Int32* _pValidHandles ) const
2107 : {
2108 : // dependencies we know:
2109 : // BASEPROPERTY_STRINGITEMLIST->BASEPROPERTY_SELECTEDITEMS
2110 360 : ImplEnsureHandleOrder( _nCount, _pHandles, _pValues, BASEPROPERTY_STRINGITEMLIST, BASEPROPERTY_SELECTEDITEMS );
2111 :
2112 360 : UnoControlModel::ImplNormalizePropertySequence( _nCount, _pHandles, _pValues, _pValidHandles );
2113 360 : }
2114 :
2115 :
2116 0 : ::sal_Int32 SAL_CALL UnoControlListBoxModel::getItemCount() throw (RuntimeException, std::exception)
2117 : {
2118 0 : ::osl::MutexGuard aGuard( GetMutex() );
2119 0 : return m_pData->getItemCount();
2120 : }
2121 :
2122 :
2123 0 : void SAL_CALL UnoControlListBoxModel::insertItem( ::sal_Int32 i_nPosition, const OUString& i_rItemText, const OUString& i_rItemImageURL ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2124 : {
2125 0 : ::osl::ClearableMutexGuard aGuard( GetMutex() );
2126 : // SYNCHRONIZED ----->
2127 0 : ListItem& rItem( m_pData->insertItem( i_nPosition ) );
2128 0 : rItem.ItemText = i_rItemText;
2129 0 : rItem.ItemImageURL = i_rItemImageURL;
2130 :
2131 0 : impl_handleInsert( i_nPosition, i_rItemText, i_rItemImageURL, aGuard );
2132 : // <----- SYNCHRONIZED
2133 0 : }
2134 :
2135 :
2136 0 : void SAL_CALL UnoControlListBoxModel::insertItemText( ::sal_Int32 i_nPosition, const OUString& i_rItemText ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2137 : {
2138 0 : ::osl::ClearableMutexGuard aGuard( GetMutex() );
2139 : // SYNCHRONIZED ----->
2140 0 : ListItem& rItem( m_pData->insertItem( i_nPosition ) );
2141 0 : rItem.ItemText = i_rItemText;
2142 :
2143 0 : impl_handleInsert( i_nPosition, i_rItemText, ::boost::optional< OUString >(), aGuard );
2144 : // <----- SYNCHRONIZED
2145 0 : }
2146 :
2147 :
2148 0 : void SAL_CALL UnoControlListBoxModel::insertItemImage( ::sal_Int32 i_nPosition, const OUString& i_rItemImageURL ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2149 : {
2150 0 : ::osl::ClearableMutexGuard aGuard( GetMutex() );
2151 : // SYNCHRONIZED ----->
2152 0 : ListItem& rItem( m_pData->insertItem( i_nPosition ) );
2153 0 : rItem.ItemImageURL = i_rItemImageURL;
2154 :
2155 0 : impl_handleInsert( i_nPosition, ::boost::optional< OUString >(), i_rItemImageURL, aGuard );
2156 : // <----- SYNCHRONIZED
2157 0 : }
2158 :
2159 :
2160 0 : void SAL_CALL UnoControlListBoxModel::removeItem( ::sal_Int32 i_nPosition ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2161 : {
2162 0 : ::osl::ClearableMutexGuard aGuard( GetMutex() );
2163 : // SYNCHRONIZED ----->
2164 0 : m_pData->removeItem( i_nPosition );
2165 :
2166 0 : impl_handleRemove( i_nPosition, aGuard );
2167 : // <----- SYNCHRONIZED
2168 0 : }
2169 :
2170 :
2171 0 : void SAL_CALL UnoControlListBoxModel::removeAllItems( ) throw (::com::sun::star::uno::RuntimeException, std::exception)
2172 : {
2173 0 : ::osl::ClearableMutexGuard aGuard( GetMutex() );
2174 : // SYNCHRONIZED ----->
2175 0 : m_pData->removeAllItems();
2176 :
2177 0 : impl_handleRemove( -1, aGuard );
2178 : // <----- SYNCHRONIZED
2179 0 : }
2180 :
2181 :
2182 0 : void SAL_CALL UnoControlListBoxModel::setItemText( ::sal_Int32 i_nPosition, const OUString& i_rItemText ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2183 : {
2184 0 : ::osl::ClearableMutexGuard aGuard( GetMutex() );
2185 : // SYNCHRONIZED ----->
2186 0 : ListItem& rItem( m_pData->getItem( i_nPosition ) );
2187 0 : rItem.ItemText = i_rItemText;
2188 :
2189 0 : impl_handleModify( i_nPosition, i_rItemText, ::boost::optional< OUString >(), aGuard );
2190 : // <----- SYNCHRONIZED
2191 0 : }
2192 :
2193 :
2194 0 : void SAL_CALL UnoControlListBoxModel::setItemImage( ::sal_Int32 i_nPosition, const OUString& i_rItemImageURL ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2195 : {
2196 0 : ::osl::ClearableMutexGuard aGuard( GetMutex() );
2197 : // SYNCHRONIZED ----->
2198 0 : ListItem& rItem( m_pData->getItem( i_nPosition ) );
2199 0 : rItem.ItemImageURL = i_rItemImageURL;
2200 :
2201 0 : impl_handleModify( i_nPosition, ::boost::optional< OUString >(), i_rItemImageURL, aGuard );
2202 : // <----- SYNCHRONIZED
2203 0 : }
2204 :
2205 :
2206 0 : void SAL_CALL UnoControlListBoxModel::setItemTextAndImage( ::sal_Int32 i_nPosition, const OUString& i_rItemText, const OUString& i_rItemImageURL ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2207 : {
2208 0 : ::osl::ClearableMutexGuard aGuard( GetMutex() );
2209 : // SYNCHRONIZED ----->
2210 0 : ListItem& rItem( m_pData->getItem( i_nPosition ) );
2211 0 : rItem.ItemText = i_rItemText;
2212 0 : rItem.ItemImageURL = i_rItemImageURL;
2213 :
2214 0 : impl_handleModify( i_nPosition, i_rItemText, i_rItemImageURL, aGuard );
2215 : // <----- SYNCHRONIZED
2216 0 : }
2217 :
2218 :
2219 0 : void SAL_CALL UnoControlListBoxModel::setItemData( ::sal_Int32 i_nPosition, const Any& i_rDataValue ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2220 : {
2221 0 : ::osl::ClearableMutexGuard aGuard( GetMutex() );
2222 0 : ListItem& rItem( m_pData->getItem( i_nPosition ) );
2223 0 : rItem.ItemData = i_rDataValue;
2224 0 : }
2225 :
2226 :
2227 0 : OUString SAL_CALL UnoControlListBoxModel::getItemText( ::sal_Int32 i_nPosition ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2228 : {
2229 0 : ::osl::MutexGuard aGuard( GetMutex() );
2230 0 : const ListItem& rItem( m_pData->getItem( i_nPosition ) );
2231 0 : return rItem.ItemText;
2232 : }
2233 :
2234 :
2235 0 : OUString SAL_CALL UnoControlListBoxModel::getItemImage( ::sal_Int32 i_nPosition ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2236 : {
2237 0 : ::osl::MutexGuard aGuard( GetMutex() );
2238 0 : const ListItem& rItem( m_pData->getItem( i_nPosition ) );
2239 0 : return rItem.ItemImageURL;
2240 : }
2241 :
2242 :
2243 0 : beans::Pair< OUString, OUString > SAL_CALL UnoControlListBoxModel::getItemTextAndImage( ::sal_Int32 i_nPosition ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2244 : {
2245 0 : ::osl::MutexGuard aGuard( GetMutex() );
2246 0 : const ListItem& rItem( m_pData->getItem( i_nPosition ) );
2247 0 : return beans::Pair< OUString, OUString >( rItem.ItemText, rItem.ItemImageURL );
2248 : }
2249 :
2250 :
2251 0 : Any SAL_CALL UnoControlListBoxModel::getItemData( ::sal_Int32 i_nPosition ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
2252 : {
2253 0 : ::osl::ClearableMutexGuard aGuard( GetMutex() );
2254 0 : const ListItem& rItem( m_pData->getItem( i_nPosition ) );
2255 0 : return rItem.ItemData;
2256 : }
2257 :
2258 :
2259 158 : Sequence< beans::Pair< OUString, OUString > > SAL_CALL UnoControlListBoxModel::getAllItems( ) throw (RuntimeException, std::exception)
2260 : {
2261 158 : ::osl::MutexGuard aGuard( GetMutex() );
2262 158 : return m_pData->getAllItems();
2263 : }
2264 :
2265 :
2266 42 : void SAL_CALL UnoControlListBoxModel::addItemListListener( const uno::Reference< awt::XItemListListener >& i_Listener ) throw (uno::RuntimeException, std::exception)
2267 : {
2268 42 : if ( i_Listener.is() )
2269 42 : m_aItemListListeners.addInterface( i_Listener );
2270 42 : }
2271 :
2272 :
2273 8 : void SAL_CALL UnoControlListBoxModel::removeItemListListener( const uno::Reference< awt::XItemListListener >& i_Listener ) throw (uno::RuntimeException, std::exception)
2274 : {
2275 8 : if ( i_Listener.is() )
2276 8 : m_aItemListListeners.removeInterface( i_Listener );
2277 8 : }
2278 :
2279 :
2280 0 : void UnoControlListBoxModel::impl_getStringItemList( ::std::vector< OUString >& o_rStringItems ) const
2281 : {
2282 0 : Sequence< OUString > aStringItemList;
2283 0 : Any aPropValue;
2284 0 : getFastPropertyValue( aPropValue, BASEPROPERTY_STRINGITEMLIST );
2285 0 : OSL_VERIFY( aPropValue >>= aStringItemList );
2286 :
2287 0 : o_rStringItems.resize( size_t( aStringItemList.getLength() ) );
2288 : ::std::copy(
2289 : aStringItemList.getConstArray(),
2290 0 : aStringItemList.getConstArray() + aStringItemList.getLength(),
2291 : o_rStringItems.begin()
2292 0 : );
2293 0 : }
2294 :
2295 :
2296 0 : void UnoControlListBoxModel::impl_setStringItemList_nolck( const ::std::vector< OUString >& i_rStringItems )
2297 : {
2298 0 : Sequence< OUString > aStringItems( i_rStringItems.size() );
2299 : ::std::copy(
2300 : i_rStringItems.begin(),
2301 : i_rStringItems.end(),
2302 : aStringItems.getArray()
2303 0 : );
2304 0 : m_pData->m_bSettingLegacyProperty = true;
2305 : try
2306 : {
2307 0 : setFastPropertyValue( BASEPROPERTY_STRINGITEMLIST, uno::makeAny( aStringItems ) );
2308 : }
2309 0 : catch( const Exception& )
2310 : {
2311 0 : m_pData->m_bSettingLegacyProperty = false;
2312 0 : throw;
2313 : }
2314 0 : m_pData->m_bSettingLegacyProperty = false;
2315 0 : }
2316 :
2317 :
2318 0 : void UnoControlListBoxModel::impl_handleInsert( const sal_Int32 i_nItemPosition, const ::boost::optional< OUString >& i_rItemText,
2319 : const ::boost::optional< OUString >& i_rItemImageURL, ::osl::ClearableMutexGuard& i_rClearBeforeNotify )
2320 : {
2321 : // SYNCHRONIZED ----->
2322 : // sync with legacy StringItemList property
2323 0 : ::std::vector< OUString > aStringItems;
2324 0 : impl_getStringItemList( aStringItems );
2325 : OSL_ENSURE( size_t( i_nItemPosition ) <= aStringItems.size(), "UnoControlListBoxModel::impl_handleInsert" );
2326 0 : if ( size_t( i_nItemPosition ) <= aStringItems.size() )
2327 : {
2328 0 : const OUString sItemText( !!i_rItemText ? *i_rItemText : OUString() );
2329 0 : aStringItems.insert( aStringItems.begin() + i_nItemPosition, sItemText );
2330 : }
2331 :
2332 0 : i_rClearBeforeNotify.clear();
2333 : // <----- SYNCHRONIZED
2334 0 : impl_setStringItemList_nolck( aStringItems );
2335 :
2336 : // notify ItemListListeners
2337 0 : impl_notifyItemListEvent_nolck( i_nItemPosition, i_rItemText, i_rItemImageURL, &XItemListListener::listItemInserted );
2338 0 : }
2339 :
2340 :
2341 0 : void UnoControlListBoxModel::impl_handleRemove( const sal_Int32 i_nItemPosition, ::osl::ClearableMutexGuard& i_rClearBeforeNotify )
2342 : {
2343 : // SYNCHRONIZED ----->
2344 0 : const bool bAllItems = ( i_nItemPosition < 0 );
2345 : // sync with legacy StringItemList property
2346 0 : ::std::vector< OUString > aStringItems;
2347 0 : impl_getStringItemList( aStringItems );
2348 0 : if ( !bAllItems )
2349 : {
2350 : OSL_ENSURE( size_t( i_nItemPosition ) < aStringItems.size(), "UnoControlListBoxModel::impl_handleRemove" );
2351 0 : if ( size_t( i_nItemPosition ) < aStringItems.size() )
2352 : {
2353 0 : aStringItems.erase( aStringItems.begin() + i_nItemPosition );
2354 : }
2355 : }
2356 : else
2357 : {
2358 0 : aStringItems.resize(0);
2359 : }
2360 :
2361 0 : i_rClearBeforeNotify.clear();
2362 : // <----- SYNCHRONIZED
2363 0 : impl_setStringItemList_nolck( aStringItems );
2364 :
2365 : // notify ItemListListeners
2366 0 : if ( bAllItems )
2367 : {
2368 0 : EventObject aEvent( *this );
2369 0 : m_aItemListListeners.notifyEach( &XItemListListener::allItemsRemoved, aEvent );
2370 : }
2371 : else
2372 : {
2373 : impl_notifyItemListEvent_nolck( i_nItemPosition, ::boost::optional< OUString >(), ::boost::optional< OUString >(),
2374 0 : &XItemListListener::listItemRemoved );
2375 0 : }
2376 0 : }
2377 :
2378 :
2379 0 : void UnoControlListBoxModel::impl_handleModify( const sal_Int32 i_nItemPosition, const ::boost::optional< OUString >& i_rItemText,
2380 : const ::boost::optional< OUString >& i_rItemImageURL, ::osl::ClearableMutexGuard& i_rClearBeforeNotify )
2381 : {
2382 : // SYNCHRONIZED ----->
2383 0 : if ( !!i_rItemText )
2384 : {
2385 : // sync with legacy StringItemList property
2386 0 : ::std::vector< OUString > aStringItems;
2387 0 : impl_getStringItemList( aStringItems );
2388 : OSL_ENSURE( size_t( i_nItemPosition ) < aStringItems.size(), "UnoControlListBoxModel::impl_handleModify" );
2389 0 : if ( size_t( i_nItemPosition ) < aStringItems.size() )
2390 : {
2391 0 : aStringItems[ i_nItemPosition] = *i_rItemText;
2392 : }
2393 :
2394 0 : i_rClearBeforeNotify.clear();
2395 : // <----- SYNCHRONIZED
2396 0 : impl_setStringItemList_nolck( aStringItems );
2397 : }
2398 : else
2399 : {
2400 0 : i_rClearBeforeNotify.clear();
2401 : // <----- SYNCHRONIZED
2402 : }
2403 :
2404 : // notify ItemListListeners
2405 0 : impl_notifyItemListEvent_nolck( i_nItemPosition, i_rItemText, i_rItemImageURL, &XItemListListener::listItemModified );
2406 0 : }
2407 :
2408 :
2409 0 : void UnoControlListBoxModel::impl_notifyItemListEvent_nolck( const sal_Int32 i_nItemPosition, const ::boost::optional< OUString >& i_rItemText,
2410 : const ::boost::optional< OUString >& i_rItemImageURL,
2411 : void ( SAL_CALL XItemListListener::*NotificationMethod )( const ItemListEvent& ) )
2412 : {
2413 0 : ItemListEvent aEvent;
2414 0 : aEvent.Source = *this;
2415 0 : aEvent.ItemPosition = i_nItemPosition;
2416 0 : if ( !!i_rItemText )
2417 : {
2418 0 : aEvent.ItemText.IsPresent = sal_True;
2419 0 : aEvent.ItemText.Value = *i_rItemText;
2420 : }
2421 0 : if ( !!i_rItemImageURL )
2422 : {
2423 0 : aEvent.ItemImageURL.IsPresent = sal_True;
2424 0 : aEvent.ItemImageURL.Value = *i_rItemImageURL;
2425 : }
2426 :
2427 0 : m_aItemListListeners.notifyEach( NotificationMethod, aEvent );
2428 0 : }
2429 :
2430 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
2431 26 : stardiv_Toolkit_UnoControlListBoxModel_get_implementation(
2432 : css::uno::XComponentContext *context,
2433 : css::uno::Sequence<css::uno::Any> const &)
2434 : {
2435 26 : return cppu::acquire(new UnoControlListBoxModel(context));
2436 : }
2437 :
2438 :
2439 : // class UnoListBoxControl
2440 :
2441 36 : UnoListBoxControl::UnoListBoxControl()
2442 : :UnoListBoxControl_Base()
2443 : ,maActionListeners( *this )
2444 36 : ,maItemListeners( *this )
2445 : {
2446 36 : maComponentInfos.nWidth = 100;
2447 36 : maComponentInfos.nHeight = 12;
2448 36 : }
2449 :
2450 40 : OUString UnoListBoxControl::GetComponentServiceName()
2451 : {
2452 40 : return OUString("listbox");
2453 : }
2454 0 : IMPL_SERVICEINFO_DERIVED( UnoListBoxControl, UnoControlBase, szServiceName2_UnoControlListBox )
2455 :
2456 16 : void UnoListBoxControl::dispose() throw(uno::RuntimeException, std::exception)
2457 : {
2458 16 : lang::EventObject aEvt;
2459 16 : aEvt.Source = (::cppu::OWeakObject*)this;
2460 16 : maActionListeners.disposeAndClear( aEvt );
2461 16 : maItemListeners.disposeAndClear( aEvt );
2462 16 : UnoControl::dispose();
2463 16 : }
2464 :
2465 0 : void UnoListBoxControl::ImplUpdateSelectedItemsProperty()
2466 : {
2467 0 : if ( getPeer().is() )
2468 : {
2469 0 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2470 : DBG_ASSERT( xListBox.is(), "XListBox?" );
2471 :
2472 0 : uno::Sequence<sal_Int16> aSeq = xListBox->getSelectedItemsPos();
2473 0 : uno::Any aAny;
2474 0 : aAny <<= aSeq;
2475 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_SELECTEDITEMS ), aAny, false );
2476 : }
2477 0 : }
2478 :
2479 40 : void UnoListBoxControl::updateFromModel()
2480 : {
2481 40 : UnoControlBase::updateFromModel();
2482 :
2483 40 : Reference< XItemListListener > xItemListListener( getPeer(), UNO_QUERY );
2484 80 : ENSURE_OR_RETURN_VOID( xItemListListener.is(), "UnoListBoxControl::updateFromModel: a peer which is no ItemListListener?!" );
2485 :
2486 80 : EventObject aEvent( getModel() );
2487 40 : xItemListListener->itemListChanged( aEvent );
2488 :
2489 : // notify the change of the SelectedItems property, again. While our base class, in updateFromModel,
2490 : // already did this, our peer(s) can only legitimately set the selection after they have the string
2491 : // item list, which we just notified with the itemListChanged call.
2492 80 : const OUString sSelectedItemsPropName( GetPropertyName( BASEPROPERTY_SELECTEDITEMS ) );
2493 80 : ImplSetPeerProperty( sSelectedItemsPropName, ImplGetPropertyValue( sSelectedItemsPropName ) );
2494 : }
2495 :
2496 3601 : void UnoListBoxControl::ImplSetPeerProperty( const OUString& rPropName, const uno::Any& rVal )
2497 : {
2498 3601 : if ( rPropName == GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) )
2499 : // do not forward this to our peer. We are a XItemListListener at our model, and changes in the string item
2500 : // list (which is a legacy property) will, later, arrive as changes in the ItemList. Those latter changes
2501 : // will be forwarded to the peer, which will update itself accordingly.
2502 3717 : return;
2503 :
2504 3485 : UnoControl::ImplSetPeerProperty( rPropName, rVal );
2505 : }
2506 :
2507 40 : void UnoListBoxControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
2508 : {
2509 40 : UnoControl::createPeer( rxToolkit, rParentPeer );
2510 :
2511 40 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2512 40 : xListBox->addItemListener( this );
2513 :
2514 40 : if ( maActionListeners.getLength() )
2515 0 : xListBox->addActionListener( &maActionListeners );
2516 40 : }
2517 :
2518 2 : void UnoListBoxControl::addActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
2519 : {
2520 2 : maActionListeners.addInterface( l );
2521 2 : if( getPeer().is() && maActionListeners.getLength() == 1 )
2522 : {
2523 2 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2524 2 : xListBox->addActionListener( &maActionListeners );
2525 : }
2526 2 : }
2527 :
2528 0 : void UnoListBoxControl::removeActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
2529 : {
2530 0 : if( getPeer().is() && maActionListeners.getLength() == 1 )
2531 : {
2532 0 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2533 0 : xListBox->removeActionListener( &maActionListeners );
2534 : }
2535 0 : maActionListeners.removeInterface( l );
2536 0 : }
2537 :
2538 36 : void UnoListBoxControl::addItemListener(const uno::Reference < awt::XItemListener > & l) throw(uno::RuntimeException, std::exception)
2539 : {
2540 36 : maItemListeners.addInterface( l );
2541 36 : }
2542 :
2543 0 : void UnoListBoxControl::removeItemListener(const uno::Reference < awt::XItemListener > & l) throw(uno::RuntimeException, std::exception)
2544 : {
2545 0 : maItemListeners.removeInterface( l );
2546 0 : }
2547 :
2548 0 : void UnoListBoxControl::addItem( const OUString& aItem, sal_Int16 nPos ) throw(uno::RuntimeException, std::exception)
2549 : {
2550 0 : uno::Sequence< OUString> aSeq( 1 );
2551 0 : aSeq.getArray()[0] = aItem;
2552 0 : addItems( aSeq, nPos );
2553 0 : }
2554 :
2555 0 : void UnoListBoxControl::addItems( const uno::Sequence< OUString>& aItems, sal_Int16 nPos ) throw(uno::RuntimeException, std::exception)
2556 : {
2557 0 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) );
2558 0 : uno::Sequence< OUString> aSeq;
2559 0 : aVal >>= aSeq;
2560 0 : sal_uInt16 nNewItems = (sal_uInt16)aItems.getLength();
2561 0 : sal_uInt16 nOldLen = (sal_uInt16)aSeq.getLength();
2562 0 : sal_uInt16 nNewLen = nOldLen + nNewItems;
2563 :
2564 0 : uno::Sequence< OUString> aNewSeq( nNewLen );
2565 0 : OUString* pNewData = aNewSeq.getArray();
2566 0 : OUString* pOldData = aSeq.getArray();
2567 :
2568 0 : if ( ( nPos < 0 ) || ( nPos > nOldLen ) )
2569 0 : nPos = (sal_uInt16) nOldLen;
2570 :
2571 : sal_uInt16 n;
2572 : // Items vor der Einfuege-Position
2573 0 : for ( n = 0; n < nPos; n++ )
2574 0 : pNewData[n] = pOldData[n];
2575 :
2576 : // Neue Items
2577 0 : for ( n = 0; n < nNewItems; n++ )
2578 0 : pNewData[nPos+n] = aItems.getConstArray()[n];
2579 :
2580 : // Rest der alten Items
2581 0 : for ( n = nPos; n < nOldLen; n++ )
2582 0 : pNewData[nNewItems+n] = pOldData[n];
2583 :
2584 0 : uno::Any aAny;
2585 0 : aAny <<= aNewSeq;
2586 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ), aAny, true );
2587 0 : }
2588 :
2589 0 : void UnoListBoxControl::removeItems( sal_Int16 nPos, sal_Int16 nCount ) throw(uno::RuntimeException, std::exception)
2590 : {
2591 0 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) );
2592 0 : uno::Sequence< OUString> aSeq;
2593 0 : aVal >>= aSeq;
2594 0 : sal_uInt16 nOldLen = (sal_uInt16)aSeq.getLength();
2595 0 : if ( nOldLen && ( nPos < nOldLen ) )
2596 : {
2597 0 : if ( nCount > ( nOldLen-nPos ) )
2598 0 : nCount = nOldLen-nPos;
2599 :
2600 0 : sal_uInt16 nNewLen = nOldLen - nCount;
2601 :
2602 0 : uno::Sequence< OUString> aNewSeq( nNewLen );
2603 0 : OUString* pNewData = aNewSeq.getArray();
2604 0 : OUString* pOldData = aSeq.getArray();
2605 :
2606 : sal_uInt16 n;
2607 : // Items vor der Entfern-Position
2608 0 : for ( n = 0; n < nPos; n++ )
2609 0 : pNewData[n] = pOldData[n];
2610 :
2611 : // Rest der Items
2612 0 : for ( n = nPos; n < (nOldLen-nCount); n++ )
2613 0 : pNewData[n] = pOldData[n+nCount];
2614 :
2615 0 : uno::Any aAny;
2616 0 : aAny <<= aNewSeq;
2617 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ), aAny, true );
2618 0 : }
2619 0 : }
2620 :
2621 0 : sal_Int16 UnoListBoxControl::getItemCount() throw(uno::RuntimeException, std::exception)
2622 : {
2623 0 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) );
2624 0 : uno::Sequence< OUString> aSeq;
2625 0 : aVal >>= aSeq;
2626 0 : return (sal_Int16)aSeq.getLength();
2627 : }
2628 :
2629 0 : OUString UnoListBoxControl::getItem( sal_Int16 nPos ) throw(uno::RuntimeException, std::exception)
2630 : {
2631 0 : OUString aItem;
2632 0 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) );
2633 0 : uno::Sequence< OUString> aSeq;
2634 0 : aVal >>= aSeq;
2635 0 : if ( nPos < aSeq.getLength() )
2636 0 : aItem = aSeq.getConstArray()[nPos];
2637 0 : return aItem;
2638 : }
2639 :
2640 0 : uno::Sequence< OUString> UnoListBoxControl::getItems() throw(uno::RuntimeException, std::exception)
2641 : {
2642 0 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) );
2643 0 : uno::Sequence< OUString> aSeq;
2644 0 : aVal >>= aSeq;
2645 0 : return aSeq;
2646 : }
2647 :
2648 0 : sal_Int16 UnoListBoxControl::getSelectedItemPos() throw(uno::RuntimeException, std::exception)
2649 : {
2650 0 : sal_Int16 n = -1;
2651 0 : if ( getPeer().is() )
2652 : {
2653 0 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2654 0 : n = xListBox->getSelectedItemPos();
2655 : }
2656 0 : return n;
2657 : }
2658 :
2659 0 : uno::Sequence<sal_Int16> UnoListBoxControl::getSelectedItemsPos() throw(uno::RuntimeException, std::exception)
2660 : {
2661 0 : uno::Sequence<sal_Int16> aSeq;
2662 0 : if ( getPeer().is() )
2663 : {
2664 0 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2665 0 : aSeq = xListBox->getSelectedItemsPos();
2666 : }
2667 0 : return aSeq;
2668 : }
2669 :
2670 0 : OUString UnoListBoxControl::getSelectedItem() throw(uno::RuntimeException, std::exception)
2671 : {
2672 0 : OUString aItem;
2673 0 : if ( getPeer().is() )
2674 : {
2675 0 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2676 0 : aItem = xListBox->getSelectedItem();
2677 : }
2678 0 : return aItem;
2679 : }
2680 :
2681 0 : uno::Sequence< OUString> UnoListBoxControl::getSelectedItems() throw(uno::RuntimeException, std::exception)
2682 : {
2683 0 : uno::Sequence< OUString> aSeq;
2684 0 : if ( getPeer().is() )
2685 : {
2686 0 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2687 0 : aSeq = xListBox->getSelectedItems();
2688 : }
2689 0 : return aSeq;
2690 : }
2691 :
2692 0 : void UnoListBoxControl::selectItemPos( sal_Int16 nPos, sal_Bool bSelect ) throw(uno::RuntimeException, std::exception)
2693 : {
2694 0 : if ( getPeer().is() )
2695 : {
2696 0 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2697 0 : xListBox->selectItemPos( nPos, bSelect );
2698 : }
2699 0 : ImplUpdateSelectedItemsProperty();
2700 0 : }
2701 :
2702 0 : void UnoListBoxControl::selectItemsPos( const uno::Sequence<sal_Int16>& aPositions, sal_Bool bSelect ) throw(uno::RuntimeException, std::exception)
2703 : {
2704 0 : if ( getPeer().is() )
2705 : {
2706 0 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2707 0 : xListBox->selectItemsPos( aPositions, bSelect );
2708 : }
2709 0 : ImplUpdateSelectedItemsProperty();
2710 0 : }
2711 :
2712 0 : void UnoListBoxControl::selectItem( const OUString& aItem, sal_Bool bSelect ) throw(uno::RuntimeException, std::exception)
2713 : {
2714 0 : if ( getPeer().is() )
2715 : {
2716 0 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2717 0 : xListBox->selectItem( aItem, bSelect );
2718 : }
2719 0 : ImplUpdateSelectedItemsProperty();
2720 0 : }
2721 :
2722 0 : void UnoListBoxControl::makeVisible( sal_Int16 nEntry ) throw(uno::RuntimeException, std::exception)
2723 : {
2724 0 : if ( getPeer().is() )
2725 : {
2726 0 : uno::Reference < awt::XListBox > xListBox( getPeer(), uno::UNO_QUERY );
2727 0 : xListBox->makeVisible( nEntry );
2728 : }
2729 0 : }
2730 :
2731 0 : void UnoListBoxControl::setDropDownLineCount( sal_Int16 nLines ) throw(uno::RuntimeException, std::exception)
2732 : {
2733 0 : uno::Any aAny;
2734 0 : aAny <<= (sal_Int16)nLines;
2735 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_LINECOUNT ), aAny, true );
2736 0 : }
2737 :
2738 0 : sal_Int16 UnoListBoxControl::getDropDownLineCount() throw(uno::RuntimeException, std::exception)
2739 : {
2740 0 : return ImplGetPropertyValue_INT16( BASEPROPERTY_LINECOUNT );
2741 : }
2742 :
2743 0 : sal_Bool UnoListBoxControl::isMutipleMode() throw(uno::RuntimeException, std::exception)
2744 : {
2745 0 : return ImplGetPropertyValue_BOOL( BASEPROPERTY_MULTISELECTION );
2746 : }
2747 :
2748 0 : void UnoListBoxControl::setMultipleMode( sal_Bool bMulti ) throw(uno::RuntimeException, std::exception)
2749 : {
2750 0 : uno::Any aAny;
2751 0 : aAny <<= bMulti;
2752 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_MULTISELECTION ), aAny, true );
2753 0 : }
2754 :
2755 0 : void UnoListBoxControl::itemStateChanged( const awt::ItemEvent& rEvent ) throw(uno::RuntimeException, std::exception)
2756 : {
2757 0 : ImplUpdateSelectedItemsProperty();
2758 0 : if ( maItemListeners.getLength() )
2759 : {
2760 : try
2761 : {
2762 0 : maItemListeners.itemStateChanged( rEvent );
2763 : }
2764 0 : catch( const Exception& e )
2765 : {
2766 : #if OSL_DEBUG_LEVEL == 0
2767 : (void) e; // suppress warning
2768 : #else
2769 : OString sMessage( "UnoListBoxControl::itemStateChanged: caught an exception:\n" );
2770 : sMessage += OString( e.Message.getStr(), e.Message.getLength(), RTL_TEXTENCODING_ASCII_US );
2771 : OSL_FAIL( sMessage.getStr() );
2772 : #endif
2773 : }
2774 : }
2775 0 : }
2776 :
2777 0 : awt::Size UnoListBoxControl::getMinimumSize( ) throw(uno::RuntimeException, std::exception)
2778 : {
2779 0 : return Impl_getMinimumSize();
2780 : }
2781 :
2782 0 : awt::Size UnoListBoxControl::getPreferredSize( ) throw(uno::RuntimeException, std::exception)
2783 : {
2784 0 : return Impl_getPreferredSize();
2785 : }
2786 :
2787 0 : awt::Size UnoListBoxControl::calcAdjustedSize( const awt::Size& rNewSize ) throw(uno::RuntimeException, std::exception)
2788 : {
2789 0 : return Impl_calcAdjustedSize( rNewSize );
2790 : }
2791 :
2792 0 : awt::Size UnoListBoxControl::getMinimumSize( sal_Int16 nCols, sal_Int16 nLines ) throw(uno::RuntimeException, std::exception)
2793 : {
2794 0 : return Impl_getMinimumSize( nCols, nLines );
2795 : }
2796 :
2797 0 : void UnoListBoxControl::getColumnsAndLines( sal_Int16& nCols, sal_Int16& nLines ) throw(uno::RuntimeException, std::exception)
2798 : {
2799 0 : Impl_getColumnsAndLines( nCols, nLines );
2800 0 : }
2801 :
2802 30 : sal_Bool SAL_CALL UnoListBoxControl::setModel( const uno::Reference< awt::XControlModel >& i_rModel ) throw ( uno::RuntimeException, std::exception )
2803 : {
2804 30 : ::osl::MutexGuard aGuard( GetMutex() );
2805 :
2806 60 : const Reference< XItemList > xOldItems( getModel(), UNO_QUERY );
2807 : OSL_ENSURE( xOldItems.is() || !getModel().is(), "UnoListBoxControl::setModel: illegal old model!" );
2808 60 : const Reference< XItemList > xNewItems( i_rModel, UNO_QUERY );
2809 : OSL_ENSURE( xNewItems.is() || !i_rModel.is(), "UnoListBoxControl::setModel: illegal new model!" );
2810 :
2811 30 : if ( !UnoListBoxControl_Base::setModel( i_rModel ) )
2812 16 : return sal_False;
2813 :
2814 14 : if ( xOldItems.is() )
2815 0 : xOldItems->removeItemListListener( this );
2816 14 : if ( xNewItems.is() )
2817 14 : xNewItems->addItemListListener( this );
2818 :
2819 44 : return sal_True;
2820 : }
2821 :
2822 0 : void SAL_CALL UnoListBoxControl::listItemInserted( const awt::ItemListEvent& i_rEvent ) throw (uno::RuntimeException, std::exception)
2823 : {
2824 0 : const Reference< XItemListListener > xPeerListener( getPeer(), UNO_QUERY );
2825 : OSL_ENSURE( xPeerListener.is() || !getPeer().is(), "UnoListBoxControl::listItemInserted: invalid peer!" );
2826 0 : if ( xPeerListener.is() )
2827 0 : xPeerListener->listItemInserted( i_rEvent );
2828 0 : }
2829 :
2830 0 : void SAL_CALL UnoListBoxControl::listItemRemoved( const awt::ItemListEvent& i_rEvent ) throw (uno::RuntimeException, std::exception)
2831 : {
2832 0 : const Reference< XItemListListener > xPeerListener( getPeer(), UNO_QUERY );
2833 : OSL_ENSURE( xPeerListener.is() || !getPeer().is(), "UnoListBoxControl::listItemRemoved: invalid peer!" );
2834 0 : if ( xPeerListener.is() )
2835 0 : xPeerListener->listItemRemoved( i_rEvent );
2836 0 : }
2837 :
2838 0 : void SAL_CALL UnoListBoxControl::listItemModified( const awt::ItemListEvent& i_rEvent ) throw (uno::RuntimeException, std::exception)
2839 : {
2840 0 : const Reference< XItemListListener > xPeerListener( getPeer(), UNO_QUERY );
2841 : OSL_ENSURE( xPeerListener.is() || !getPeer().is(), "UnoListBoxControl::listItemModified: invalid peer!" );
2842 0 : if ( xPeerListener.is() )
2843 0 : xPeerListener->listItemModified( i_rEvent );
2844 0 : }
2845 :
2846 0 : void SAL_CALL UnoListBoxControl::allItemsRemoved( const lang::EventObject& i_rEvent ) throw (uno::RuntimeException, std::exception)
2847 : {
2848 0 : const Reference< XItemListListener > xPeerListener( getPeer(), UNO_QUERY );
2849 : OSL_ENSURE( xPeerListener.is() || !getPeer().is(), "UnoListBoxControl::allItemsRemoved: invalid peer!" );
2850 0 : if ( xPeerListener.is() )
2851 0 : xPeerListener->allItemsRemoved( i_rEvent );
2852 0 : }
2853 :
2854 38 : void SAL_CALL UnoListBoxControl::itemListChanged( const lang::EventObject& i_rEvent ) throw (uno::RuntimeException, std::exception)
2855 : {
2856 38 : const Reference< XItemListListener > xPeerListener( getPeer(), UNO_QUERY );
2857 : OSL_ENSURE( xPeerListener.is() || !getPeer().is(), "UnoListBoxControl::itemListChanged: invalid peer!" );
2858 38 : if ( xPeerListener.is() )
2859 38 : xPeerListener->itemListChanged( i_rEvent );
2860 38 : }
2861 :
2862 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
2863 36 : stardiv_Toolkit_UnoListBoxControl_get_implementation(
2864 : css::uno::XComponentContext *,
2865 : css::uno::Sequence<css::uno::Any> const &)
2866 : {
2867 36 : return cppu::acquire(new UnoListBoxControl());
2868 : }
2869 :
2870 :
2871 : // class UnoControlComboBoxModel
2872 :
2873 66 : UnoControlComboBoxModel::UnoControlComboBoxModel( const Reference< XComponentContext >& rxContext )
2874 66 : :UnoControlListBoxModel( rxContext, ConstructWithoutProperties )
2875 : {
2876 66 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXComboBox );
2877 66 : }
2878 :
2879 68 : IMPL_SERVICEINFO_DERIVED( UnoControlComboBoxModel, UnoControlModel, szServiceName2_UnoControlComboBoxModel )
2880 :
2881 234 : uno::Reference< beans::XPropertySetInfo > UnoControlComboBoxModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
2882 : {
2883 234 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
2884 234 : return xInfo;
2885 : }
2886 :
2887 12991 : ::cppu::IPropertyArrayHelper& UnoControlComboBoxModel::getInfoHelper()
2888 : {
2889 : static UnoPropertyArrayHelper* pHelper = NULL;
2890 12991 : if ( !pHelper )
2891 : {
2892 16 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
2893 16 : pHelper = new UnoPropertyArrayHelper( aIDs );
2894 : }
2895 12991 : return *pHelper;
2896 : }
2897 :
2898 :
2899 2 : OUString UnoControlComboBoxModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
2900 : {
2901 2 : return OUString::createFromAscii( szServiceName_UnoControlComboBoxModel );
2902 : }
2903 1414 : void SAL_CALL UnoControlComboBoxModel::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const uno::Any& rValue ) throw (uno::Exception, std::exception)
2904 : {
2905 1414 : UnoControlModel::setFastPropertyValue_NoBroadcast( nHandle, rValue );
2906 :
2907 1414 : if ( nHandle == BASEPROPERTY_STRINGITEMLIST && !m_pData->m_bSettingLegacyProperty)
2908 : {
2909 : // synchronize the legacy StringItemList property with our list items
2910 86 : Sequence< OUString > aStringItemList;
2911 172 : Any aPropValue;
2912 86 : getFastPropertyValue( aPropValue, BASEPROPERTY_STRINGITEMLIST );
2913 86 : OSL_VERIFY( aPropValue >>= aStringItemList );
2914 :
2915 172 : ::std::vector< ListItem > aItems( aStringItemList.getLength() );
2916 : ::std::transform(
2917 : aStringItemList.getConstArray(),
2918 86 : aStringItemList.getConstArray() + aStringItemList.getLength(),
2919 : aItems.begin(),
2920 : CreateListItem()
2921 172 : );
2922 86 : m_pData->setAllItems( aItems );
2923 :
2924 : // since an XItemListListener does not have a "all items modified" or some such method,
2925 : // we simulate this by notifying removal of all items, followed by insertion of all new
2926 : // items
2927 172 : lang::EventObject aEvent;
2928 86 : aEvent.Source = *this;
2929 172 : m_aItemListListeners.notifyEach( &XItemListListener::itemListChanged, aEvent );
2930 : // TODO: OPropertySetHelper calls into this method with the mutex locked ...
2931 : // which is wrong for the above notifications ...
2932 : }
2933 1414 : }
2934 :
2935 1998 : uno::Any UnoControlComboBoxModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
2936 : {
2937 1998 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
2938 : {
2939 70 : uno::Any aAny;
2940 70 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlComboBox );
2941 70 : return aAny;
2942 : }
2943 1928 : return UnoControlModel::ImplGetDefaultValue( nPropId );
2944 : }
2945 :
2946 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
2947 64 : stardiv_Toolkit_UnoControlComboBoxModel_get_implementation(
2948 : css::uno::XComponentContext *context,
2949 : css::uno::Sequence<css::uno::Any> const &)
2950 : {
2951 64 : return cppu::acquire(new UnoControlComboBoxModel(context));
2952 : }
2953 :
2954 :
2955 : // class UnoComboBoxControl
2956 :
2957 34 : UnoComboBoxControl::UnoComboBoxControl()
2958 : :UnoEditControl()
2959 : ,maActionListeners( *this )
2960 34 : ,maItemListeners( *this )
2961 : {
2962 34 : maComponentInfos.nWidth = 100;
2963 34 : maComponentInfos.nHeight = 12;
2964 34 : }
2965 2 : IMPL_SERVICEINFO_DERIVED( UnoComboBoxControl, UnoEditControl, szServiceName2_UnoControlComboBox )
2966 :
2967 46 : OUString UnoComboBoxControl::GetComponentServiceName()
2968 : {
2969 46 : return OUString("combobox");
2970 : }
2971 :
2972 36 : void UnoComboBoxControl::dispose() throw(uno::RuntimeException, std::exception)
2973 : {
2974 36 : lang::EventObject aEvt;
2975 36 : aEvt.Source = (::cppu::OWeakObject*)this;
2976 36 : maActionListeners.disposeAndClear( aEvt );
2977 36 : maItemListeners.disposeAndClear( aEvt );
2978 36 : UnoControl::dispose();
2979 36 : }
2980 1056 : uno::Any UnoComboBoxControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
2981 : {
2982 : uno::Any aRet = ::cppu::queryInterface( rType,
2983 1056 : (static_cast< awt::XComboBox* >(this)) );
2984 1056 : if ( !aRet.hasValue() )
2985 : {
2986 2096 : aRet = ::cppu::queryInterface( rType,
2987 1048 : (static_cast< awt::XItemListener* >(this)) );
2988 1048 : if ( !aRet.hasValue() )
2989 : {
2990 2096 : aRet = ::cppu::queryInterface( rType,
2991 1048 : (static_cast< awt::XItemListListener* >(this)) );
2992 : }
2993 : }
2994 1056 : return (aRet.hasValue() ? aRet : UnoEditControl::queryAggregation( rType ));
2995 : }
2996 : // lang::XTypeProvider
2997 50 : IMPL_XTYPEPROVIDER_START( UnoComboBoxControl )
2998 2 : cppu::UnoType<awt::XComboBox>::get(),
2999 2 : cppu::UnoType<awt::XItemListener>::get(),
3000 2 : cppu::UnoType<awt::XItemListListener>::get(),
3001 : UnoEditControl::getTypes()
3002 4 : IMPL_XTYPEPROVIDER_END
3003 :
3004 46 : void UnoComboBoxControl::updateFromModel()
3005 : {
3006 46 : UnoEditControl::updateFromModel();
3007 :
3008 46 : Reference< XItemListListener > xItemListListener( getPeer(), UNO_QUERY );
3009 92 : ENSURE_OR_RETURN_VOID( xItemListListener.is(), "UnoComboBoxControl::updateFromModel: a peer which is no ItemListListener?!" );
3010 :
3011 92 : EventObject aEvent( getModel() );
3012 92 : xItemListListener->itemListChanged( aEvent );
3013 : }
3014 3801 : void UnoComboBoxControl::ImplSetPeerProperty( const OUString& rPropName, const uno::Any& rVal )
3015 : {
3016 3801 : if ( rPropName == GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) )
3017 : // do not forward this to our peer. We are a XItemListListener at our model, and changes in the string item
3018 : // list (which is a legacy property) will, later, arrive as changes in the ItemList. Those latter changes
3019 : // will be forwarded to the peer, which will update itself accordingly.
3020 3915 : return;
3021 :
3022 3687 : UnoEditControl::ImplSetPeerProperty( rPropName, rVal );
3023 : }
3024 50 : void UnoComboBoxControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
3025 : {
3026 50 : UnoEditControl::createPeer( rxToolkit, rParentPeer );
3027 :
3028 50 : uno::Reference < awt::XComboBox > xComboBox( getPeer(), uno::UNO_QUERY );
3029 50 : if ( maActionListeners.getLength() )
3030 0 : xComboBox->addActionListener( &maActionListeners );
3031 50 : if ( maItemListeners.getLength() )
3032 0 : xComboBox->addItemListener( &maItemListeners );
3033 50 : }
3034 :
3035 6 : void UnoComboBoxControl::addActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
3036 : {
3037 6 : maActionListeners.addInterface( l );
3038 6 : if( getPeer().is() && maActionListeners.getLength() == 1 )
3039 : {
3040 6 : uno::Reference < awt::XComboBox > xComboBox( getPeer(), uno::UNO_QUERY );
3041 6 : xComboBox->addActionListener( &maActionListeners );
3042 : }
3043 6 : }
3044 :
3045 0 : void UnoComboBoxControl::removeActionListener(const uno::Reference< awt::XActionListener > & l) throw(uno::RuntimeException, std::exception)
3046 : {
3047 0 : if( getPeer().is() && maActionListeners.getLength() == 1 )
3048 : {
3049 0 : uno::Reference < awt::XComboBox > xComboBox( getPeer(), uno::UNO_QUERY );
3050 0 : xComboBox->removeActionListener( &maActionListeners );
3051 : }
3052 0 : maActionListeners.removeInterface( l );
3053 0 : }
3054 :
3055 6 : void UnoComboBoxControl::addItemListener(const uno::Reference < awt::XItemListener > & l) throw(uno::RuntimeException, std::exception)
3056 : {
3057 6 : maItemListeners.addInterface( l );
3058 6 : if( getPeer().is() && maItemListeners.getLength() == 1 )
3059 : {
3060 6 : uno::Reference < awt::XComboBox > xComboBox( getPeer(), uno::UNO_QUERY );
3061 6 : xComboBox->addItemListener( &maItemListeners );
3062 : }
3063 6 : }
3064 :
3065 0 : void UnoComboBoxControl::removeItemListener(const uno::Reference < awt::XItemListener > & l) throw(uno::RuntimeException, std::exception)
3066 : {
3067 0 : if( getPeer().is() && maItemListeners.getLength() == 1 )
3068 : {
3069 : // This call is prettier than creating a Ref and calling query
3070 0 : uno::Reference < awt::XComboBox > xComboBox( getPeer(), uno::UNO_QUERY );
3071 0 : xComboBox->removeItemListener( &maItemListeners );
3072 : }
3073 0 : maItemListeners.removeInterface( l );
3074 0 : }
3075 0 : void UnoComboBoxControl::itemStateChanged( const awt::ItemEvent& rEvent ) throw(uno::RuntimeException, std::exception)
3076 : {
3077 0 : if ( maItemListeners.getLength() )
3078 : {
3079 : try
3080 : {
3081 0 : maItemListeners.itemStateChanged( rEvent );
3082 : }
3083 0 : catch( const Exception& e )
3084 : {
3085 : #if OSL_DEBUG_LEVEL == 0
3086 : (void) e; // suppress warning
3087 : #else
3088 : OString sMessage( "UnoComboBoxControl::itemStateChanged: caught an exception:\n" );
3089 : sMessage += OString( e.Message.getStr(), e.Message.getLength(), RTL_TEXTENCODING_ASCII_US );
3090 : OSL_FAIL( sMessage.getStr() );
3091 : #endif
3092 : }
3093 : }
3094 0 : }
3095 64 : sal_Bool SAL_CALL UnoComboBoxControl::setModel( const uno::Reference< awt::XControlModel >& i_rModel ) throw ( uno::RuntimeException, std::exception )
3096 : {
3097 64 : ::osl::MutexGuard aGuard( GetMutex() );
3098 :
3099 128 : const Reference< XItemList > xOldItems( getModel(), UNO_QUERY );
3100 : OSL_ENSURE( xOldItems.is() || !getModel().is(), "UnoComboBoxControl::setModel: illegal old model!" );
3101 128 : const Reference< XItemList > xNewItems( i_rModel, UNO_QUERY );
3102 : OSL_ENSURE( xNewItems.is() || !i_rModel.is(), "UnoComboBoxControl::setModel: illegal new model!" );
3103 :
3104 64 : if ( !UnoEditControl::setModel( i_rModel ) )
3105 36 : return sal_False;
3106 :
3107 28 : if ( xOldItems.is() )
3108 8 : xOldItems->removeItemListListener( this );
3109 28 : if ( xNewItems.is() )
3110 28 : xNewItems->addItemListListener( this );
3111 :
3112 92 : return sal_True;
3113 : }
3114 :
3115 0 : void SAL_CALL UnoComboBoxControl::listItemInserted( const awt::ItemListEvent& i_rEvent ) throw (uno::RuntimeException, std::exception)
3116 : {
3117 0 : const Reference< XItemListListener > xPeerListener( getPeer(), UNO_QUERY );
3118 : OSL_ENSURE( xPeerListener.is() || !getPeer().is(), "UnoComboBoxControl::listItemInserted: invalid peer!" );
3119 0 : if ( xPeerListener.is() )
3120 0 : xPeerListener->listItemInserted( i_rEvent );
3121 0 : }
3122 :
3123 0 : void SAL_CALL UnoComboBoxControl::listItemRemoved( const awt::ItemListEvent& i_rEvent ) throw (uno::RuntimeException, std::exception)
3124 : {
3125 0 : const Reference< XItemListListener > xPeerListener( getPeer(), UNO_QUERY );
3126 : OSL_ENSURE( xPeerListener.is() || !getPeer().is(), "UnoComboBoxControl::listItemRemoved: invalid peer!" );
3127 0 : if ( xPeerListener.is() )
3128 0 : xPeerListener->listItemRemoved( i_rEvent );
3129 0 : }
3130 :
3131 0 : void SAL_CALL UnoComboBoxControl::listItemModified( const awt::ItemListEvent& i_rEvent ) throw (uno::RuntimeException, std::exception)
3132 : {
3133 0 : const Reference< XItemListListener > xPeerListener( getPeer(), UNO_QUERY );
3134 : OSL_ENSURE( xPeerListener.is() || !getPeer().is(), "UnoComboBoxControl::listItemModified: invalid peer!" );
3135 0 : if ( xPeerListener.is() )
3136 0 : xPeerListener->listItemModified( i_rEvent );
3137 0 : }
3138 :
3139 0 : void SAL_CALL UnoComboBoxControl::allItemsRemoved( const lang::EventObject& i_rEvent ) throw (uno::RuntimeException, std::exception)
3140 : {
3141 0 : const Reference< XItemListListener > xPeerListener( getPeer(), UNO_QUERY );
3142 : OSL_ENSURE( xPeerListener.is() || !getPeer().is(), "UnoComboBoxControl::allItemsRemoved: invalid peer!" );
3143 0 : if ( xPeerListener.is() )
3144 0 : xPeerListener->allItemsRemoved( i_rEvent );
3145 0 : }
3146 :
3147 34 : void SAL_CALL UnoComboBoxControl::itemListChanged( const lang::EventObject& i_rEvent ) throw (uno::RuntimeException, std::exception)
3148 : {
3149 34 : const Reference< XItemListListener > xPeerListener( getPeer(), UNO_QUERY );
3150 : OSL_ENSURE( xPeerListener.is() || !getPeer().is(), "UnoComboBoxControl::itemListChanged: invalid peer!" );
3151 34 : if ( xPeerListener.is() )
3152 34 : xPeerListener->itemListChanged( i_rEvent );
3153 34 : }
3154 :
3155 4 : void UnoComboBoxControl::addItem( const OUString& aItem, sal_Int16 nPos ) throw(uno::RuntimeException, std::exception)
3156 : {
3157 4 : uno::Sequence< OUString> aSeq( 1 );
3158 4 : aSeq.getArray()[0] = aItem;
3159 4 : addItems( aSeq, nPos );
3160 4 : }
3161 :
3162 8 : void UnoComboBoxControl::addItems( const uno::Sequence< OUString>& aItems, sal_Int16 nPos ) throw(uno::RuntimeException, std::exception)
3163 : {
3164 8 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) );
3165 16 : uno::Sequence< OUString> aSeq;
3166 8 : aVal >>= aSeq;
3167 8 : sal_uInt16 nNewItems = (sal_uInt16)aItems.getLength();
3168 8 : sal_uInt16 nOldLen = (sal_uInt16)aSeq.getLength();
3169 8 : sal_uInt16 nNewLen = nOldLen + nNewItems;
3170 :
3171 16 : uno::Sequence< OUString> aNewSeq( nNewLen );
3172 8 : OUString* pNewData = aNewSeq.getArray();
3173 8 : const OUString* pOldData = aSeq.getConstArray();
3174 :
3175 8 : if ( ( nPos < 0 ) || ( nPos > nOldLen ) )
3176 0 : nPos = (sal_uInt16) nOldLen;
3177 :
3178 : sal_uInt16 n;
3179 : // items before the insert position
3180 12 : for ( n = 0; n < nPos; n++ )
3181 4 : pNewData[n] = pOldData[n];
3182 :
3183 : // New items
3184 20 : for ( n = 0; n < nNewItems; n++ )
3185 12 : pNewData[nPos+n] = aItems.getConstArray()[n];
3186 :
3187 : // remainder of old items
3188 8 : for ( n = nPos; n < nOldLen; n++ )
3189 0 : pNewData[nNewItems+n] = pOldData[n];
3190 :
3191 16 : uno::Any aAny;
3192 8 : aAny <<= aNewSeq;
3193 16 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ), aAny, true );
3194 8 : }
3195 :
3196 4 : void UnoComboBoxControl::removeItems( sal_Int16 nPos, sal_Int16 nCount ) throw(uno::RuntimeException, std::exception)
3197 : {
3198 4 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) );
3199 8 : uno::Sequence< OUString> aSeq;
3200 4 : aVal >>= aSeq;
3201 4 : sal_uInt16 nOldLen = (sal_uInt16)aSeq.getLength();
3202 4 : if ( nOldLen && ( nPos < nOldLen ) )
3203 : {
3204 4 : if ( nCount > ( nOldLen-nPos ) )
3205 0 : nCount = nOldLen-nPos;
3206 :
3207 4 : sal_uInt16 nNewLen = nOldLen - nCount;
3208 :
3209 4 : uno::Sequence< OUString> aNewSeq( nNewLen );
3210 4 : OUString* pNewData = aNewSeq.getArray();
3211 4 : OUString* pOldData = aSeq.getArray();
3212 :
3213 : sal_uInt16 n;
3214 : // items before the deletion position
3215 4 : for ( n = 0; n < nPos; n++ )
3216 0 : pNewData[n] = pOldData[n];
3217 :
3218 : // remainder of old items
3219 4 : for ( n = nPos; n < (nOldLen-nCount); n++ )
3220 0 : pNewData[n] = pOldData[n+nCount];
3221 :
3222 8 : uno::Any aAny;
3223 4 : aAny <<= aNewSeq;
3224 8 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ), aAny, true );
3225 4 : }
3226 4 : }
3227 :
3228 24 : sal_Int16 UnoComboBoxControl::getItemCount() throw(uno::RuntimeException, std::exception)
3229 : {
3230 24 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) );
3231 48 : uno::Sequence< OUString> aSeq;
3232 24 : aVal >>= aSeq;
3233 48 : return (sal_Int16)aSeq.getLength();
3234 : }
3235 :
3236 4 : OUString UnoComboBoxControl::getItem( sal_Int16 nPos ) throw(uno::RuntimeException, std::exception)
3237 : {
3238 4 : OUString aItem;
3239 8 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) );
3240 8 : uno::Sequence< OUString> aSeq;
3241 4 : aVal >>= aSeq;
3242 4 : if ( nPos < aSeq.getLength() )
3243 4 : aItem = aSeq.getConstArray()[nPos];
3244 8 : return aItem;
3245 : }
3246 :
3247 4 : uno::Sequence< OUString> UnoComboBoxControl::getItems() throw(uno::RuntimeException, std::exception)
3248 : {
3249 4 : uno::Any aVal = ImplGetPropertyValue( GetPropertyName( BASEPROPERTY_STRINGITEMLIST ) );
3250 4 : uno::Sequence< OUString> aSeq;
3251 4 : aVal >>= aSeq;
3252 4 : return aSeq;
3253 : }
3254 :
3255 4 : void UnoComboBoxControl::setDropDownLineCount( sal_Int16 nLines ) throw(uno::RuntimeException, std::exception)
3256 : {
3257 4 : uno::Any aAny;
3258 4 : aAny <<= nLines;
3259 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_LINECOUNT ), aAny, true );
3260 4 : }
3261 :
3262 8 : sal_Int16 UnoComboBoxControl::getDropDownLineCount() throw(uno::RuntimeException, std::exception)
3263 : {
3264 8 : return ImplGetPropertyValue_INT16( BASEPROPERTY_LINECOUNT );
3265 : }
3266 :
3267 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
3268 34 : stardiv_Toolkit_UnoComboBoxControl_get_implementation(
3269 : css::uno::XComponentContext *,
3270 : css::uno::Sequence<css::uno::Any> const &)
3271 : {
3272 34 : return cppu::acquire(new UnoComboBoxControl());
3273 : }
3274 :
3275 :
3276 : // UnoSpinFieldControl
3277 :
3278 78 : UnoSpinFieldControl::UnoSpinFieldControl()
3279 : :UnoEditControl()
3280 78 : ,maSpinListeners( *this )
3281 : {
3282 78 : mbRepeat = false;
3283 78 : }
3284 :
3285 : // uno::XInterface
3286 4074 : uno::Any UnoSpinFieldControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
3287 : {
3288 : uno::Any aRet = ::cppu::queryInterface( rType,
3289 4074 : (static_cast< awt::XSpinField* >(this)) );
3290 4074 : return (aRet.hasValue() ? aRet : UnoEditControl::queryAggregation( rType ));
3291 : }
3292 :
3293 : // lang::XTypeProvider
3294 0 : IMPL_XTYPEPROVIDER_START( UnoSpinFieldControl )
3295 0 : cppu::UnoType<awt::XSpinField>::get(),
3296 : UnoEditControl::getTypes()
3297 0 : IMPL_XTYPEPROVIDER_END
3298 :
3299 202 : void UnoSpinFieldControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
3300 : {
3301 202 : UnoEditControl::createPeer( rxToolkit, rParentPeer );
3302 :
3303 202 : uno::Reference < awt::XSpinField > xField( getPeer(), uno::UNO_QUERY );
3304 202 : xField->enableRepeat( mbRepeat );
3305 202 : if ( maSpinListeners.getLength() )
3306 0 : xField->addSpinListener( &maSpinListeners );
3307 202 : }
3308 :
3309 : // ::com::sun::star::awt::XSpinField
3310 22 : void UnoSpinFieldControl::addSpinListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XSpinListener >& l ) throw(::com::sun::star::uno::RuntimeException, std::exception)
3311 : {
3312 22 : maSpinListeners.addInterface( l );
3313 22 : if( getPeer().is() && maSpinListeners.getLength() == 1 )
3314 : {
3315 22 : uno::Reference < awt::XSpinField > xField( getPeer(), uno::UNO_QUERY );
3316 22 : xField->addSpinListener( &maSpinListeners );
3317 : }
3318 22 : }
3319 :
3320 22 : void UnoSpinFieldControl::removeSpinListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XSpinListener >& l ) throw(::com::sun::star::uno::RuntimeException, std::exception)
3321 : {
3322 22 : if( getPeer().is() && maSpinListeners.getLength() == 1 )
3323 : {
3324 22 : uno::Reference < awt::XSpinField > xField( getPeer(), uno::UNO_QUERY );
3325 22 : xField->removeSpinListener( &maSpinListeners );
3326 : }
3327 22 : maSpinListeners.removeInterface( l );
3328 22 : }
3329 :
3330 44 : void UnoSpinFieldControl::up() throw(::com::sun::star::uno::RuntimeException, std::exception)
3331 : {
3332 44 : uno::Reference < awt::XSpinField > xField( getPeer(), uno::UNO_QUERY );
3333 44 : if ( xField.is() )
3334 44 : xField->up();
3335 44 : }
3336 :
3337 22 : void UnoSpinFieldControl::down() throw(::com::sun::star::uno::RuntimeException, std::exception)
3338 : {
3339 22 : uno::Reference < awt::XSpinField > xField( getPeer(), uno::UNO_QUERY );
3340 22 : if ( xField.is() )
3341 22 : xField->down();
3342 22 : }
3343 :
3344 22 : void UnoSpinFieldControl::first() throw(::com::sun::star::uno::RuntimeException, std::exception)
3345 : {
3346 22 : uno::Reference < awt::XSpinField > xField( getPeer(), uno::UNO_QUERY );
3347 22 : if ( xField.is() )
3348 22 : xField->first();
3349 22 : }
3350 :
3351 22 : void UnoSpinFieldControl::last() throw(::com::sun::star::uno::RuntimeException, std::exception)
3352 : {
3353 22 : uno::Reference < awt::XSpinField > xField( getPeer(), uno::UNO_QUERY );
3354 22 : if ( xField.is() )
3355 22 : xField->last();
3356 22 : }
3357 :
3358 44 : void UnoSpinFieldControl::enableRepeat( sal_Bool bRepeat ) throw(::com::sun::star::uno::RuntimeException, std::exception)
3359 : {
3360 44 : mbRepeat = bRepeat;
3361 :
3362 44 : uno::Reference < awt::XSpinField > xField( getPeer(), uno::UNO_QUERY );
3363 44 : if ( xField.is() )
3364 44 : xField->enableRepeat( bRepeat );
3365 44 : }
3366 :
3367 :
3368 : // class UnoControlDateFieldModel
3369 :
3370 76 : UnoControlDateFieldModel::UnoControlDateFieldModel( const Reference< XComponentContext >& rxContext )
3371 76 : :UnoControlModel( rxContext )
3372 : {
3373 76 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXDateField );
3374 76 : }
3375 :
3376 2 : OUString UnoControlDateFieldModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
3377 : {
3378 2 : return OUString::createFromAscii( szServiceName_UnoControlDateFieldModel );
3379 : }
3380 :
3381 2790 : uno::Any UnoControlDateFieldModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
3382 : {
3383 2790 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
3384 : {
3385 82 : uno::Any aAny;
3386 82 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlDateField );
3387 82 : return aAny;
3388 : }
3389 2708 : return UnoControlModel::ImplGetDefaultValue( nPropId );
3390 : }
3391 :
3392 :
3393 15895 : ::cppu::IPropertyArrayHelper& UnoControlDateFieldModel::getInfoHelper()
3394 : {
3395 : static UnoPropertyArrayHelper* pHelper = NULL;
3396 15895 : if ( !pHelper )
3397 : {
3398 16 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
3399 16 : pHelper = new UnoPropertyArrayHelper( aIDs );
3400 : }
3401 15895 : return *pHelper;
3402 : }
3403 :
3404 : // beans::XMultiPropertySet
3405 270 : uno::Reference< beans::XPropertySetInfo > UnoControlDateFieldModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
3406 : {
3407 270 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
3408 270 : return xInfo;
3409 : }
3410 :
3411 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
3412 74 : stardiv_Toolkit_UnoControlDateFieldModel_get_implementation(
3413 : css::uno::XComponentContext *context,
3414 : css::uno::Sequence<css::uno::Any> const &)
3415 : {
3416 74 : return cppu::acquire(new UnoControlDateFieldModel(context));
3417 : }
3418 :
3419 :
3420 : // class UnoDateFieldControl
3421 :
3422 20 : UnoDateFieldControl::UnoDateFieldControl()
3423 20 : :UnoSpinFieldControl()
3424 : {
3425 20 : mnFirst = util::Date( 1, 1, 1900 );
3426 20 : mnLast = util::Date( 31, 12, 2200 );
3427 20 : mbLongFormat = TRISTATE_INDET;
3428 20 : }
3429 :
3430 60 : OUString UnoDateFieldControl::GetComponentServiceName()
3431 : {
3432 60 : return OUString("datefield");
3433 : }
3434 :
3435 : // uno::XInterface
3436 932 : uno::Any UnoDateFieldControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
3437 : {
3438 : uno::Any aRet = ::cppu::queryInterface( rType,
3439 932 : (static_cast< awt::XDateField* >(this)) );
3440 932 : return (aRet.hasValue() ? aRet : UnoSpinFieldControl::queryAggregation( rType ));
3441 : }
3442 :
3443 : // lang::XTypeProvider
3444 0 : IMPL_XTYPEPROVIDER_START( UnoDateFieldControl )
3445 0 : cppu::UnoType<awt::XDateField>::get(),
3446 : UnoSpinFieldControl::getTypes()
3447 0 : IMPL_XTYPEPROVIDER_END
3448 :
3449 64 : void UnoDateFieldControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
3450 : {
3451 64 : UnoSpinFieldControl::createPeer( rxToolkit, rParentPeer );
3452 :
3453 64 : uno::Reference < awt::XDateField > xField( getPeer(), uno::UNO_QUERY );
3454 64 : xField->setFirst( mnFirst );
3455 64 : xField->setLast( mnLast );
3456 64 : if ( mbLongFormat != TRISTATE_INDET )
3457 4 : xField->setLongFormat( mbLongFormat );
3458 64 : }
3459 :
3460 :
3461 52 : void UnoDateFieldControl::textChanged( const awt::TextEvent& e ) throw(uno::RuntimeException, std::exception)
3462 : {
3463 52 : uno::Reference< awt::XVclWindowPeer > xPeer( getPeer(), uno::UNO_QUERY );
3464 :
3465 : // also change the text property (#i25106#)
3466 52 : if ( xPeer.is() )
3467 : {
3468 52 : OUString sTextPropertyName = GetPropertyName( BASEPROPERTY_TEXT );
3469 52 : ImplSetPropertyValue( sTextPropertyName, xPeer->getProperty( sTextPropertyName ), false );
3470 : }
3471 :
3472 : // re-calc the Date property
3473 104 : uno::Reference < awt::XDateField > xField( getPeer(), uno::UNO_QUERY );
3474 104 : uno::Any aValue;
3475 52 : if ( xField->isEmpty() )
3476 : {
3477 : // the field says it's empty
3478 8 : bool bEnforceFormat = true;
3479 8 : if ( xPeer.is() )
3480 8 : xPeer->getProperty( GetPropertyName( BASEPROPERTY_ENFORCE_FORMAT ) ) >>= bEnforceFormat;
3481 8 : if ( !bEnforceFormat )
3482 : {
3483 : // and it also says that it is currently accepting invalid inputs, without
3484 : // forcing it to a valid date
3485 0 : uno::Reference< awt::XTextComponent > xText( xPeer, uno::UNO_QUERY );
3486 0 : if ( xText.is() && xText->getText().getLength() )
3487 : // and in real, the text of the peer is *not* empty
3488 : // -> simulate an invalid date, which is different from "no date"
3489 0 : aValue <<= util::Date();
3490 : }
3491 : }
3492 : else
3493 44 : aValue <<= xField->getDate();
3494 :
3495 52 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_DATE ), aValue, false );
3496 :
3497 : // multiplex the event
3498 52 : if ( GetTextListeners().getLength() )
3499 104 : GetTextListeners().textChanged( e );
3500 52 : }
3501 :
3502 4 : void UnoDateFieldControl::setDate( const util::Date& Date ) throw(uno::RuntimeException, std::exception)
3503 : {
3504 4 : uno::Any aAny;
3505 4 : aAny <<= Date;
3506 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_DATE ), aAny, true );
3507 4 : }
3508 :
3509 8 : util::Date UnoDateFieldControl::getDate() throw(uno::RuntimeException, std::exception)
3510 : {
3511 8 : return ImplGetPropertyValue_Date( BASEPROPERTY_DATE );
3512 : }
3513 :
3514 4 : void UnoDateFieldControl::setMin( const util::Date& Date ) throw(uno::RuntimeException, std::exception)
3515 : {
3516 4 : uno::Any aAny;
3517 4 : aAny <<= Date;
3518 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_DATEMIN ), aAny, true );
3519 4 : }
3520 :
3521 8 : util::Date UnoDateFieldControl::getMin() throw(uno::RuntimeException, std::exception)
3522 : {
3523 8 : return ImplGetPropertyValue_Date( BASEPROPERTY_DATEMIN );
3524 : }
3525 :
3526 4 : void UnoDateFieldControl::setMax( const util::Date& Date ) throw(uno::RuntimeException, std::exception)
3527 : {
3528 4 : uno::Any aAny;
3529 4 : aAny <<= Date;
3530 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_DATEMAX ), aAny, true );
3531 4 : }
3532 :
3533 8 : util::Date UnoDateFieldControl::getMax() throw(uno::RuntimeException, std::exception)
3534 : {
3535 8 : return ImplGetPropertyValue_Date( BASEPROPERTY_DATEMAX );
3536 : }
3537 :
3538 4 : void UnoDateFieldControl::setFirst( const util::Date& Date ) throw(uno::RuntimeException, std::exception)
3539 : {
3540 4 : mnFirst = Date;
3541 4 : if ( getPeer().is() )
3542 : {
3543 4 : uno::Reference < awt::XDateField > xField( getPeer(), uno::UNO_QUERY );
3544 4 : xField->setFirst( Date );
3545 : }
3546 4 : }
3547 :
3548 8 : util::Date UnoDateFieldControl::getFirst() throw(uno::RuntimeException, std::exception)
3549 : {
3550 8 : return mnFirst;
3551 : }
3552 :
3553 4 : void UnoDateFieldControl::setLast( const util::Date& Date ) throw(uno::RuntimeException, std::exception)
3554 : {
3555 4 : mnLast = Date;
3556 4 : if ( getPeer().is() )
3557 : {
3558 4 : uno::Reference < awt::XDateField > xField( getPeer(), uno::UNO_QUERY );
3559 4 : xField->setLast( Date );
3560 : }
3561 4 : }
3562 :
3563 8 : util::Date UnoDateFieldControl::getLast() throw(uno::RuntimeException, std::exception)
3564 : {
3565 8 : return mnLast;
3566 : }
3567 :
3568 4 : void UnoDateFieldControl::setLongFormat( sal_Bool bLong ) throw(uno::RuntimeException, std::exception)
3569 : {
3570 4 : mbLongFormat = bLong ? TRISTATE_TRUE : TRISTATE_FALSE;
3571 4 : if ( getPeer().is() )
3572 : {
3573 4 : uno::Reference < awt::XDateField > xField( getPeer(), uno::UNO_QUERY );
3574 4 : xField->setLongFormat( bLong );
3575 : }
3576 4 : }
3577 :
3578 8 : sal_Bool UnoDateFieldControl::isLongFormat() throw(uno::RuntimeException, std::exception)
3579 : {
3580 8 : return mbLongFormat == TRISTATE_TRUE;
3581 : }
3582 :
3583 4 : void UnoDateFieldControl::setEmpty() throw(uno::RuntimeException, std::exception)
3584 : {
3585 4 : if ( getPeer().is() )
3586 : {
3587 4 : uno::Reference < awt::XDateField > xField( getPeer(), uno::UNO_QUERY );
3588 4 : xField->setEmpty();
3589 : }
3590 4 : }
3591 :
3592 4 : sal_Bool UnoDateFieldControl::isEmpty() throw(uno::RuntimeException, std::exception)
3593 : {
3594 4 : bool bEmpty = false;
3595 4 : if ( getPeer().is() )
3596 : {
3597 4 : uno::Reference < awt::XDateField > xField( getPeer(), uno::UNO_QUERY );
3598 4 : bEmpty = xField->isEmpty();
3599 : }
3600 4 : return bEmpty;
3601 : }
3602 :
3603 4 : void UnoDateFieldControl::setStrictFormat( sal_Bool bStrict ) throw(uno::RuntimeException, std::exception)
3604 : {
3605 4 : uno::Any aAny;
3606 4 : aAny <<= bStrict;
3607 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STRICTFORMAT ), aAny, true );
3608 4 : }
3609 :
3610 8 : sal_Bool UnoDateFieldControl::isStrictFormat() throw(uno::RuntimeException, std::exception)
3611 : {
3612 8 : return ImplGetPropertyValue_BOOL( BASEPROPERTY_STRICTFORMAT );
3613 : }
3614 :
3615 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
3616 20 : stardiv_Toolkit_UnoDateFieldControl_get_implementation(
3617 : css::uno::XComponentContext *,
3618 : css::uno::Sequence<css::uno::Any> const &)
3619 : {
3620 20 : return cppu::acquire(new UnoDateFieldControl());
3621 : }
3622 :
3623 :
3624 : // class UnoControlTimeFieldModel
3625 :
3626 28 : UnoControlTimeFieldModel::UnoControlTimeFieldModel( const Reference< XComponentContext >& rxContext )
3627 28 : :UnoControlModel( rxContext )
3628 : {
3629 28 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXTimeField );
3630 28 : }
3631 :
3632 2 : OUString UnoControlTimeFieldModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
3633 : {
3634 2 : return OUString::createFromAscii( szServiceName_UnoControlTimeFieldModel );
3635 : }
3636 :
3637 1028 : uno::Any UnoControlTimeFieldModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
3638 : {
3639 1028 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
3640 : {
3641 32 : uno::Any aAny;
3642 32 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlTimeField );
3643 32 : return aAny;
3644 : }
3645 996 : return UnoControlModel::ImplGetDefaultValue( nPropId );
3646 : }
3647 :
3648 :
3649 11922 : ::cppu::IPropertyArrayHelper& UnoControlTimeFieldModel::getInfoHelper()
3650 : {
3651 : static UnoPropertyArrayHelper* pHelper = NULL;
3652 11922 : if ( !pHelper )
3653 : {
3654 6 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
3655 6 : pHelper = new UnoPropertyArrayHelper( aIDs );
3656 : }
3657 11922 : return *pHelper;
3658 : }
3659 :
3660 : // beans::XMultiPropertySet
3661 162 : uno::Reference< beans::XPropertySetInfo > UnoControlTimeFieldModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
3662 : {
3663 162 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
3664 162 : return xInfo;
3665 : }
3666 :
3667 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
3668 26 : stardiv_Toolkit_UnoControlTimeFieldModel_get_implementation(
3669 : css::uno::XComponentContext *context,
3670 : css::uno::Sequence<css::uno::Any> const &)
3671 : {
3672 26 : return cppu::acquire(new UnoControlTimeFieldModel(context));
3673 : }
3674 :
3675 :
3676 : // class UnoTimeFieldControl
3677 :
3678 14 : UnoTimeFieldControl::UnoTimeFieldControl()
3679 14 : :UnoSpinFieldControl()
3680 : {
3681 14 : mnFirst = util::Time( 0, 0, 0, 0, false );
3682 14 : mnLast = util::Time( 999999999, 59, 59, 23, false );
3683 14 : }
3684 :
3685 34 : OUString UnoTimeFieldControl::GetComponentServiceName()
3686 : {
3687 34 : return OUString("timefield");
3688 : }
3689 :
3690 : // uno::XInterface
3691 750 : uno::Any UnoTimeFieldControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
3692 : {
3693 : uno::Any aRet = ::cppu::queryInterface( rType,
3694 750 : (static_cast< awt::XTimeField* >(this)) );
3695 750 : return (aRet.hasValue() ? aRet : UnoSpinFieldControl::queryAggregation( rType ));
3696 : }
3697 :
3698 : // lang::XTypeProvider
3699 0 : IMPL_XTYPEPROVIDER_START( UnoTimeFieldControl )
3700 0 : cppu::UnoType<awt::XTimeField>::get(),
3701 : UnoSpinFieldControl::getTypes()
3702 0 : IMPL_XTYPEPROVIDER_END
3703 :
3704 38 : void UnoTimeFieldControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
3705 : {
3706 38 : UnoSpinFieldControl::createPeer( rxToolkit, rParentPeer );
3707 :
3708 38 : uno::Reference < awt::XTimeField > xField( getPeer(), uno::UNO_QUERY );
3709 38 : xField->setFirst( mnFirst );
3710 38 : xField->setLast( mnLast );
3711 38 : }
3712 :
3713 40 : void UnoTimeFieldControl::textChanged( const awt::TextEvent& e ) throw(uno::RuntimeException, std::exception)
3714 : {
3715 : // also change the text property (#i25106#)
3716 40 : uno::Reference< awt::XVclWindowPeer > xPeer( getPeer(), uno::UNO_QUERY );
3717 80 : OUString sTextPropertyName = GetPropertyName( BASEPROPERTY_TEXT );
3718 40 : ImplSetPropertyValue( sTextPropertyName, xPeer->getProperty( sTextPropertyName ), false );
3719 :
3720 : // re-calc the Time property
3721 80 : uno::Reference < awt::XTimeField > xField( getPeer(), uno::UNO_QUERY );
3722 80 : uno::Any aValue;
3723 40 : if ( !xField->isEmpty() )
3724 36 : aValue <<= xField->getTime();
3725 40 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_TIME ), aValue, false );
3726 :
3727 : // multiplex the event
3728 40 : if ( GetTextListeners().getLength() )
3729 80 : GetTextListeners().textChanged( e );
3730 40 : }
3731 :
3732 4 : void UnoTimeFieldControl::setTime( const util::Time& Time ) throw(uno::RuntimeException, std::exception)
3733 : {
3734 4 : uno::Any aAny;
3735 4 : aAny <<= Time;
3736 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_TIME ), aAny, true );
3737 4 : }
3738 :
3739 8 : util::Time UnoTimeFieldControl::getTime() throw(uno::RuntimeException, std::exception)
3740 : {
3741 8 : return ImplGetPropertyValue_Time( BASEPROPERTY_TIME );
3742 : }
3743 :
3744 4 : void UnoTimeFieldControl::setMin( const util::Time& Time ) throw(uno::RuntimeException, std::exception)
3745 : {
3746 4 : uno::Any aAny;
3747 4 : aAny <<= Time;
3748 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_TIMEMIN ), aAny, true );
3749 4 : }
3750 :
3751 8 : util::Time UnoTimeFieldControl::getMin() throw(uno::RuntimeException, std::exception)
3752 : {
3753 8 : return ImplGetPropertyValue_Time( BASEPROPERTY_TIMEMIN );
3754 : }
3755 :
3756 4 : void UnoTimeFieldControl::setMax( const util::Time& Time ) throw(uno::RuntimeException, std::exception)
3757 : {
3758 4 : uno::Any aAny;
3759 4 : aAny <<= Time;
3760 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_TIMEMAX ), aAny, true );
3761 4 : }
3762 :
3763 8 : util::Time UnoTimeFieldControl::getMax() throw(uno::RuntimeException, std::exception)
3764 : {
3765 8 : return ImplGetPropertyValue_Time( BASEPROPERTY_TIMEMAX );
3766 : }
3767 :
3768 4 : void UnoTimeFieldControl::setFirst( const util::Time& Time ) throw(uno::RuntimeException, std::exception)
3769 : {
3770 4 : mnFirst = Time;
3771 4 : if ( getPeer().is() )
3772 : {
3773 4 : uno::Reference < awt::XTimeField > xField( getPeer(), uno::UNO_QUERY );
3774 4 : xField->setFirst( mnFirst );
3775 : }
3776 4 : }
3777 :
3778 8 : util::Time UnoTimeFieldControl::getFirst() throw(uno::RuntimeException, std::exception)
3779 : {
3780 8 : return mnFirst;
3781 : }
3782 :
3783 4 : void UnoTimeFieldControl::setLast( const util::Time& Time ) throw(uno::RuntimeException, std::exception)
3784 : {
3785 4 : mnLast = Time;
3786 4 : if ( getPeer().is() )
3787 : {
3788 4 : uno::Reference < awt::XTimeField > xField( getPeer(), uno::UNO_QUERY );
3789 4 : xField->setFirst( mnLast );
3790 : }
3791 4 : }
3792 :
3793 8 : util::Time UnoTimeFieldControl::getLast() throw(uno::RuntimeException, std::exception)
3794 : {
3795 8 : return mnLast;
3796 : }
3797 :
3798 4 : void UnoTimeFieldControl::setEmpty() throw(uno::RuntimeException, std::exception)
3799 : {
3800 4 : if ( getPeer().is() )
3801 : {
3802 4 : uno::Reference < awt::XTimeField > xField( getPeer(), uno::UNO_QUERY );
3803 4 : xField->setEmpty();
3804 : }
3805 4 : }
3806 :
3807 4 : sal_Bool UnoTimeFieldControl::isEmpty() throw(uno::RuntimeException, std::exception)
3808 : {
3809 4 : bool bEmpty = false;
3810 4 : if ( getPeer().is() )
3811 : {
3812 4 : uno::Reference < awt::XTimeField > xField( getPeer(), uno::UNO_QUERY );
3813 4 : bEmpty = xField->isEmpty();
3814 : }
3815 4 : return bEmpty;
3816 : }
3817 :
3818 4 : void UnoTimeFieldControl::setStrictFormat( sal_Bool bStrict ) throw(uno::RuntimeException, std::exception)
3819 : {
3820 4 : uno::Any aAny;
3821 4 : aAny <<= bStrict;
3822 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STRICTFORMAT ), aAny, true );
3823 4 : }
3824 :
3825 8 : sal_Bool UnoTimeFieldControl::isStrictFormat() throw(uno::RuntimeException, std::exception)
3826 : {
3827 8 : return ImplGetPropertyValue_BOOL( BASEPROPERTY_STRICTFORMAT );
3828 : }
3829 :
3830 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
3831 14 : stardiv_Toolkit_UnoTimeFieldControl_get_implementation(
3832 : css::uno::XComponentContext *,
3833 : css::uno::Sequence<css::uno::Any> const &)
3834 : {
3835 14 : return cppu::acquire(new UnoTimeFieldControl());
3836 : }
3837 :
3838 :
3839 : // class UnoControlNumericFieldModel
3840 :
3841 28 : UnoControlNumericFieldModel::UnoControlNumericFieldModel( const Reference< XComponentContext >& rxContext )
3842 28 : :UnoControlModel( rxContext )
3843 : {
3844 28 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXNumericField );
3845 28 : }
3846 :
3847 2 : OUString UnoControlNumericFieldModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
3848 : {
3849 2 : return OUString::createFromAscii( szServiceName_UnoControlNumericFieldModel );
3850 : }
3851 :
3852 1060 : uno::Any UnoControlNumericFieldModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
3853 : {
3854 1060 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
3855 : {
3856 32 : uno::Any aAny;
3857 32 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlNumericField );
3858 32 : return aAny;
3859 : }
3860 1028 : return UnoControlModel::ImplGetDefaultValue( nPropId );
3861 : }
3862 :
3863 :
3864 12342 : ::cppu::IPropertyArrayHelper& UnoControlNumericFieldModel::getInfoHelper()
3865 : {
3866 : static UnoPropertyArrayHelper* pHelper = NULL;
3867 12342 : if ( !pHelper )
3868 : {
3869 6 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
3870 6 : pHelper = new UnoPropertyArrayHelper( aIDs );
3871 : }
3872 12342 : return *pHelper;
3873 : }
3874 :
3875 : // beans::XMultiPropertySet
3876 164 : uno::Reference< beans::XPropertySetInfo > UnoControlNumericFieldModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
3877 : {
3878 164 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
3879 164 : return xInfo;
3880 : }
3881 :
3882 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
3883 26 : stardiv_Toolkit_UnoControlNumericFieldModel_get_implementation(
3884 : css::uno::XComponentContext *context,
3885 : css::uno::Sequence<css::uno::Any> const &)
3886 : {
3887 26 : return cppu::acquire(new UnoControlNumericFieldModel(context));
3888 : }
3889 :
3890 :
3891 : // class UnoNumericFieldControl
3892 :
3893 14 : UnoNumericFieldControl::UnoNumericFieldControl()
3894 14 : :UnoSpinFieldControl()
3895 : {
3896 14 : mnFirst = 0;
3897 14 : mnLast = 0x7FFFFFFF;
3898 14 : }
3899 :
3900 34 : OUString UnoNumericFieldControl::GetComponentServiceName()
3901 : {
3902 34 : return OUString("numericfield");
3903 : }
3904 :
3905 : // uno::XInterface
3906 848 : uno::Any UnoNumericFieldControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
3907 : {
3908 : uno::Any aRet = ::cppu::queryInterface( rType,
3909 848 : (static_cast< awt::XNumericField* >(this)) );
3910 848 : return (aRet.hasValue() ? aRet : UnoSpinFieldControl::queryAggregation( rType ));
3911 : }
3912 :
3913 : // lang::XTypeProvider
3914 0 : IMPL_XTYPEPROVIDER_START( UnoNumericFieldControl )
3915 0 : cppu::UnoType<awt::XNumericField>::get(),
3916 : UnoSpinFieldControl::getTypes()
3917 0 : IMPL_XTYPEPROVIDER_END
3918 :
3919 38 : void UnoNumericFieldControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
3920 : {
3921 38 : UnoSpinFieldControl::createPeer( rxToolkit, rParentPeer );
3922 :
3923 38 : uno::Reference < awt::XNumericField > xField( getPeer(), uno::UNO_QUERY );
3924 38 : xField->setFirst( mnFirst );
3925 38 : xField->setLast( mnLast );
3926 38 : }
3927 :
3928 :
3929 212 : void UnoNumericFieldControl::textChanged( const awt::TextEvent& e ) throw(uno::RuntimeException, std::exception)
3930 : {
3931 212 : uno::Reference < awt::XNumericField > xField( getPeer(), uno::UNO_QUERY );
3932 424 : uno::Any aAny;
3933 212 : aAny <<= xField->getValue();
3934 212 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_VALUE_DOUBLE ), aAny, false );
3935 :
3936 212 : if ( GetTextListeners().getLength() )
3937 424 : GetTextListeners().textChanged( e );
3938 212 : }
3939 :
3940 4 : void UnoNumericFieldControl::setValue( double Value ) throw(uno::RuntimeException, std::exception)
3941 : {
3942 4 : uno::Any aAny;
3943 4 : aAny <<= Value;
3944 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_VALUE_DOUBLE ), aAny, true );
3945 4 : }
3946 :
3947 8 : double UnoNumericFieldControl::getValue() throw(uno::RuntimeException, std::exception)
3948 : {
3949 8 : return ImplGetPropertyValue_DOUBLE( BASEPROPERTY_VALUE_DOUBLE );
3950 : }
3951 :
3952 4 : void UnoNumericFieldControl::setMin( double Value ) throw(uno::RuntimeException, std::exception)
3953 : {
3954 4 : uno::Any aAny;
3955 4 : aAny <<= Value;
3956 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_VALUEMIN_DOUBLE ), aAny, true );
3957 4 : }
3958 :
3959 8 : double UnoNumericFieldControl::getMin() throw(uno::RuntimeException, std::exception)
3960 : {
3961 8 : return ImplGetPropertyValue_DOUBLE( BASEPROPERTY_VALUEMIN_DOUBLE );
3962 : }
3963 :
3964 4 : void UnoNumericFieldControl::setMax( double Value ) throw(uno::RuntimeException, std::exception)
3965 : {
3966 4 : uno::Any aAny;
3967 4 : aAny <<= Value;
3968 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_VALUEMAX_DOUBLE ), aAny, true );
3969 4 : }
3970 :
3971 8 : double UnoNumericFieldControl::getMax() throw(uno::RuntimeException, std::exception)
3972 : {
3973 8 : return ImplGetPropertyValue_DOUBLE( BASEPROPERTY_VALUEMAX_DOUBLE );
3974 : }
3975 :
3976 4 : void UnoNumericFieldControl::setFirst( double Value ) throw(uno::RuntimeException, std::exception)
3977 : {
3978 4 : mnFirst = Value;
3979 4 : if ( getPeer().is() )
3980 : {
3981 4 : uno::Reference < awt::XNumericField > xField( getPeer(), uno::UNO_QUERY );
3982 4 : xField->setFirst( mnFirst );
3983 : }
3984 4 : }
3985 :
3986 8 : double UnoNumericFieldControl::getFirst() throw(uno::RuntimeException, std::exception)
3987 : {
3988 8 : return mnFirst;
3989 : }
3990 :
3991 4 : void UnoNumericFieldControl::setLast( double Value ) throw(uno::RuntimeException, std::exception)
3992 : {
3993 4 : mnLast = Value;
3994 4 : if ( getPeer().is() )
3995 : {
3996 4 : uno::Reference < awt::XNumericField > xField( getPeer(), uno::UNO_QUERY );
3997 4 : xField->setLast( mnLast );
3998 : }
3999 4 : }
4000 :
4001 8 : double UnoNumericFieldControl::getLast() throw(uno::RuntimeException, std::exception)
4002 : {
4003 8 : return mnLast;
4004 : }
4005 :
4006 4 : void UnoNumericFieldControl::setStrictFormat( sal_Bool bStrict ) throw(uno::RuntimeException, std::exception)
4007 : {
4008 4 : uno::Any aAny;
4009 4 : aAny <<= bStrict;
4010 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STRICTFORMAT ), aAny, true );
4011 4 : }
4012 :
4013 8 : sal_Bool UnoNumericFieldControl::isStrictFormat() throw(uno::RuntimeException, std::exception)
4014 : {
4015 8 : return ImplGetPropertyValue_BOOL( BASEPROPERTY_STRICTFORMAT );
4016 : }
4017 :
4018 4 : void UnoNumericFieldControl::setSpinSize( double Digits ) throw(uno::RuntimeException, std::exception)
4019 : {
4020 4 : uno::Any aAny;
4021 4 : aAny <<= Digits;
4022 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_VALUESTEP_DOUBLE ), aAny, true );
4023 4 : }
4024 :
4025 8 : double UnoNumericFieldControl::getSpinSize() throw(uno::RuntimeException, std::exception)
4026 : {
4027 8 : return ImplGetPropertyValue_DOUBLE( BASEPROPERTY_VALUESTEP_DOUBLE );
4028 : }
4029 :
4030 4 : void UnoNumericFieldControl::setDecimalDigits( sal_Int16 Digits ) throw(uno::RuntimeException, std::exception)
4031 : {
4032 4 : uno::Any aAny;
4033 4 : aAny <<= Digits;
4034 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_DECIMALACCURACY ), aAny, true );
4035 4 : }
4036 :
4037 8 : sal_Int16 UnoNumericFieldControl::getDecimalDigits() throw(uno::RuntimeException, std::exception)
4038 : {
4039 8 : return ImplGetPropertyValue_INT16( BASEPROPERTY_DECIMALACCURACY );
4040 : }
4041 :
4042 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
4043 14 : stardiv_Toolkit_UnoNumericFieldControl_get_implementation(
4044 : css::uno::XComponentContext *,
4045 : css::uno::Sequence<css::uno::Any> const &)
4046 : {
4047 14 : return cppu::acquire(new UnoNumericFieldControl());
4048 : }
4049 :
4050 :
4051 : // class UnoControlCurrencyFieldModel
4052 :
4053 26 : UnoControlCurrencyFieldModel::UnoControlCurrencyFieldModel( const Reference< XComponentContext >& rxContext )
4054 26 : :UnoControlModel( rxContext )
4055 : {
4056 26 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXCurrencyField );
4057 26 : }
4058 :
4059 2 : OUString UnoControlCurrencyFieldModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
4060 : {
4061 2 : return OUString::createFromAscii( szServiceName_UnoControlCurrencyFieldModel );
4062 : }
4063 :
4064 1054 : uno::Any UnoControlCurrencyFieldModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
4065 : {
4066 1054 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
4067 : {
4068 30 : uno::Any aAny;
4069 30 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlCurrencyField );
4070 30 : return aAny;
4071 : }
4072 1024 : if ( nPropId == BASEPROPERTY_CURSYM_POSITION )
4073 : {
4074 30 : uno::Any aAny;
4075 30 : aAny <<= false;
4076 30 : return aAny;
4077 : }
4078 :
4079 994 : return UnoControlModel::ImplGetDefaultValue( nPropId );
4080 : }
4081 :
4082 13814 : ::cppu::IPropertyArrayHelper& UnoControlCurrencyFieldModel::getInfoHelper()
4083 : {
4084 : static UnoPropertyArrayHelper* pHelper = NULL;
4085 13814 : if ( !pHelper )
4086 : {
4087 6 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
4088 6 : pHelper = new UnoPropertyArrayHelper( aIDs );
4089 : }
4090 13814 : return *pHelper;
4091 : }
4092 :
4093 : // beans::XMultiPropertySet
4094 172 : uno::Reference< beans::XPropertySetInfo > UnoControlCurrencyFieldModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
4095 : {
4096 172 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
4097 172 : return xInfo;
4098 : }
4099 :
4100 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
4101 24 : stardiv_Toolkit_UnoControlCurrencyFieldModel_get_implementation(
4102 : css::uno::XComponentContext *context,
4103 : css::uno::Sequence<css::uno::Any> const &)
4104 : {
4105 24 : return cppu::acquire(new UnoControlCurrencyFieldModel(context));
4106 : }
4107 :
4108 :
4109 : // class UnoCurrencyFieldControl
4110 :
4111 14 : UnoCurrencyFieldControl::UnoCurrencyFieldControl()
4112 14 : :UnoSpinFieldControl()
4113 : {
4114 14 : mnFirst = 0;
4115 14 : mnLast = 0x7FFFFFFF;
4116 14 : }
4117 :
4118 34 : OUString UnoCurrencyFieldControl::GetComponentServiceName()
4119 : {
4120 34 : return OUString("longcurrencyfield");
4121 : }
4122 :
4123 : // uno::XInterface
4124 850 : uno::Any UnoCurrencyFieldControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
4125 : {
4126 : uno::Any aRet = ::cppu::queryInterface( rType,
4127 850 : (static_cast< awt::XCurrencyField* >(this)) );
4128 850 : return (aRet.hasValue() ? aRet : UnoSpinFieldControl::queryAggregation( rType ));
4129 : }
4130 :
4131 : // lang::XTypeProvider
4132 0 : IMPL_XTYPEPROVIDER_START( UnoCurrencyFieldControl )
4133 0 : cppu::UnoType<awt::XCurrencyField>::get(),
4134 : UnoSpinFieldControl::getTypes()
4135 0 : IMPL_XTYPEPROVIDER_END
4136 :
4137 38 : void UnoCurrencyFieldControl::createPeer( const uno::Reference< awt::XToolkit > & rxToolkit, const uno::Reference< awt::XWindowPeer > & rParentPeer ) throw(uno::RuntimeException, std::exception)
4138 : {
4139 38 : UnoSpinFieldControl::createPeer( rxToolkit, rParentPeer );
4140 :
4141 38 : uno::Reference < awt::XCurrencyField > xField( getPeer(), uno::UNO_QUERY );
4142 38 : xField->setFirst( mnFirst );
4143 38 : xField->setLast( mnLast );
4144 38 : }
4145 :
4146 180 : void UnoCurrencyFieldControl::textChanged( const awt::TextEvent& e ) throw(uno::RuntimeException, std::exception)
4147 : {
4148 180 : uno::Reference < awt::XCurrencyField > xField( getPeer(), uno::UNO_QUERY );
4149 360 : uno::Any aAny;
4150 180 : aAny <<= xField->getValue();
4151 180 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_VALUE_DOUBLE ), aAny, false );
4152 :
4153 180 : if ( GetTextListeners().getLength() )
4154 360 : GetTextListeners().textChanged( e );
4155 180 : }
4156 :
4157 4 : void UnoCurrencyFieldControl::setValue( double Value ) throw(uno::RuntimeException, std::exception)
4158 : {
4159 4 : uno::Any aAny;
4160 4 : aAny <<= Value;
4161 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_VALUE_DOUBLE ), aAny, true );
4162 4 : }
4163 :
4164 8 : double UnoCurrencyFieldControl::getValue() throw(uno::RuntimeException, std::exception)
4165 : {
4166 8 : return ImplGetPropertyValue_DOUBLE( BASEPROPERTY_VALUE_DOUBLE );
4167 : }
4168 :
4169 4 : void UnoCurrencyFieldControl::setMin( double Value ) throw(uno::RuntimeException, std::exception)
4170 : {
4171 4 : uno::Any aAny;
4172 4 : aAny <<= Value;
4173 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_VALUEMIN_DOUBLE ), aAny, true );
4174 4 : }
4175 :
4176 8 : double UnoCurrencyFieldControl::getMin() throw(uno::RuntimeException, std::exception)
4177 : {
4178 8 : return ImplGetPropertyValue_DOUBLE( BASEPROPERTY_VALUEMIN_DOUBLE );
4179 : }
4180 :
4181 4 : void UnoCurrencyFieldControl::setMax( double Value ) throw(uno::RuntimeException, std::exception)
4182 : {
4183 4 : uno::Any aAny;
4184 4 : aAny <<= Value;
4185 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_VALUEMAX_DOUBLE ), aAny, true );
4186 4 : }
4187 :
4188 8 : double UnoCurrencyFieldControl::getMax() throw(uno::RuntimeException, std::exception)
4189 : {
4190 8 : return ImplGetPropertyValue_DOUBLE( BASEPROPERTY_VALUEMAX_DOUBLE );
4191 : }
4192 :
4193 4 : void UnoCurrencyFieldControl::setFirst( double Value ) throw(uno::RuntimeException, std::exception)
4194 : {
4195 4 : mnFirst = Value;
4196 4 : if ( getPeer().is() )
4197 : {
4198 4 : uno::Reference < awt::XCurrencyField > xField( getPeer(), uno::UNO_QUERY );
4199 4 : xField->setFirst( mnFirst );
4200 : }
4201 4 : }
4202 :
4203 8 : double UnoCurrencyFieldControl::getFirst() throw(uno::RuntimeException, std::exception)
4204 : {
4205 8 : return mnFirst;
4206 : }
4207 :
4208 4 : void UnoCurrencyFieldControl::setLast( double Value ) throw(uno::RuntimeException, std::exception)
4209 : {
4210 4 : mnLast = Value;
4211 4 : if ( getPeer().is() )
4212 : {
4213 4 : uno::Reference < awt::XCurrencyField > xField( getPeer(), uno::UNO_QUERY );
4214 4 : xField->setLast( mnLast );
4215 : }
4216 4 : }
4217 :
4218 8 : double UnoCurrencyFieldControl::getLast() throw(uno::RuntimeException, std::exception)
4219 : {
4220 8 : return mnLast;
4221 : }
4222 :
4223 4 : void UnoCurrencyFieldControl::setStrictFormat( sal_Bool bStrict ) throw(uno::RuntimeException, std::exception)
4224 : {
4225 4 : uno::Any aAny;
4226 4 : aAny <<= bStrict;
4227 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STRICTFORMAT ), aAny, true );
4228 4 : }
4229 :
4230 8 : sal_Bool UnoCurrencyFieldControl::isStrictFormat() throw(uno::RuntimeException, std::exception)
4231 : {
4232 8 : return ImplGetPropertyValue_BOOL( BASEPROPERTY_STRICTFORMAT );
4233 : }
4234 :
4235 4 : void UnoCurrencyFieldControl::setSpinSize( double Digits ) throw(uno::RuntimeException, std::exception)
4236 : {
4237 4 : uno::Any aAny;
4238 4 : aAny <<= Digits;
4239 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_VALUESTEP_DOUBLE ), aAny, true );
4240 4 : }
4241 :
4242 8 : double UnoCurrencyFieldControl::getSpinSize() throw(uno::RuntimeException, std::exception)
4243 : {
4244 8 : return ImplGetPropertyValue_DOUBLE( BASEPROPERTY_VALUESTEP_DOUBLE );
4245 : }
4246 :
4247 4 : void UnoCurrencyFieldControl::setDecimalDigits( sal_Int16 Digits ) throw(uno::RuntimeException, std::exception)
4248 : {
4249 4 : uno::Any aAny;
4250 4 : aAny <<= Digits;
4251 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_DECIMALACCURACY ), aAny, true );
4252 4 : }
4253 :
4254 8 : sal_Int16 UnoCurrencyFieldControl::getDecimalDigits() throw(uno::RuntimeException, std::exception)
4255 : {
4256 8 : return ImplGetPropertyValue_INT16( BASEPROPERTY_DECIMALACCURACY );
4257 : }
4258 :
4259 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
4260 14 : stardiv_Toolkit_UnoCurrencyFieldControl_get_implementation(
4261 : css::uno::XComponentContext *,
4262 : css::uno::Sequence<css::uno::Any> const &)
4263 : {
4264 14 : return cppu::acquire(new UnoCurrencyFieldControl());
4265 : }
4266 :
4267 :
4268 : // class UnoControlPatternFieldModel
4269 :
4270 26 : UnoControlPatternFieldModel::UnoControlPatternFieldModel( const Reference< XComponentContext >& rxContext )
4271 26 : :UnoControlModel( rxContext )
4272 : {
4273 26 : UNO_CONTROL_MODEL_REGISTER_PROPERTIES( VCLXPatternField );
4274 26 : }
4275 :
4276 2 : OUString UnoControlPatternFieldModel::getServiceName() throw(::com::sun::star::uno::RuntimeException, std::exception)
4277 : {
4278 2 : return OUString::createFromAscii( szServiceName_UnoControlPatternFieldModel );
4279 : }
4280 :
4281 814 : uno::Any UnoControlPatternFieldModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
4282 : {
4283 814 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
4284 : {
4285 30 : uno::Any aAny;
4286 30 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlPatternField );
4287 30 : return aAny;
4288 : }
4289 784 : return UnoControlModel::ImplGetDefaultValue( nPropId );
4290 : }
4291 :
4292 10407 : ::cppu::IPropertyArrayHelper& UnoControlPatternFieldModel::getInfoHelper()
4293 : {
4294 : static UnoPropertyArrayHelper* pHelper = NULL;
4295 10407 : if ( !pHelper )
4296 : {
4297 6 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
4298 6 : pHelper = new UnoPropertyArrayHelper( aIDs );
4299 : }
4300 10407 : return *pHelper;
4301 : }
4302 :
4303 : // beans::XMultiPropertySet
4304 138 : uno::Reference< beans::XPropertySetInfo > UnoControlPatternFieldModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
4305 : {
4306 138 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
4307 138 : return xInfo;
4308 : }
4309 :
4310 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
4311 24 : stardiv_Toolkit_UnoControlPatternFieldModel_get_implementation(
4312 : css::uno::XComponentContext *context,
4313 : css::uno::Sequence<css::uno::Any> const &)
4314 : {
4315 24 : return cppu::acquire(new UnoControlPatternFieldModel(context));
4316 : }
4317 :
4318 :
4319 : // class UnoPatternFieldControl
4320 :
4321 14 : UnoPatternFieldControl::UnoPatternFieldControl()
4322 14 : :UnoSpinFieldControl()
4323 : {
4324 14 : }
4325 :
4326 16 : OUString UnoPatternFieldControl::GetComponentServiceName()
4327 : {
4328 16 : return OUString("patternfield");
4329 : }
4330 :
4331 1848 : void UnoPatternFieldControl::ImplSetPeerProperty( const OUString& rPropName, const uno::Any& rVal )
4332 : {
4333 1848 : sal_uInt16 nType = GetPropertyId( rPropName );
4334 1848 : if ( ( nType == BASEPROPERTY_TEXT ) || ( nType == BASEPROPERTY_EDITMASK ) || ( nType == BASEPROPERTY_LITERALMASK ) )
4335 : {
4336 : // These masks cannot be set consecutively
4337 160 : OUString Text = ImplGetPropertyValue_UString( BASEPROPERTY_TEXT );
4338 320 : OUString EditMask = ImplGetPropertyValue_UString( BASEPROPERTY_EDITMASK );
4339 320 : OUString LiteralMask = ImplGetPropertyValue_UString( BASEPROPERTY_LITERALMASK );
4340 :
4341 320 : uno::Reference < awt::XPatternField > xPF( getPeer(), uno::UNO_QUERY );
4342 160 : if (xPF.is())
4343 : {
4344 : // same comment as in UnoControl::ImplSetPeerProperty - see there
4345 160 : OUString sText( Text );
4346 160 : ImplCheckLocalize( sText );
4347 160 : xPF->setString( sText );
4348 160 : xPF->setMasks( EditMask, LiteralMask );
4349 160 : }
4350 : }
4351 : else
4352 1688 : UnoSpinFieldControl::ImplSetPeerProperty( rPropName, rVal );
4353 1848 : }
4354 :
4355 :
4356 : // uno::XInterface
4357 646 : uno::Any UnoPatternFieldControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
4358 : {
4359 : uno::Any aRet = ::cppu::queryInterface( rType,
4360 646 : (static_cast< awt::XPatternField* >(this)) );
4361 646 : return (aRet.hasValue() ? aRet : UnoSpinFieldControl::queryAggregation( rType ));
4362 : }
4363 :
4364 : // lang::XTypeProvider
4365 0 : IMPL_XTYPEPROVIDER_START( UnoPatternFieldControl )
4366 0 : cppu::UnoType<awt::XPatternField>::get(),
4367 : UnoSpinFieldControl::getTypes()
4368 0 : IMPL_XTYPEPROVIDER_END
4369 :
4370 4 : void UnoPatternFieldControl::setString( const OUString& rString ) throw(uno::RuntimeException, std::exception)
4371 : {
4372 4 : setText( rString );
4373 4 : }
4374 :
4375 8 : OUString UnoPatternFieldControl::getString() throw(uno::RuntimeException, std::exception)
4376 : {
4377 8 : return getText();
4378 : }
4379 :
4380 4 : void UnoPatternFieldControl::setMasks( const OUString& EditMask, const OUString& LiteralMask ) throw(uno::RuntimeException, std::exception)
4381 : {
4382 4 : uno::Any aAny;
4383 4 : aAny <<= EditMask;
4384 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_EDITMASK ), aAny, true );
4385 4 : aAny <<= LiteralMask;
4386 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_LITERALMASK ), aAny, true );
4387 4 : }
4388 :
4389 8 : void UnoPatternFieldControl::getMasks( OUString& EditMask, OUString& LiteralMask ) throw(uno::RuntimeException, std::exception)
4390 : {
4391 8 : EditMask = ImplGetPropertyValue_UString( BASEPROPERTY_EDITMASK );
4392 8 : LiteralMask = ImplGetPropertyValue_UString( BASEPROPERTY_LITERALMASK );
4393 8 : }
4394 :
4395 4 : void UnoPatternFieldControl::setStrictFormat( sal_Bool bStrict ) throw(uno::RuntimeException, std::exception)
4396 : {
4397 4 : uno::Any aAny;
4398 4 : aAny <<= bStrict;
4399 4 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_STRICTFORMAT ), aAny, true );
4400 4 : }
4401 :
4402 8 : sal_Bool UnoPatternFieldControl::isStrictFormat() throw(uno::RuntimeException, std::exception)
4403 : {
4404 8 : return ImplGetPropertyValue_BOOL( BASEPROPERTY_STRICTFORMAT );
4405 : }
4406 :
4407 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
4408 14 : stardiv_Toolkit_UnoPatternFieldControl_get_implementation(
4409 : css::uno::XComponentContext *,
4410 : css::uno::Sequence<css::uno::Any> const &)
4411 : {
4412 14 : return cppu::acquire(new UnoPatternFieldControl());
4413 : }
4414 :
4415 :
4416 : // class UnoControlProgressBarModel
4417 :
4418 8 : UnoControlProgressBarModel::UnoControlProgressBarModel( const Reference< XComponentContext >& rxContext )
4419 8 : :UnoControlModel( rxContext )
4420 : {
4421 8 : ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
4422 8 : ImplRegisterProperty( BASEPROPERTY_BORDER );
4423 8 : ImplRegisterProperty( BASEPROPERTY_BORDERCOLOR );
4424 8 : ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL );
4425 8 : ImplRegisterProperty( BASEPROPERTY_ENABLED );
4426 8 : ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE );
4427 8 : ImplRegisterProperty( BASEPROPERTY_FILLCOLOR );
4428 8 : ImplRegisterProperty( BASEPROPERTY_HELPTEXT );
4429 8 : ImplRegisterProperty( BASEPROPERTY_HELPURL );
4430 8 : ImplRegisterProperty( BASEPROPERTY_PRINTABLE );
4431 8 : ImplRegisterProperty( BASEPROPERTY_PROGRESSVALUE );
4432 8 : ImplRegisterProperty( BASEPROPERTY_PROGRESSVALUE_MAX );
4433 8 : ImplRegisterProperty( BASEPROPERTY_PROGRESSVALUE_MIN );
4434 8 : }
4435 :
4436 2 : OUString UnoControlProgressBarModel::getServiceName( ) throw(::com::sun::star::uno::RuntimeException, std::exception)
4437 : {
4438 2 : return OUString::createFromAscii( szServiceName_UnoControlProgressBarModel );
4439 : }
4440 :
4441 130 : uno::Any UnoControlProgressBarModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
4442 : {
4443 130 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
4444 : {
4445 10 : uno::Any aAny;
4446 10 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlProgressBar );
4447 10 : return aAny;
4448 : }
4449 :
4450 120 : return UnoControlModel::ImplGetDefaultValue( nPropId );
4451 : }
4452 :
4453 744 : ::cppu::IPropertyArrayHelper& UnoControlProgressBarModel::getInfoHelper()
4454 : {
4455 : static UnoPropertyArrayHelper* pHelper = NULL;
4456 744 : if ( !pHelper )
4457 : {
4458 2 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
4459 2 : pHelper = new UnoPropertyArrayHelper( aIDs );
4460 : }
4461 744 : return *pHelper;
4462 : }
4463 :
4464 : // beans::XMultiPropertySet
4465 28 : uno::Reference< beans::XPropertySetInfo > UnoControlProgressBarModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
4466 : {
4467 28 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
4468 28 : return xInfo;
4469 : }
4470 :
4471 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
4472 6 : stardiv_Toolkit_UnoControlProgressBarModel_get_implementation(
4473 : css::uno::XComponentContext *context,
4474 : css::uno::Sequence<css::uno::Any> const &)
4475 : {
4476 6 : return cppu::acquire(new UnoControlProgressBarModel(context));
4477 : }
4478 :
4479 :
4480 : // class UnoProgressBarControl
4481 :
4482 0 : UnoProgressBarControl::UnoProgressBarControl()
4483 0 : :UnoControlBase()
4484 : {
4485 0 : }
4486 :
4487 0 : OUString UnoProgressBarControl::GetComponentServiceName()
4488 : {
4489 0 : return OUString("ProgressBar");
4490 : }
4491 :
4492 : // uno::XInterface
4493 0 : uno::Any UnoProgressBarControl::queryAggregation( const uno::Type & rType ) throw(uno::RuntimeException, std::exception)
4494 : {
4495 : uno::Any aRet = ::cppu::queryInterface( rType,
4496 0 : (static_cast< awt::XProgressBar* >(this)) );
4497 0 : return (aRet.hasValue() ? aRet : UnoControlBase::queryAggregation( rType ));
4498 : }
4499 :
4500 : // lang::XTypeProvider
4501 0 : IMPL_XTYPEPROVIDER_START( UnoProgressBarControl )
4502 0 : cppu::UnoType<awt::XProgressBar>::get(),
4503 : UnoControlBase::getTypes()
4504 0 : IMPL_XTYPEPROVIDER_END
4505 :
4506 : // ::com::sun::star::awt::XProgressBar
4507 0 : void UnoProgressBarControl::setForegroundColor( sal_Int32 nColor ) throw(::com::sun::star::uno::RuntimeException, std::exception)
4508 : {
4509 0 : uno::Any aAny;
4510 0 : aAny <<= nColor;
4511 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_FILLCOLOR ), aAny, true );
4512 0 : }
4513 :
4514 0 : void UnoProgressBarControl::setBackgroundColor( sal_Int32 nColor ) throw(::com::sun::star::uno::RuntimeException, std::exception)
4515 : {
4516 0 : uno::Any aAny;
4517 0 : aAny <<= nColor;
4518 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_BACKGROUNDCOLOR ), aAny, true );
4519 0 : }
4520 :
4521 0 : void UnoProgressBarControl::setValue( sal_Int32 nValue ) throw(::com::sun::star::uno::RuntimeException, std::exception)
4522 : {
4523 0 : uno::Any aAny;
4524 0 : aAny <<= nValue;
4525 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_PROGRESSVALUE ), aAny, true );
4526 0 : }
4527 :
4528 0 : void UnoProgressBarControl::setRange( sal_Int32 nMin, sal_Int32 nMax ) throw(::com::sun::star::uno::RuntimeException, std::exception )
4529 : {
4530 0 : uno::Any aMin;
4531 0 : uno::Any aMax;
4532 :
4533 0 : if ( nMin < nMax )
4534 : {
4535 : // take correct min and max
4536 0 : aMin <<= nMin;
4537 0 : aMax <<= nMax;
4538 : }
4539 : else
4540 : {
4541 : // change min and max
4542 0 : aMin <<= nMax;
4543 0 : aMax <<= nMin;
4544 : }
4545 :
4546 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_PROGRESSVALUE_MIN ), aMin, true );
4547 0 : ImplSetPropertyValue( GetPropertyName( BASEPROPERTY_PROGRESSVALUE_MAX ), aMax, true );
4548 0 : }
4549 :
4550 0 : sal_Int32 UnoProgressBarControl::getValue() throw(::com::sun::star::uno::RuntimeException, std::exception)
4551 : {
4552 0 : return ImplGetPropertyValue_INT32( BASEPROPERTY_PROGRESSVALUE );
4553 : }
4554 :
4555 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
4556 0 : stardiv_Toolkit_UnoProgressBarControl_get_implementation(
4557 : css::uno::XComponentContext *,
4558 : css::uno::Sequence<css::uno::Any> const &)
4559 : {
4560 0 : return cppu::acquire(new UnoProgressBarControl());
4561 : }
4562 :
4563 :
4564 : // class UnoControlFixedLineModel
4565 :
4566 8 : UnoControlFixedLineModel::UnoControlFixedLineModel( const Reference< XComponentContext >& rxContext )
4567 8 : :UnoControlModel( rxContext )
4568 : {
4569 8 : ImplRegisterProperty( BASEPROPERTY_BACKGROUNDCOLOR );
4570 8 : ImplRegisterProperty( BASEPROPERTY_DEFAULTCONTROL );
4571 8 : ImplRegisterProperty( BASEPROPERTY_ENABLED );
4572 8 : ImplRegisterProperty( BASEPROPERTY_ENABLEVISIBLE );
4573 8 : ImplRegisterProperty( BASEPROPERTY_FONTDESCRIPTOR );
4574 8 : ImplRegisterProperty( BASEPROPERTY_HELPTEXT );
4575 8 : ImplRegisterProperty( BASEPROPERTY_HELPURL );
4576 8 : ImplRegisterProperty( BASEPROPERTY_LABEL );
4577 8 : ImplRegisterProperty( BASEPROPERTY_ORIENTATION );
4578 8 : ImplRegisterProperty( BASEPROPERTY_PRINTABLE );
4579 8 : }
4580 :
4581 2 : OUString UnoControlFixedLineModel::getServiceName( ) throw(::com::sun::star::uno::RuntimeException, std::exception)
4582 : {
4583 2 : return OUString::createFromAscii( szServiceName_UnoControlFixedLineModel );
4584 : }
4585 :
4586 140 : uno::Any UnoControlFixedLineModel::ImplGetDefaultValue( sal_uInt16 nPropId ) const
4587 : {
4588 140 : if ( nPropId == BASEPROPERTY_DEFAULTCONTROL )
4589 : {
4590 10 : uno::Any aAny;
4591 10 : aAny <<= OUString::createFromAscii( szServiceName_UnoControlFixedLine );
4592 10 : return aAny;
4593 : }
4594 130 : return UnoControlModel::ImplGetDefaultValue( nPropId );
4595 : }
4596 :
4597 1462 : ::cppu::IPropertyArrayHelper& UnoControlFixedLineModel::getInfoHelper()
4598 : {
4599 : static UnoPropertyArrayHelper* pHelper = NULL;
4600 1462 : if ( !pHelper )
4601 : {
4602 2 : uno::Sequence<sal_Int32> aIDs = ImplGetPropertyIds();
4603 2 : pHelper = new UnoPropertyArrayHelper( aIDs );
4604 : }
4605 1462 : return *pHelper;
4606 : }
4607 :
4608 : // beans::XMultiPropertySet
4609 68 : uno::Reference< beans::XPropertySetInfo > UnoControlFixedLineModel::getPropertySetInfo( ) throw(uno::RuntimeException, std::exception)
4610 : {
4611 68 : static uno::Reference< beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
4612 68 : return xInfo;
4613 : }
4614 :
4615 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
4616 6 : stardiv_Toolkit_UnoControlFixedLineModel_get_implementation(
4617 : css::uno::XComponentContext *context,
4618 : css::uno::Sequence<css::uno::Any> const &)
4619 : {
4620 6 : return cppu::acquire(new UnoControlFixedLineModel(context));
4621 : }
4622 :
4623 :
4624 : // class UnoFixedLineControl
4625 :
4626 0 : UnoFixedLineControl::UnoFixedLineControl()
4627 0 : :UnoControlBase()
4628 : {
4629 0 : maComponentInfos.nWidth = 100; // ??
4630 0 : maComponentInfos.nHeight = 100; // ??
4631 0 : }
4632 :
4633 0 : OUString UnoFixedLineControl::GetComponentServiceName()
4634 : {
4635 0 : return OUString("FixedLine");
4636 : }
4637 :
4638 0 : sal_Bool UnoFixedLineControl::isTransparent() throw(uno::RuntimeException, std::exception)
4639 : {
4640 0 : return sal_True;
4641 : }
4642 :
4643 : extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
4644 0 : stardiv_Toolkit_UnoFixedLineControl_get_implementation(
4645 : css::uno::XComponentContext *,
4646 : css::uno::Sequence<css::uno::Any> const &)
4647 : {
4648 0 : return cppu::acquire(new UnoFixedLineControl());
4649 1227 : }
4650 :
4651 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|