1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_xmloff.hxx"
30 #include "valueproperties.hxx"
31 #include "strings.hxx"
32 #include <com/sun/star/form/FormComponentType.hpp>
33 
34 //.........................................................................
35 namespace xmloff
36 {
37 //.........................................................................
38 
39 	using namespace ::com::sun::star::form;
40 
41 	//=====================================================================
42 	//= OValuePropertiesMetaData
43 	//=====================================================================
44 	//---------------------------------------------------------------------
45 	void OValuePropertiesMetaData::getValuePropertyNames(
46 			OControlElement::ElementType _eType, sal_Int16 _nFormComponentType,
47 			sal_Char const * & _rpCurrentValuePropertyName, sal_Char const * & _rpValuePropertyName)
48 	{
49 		// reset the pointers in case we can't determine the property names
50 		_rpCurrentValuePropertyName = _rpValuePropertyName = NULL;
51 		switch (_nFormComponentType)
52 		{
53 			case FormComponentType::TEXTFIELD:
54 				if (OControlElement::FORMATTED_TEXT == _eType)
55 				{
56 					_rpCurrentValuePropertyName = PROPERTY_EFFECTIVE_VALUE;
57 					_rpValuePropertyName = PROPERTY_EFFECTIVE_DEFAULT;
58 				}
59 				else
60 				{
61 					if (OControlElement::PASSWORD != _eType)
62 						// no CurrentValue" for passwords
63 						_rpCurrentValuePropertyName = PROPERTY_TEXT;
64 					_rpValuePropertyName = PROPERTY_DEFAULT_TEXT;
65 				}
66 				break;
67 
68 			case FormComponentType::NUMERICFIELD:
69 			case FormComponentType::CURRENCYFIELD:
70 				_rpCurrentValuePropertyName = PROPERTY_VALUE;
71 				_rpValuePropertyName = PROPERTY_DEFAULT_VALUE;
72 				break;
73 
74 			case FormComponentType::PATTERNFIELD:
75 			case FormComponentType::FILECONTROL:
76 			case FormComponentType::COMBOBOX:
77 				_rpValuePropertyName = PROPERTY_DEFAULT_TEXT;
78 				// NO BREAK!!
79 			case FormComponentType::COMMANDBUTTON:
80 				_rpCurrentValuePropertyName = PROPERTY_TEXT;
81 				break;
82 
83             case FormComponentType::CHECKBOX:
84 			case FormComponentType::RADIOBUTTON:
85 				_rpValuePropertyName = PROPERTY_REFVALUE;
86 				break;
87 
88 			case FormComponentType::HIDDENCONTROL:
89 				_rpValuePropertyName = PROPERTY_HIDDEN_VALUE;
90 				break;
91 
92             case FormComponentType::SCROLLBAR:
93 				_rpCurrentValuePropertyName = PROPERTY_SCROLLVALUE;
94 				_rpValuePropertyName = PROPERTY_SCROLLVALUE_DEFAULT;
95                 break;
96 
97             case FormComponentType::SPINBUTTON:
98 				_rpCurrentValuePropertyName = PROPERTY_SPINVALUE;
99 				_rpValuePropertyName = PROPERTY_DEFAULT_SPINVALUE;
100                 break;
101 
102             default:
103                 OSL_ENSURE( false, "OValuePropertiesMetaData::getValuePropertyNames: unsupported component type!" );
104                 break;
105 		}
106 	}
107 
108 
109 	//---------------------------------------------------------------------
110 	void OValuePropertiesMetaData::getValueLimitPropertyNames(sal_Int16 _nFormComponentType,
111 		sal_Char const * & _rpMinValuePropertyName, sal_Char const * & _rpMaxValuePropertyName)
112 	{
113 		_rpMinValuePropertyName = _rpMaxValuePropertyName = NULL;
114 		switch (_nFormComponentType)
115 		{
116 			case FormComponentType::NUMERICFIELD:
117 			case FormComponentType::CURRENCYFIELD:
118 				_rpMinValuePropertyName = PROPERTY_VALUE_MIN;
119 				_rpMaxValuePropertyName = PROPERTY_VALUE_MAX;
120 				break;
121 
122 			case FormComponentType::TEXTFIELD:
123 				_rpMinValuePropertyName = PROPERTY_EFFECTIVE_MIN;
124 				_rpMaxValuePropertyName = PROPERTY_EFFECTIVE_MAX;
125 				break;
126 
127             case FormComponentType::SCROLLBAR:
128 				_rpMinValuePropertyName = PROPERTY_SCROLLVALUE_MIN;
129 				_rpMaxValuePropertyName = PROPERTY_SCROLLVALUE_MAX;
130 				break;
131 
132             case FormComponentType::SPINBUTTON:
133 				_rpMinValuePropertyName = PROPERTY_SPINVALUE_MIN;
134 				_rpMaxValuePropertyName = PROPERTY_SPINVALUE_MAX;
135 				break;
136 
137             default:
138                 OSL_ENSURE( false, "OValuePropertiesMetaData::getValueLimitPropertyNames: unsupported component type!" );
139                 break;
140 		}
141 	}
142 
143 	//---------------------------------------------------------------------
144 	void OValuePropertiesMetaData::getRuntimeValuePropertyNames(
145 		OControlElement::ElementType _eType, sal_Int16 _nFormComponentType,
146 		sal_Char const * & _rpValuePropertyName, sal_Char const * & _rpDefaultValuePropertyName )
147 	{
148 		// reset the pointers in case we can't determine the property names
149 		_rpValuePropertyName = _rpDefaultValuePropertyName = NULL;
150 		switch (_nFormComponentType)
151 		{
152 			case FormComponentType::TEXTFIELD:
153 				if (OControlElement::FORMATTED_TEXT == _eType)
154 				{
155 					_rpValuePropertyName = PROPERTY_EFFECTIVE_VALUE;
156 					_rpDefaultValuePropertyName = PROPERTY_EFFECTIVE_DEFAULT;
157 				}
158 				else
159 				{
160 					_rpValuePropertyName = PROPERTY_TEXT;
161 					_rpDefaultValuePropertyName = PROPERTY_DEFAULT_TEXT;
162 				}
163 				break;
164 
165 			case FormComponentType::DATEFIELD:
166 				_rpValuePropertyName = PROPERTY_DATE;
167 				_rpDefaultValuePropertyName = PROPERTY_DEFAULT_DATE;
168                 break;
169 
170 			case FormComponentType::TIMEFIELD:
171 				_rpValuePropertyName = PROPERTY_TIME;
172 				_rpDefaultValuePropertyName = PROPERTY_DEFAULT_TIME;
173                 break;
174 
175 			case FormComponentType::NUMERICFIELD:
176 			case FormComponentType::CURRENCYFIELD:
177 			case FormComponentType::PATTERNFIELD:
178 			case FormComponentType::FILECONTROL:
179 			case FormComponentType::COMBOBOX:
180             case FormComponentType::SCROLLBAR:
181             case FormComponentType::SPINBUTTON:
182 				// For these types, the runtime properties are the same as the ones which in the XML
183 				// stream are named "value properties"
184 				getValuePropertyNames( _eType, _nFormComponentType, _rpValuePropertyName, _rpDefaultValuePropertyName );
185 				break;
186 
187 			case FormComponentType::CHECKBOX:
188 			case FormComponentType::RADIOBUTTON:
189 				_rpValuePropertyName = PROPERTY_STATE;
190 				_rpDefaultValuePropertyName = PROPERTY_DEFAULT_STATE;
191 				break;
192 		}
193 	}
194 
195 //.........................................................................
196 }	// namespace xmloff
197 //.........................................................................
198 
199 
200