21#include "kspread_genvalidationstyle.h"
22#include "kspread_cell.h"
23#include <KoXmlWriter.h>
27GenValidationStyles::GenValidationStyles()
32GenValidationStyles::~GenValidationStyles()
37TQString GenValidationStyles::lookup(
const GenValidationStyle& style )
39 StyleMap::iterator it = m_styles.find( style );
40 if ( it == m_styles.end() ) {
42 TQString styleName(
"val" );
43 styleName = makeUniqueName( styleName );
44 m_names.insert( styleName,
true );
45 it = m_styles.insert( style, styleName );
50TQString GenValidationStyles::makeUniqueName(
const TQString& base )
const
56 name += TQString::number( num++ );
57 }
while ( m_names.find( name ) != m_names.end() );
61void GenValidationStyles::writeStyle( KoXmlWriter& writer )
63 if ( m_styles.count()>0 )
65 writer.startElement(
"table:content-validations" );
66 StyleMap::Iterator it;
67 for ( it = m_styles.begin(); it != m_styles.end(); ++it )
69 writer.startElement(
"table:content-validation" );
70 writer.addAttribute(
"table:name", it.data() );
71 writer.addAttribute(
"table:allow-empty-cell", it.key().allowEmptyCell );
72 writer.addAttribute(
"table:condition", it.key().condition );
74 writer.startElement(
"table:help-message" );
75 writer.addAttribute(
"table:title", it.key().title );
76 writer.addAttribute(
"table:display", it.key().displayValidationInformation );
78 TQStringList text = TQStringList::split(
"\n", it.key().messageInfo );
79 for ( TQStringList::Iterator it2 = text.begin(); it2 != text.end(); ++it2 ) {
80 writer.startElement(
"text:p" );
81 writer.addTextNode( *it2 );
86 writer.startElement(
"table:error-message" );
87 writer.addAttribute(
"table:message-type", it.key().messageType );
89 writer.addAttribute(
"table:title", it.key().titleInfo);
90 writer.addAttribute(
"table:display", it.key().displayMessage);
91 text = TQStringList::split(
"\n", it.key().message );
92 for ( TQStringList::Iterator it3 = text.begin(); it3 != text.end(); ++it3 ) {
93 writer.startElement(
"text:p" );
94 writer.addTextNode( *it3 );
105void GenValidationStyle::initVal( Validity *_val )
109 allowEmptyCell = ( _val->allowEmptyCell ?
"true" :
"false" );
110 condition = createValidationCondition( _val );
112 displayValidationInformation = ( _val->displayValidationInformation ?
"true" :
"false" );
113 messageInfo = _val->messageInfo;
115 switch( _val->m_action )
117 case Action::Warning:
118 messageType =
"warning";
120 case Action::Information:
121 messageType =
"information";
124 messageType =
"stop";
128 titleInfo = _val->titleInfo;
129 displayMessage = ( _val->displayMessage ?
"true" :
"false" );
130 message = _val->message;
134TQString GenValidationStyle::createValidationCondition( Validity* _val )
137 switch( _val->m_restriction )
144 result =
"cell-content-is-text()";
147 result = createTimeValidationCondition( _val );
150 result = createDateValidationCondition( _val );
154 result = createNumberValidationCondition( _val );
157 result = createTextValidationCondition( _val );
160 result = createListValidationCondition( _val );
166TQString GenValidationStyle::createListValidationCondition( Validity* _val )
168 TQString result =
"oooc:cell-content-is-in-list(";
169 result = _val->listValidity.join(
";" );
174TQString GenValidationStyle::createNumberValidationCondition( Validity* _val )
178 result =
"oooc:cell-content-is-whole-number() and ";
180 result =
"oooc:cell-content-is-decimal-number() and ";
181 switch( _val->m_cond )
183 case Conditional::None:
186 case Conditional::Equal:
187 result+=
"cell-content()";
189 result+=TQString::number( _val->valMin );
191 case Conditional::Superior:
192 result+=
"cell-content()";
194 result+=TQString::number( _val->valMin );
196 case Conditional::Inferior:
197 result+=
"cell-content()";
199 result+=TQString::number( _val->valMin );
201 case Conditional::SuperiorEqual:
202 result+=
"cell-content()";
204 result+=TQString::number( _val->valMin );
206 case Conditional::InferiorEqual:
207 result+=
"cell-content()";
209 result+=TQString::number( _val->valMin );
211 case Conditional::Different:
212 result+=
"cell-content()";
214 result+=TQString::number( _val->valMin );
216 case Conditional::Between:
217 result+=
"cell-content-is-between(";
218 result+=TQString::number( _val->valMin );
220 result+=TQString::number( _val->valMax );
223 case Conditional::DifferentTo:
224 result+=
"cell-content-is-not-between(";
225 result+=TQString::number( _val->valMin );
227 result+=TQString::number( _val->valMax );
235TQString GenValidationStyle::createTimeValidationCondition( Validity* _val )
237 TQString result(
"oooc:cell-content-is-time() and " );
238 switch( _val->m_cond )
240 case Conditional::None:
243 case Conditional::Equal:
244 result+=
"cell-content()";
246 result+=_val->timeMin.toString( );
248 case Conditional::Superior:
249 result+=
"cell-content()";
251 result+=_val->timeMin.toString( );
253 case Conditional::Inferior:
254 result+=
"cell-content()";
256 result+=_val->timeMin.toString( );
258 case Conditional::SuperiorEqual:
259 result+=
"cell-content()";
261 result+=_val->timeMin.toString( );
263 case Conditional::InferiorEqual:
264 result+=
"cell-content()";
266 result+=_val->timeMin.toString( );
268 case Conditional::Different:
269 result+=
"cell-content()";
271 result+=_val->timeMin.toString( );
273 case Conditional::Between:
274 result+=
"cell-content-is-between(";
275 result+=_val->timeMin.toString( );
277 result+=_val->timeMax.toString( );
280 case Conditional::DifferentTo:
281 result+=
"cell-content-is-not-between(";
282 result+=_val->timeMin.toString( );
284 result+=_val->timeMax.toString( );
291TQString GenValidationStyle::createDateValidationCondition( Validity* _val )
293 TQString result(
"oooc:cell-content-is-date() and " );
294 switch( _val->m_cond )
296 case Conditional::None:
299 case Conditional::Equal:
300 result+=
"cell-content()";
302 result+=_val->dateMin.toString();
304 case Conditional::Superior:
305 result+=
"cell-content()";
307 result+=_val->dateMin.toString();
309 case Conditional::Inferior:
310 result+=
"cell-content()";
312 result+=_val->dateMin.toString();
314 case Conditional::SuperiorEqual:
315 result+=
"cell-content()";
317 result+=_val->dateMin.toString();
319 case Conditional::InferiorEqual:
320 result+=
"cell-content()";
322 result+=_val->dateMin.toString();
324 case Conditional::Different:
325 result+=
"cell-content()";
327 result+=_val->dateMin.toString();
329 case Conditional::Between:
330 result+=
"cell-content-is-between(";
331 result+=_val->dateMin.toString();
333 result+=_val->dateMax.toString();
336 case Conditional::DifferentTo:
337 result+=
"cell-content-is-not-between(";
338 result+=_val->dateMin.toString();
340 result+=_val->dateMax.toString();
347TQString GenValidationStyle::createTextValidationCondition( Validity* _val )
350 switch( _val->m_cond )
352 case Conditional::None:
355 case Conditional::Equal:
356 result+=
"oooc:cell-content-text-length()";
358 result+=TQString::number( _val->valMin );
360 case Conditional::Superior:
361 result+=
"oooc:cell-content-text-length()";
363 result+=TQString::number( _val->valMin );
365 case Conditional::Inferior:
366 result+=
"oooc:cell-content-text-length()";
368 result+=TQString::number( _val->valMin );
370 case Conditional::SuperiorEqual:
371 result+=
"oooc:cell-content-text-length()";
373 result+=TQString::number( _val->valMin );
375 case Conditional::InferiorEqual:
376 result+=
"oooc:cell-content-text-length()";
378 result+=TQString::number( _val->valMin );
380 case Conditional::Different:
381 result+=
"oooc:cell-content-text-length()";
383 result+=TQString::number( _val->valMin );
385 case Conditional::Between:
386 result+=
"oooc:cell-content-text-length-is-between(";
387 result+=TQString::number( _val->valMin );
389 result+=TQString::number( _val->valMax );
392 case Conditional::DifferentTo:
393 result+=
"oooc:cell-content-text-length-is-not-between(";
394 result+=TQString::number( _val->valMin );
396 result+=TQString::number( _val->valMax );
@ Number
Restrict to numbers.
@ Integer
Restrict to integers
@ TextLength
Restrict text length.