1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_forms.hxx"
26 #include "Hidden.hxx"
27 #include "property.hxx"
28 #ifndef _FRM_PROPERTY_HRC_
29 #include "property.hrc"
30 #endif
31 #include "services.hxx"
32 #include <tools/debug.hxx>
33 #include <comphelper/basicio.hxx>
34
35 //.........................................................................
36 namespace frm
37 {
38 using namespace ::com::sun::star::uno;
39 using namespace ::com::sun::star::sdb;
40 using namespace ::com::sun::star::sdbc;
41 using namespace ::com::sun::star::sdbcx;
42 using namespace ::com::sun::star::beans;
43 using namespace ::com::sun::star::container;
44 using namespace ::com::sun::star::form;
45 using namespace ::com::sun::star::awt;
46 using namespace ::com::sun::star::io;
47 using namespace ::com::sun::star::lang;
48 using namespace ::com::sun::star::util;
49
50 //------------------------------------------------------------------
OHiddenModel_CreateInstance(const Reference<XMultiServiceFactory> & _rxFactory)51 InterfaceRef SAL_CALL OHiddenModel_CreateInstance(const Reference<XMultiServiceFactory>& _rxFactory) throw (RuntimeException)
52 {
53 return *(new OHiddenModel(_rxFactory));
54 }
55
56 //------------------------------------------------------------------
DBG_NAME(OHiddenModel)57 DBG_NAME( OHiddenModel )
58 //------------------------------------------------------------------
59 OHiddenModel::OHiddenModel(const Reference<XMultiServiceFactory>& _rxFactory)
60 :OControlModel(_rxFactory, ::rtl::OUString())
61 {
62 DBG_CTOR( OHiddenModel, NULL );
63 m_nClassId = FormComponentType::HIDDENCONTROL;
64 }
65
66 //------------------------------------------------------------------
OHiddenModel(const OHiddenModel * _pOriginal,const Reference<XMultiServiceFactory> & _rxFactory)67 OHiddenModel::OHiddenModel( const OHiddenModel* _pOriginal, const Reference<XMultiServiceFactory>& _rxFactory )
68 :OControlModel( _pOriginal, _rxFactory )
69 {
70 DBG_CTOR( OHiddenModel, NULL );
71 m_sHiddenValue = _pOriginal->m_sHiddenValue;
72 }
73
74 //------------------------------------------------------------------------------
~OHiddenModel()75 OHiddenModel::~OHiddenModel( )
76 {
77 DBG_CTOR( OHiddenModel, NULL );
78 }
79
80 //------------------------------------------------------------------------------
IMPLEMENT_DEFAULT_CLONING(OHiddenModel)81 IMPLEMENT_DEFAULT_CLONING( OHiddenModel )
82
83 //------------------------------------------------------------------------------
84 void OHiddenModel::getFastPropertyValue(Any& _rValue, sal_Int32 _nHandle) const
85 {
86 switch (_nHandle)
87 {
88 case PROPERTY_ID_HIDDEN_VALUE : _rValue <<= m_sHiddenValue; break;
89 default:
90 OControlModel::getFastPropertyValue(_rValue, _nHandle);
91 }
92 }
93
94 //------------------------------------------------------------------------------
setFastPropertyValue_NoBroadcast(sal_Int32 _nHandle,const Any & _rValue)95 void OHiddenModel::setFastPropertyValue_NoBroadcast(sal_Int32 _nHandle, const Any& _rValue) throw (com::sun::star::uno::Exception)
96 {
97 switch (_nHandle)
98 {
99 case PROPERTY_ID_HIDDEN_VALUE :
100 DBG_ASSERT(_rValue.getValueType().getTypeClass() == TypeClass_STRING, "OHiddenModel::setFastPropertyValue_NoBroadcast : invalid type !" );
101 _rValue >>= m_sHiddenValue;
102 break;
103 default:
104 OControlModel::setFastPropertyValue_NoBroadcast(_nHandle, _rValue);
105 }
106 }
107
108 //------------------------------------------------------------------------------
convertFastPropertyValue(Any & _rConvertedValue,Any & _rOldValue,sal_Int32 _nHandle,const Any & _rValue)109 sal_Bool OHiddenModel::convertFastPropertyValue(
110 Any& _rConvertedValue, Any& _rOldValue, sal_Int32 _nHandle, const Any& _rValue)
111 throw (IllegalArgumentException)
112 {
113 sal_Bool bModified(sal_False);
114 switch (_nHandle)
115 {
116 case PROPERTY_ID_HIDDEN_VALUE :
117 bModified = tryPropertyValue(_rConvertedValue, _rOldValue, _rValue, m_sHiddenValue);
118 break;
119 default:
120 bModified = OControlModel::convertFastPropertyValue(_rConvertedValue, _rOldValue, _nHandle, _rValue);
121 break;
122 }
123 return bModified;
124 }
125
126 //------------------------------------------------------------------------------
describeFixedProperties(Sequence<Property> & _rProps) const127 void OHiddenModel::describeFixedProperties( Sequence< Property >& _rProps ) const
128 {
129 BEGIN_DESCRIBE_BASE_PROPERTIES(4)
130 DECL_PROP2(CLASSID, sal_Int16, READONLY, TRANSIENT);
131 DECL_PROP1(HIDDEN_VALUE, ::rtl::OUString, BOUND);
132 DECL_PROP1(NAME, ::rtl::OUString, BOUND);
133 DECL_PROP1(TAG, ::rtl::OUString, BOUND);
134 END_DESCRIBE_PROPERTIES();
135 }
136
137 // XServiceInfo
138 //------------------------------------------------------------------------------
getSupportedServiceNames()139 StringSequence SAL_CALL OHiddenModel::getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException)
140 {
141 StringSequence aSupported( 2 );
142 aSupported[ 0 ] = FRM_SUN_COMPONENT_HIDDENCONTROL;
143 aSupported[ 1 ] = FRM_SUN_FORMCOMPONENT;
144 return aSupported;
145 }
146
147 //------------------------------------------------------------------------------
getServiceName()148 ::rtl::OUString SAL_CALL OHiddenModel::getServiceName() throw(RuntimeException)
149 {
150 return FRM_COMPONENT_HIDDEN; // old (non-sun) name for compatibility !
151 }
152
153 //------------------------------------------------------------------------------
write(const Reference<XObjectOutputStream> & _rxOutStream)154 void SAL_CALL OHiddenModel::write(const Reference<XObjectOutputStream>& _rxOutStream)
155 throw(IOException, RuntimeException)
156 {
157 // Version
158 _rxOutStream->writeShort(0x0002);
159
160 // Wert
161 _rxOutStream << m_sHiddenValue;
162
163 OControlModel::write(_rxOutStream);
164 }
165
166 //------------------------------------------------------------------------------
read(const Reference<XObjectInputStream> & _rxInStream)167 void SAL_CALL OHiddenModel::read(const Reference<XObjectInputStream>& _rxInStream) throw(IOException, RuntimeException)
168 {
169 // Version
170 sal_uInt16 nVersion = _rxInStream->readShort();
171
172 // Name
173 DBG_ASSERT(nVersion != 1, "OHiddenModel::read : this version is obsolete !");
174 switch (nVersion)
175 {
176 case 1 : { ::rtl::OUString sDummy; _rxInStream >> sDummy; _rxInStream >> m_sHiddenValue; } break;
177 case 2 : _rxInStream >> m_sHiddenValue; break;
178 default : DBG_ERROR("OHiddenModel::read : unknown version !"); m_sHiddenValue = ::rtl::OUString();
179 }
180 OControlModel::read(_rxInStream);
181 }
182
183 //.........................................................................
184 }
185 //.........................................................................
186
187