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 :
21 : #undef SC_DLLIMPLEMENTATION
22 :
23 : #include <vcl/waitobj.hxx>
24 :
25 : #include "viewdata.hxx"
26 : #include "document.hxx"
27 : #include "uiitems.hxx"
28 : #include "global.hxx"
29 : #include "globalnames.hxx"
30 : #include "dbdata.hxx"
31 : #include "scresid.hxx"
32 : #include "queryentry.hxx"
33 : #include "typedstrdata.hxx"
34 :
35 : #include "sc.hrc"
36 : #include "filter.hrc"
37 : #include "globstr.hrc"
38 :
39 : #define _PFILTDLG_CXX
40 : #include "pfiltdlg.hxx"
41 : #undef _PFILTDLG_CXX
42 : #include <svl/zforlist.hxx>
43 : #include "svl/sharedstringpool.hxx"
44 :
45 0 : ScPivotFilterDlg::ScPivotFilterDlg(Window* pParent, const SfxItemSet& rArgSet,
46 : SCTAB nSourceTab )
47 : : ModalDialog(pParent, "PivotFilterDialog",
48 : "modules/scalc/ui/pivotfilterdialog.ui" )
49 : ,
50 :
51 : aStrUndefined ( SC_RESSTR(SCSTR_UNDEFINED) ),
52 : aStrNone ( SC_RESSTR(SCSTR_NONE) ),
53 : aStrEmpty ( SC_RESSTR(SCSTR_FILTER_EMPTY) ),
54 : aStrNotEmpty ( SC_RESSTR(SCSTR_FILTER_NOTEMPTY) ),
55 : aStrColumn ( SC_RESSTR(SCSTR_COLUMN) ),
56 :
57 0 : nWhichQuery ( rArgSet.GetPool()->GetWhich( SID_QUERY ) ),
58 : theQueryData ( ((const ScQueryItem&)
59 0 : rArgSet.Get( nWhichQuery )).GetQueryData() ),
60 : pOutItem ( NULL ),
61 : pViewData ( NULL ),
62 : pDoc ( NULL ),
63 : nSrcTab ( nSourceTab ), // ist nicht im QueryParam
64 0 : nFieldCount ( 0 )
65 : {
66 0 : get(m_pLbField1, "field1");
67 0 : get(m_pLbCond1, "cond1");
68 0 : get(m_pEdVal1, "val1");
69 0 : get(m_pLbConnect1, "connect1");
70 0 : get(m_pLbField2, "field2");
71 0 : get(m_pLbCond2, "cond2");
72 0 : get(m_pEdVal2, "val2");
73 0 : get(m_pLbConnect2, "connect2");
74 0 : get(m_pLbField3, "field3");
75 0 : get(m_pLbCond3, "cond3");
76 0 : get(m_pEdVal3, "val3");
77 0 : get(m_pBtnCase, "case");
78 0 : get(m_pBtnRegExp, "regexp");
79 0 : get(m_pBtnUnique, "unique");
80 0 : get(m_pFtDbArea, "dbarea");
81 :
82 0 : for (sal_uInt16 i=0; i<=MAXCOL; i++)
83 0 : pEntryLists[i] = NULL;
84 :
85 0 : Init( rArgSet );
86 0 : }
87 :
88 0 : ScPivotFilterDlg::~ScPivotFilterDlg()
89 : {
90 0 : for (sal_uInt16 i=0; i<=MAXCOL; i++)
91 0 : delete pEntryLists[i];
92 :
93 0 : delete pOutItem;
94 0 : }
95 :
96 0 : void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet )
97 : {
98 : const ScQueryItem& rQueryItem = (const ScQueryItem&)
99 0 : rArgSet.Get( nWhichQuery );
100 :
101 0 : m_pBtnCase->SetClickHdl ( LINK( this, ScPivotFilterDlg, CheckBoxHdl ) );
102 :
103 0 : m_pLbField1->SetSelectHdl ( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
104 0 : m_pLbField2->SetSelectHdl ( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
105 0 : m_pLbField3->SetSelectHdl ( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
106 0 : m_pLbConnect1->SetSelectHdl( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
107 0 : m_pLbConnect2->SetSelectHdl( LINK( this, ScPivotFilterDlg, LbSelectHdl ) );
108 :
109 0 : m_pBtnCase->Check( theQueryData.bCaseSens );
110 0 : m_pBtnRegExp->Check( theQueryData.bRegExp );
111 0 : m_pBtnUnique->Check( !theQueryData.bDuplicate );
112 :
113 0 : pViewData = rQueryItem.GetViewData();
114 0 : pDoc = pViewData ? pViewData->GetDocument() : NULL;
115 :
116 : // fuer leichteren Zugriff:
117 0 : aFieldLbArr [0] = m_pLbField1;
118 0 : aFieldLbArr [1] = m_pLbField2;
119 0 : aFieldLbArr [2] = m_pLbField3;
120 0 : aValueEdArr [0] = m_pEdVal1;
121 0 : aValueEdArr [1] = m_pEdVal2;
122 0 : aValueEdArr [2] = m_pEdVal3;
123 0 : aCondLbArr [0] = m_pLbCond1;
124 0 : aCondLbArr [1] = m_pLbCond2;
125 0 : aCondLbArr [2] = m_pLbCond3;
126 :
127 0 : if ( pViewData && pDoc )
128 : {
129 : ScRange theCurArea ( ScAddress( theQueryData.nCol1,
130 : theQueryData.nRow1,
131 : nSrcTab ),
132 : ScAddress( theQueryData.nCol2,
133 : theQueryData.nRow2,
134 0 : nSrcTab ) );
135 0 : ScDBCollection* pDBColl = pDoc->GetDBCollection();
136 0 : OUString theDbName = OUString(STR_DB_LOCAL_NONAME);
137 :
138 : /*
139 : * Ueberpruefen, ob es sich bei dem uebergebenen
140 : * Bereich um einen Datenbankbereich handelt:
141 : */
142 :
143 0 : if ( pDBColl )
144 : {
145 0 : ScAddress& rStart = theCurArea.aStart;
146 0 : ScAddress& rEnd = theCurArea.aEnd;
147 0 : ScDBData* pDBData = pDBColl->GetDBAtArea( rStart.Tab(),
148 0 : rStart.Col(), rStart.Row(),
149 0 : rEnd.Col(), rEnd.Row() );
150 0 : if ( pDBData )
151 0 : theDbName = pDBData->GetName();
152 : }
153 :
154 0 : OUStringBuffer aBuf;
155 0 : aBuf.appendAscii(" (");
156 0 : aBuf.append(theDbName);
157 0 : aBuf.append(')');
158 0 : m_pFtDbArea->SetText(aBuf.makeStringAndClear());
159 : }
160 : else
161 : {
162 0 : m_pFtDbArea->SetText( EMPTY_OUSTRING );
163 : }
164 :
165 : // Feldlisten einlesen und Eintraege selektieren:
166 :
167 0 : FillFieldLists();
168 :
169 0 : for ( SCSIZE i=0; i<3; i++ )
170 : {
171 0 : if ( theQueryData.GetEntry(i).bDoQuery )
172 : {
173 0 : const ScQueryEntry& rEntry = theQueryData.GetEntry(i);
174 0 : const ScQueryEntry::Item& rItem = rEntry.GetQueryItem();
175 0 : OUString aValStr = rItem.maString.getString();
176 0 : if (rEntry.IsQueryByEmpty())
177 0 : aValStr = aStrEmpty;
178 0 : else if (rEntry.IsQueryByNonEmpty())
179 0 : aValStr = aStrNotEmpty;
180 0 : sal_uInt16 nCondPos = (sal_uInt16)rEntry.eOp;
181 0 : sal_uInt16 nFieldSelPos = GetFieldSelPos( static_cast<SCCOL>(rEntry.nField) );
182 :
183 0 : aFieldLbArr[i]->SelectEntryPos( nFieldSelPos );
184 0 : aCondLbArr [i]->SelectEntryPos( nCondPos );
185 0 : UpdateValueList( static_cast<sal_uInt16>(i+1) );
186 0 : aValueEdArr[i]->SetText( aValStr );
187 0 : if (aValStr.equals(aStrEmpty) || aValStr.equals(aStrNotEmpty))
188 0 : aCondLbArr[i]->Disable();
189 : }
190 : else
191 : {
192 0 : aFieldLbArr[i]->SelectEntryPos( 0 ); // "keiner" selektieren
193 0 : aCondLbArr [i]->SelectEntryPos( 0 ); // "=" selektieren
194 0 : UpdateValueList( static_cast<sal_uInt16>(i) );
195 0 : aValueEdArr[i]->SetText( EMPTY_OUSTRING );
196 : }
197 0 : aValueEdArr[i]->SetModifyHdl( LINK( this, ScPivotFilterDlg, ValModifyHdl ) );
198 : }
199 :
200 : // Disable/Enable Logik:
201 :
202 0 : (m_pLbField1->GetSelectEntryPos() != 0)
203 0 : && (m_pLbField2->GetSelectEntryPos() != 0)
204 0 : ? m_pLbConnect1->SelectEntryPos( (sal_uInt16)theQueryData.GetEntry(1).eConnect )
205 0 : : m_pLbConnect1->SetNoSelection();
206 :
207 0 : (m_pLbField2->GetSelectEntryPos() != 0)
208 0 : && (m_pLbField3->GetSelectEntryPos() != 0)
209 0 : ? m_pLbConnect2->SelectEntryPos( (sal_uInt16)theQueryData.GetEntry(2).eConnect )
210 0 : : m_pLbConnect2->SetNoSelection();
211 :
212 0 : if ( m_pLbField1->GetSelectEntryPos() == 0 )
213 : {
214 0 : m_pLbConnect1->Disable();
215 0 : m_pLbField2->Disable();
216 0 : m_pLbCond2->Disable();
217 0 : m_pEdVal2->Disable();
218 : }
219 0 : else if ( m_pLbConnect1->GetSelectEntryCount() == 0 )
220 : {
221 0 : m_pLbField2->Disable();
222 0 : m_pLbCond2->Disable();
223 0 : m_pEdVal2->Disable();
224 : }
225 :
226 0 : if ( m_pLbField2->GetSelectEntryPos() == 0 )
227 : {
228 0 : m_pLbConnect2->Disable();
229 0 : m_pLbField3->Disable();
230 0 : m_pLbCond3->Disable();
231 0 : m_pEdVal3->Disable();
232 : }
233 0 : else if ( m_pLbConnect2->GetSelectEntryCount() == 0 )
234 : {
235 0 : m_pLbField3->Disable();
236 0 : m_pLbCond3->Disable();
237 0 : m_pEdVal3->Disable();
238 : }
239 0 : }
240 :
241 0 : void ScPivotFilterDlg::FillFieldLists()
242 : {
243 0 : m_pLbField1->Clear();
244 0 : m_pLbField2->Clear();
245 0 : m_pLbField3->Clear();
246 0 : m_pLbField1->InsertEntry( aStrNone, 0 );
247 0 : m_pLbField2->InsertEntry( aStrNone, 0 );
248 0 : m_pLbField3->InsertEntry( aStrNone, 0 );
249 :
250 0 : if ( pDoc )
251 : {
252 0 : OUString aFieldName;
253 0 : SCTAB nTab = nSrcTab;
254 0 : SCCOL nFirstCol = theQueryData.nCol1;
255 0 : SCROW nFirstRow = theQueryData.nRow1;
256 0 : SCCOL nMaxCol = theQueryData.nCol2;
257 0 : SCCOL col = 0;
258 0 : sal_uInt16 i=1;
259 :
260 0 : for ( col=nFirstCol; col<=nMaxCol; col++ )
261 : {
262 0 : aFieldName = pDoc->GetString(col, nFirstRow, nTab);
263 0 : if ( aFieldName.isEmpty() )
264 : {
265 0 : aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, "%1", ScColToAlpha( col ));
266 : }
267 0 : m_pLbField1->InsertEntry( aFieldName, i );
268 0 : m_pLbField2->InsertEntry( aFieldName, i );
269 0 : m_pLbField3->InsertEntry( aFieldName, i );
270 0 : i++;
271 : }
272 0 : nFieldCount = i;
273 : }
274 0 : }
275 :
276 0 : void ScPivotFilterDlg::UpdateValueList( sal_uInt16 nList )
277 : {
278 0 : if ( pDoc && nList>0 && nList<=3 )
279 : {
280 0 : ComboBox* pValList = aValueEdArr[nList-1];
281 0 : sal_Int32 nFieldSelPos = aFieldLbArr[nList-1]->GetSelectEntryPos();
282 0 : sal_Int32 nListPos = 0;
283 0 : OUString aCurValue = pValList->GetText();
284 :
285 0 : pValList->Clear();
286 0 : pValList->InsertEntry( aStrNotEmpty, 0 );
287 0 : pValList->InsertEntry( aStrEmpty, 1 );
288 0 : nListPos = 2;
289 :
290 0 : if ( pDoc && nFieldSelPos )
291 : {
292 0 : SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1;
293 0 : if (!pEntryLists[nColumn])
294 : {
295 0 : WaitObject aWaiter( this );
296 :
297 0 : SCTAB nTab = nSrcTab;
298 0 : SCROW nFirstRow = theQueryData.nRow1;
299 0 : SCROW nLastRow = theQueryData.nRow2;
300 0 : nFirstRow++;
301 0 : bool bHasDates = false;
302 0 : bool bCaseSens = m_pBtnCase->IsChecked();
303 0 : pEntryLists[nColumn] = new std::vector<ScTypedStrData>;
304 : pDoc->GetFilterEntriesArea(
305 0 : nColumn, nFirstRow, nLastRow, nTab, bCaseSens, *pEntryLists[nColumn], bHasDates);
306 : }
307 :
308 0 : std::vector<ScTypedStrData>* pColl = pEntryLists[nColumn];
309 0 : std::vector<ScTypedStrData>::const_iterator it = pColl->begin(), itEnd = pColl->end();
310 0 : for (; it != itEnd; ++it)
311 : {
312 0 : pValList->InsertEntry(it->GetString(), nListPos);
313 0 : nListPos++;
314 : }
315 : }
316 0 : pValList->SetText( aCurValue );
317 : }
318 0 : }
319 :
320 0 : void ScPivotFilterDlg::ClearValueList( sal_uInt16 nList )
321 : {
322 0 : if ( nList>0 && nList<=3 )
323 : {
324 0 : ComboBox* pValList = aValueEdArr[nList-1];
325 0 : pValList->Clear();
326 0 : pValList->InsertEntry( aStrNotEmpty, 0 );
327 0 : pValList->InsertEntry( aStrEmpty, 1 );
328 0 : pValList->SetText( EMPTY_OUSTRING );
329 : }
330 0 : }
331 :
332 0 : sal_uInt16 ScPivotFilterDlg::GetFieldSelPos( SCCOL nField )
333 : {
334 0 : if ( nField >= theQueryData.nCol1 && nField <= theQueryData.nCol2 )
335 0 : return static_cast<sal_uInt16>(nField - theQueryData.nCol1 + 1);
336 : else
337 0 : return 0;
338 : }
339 :
340 0 : const ScQueryItem& ScPivotFilterDlg::GetOutputItem()
341 : {
342 0 : ScQueryParam theParam( theQueryData );
343 0 : sal_Int32 nConnect1 = m_pLbConnect1->GetSelectEntryPos();
344 0 : sal_Int32 nConnect2 = m_pLbConnect2->GetSelectEntryPos();
345 :
346 0 : svl::SharedStringPool& rPool = pViewData->GetDocument()->GetSharedStringPool();
347 :
348 0 : for ( SCSIZE i=0; i<3; i++ )
349 : {
350 0 : sal_uInt16 nField = aFieldLbArr[i]->GetSelectEntryPos();
351 0 : ScQueryOp eOp = (ScQueryOp)aCondLbArr[i]->GetSelectEntryPos();
352 :
353 0 : sal_Bool bDoThis = (aFieldLbArr[i]->GetSelectEntryPos() != 0);
354 0 : theParam.GetEntry(i).bDoQuery = bDoThis;
355 :
356 0 : if ( bDoThis )
357 : {
358 0 : ScQueryEntry& rEntry = theParam.GetEntry(i);
359 0 : ScQueryEntry::Item& rItem = rEntry.GetQueryItem();
360 :
361 0 : OUString aStrVal = aValueEdArr[i]->GetText();
362 :
363 : /*
364 : * Dialog liefert die ausgezeichneten Feldwerte "leer"/"nicht leer"
365 : * als Konstanten in nVal in Verbindung mit dem Schalter
366 : * bQueryByString auf FALSE.
367 : */
368 0 : if ( aStrVal.equals(aStrEmpty) )
369 : {
370 : OSL_ASSERT(eOp == SC_EQUAL);
371 0 : rEntry.SetQueryByEmpty();
372 : }
373 0 : else if ( aStrVal.equals(aStrNotEmpty) )
374 : {
375 : OSL_ASSERT(eOp == SC_EQUAL);
376 0 : rEntry.SetQueryByNonEmpty();
377 : }
378 : else
379 : {
380 0 : rItem.maString = rPool.intern(aStrVal);
381 0 : rItem.mfVal = 0.0;
382 0 : rItem.meType = ScQueryEntry::ByString;
383 : }
384 :
385 0 : rEntry.nField = nField ? (theQueryData.nCol1 +
386 0 : static_cast<SCCOL>(nField) - 1) : static_cast<SCCOL>(0);
387 0 : rEntry.eOp = eOp;
388 : }
389 : }
390 :
391 0 : theParam.GetEntry(1).eConnect = (nConnect1 != LISTBOX_ENTRY_NOTFOUND)
392 : ? (ScQueryConnect)nConnect1
393 0 : : SC_AND;
394 0 : theParam.GetEntry(2).eConnect = (nConnect2 != LISTBOX_ENTRY_NOTFOUND)
395 : ? (ScQueryConnect)nConnect2
396 0 : : SC_AND;
397 :
398 0 : theParam.bInplace = false;
399 0 : theParam.nDestTab = 0; // Woher kommen diese Werte?
400 0 : theParam.nDestCol = 0;
401 0 : theParam.nDestRow = 0;
402 :
403 0 : theParam.bDuplicate = !m_pBtnUnique->IsChecked();
404 0 : theParam.bCaseSens = m_pBtnCase->IsChecked();
405 0 : theParam.bRegExp = m_pBtnRegExp->IsChecked();
406 :
407 0 : if ( pOutItem ) DELETEZ( pOutItem );
408 0 : pOutItem = new ScQueryItem( nWhichQuery, &theParam );
409 :
410 0 : return *pOutItem;
411 : }
412 :
413 :
414 : // Handler:
415 :
416 :
417 0 : IMPL_LINK( ScPivotFilterDlg, LbSelectHdl, ListBox*, pLb )
418 : {
419 : /*
420 : * Behandlung der Enable/Disable-Logik,
421 : * abhaengig davon, welche ListBox angefasst wurde:
422 : */
423 :
424 0 : if (pLb == m_pLbConnect1)
425 : {
426 0 : if ( !m_pLbField2->IsEnabled() )
427 : {
428 0 : m_pLbField2->Enable();
429 0 : m_pLbCond2->Enable();
430 0 : m_pEdVal2->Enable();
431 : }
432 : }
433 0 : else if (pLb == m_pLbConnect2)
434 : {
435 0 : if ( !m_pLbField3->IsEnabled() )
436 : {
437 0 : m_pLbField3->Enable();
438 0 : m_pLbCond3->Enable();
439 0 : m_pEdVal3->Enable();
440 : }
441 : }
442 0 : else if (pLb == m_pLbField1)
443 : {
444 0 : if ( m_pLbField1->GetSelectEntryPos() == 0 )
445 : {
446 0 : m_pLbConnect1->SetNoSelection();
447 0 : m_pLbConnect2->SetNoSelection();
448 0 : m_pLbField2->SelectEntryPos( 0 );
449 0 : m_pLbField3->SelectEntryPos( 0 );
450 0 : m_pLbCond2->SelectEntryPos( 0 );
451 0 : m_pLbCond3->SelectEntryPos( 0 );
452 0 : ClearValueList( 1 );
453 0 : ClearValueList( 2 );
454 0 : ClearValueList( 3 );
455 :
456 0 : m_pLbConnect1->Disable();
457 0 : m_pLbConnect2->Disable();
458 0 : m_pLbField2->Disable();
459 0 : m_pLbField3->Disable();
460 0 : m_pLbCond2->Disable();
461 0 : m_pLbCond3->Disable();
462 0 : m_pEdVal2->Disable();
463 0 : m_pEdVal3->Disable();
464 : }
465 : else
466 : {
467 0 : UpdateValueList( 1 );
468 0 : if ( !m_pLbConnect1->IsEnabled() )
469 : {
470 0 : m_pLbConnect1->Enable();
471 : }
472 : }
473 : }
474 0 : else if (pLb == m_pLbField2)
475 : {
476 0 : if ( m_pLbField2->GetSelectEntryPos() == 0 )
477 : {
478 0 : m_pLbConnect2->SetNoSelection();
479 0 : m_pLbField3->SelectEntryPos( 0 );
480 0 : m_pLbCond3->SelectEntryPos( 0 );
481 0 : ClearValueList( 2 );
482 0 : ClearValueList( 3 );
483 :
484 0 : m_pLbConnect2->Disable();
485 0 : m_pLbField3->Disable();
486 0 : m_pLbCond3->Disable();
487 0 : m_pEdVal3->Disable();
488 : }
489 : else
490 : {
491 0 : UpdateValueList( 2 );
492 0 : if ( !m_pLbConnect2->IsEnabled() )
493 : {
494 0 : m_pLbConnect2->Enable();
495 : }
496 : }
497 : }
498 0 : else if (pLb == m_pLbField3)
499 : {
500 0 : ( m_pLbField3->GetSelectEntryPos() == 0 )
501 0 : ? ClearValueList( 3 )
502 0 : : UpdateValueList( 3 );
503 : }
504 :
505 0 : return 0;
506 : }
507 :
508 0 : IMPL_LINK( ScPivotFilterDlg, CheckBoxHdl, CheckBox*, pBox )
509 : {
510 : // bei Gross-/Kleinschreibung die Werte-Listen aktualisieren
511 :
512 0 : if (pBox == m_pBtnCase) // Wertlisten
513 : {
514 0 : for (sal_uInt16 i=0; i<=MAXCOL; i++)
515 0 : DELETEZ( pEntryLists[i] );
516 :
517 0 : OUString aCurVal1 = m_pEdVal1->GetText();
518 0 : OUString aCurVal2 = m_pEdVal2->GetText();
519 0 : OUString aCurVal3 = m_pEdVal3->GetText();
520 0 : UpdateValueList( 1 );
521 0 : UpdateValueList( 2 );
522 0 : UpdateValueList( 3 );
523 0 : m_pEdVal1->SetText( aCurVal1 );
524 0 : m_pEdVal2->SetText( aCurVal2 );
525 0 : m_pEdVal3->SetText( aCurVal3 );
526 : }
527 :
528 0 : return 0;
529 : }
530 :
531 0 : IMPL_LINK( ScPivotFilterDlg, ValModifyHdl, ComboBox*, pEd )
532 : {
533 0 : if ( pEd )
534 : {
535 0 : OUString aStrVal = pEd->GetText();
536 0 : ListBox* pLb = m_pLbCond1;
537 :
538 0 : if ( pEd == m_pEdVal2 ) pLb = m_pLbCond2;
539 0 : else if ( pEd == m_pEdVal3 ) pLb = m_pLbCond3;
540 :
541 : // wenn einer der Sonderwerte leer/nicht-leer
542 : // gewaehlt wird, so macht nur der =-Operator Sinn:
543 :
544 0 : if ( aStrEmpty.equals(aStrVal) || aStrNotEmpty.equals(aStrVal) )
545 : {
546 0 : pLb->SelectEntry(OUString('='));
547 0 : pLb->Disable();
548 : }
549 : else
550 0 : pLb->Enable();
551 : }
552 :
553 0 : return 0;
554 0 : }
555 :
556 :
557 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|