Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #include <rangelst.hxx>
30 : : #include <sfx2/dispatch.hxx>
31 : : #include <vcl/waitobj.hxx>
32 : :
33 : : #include "uiitems.hxx"
34 : : #include "dbdata.hxx"
35 : : #include "reffact.hxx"
36 : : #include "viewdata.hxx"
37 : : #include "document.hxx"
38 : : #include "docsh.hxx"
39 : : #include "scresid.hxx"
40 : : #include "queryentry.hxx"
41 : :
42 : : #include "foptmgr.hxx"
43 : :
44 : : #include "globstr.hrc"
45 : : #include "filter.hrc"
46 : :
47 : : #define _FILTDLG_CXX
48 : : #include "filtdlg.hxx"
49 : : #undef _FILTDLG_CXX
50 : : #include <vcl/msgbox.hxx>
51 : :
52 : : #include <limits>
53 : :
54 : : using ::rtl::OUString;
55 : : using ::rtl::OUStringBuffer;
56 : :
57 : : #define ERRORBOX(rid) ErrorBox( this, WinBits( WB_OK|WB_DEF_OK), \
58 : : ScGlobal::GetRscString(rid) ).Execute()
59 : :
60 : : #define QUERY_ENTRY_COUNT 4
61 : : #define INVALID_HEADER_POS std::numeric_limits<size_t>::max()
62 : :
63 : 0 : ScFilterDlg::EntryList::EntryList() :
64 [ # # ]: 0 : mnHeaderPos(INVALID_HEADER_POS) {}
65 : :
66 : 0 : ScFilterDlg::ScFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
67 : : const SfxItemSet& rArgSet )
68 : :
69 : : : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_FILTER ),
70 : : //
71 : : aFlCriteria ( this, ScResId( FL_CRITERIA ) ),
72 : : aLbConnect1 ( this, ScResId( LB_OP1 ) ),
73 : : aLbField1 ( this, ScResId( LB_FIELD1 ) ),
74 : : aLbCond1 ( this, ScResId( LB_COND1 ) ),
75 : : aEdVal1 ( this, ScResId( ED_VAL1 ) ),
76 : : aLbConnect2 ( this, ScResId( LB_OP2 ) ),
77 : : aLbField2 ( this, ScResId( LB_FIELD2 ) ),
78 : : aLbCond2 ( this, ScResId( LB_COND2 ) ),
79 : : aEdVal2 ( this, ScResId( ED_VAL2 ) ),
80 : : aLbConnect3 ( this, ScResId( LB_OP3 ) ),
81 : : aLbField3 ( this, ScResId( LB_FIELD3 ) ),
82 : : aLbCond3 ( this, ScResId( LB_COND3 ) ),
83 : : aEdVal3 ( this, ScResId( ED_VAL3 ) ),
84 : : aLbConnect4 ( this, ScResId( LB_OP4 ) ),
85 : : aLbField4 ( this, ScResId( LB_FIELD4 ) ),
86 : : aLbCond4 ( this, ScResId( LB_COND4 ) ),
87 : : aEdVal4 ( this, ScResId( ED_VAL4 ) ),
88 : : aFtConnect ( this, ScResId( FT_OP ) ),
89 : : aFtField ( this, ScResId( FT_FIELD ) ),
90 : : aFtCond ( this, ScResId( FT_COND ) ),
91 : : aFtVal ( this, ScResId( FT_VAL ) ),
92 : : aFlSeparator ( this, ScResId( FL_SEPARATOR ) ),
93 : : aScrollBar ( this, ScResId( LB_SCROLL ) ),
94 : : aFlOptions ( this, ScResId( FL_OPTIONS ) ),
95 : : aBtnMore ( this, ScResId( BTN_MORE ) ),
96 : : aBtnHelp ( this, ScResId( BTN_HELP ) ),
97 : : aBtnOk ( this, ScResId( BTN_OK ) ),
98 : : aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
99 : : aBtnCase ( this, ScResId( BTN_CASE ) ),
100 : : aBtnRegExp ( this, ScResId( BTN_REGEXP ) ),
101 : : aBtnHeader ( this, ScResId( BTN_HEADER ) ),
102 : : aBtnUnique ( this, ScResId( BTN_UNIQUE ) ),
103 : : aBtnCopyResult ( this, ScResId( BTN_COPY_RESULT ) ),
104 : : aLbCopyArea ( this, ScResId( LB_COPY_AREA ) ),
105 : : aEdCopyArea ( this, this, ScResId( ED_COPY_AREA ) ),
106 : : aRbCopyArea ( this, ScResId( RB_COPY_AREA ), &aEdCopyArea, this ),
107 : : aBtnDestPers ( this, ScResId( BTN_DEST_PERS ) ),
108 : : aFtDbAreaLabel ( this, ScResId( FT_DBAREA_LABEL ) ),
109 : : aFtDbArea ( this, ScResId( FT_DBAREA ) ),
110 : : aStrUndefined ( SC_RESSTR(SCSTR_UNDEFINED) ),
111 : : aStrNone ( SC_RESSTR(SCSTR_NONE) ),
112 : : aStrEmpty ( SC_RESSTR(SCSTR_FILTER_EMPTY) ),
113 : : aStrNotEmpty ( SC_RESSTR(SCSTR_FILTER_NOTEMPTY) ),
114 : : aStrRow ( SC_RESSTR(SCSTR_ROW) ),
115 : : aStrColumn ( SC_RESSTR(SCSTR_COLUMN) ),
116 : : //
117 : : pOptionsMgr ( NULL ),
118 [ # # ]: 0 : nWhichQuery ( rArgSet.GetPool()->GetWhich( SID_QUERY ) ),
119 : : theQueryData ( ((const ScQueryItem&)
120 [ # # ][ # # ]: 0 : rArgSet.Get( nWhichQuery )).GetQueryData() ),
121 : : pOutItem ( NULL ),
122 : : pViewData ( NULL ),
123 : : pDoc ( NULL ),
124 : : nSrcTab ( 0 ),
125 : : bRefInputMode ( false ),
126 [ # # ][ # # ]: 0 : pTimer ( NULL )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
127 : : {
128 [ # # ][ # # ]: 0 : aBtnMore.SetMoreText( String(ScResId( SCSTR_MOREBTN_MOREOPTIONS )) );
[ # # ][ # # ]
129 [ # # ][ # # ]: 0 : aBtnMore.SetLessText( String(ScResId( SCSTR_MOREBTN_FEWEROPTIONS )) );
[ # # ][ # # ]
130 [ # # ]: 0 : Init( rArgSet );
131 [ # # ]: 0 : FreeResource();
132 : :
133 : : // Hack: RefInput control
134 [ # # ][ # # ]: 0 : pTimer = new Timer;
135 [ # # ]: 0 : pTimer->SetTimeout( 50 ); // Wait 50ms
136 [ # # ]: 0 : pTimer->SetTimeoutHdl( LINK( this, ScFilterDlg, TimeOutHdl ) );
137 : :
138 : 0 : OUStringBuffer aBuf;
139 : :
140 [ # # ][ # # ]: 0 : OUString sAccName = SC_RESSTR(RID_FILTER_OPERATOR);
141 [ # # ]: 0 : aBuf.append(sAccName);
142 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 1"));
143 [ # # ][ # # ]: 0 : aLbConnect1.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
144 [ # # ]: 0 : aBuf.append(sAccName);
145 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 2"));
146 [ # # ][ # # ]: 0 : aLbConnect2.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
147 : :
148 [ # # ][ # # ]: 0 : sAccName = SC_RESSTR(RID_FILTER_FIELDNAME);
149 [ # # ]: 0 : aBuf.append(sAccName);
150 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 1"));
151 [ # # ][ # # ]: 0 : aLbField1.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
152 [ # # ]: 0 : aBuf.append(sAccName);
153 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 2"));
154 [ # # ][ # # ]: 0 : aLbField2.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
155 [ # # ]: 0 : aBuf.append(sAccName);
156 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 3"));
157 [ # # ][ # # ]: 0 : aLbField3.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
158 : :
159 [ # # ][ # # ]: 0 : sAccName = SC_RESSTR(RID_FILTER_CONDITION);
160 [ # # ]: 0 : aBuf.append(sAccName);
161 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 1"));
162 [ # # ][ # # ]: 0 : aLbCond1.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
163 [ # # ]: 0 : aBuf.append(sAccName);
164 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 2"));
165 [ # # ][ # # ]: 0 : aLbCond2.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
166 [ # # ]: 0 : aBuf.append(sAccName);
167 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 3"));
168 [ # # ][ # # ]: 0 : aLbCond3.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
169 : :
170 [ # # ][ # # ]: 0 : sAccName = SC_RESSTR(RID_FILTER_VALUE);
171 [ # # ]: 0 : aBuf.append(sAccName);
172 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 1"));
173 [ # # ][ # # ]: 0 : aEdVal1.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
174 [ # # ]: 0 : aBuf.append(sAccName);
175 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 2"));
176 [ # # ][ # # ]: 0 : aEdVal2.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
177 [ # # ]: 0 : aBuf.append(sAccName);
178 [ # # ]: 0 : aBuf.appendAscii(RTL_CONSTASCII_STRINGPARAM (" 3"));
179 [ # # ][ # # ]: 0 : aEdVal3.SetAccessibleName(aBuf.makeStringAndClear());
[ # # ][ # # ]
180 : :
181 [ # # ][ # # ]: 0 : aLbCopyArea.SetAccessibleName(ScResId(STR_COPY_AREA_TO));
[ # # ][ # # ]
182 [ # # ][ # # ]: 0 : aEdCopyArea.SetAccessibleName(ScResId(STR_COPY_AREA_TO));
[ # # ][ # # ]
183 [ # # ]: 0 : aLbCopyArea.SetAccessibleRelationLabeledBy(&aBtnCopyResult);
184 [ # # ]: 0 : aEdCopyArea.SetAccessibleRelationLabeledBy(&aBtnCopyResult);
185 : :
186 [ # # ]: 0 : aLbConnect1.SetAccessibleRelationLabeledBy(&aFtConnect);
187 [ # # ]: 0 : aLbConnect2.SetAccessibleRelationLabeledBy(&aFtConnect);
188 [ # # ]: 0 : aLbField1.SetAccessibleRelationLabeledBy(&aFtField);
189 [ # # ]: 0 : aLbField2.SetAccessibleRelationLabeledBy(&aFtField);
190 [ # # ]: 0 : aLbField3.SetAccessibleRelationLabeledBy(&aFtField);
191 [ # # ]: 0 : aLbCond1.SetAccessibleRelationLabeledBy(&aFtCond);
192 [ # # ]: 0 : aLbCond2.SetAccessibleRelationLabeledBy(&aFtCond);
193 [ # # ]: 0 : aLbCond3.SetAccessibleRelationLabeledBy(&aFtCond);
194 [ # # ]: 0 : aEdVal1.SetAccessibleRelationLabeledBy(&aFtVal);
195 [ # # ]: 0 : aEdVal2.SetAccessibleRelationLabeledBy(&aFtVal);
196 [ # # ]: 0 : aEdVal3.SetAccessibleRelationLabeledBy(&aFtVal);
197 : 0 : }
198 : :
199 : :
200 : : //----------------------------------------------------------------------------
201 : :
202 [ # # ][ # # ]: 0 : ScFilterDlg::~ScFilterDlg()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
203 : : {
204 [ # # ][ # # ]: 0 : delete pOptionsMgr;
205 [ # # ][ # # ]: 0 : delete pOutItem;
206 : :
207 : : // Hack: RefInput control
208 [ # # ]: 0 : pTimer->Stop();
209 [ # # ][ # # ]: 0 : delete pTimer;
210 [ # # ]: 0 : }
211 : :
212 : :
213 : : //----------------------------------------------------------------------------
214 : :
215 : 0 : void ScFilterDlg::Init( const SfxItemSet& rArgSet )
216 : : {
217 : : const ScQueryItem& rQueryItem = (const ScQueryItem&)
218 : 0 : rArgSet.Get( nWhichQuery );
219 : :
220 : 0 : aBtnOk.SetClickHdl ( LINK( this, ScFilterDlg, EndDlgHdl ) );
221 : 0 : aBtnCancel.SetClickHdl ( LINK( this, ScFilterDlg, EndDlgHdl ) );
222 : 0 : aBtnMore.SetClickHdl ( LINK( this, ScFilterDlg, MoreClickHdl ) );
223 : 0 : aBtnHeader.SetClickHdl ( LINK( this, ScFilterDlg, CheckBoxHdl ) );
224 : 0 : aBtnCase.SetClickHdl ( LINK( this, ScFilterDlg, CheckBoxHdl ) );
225 : : //
226 : 0 : aLbField1.SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) );
227 : 0 : aLbField2.SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) );
228 : 0 : aLbField3.SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) );
229 : 0 : aLbField4.SetSelectHdl ( LINK( this, ScFilterDlg, LbSelectHdl ) );
230 : 0 : aLbConnect1.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
231 : 0 : aLbConnect2.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
232 : 0 : aLbConnect3.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
233 : 0 : aLbConnect4.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
234 : :
235 : 0 : aLbCond1.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
236 : 0 : aLbCond2.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
237 : 0 : aLbCond3.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
238 : 0 : aLbCond4.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
239 : :
240 : 0 : pViewData = rQueryItem.GetViewData();
241 [ # # ]: 0 : pDoc = pViewData ? pViewData->GetDocument() : NULL;
242 [ # # ]: 0 : nSrcTab = pViewData ? pViewData->GetTabNo() : static_cast<SCTAB>(0);
243 : :
244 : : // for easier access:
245 : 0 : maFieldLbArr.reserve(QUERY_ENTRY_COUNT);
246 [ # # ]: 0 : maFieldLbArr.push_back(&aLbField1);
247 [ # # ]: 0 : maFieldLbArr.push_back(&aLbField2);
248 [ # # ]: 0 : maFieldLbArr.push_back(&aLbField3);
249 [ # # ]: 0 : maFieldLbArr.push_back(&aLbField4);
250 : 0 : maValueEdArr.reserve(QUERY_ENTRY_COUNT);
251 [ # # ]: 0 : maValueEdArr.push_back(&aEdVal1);
252 [ # # ]: 0 : maValueEdArr.push_back(&aEdVal2);
253 [ # # ]: 0 : maValueEdArr.push_back(&aEdVal3);
254 [ # # ]: 0 : maValueEdArr.push_back(&aEdVal4);
255 : 0 : maCondLbArr.reserve(QUERY_ENTRY_COUNT);
256 [ # # ]: 0 : maCondLbArr.push_back(&aLbCond1);
257 [ # # ]: 0 : maCondLbArr.push_back(&aLbCond2);
258 [ # # ]: 0 : maCondLbArr.push_back(&aLbCond3);
259 [ # # ]: 0 : maCondLbArr.push_back(&aLbCond4);
260 : 0 : maConnLbArr.reserve(QUERY_ENTRY_COUNT);
261 [ # # ]: 0 : maConnLbArr.push_back(&aLbConnect1);
262 [ # # ]: 0 : maConnLbArr.push_back(&aLbConnect2);
263 [ # # ]: 0 : maConnLbArr.push_back(&aLbConnect3);
264 [ # # ]: 0 : maConnLbArr.push_back(&aLbConnect4);
265 : :
266 : : // Option initialization:
267 : :
268 : : pOptionsMgr = new ScFilterOptionsMgr(
269 : : this,
270 : : pViewData,
271 : : theQueryData,
272 : : aBtnMore,
273 : : aBtnCase,
274 : : aBtnRegExp,
275 : : aBtnHeader,
276 : : aBtnUnique,
277 : : aBtnCopyResult,
278 : : aBtnDestPers,
279 : : aLbCopyArea,
280 : : aEdCopyArea,
281 : : aRbCopyArea,
282 : : aFtDbAreaLabel,
283 : : aFtDbArea,
284 : : aFlOptions,
285 [ # # ][ # # ]: 0 : aStrUndefined );
286 : :
287 : : // Read in field lists and select entries
288 : :
289 : 0 : FillFieldLists();
290 : :
291 [ # # ]: 0 : for (size_t i = 0; i < QUERY_ENTRY_COUNT; ++i)
292 : : {
293 : 0 : rtl::OUString aValStr;
294 : 0 : size_t nCondPos = 0;
295 : 0 : size_t nFieldSelPos = 0;
296 : :
297 [ # # ]: 0 : ScQueryEntry& rEntry = theQueryData.GetEntry(i);
298 [ # # ]: 0 : if ( rEntry.bDoQuery )
299 : : {
300 [ # # ]: 0 : const ScQueryEntry::Item& rItem = rEntry.GetQueryItem();
301 : 0 : nCondPos = static_cast<size_t>(rEntry.eOp);
302 : 0 : nFieldSelPos = GetFieldSelPos( static_cast<SCCOL>(rEntry.nField) );
303 [ # # ][ # # ]: 0 : if (rEntry.IsQueryByEmpty())
304 : : {
305 : 0 : aValStr = aStrEmpty;
306 [ # # ][ # # ]: 0 : maCondLbArr[i]->Disable();
307 : : }
308 [ # # ][ # # ]: 0 : else if (rEntry.IsQueryByNonEmpty())
309 : : {
310 : 0 : aValStr = aStrNotEmpty;
311 [ # # ][ # # ]: 0 : maCondLbArr[i]->Disable();
312 : : }
313 : : else
314 : : {
315 [ # # ]: 0 : if (rItem.maString.isEmpty())
316 : : {
317 [ # # ]: 0 : if (rItem.meType == ScQueryEntry::ByValue)
318 [ # # ][ # # ]: 0 : pDoc->GetFormatTable()->GetInputLineString( rItem.mfVal, 0, aValStr);
319 [ # # ]: 0 : else if (rItem.meType == ScQueryEntry::ByDate)
320 : : {
321 [ # # ]: 0 : SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
322 : : pFormatter->GetInputLineString( rItem.mfVal,
323 [ # # ][ # # ]: 0 : pFormatter->GetStandardFormat( NUMBERFORMAT_DATE), aValStr);
324 : : }
325 : : else
326 : : {
327 : : SAL_WARN( "sc", "ScFilterDlg::Init: empty query string, really?");
328 : 0 : aValStr = rItem.maString;
329 : : }
330 : : }
331 : : else
332 : : {
333 : : // XXX NOTE: if not ByString we just assume this has been
334 : : // set to a proper string corresponding to the numeric
335 : : // value earlier!
336 : 0 : aValStr = rItem.maString;
337 : : }
338 : : }
339 : : }
340 [ # # ]: 0 : else if ( i == 0 )
341 : : {
342 : 0 : nFieldSelPos = GetFieldSelPos( pViewData->GetCurX() );
343 : : rEntry.nField = nFieldSelPos ? (theQueryData.nCol1 +
344 [ # # ]: 0 : static_cast<SCCOL>(nFieldSelPos) - 1) : static_cast<SCCOL>(0);
345 : 0 : rEntry.bDoQuery=true;
346 [ # # ]: 0 : if (maRefreshExceptQuery.size() < i + 1)
347 [ # # ]: 0 : maRefreshExceptQuery.resize(i + 1, false);
348 [ # # ]: 0 : maRefreshExceptQuery[i] = true;
349 : :
350 : : }
351 [ # # ][ # # ]: 0 : maFieldLbArr[i]->SelectEntryPos( nFieldSelPos );
352 [ # # ][ # # ]: 0 : maCondLbArr [i]->SelectEntryPos( nCondPos );
353 [ # # ][ # # ]: 0 : maValueEdArr[i]->SetText( aValStr );
[ # # ][ # # ]
354 [ # # ][ # # ]: 0 : maValueEdArr[i]->EnableAutocomplete( false );
355 [ # # ][ # # ]: 0 : maValueEdArr[i]->SetModifyHdl( LINK( this, ScFilterDlg, ValModifyHdl ) );
[ # # ]
356 [ # # ]: 0 : UpdateValueList(i+1);
357 : 0 : }
358 : :
359 : 0 : aScrollBar.SetEndScrollHdl( LINK( this, ScFilterDlg, ScrollHdl ) );
360 : 0 : aScrollBar.SetScrollHdl( LINK( this, ScFilterDlg, ScrollHdl ) );
361 : :
362 [ # # ]: 0 : aScrollBar.SetRange( Range( 0, 4 ) );
363 : 0 : aScrollBar.SetLineSize( 1 );
364 : 0 : aLbConnect1.Hide();
365 : : // Disable/Enable Logic:
366 : :
367 : 0 : (aLbField1.GetSelectEntryPos() != 0)
368 : 0 : && (aLbField2.GetSelectEntryPos() != 0)
369 : 0 : ? aLbConnect2.SelectEntryPos( (sal_uInt16)theQueryData.GetEntry(1).eConnect )
370 [ # # # # ]: 0 : : aLbConnect2.SetNoSelection();
371 : :
372 : 0 : (aLbField2.GetSelectEntryPos() != 0)
373 : 0 : && (aLbField3.GetSelectEntryPos() != 0)
374 : 0 : ? aLbConnect3.SelectEntryPos( (sal_uInt16)theQueryData.GetEntry(2).eConnect )
375 [ # # # # ]: 0 : : aLbConnect3.SetNoSelection();
376 : :
377 : 0 : (aLbField3.GetSelectEntryPos() != 0)
378 : 0 : && (aLbField4.GetSelectEntryPos() != 0)
379 : 0 : ? aLbConnect4.SelectEntryPos( (sal_uInt16)theQueryData.GetEntry(3).eConnect )
380 [ # # # # ]: 0 : : aLbConnect4.SetNoSelection();
381 [ # # ]: 0 : if ( aLbField1.GetSelectEntryPos() == 0 )
382 : : {
383 : 0 : aLbConnect2.Disable();
384 : 0 : aLbField2.Disable();
385 : 0 : aLbCond2.Disable();
386 : 0 : aEdVal2.Disable();
387 : : }
388 [ # # ]: 0 : else if ( aLbConnect2.GetSelectEntryCount() == 0 )
389 : : {
390 : 0 : aLbField2.Disable();
391 : 0 : aLbCond2.Disable();
392 : 0 : aEdVal2.Disable();
393 : : }
394 : :
395 [ # # ]: 0 : if ( aLbField2.GetSelectEntryPos() == 0 )
396 : : {
397 : 0 : aLbConnect3.Disable();
398 : 0 : aLbField3.Disable();
399 : 0 : aLbCond3.Disable();
400 : 0 : aEdVal3.Disable();
401 : : }
402 [ # # ]: 0 : else if ( aLbConnect3.GetSelectEntryCount() == 0 )
403 : : {
404 : 0 : aLbField3.Disable();
405 : 0 : aLbCond3.Disable();
406 : 0 : aEdVal3.Disable();
407 : : }
408 [ # # ]: 0 : if ( aLbField3.GetSelectEntryPos() == 0 )
409 : : {
410 : 0 : aLbConnect4.Disable();
411 : 0 : aLbField4.Disable();
412 : 0 : aLbCond4.Disable();
413 : 0 : aEdVal4.Disable();
414 : : }
415 [ # # ]: 0 : else if ( aLbConnect4.GetSelectEntryCount() == 0 )
416 : : {
417 : 0 : aLbField4.Disable();
418 : 0 : aLbCond4.Disable();
419 : 0 : aEdVal4.Disable();
420 : : }
421 : :
422 [ # # # # ]: 0 : if(pDoc!=NULL &&
[ # # ]
423 : 0 : pDoc->GetChangeTrack()!=NULL) aBtnCopyResult.Disable();
424 : : // Switch on modal mode
425 : : // SetDispatcherLock( true );
426 : : //@BugID 54702 Enable/disable only in Basic class
427 : : // SFX_APPWINDOW->Disable(false); //! general method in ScAnyRefDlg
428 : 0 : }
429 : :
430 : :
431 : : //----------------------------------------------------------------------------
432 : :
433 : 0 : sal_Bool ScFilterDlg::Close()
434 : : {
435 [ # # ]: 0 : if (pViewData)
436 : 0 : pViewData->GetDocShell()->CancelAutoDBRange();
437 : :
438 : 0 : return DoClose( ScFilterDlgWrapper::GetChildWindowId() );
439 : : }
440 : :
441 : :
442 : : //----------------------------------------------------------------------------
443 : : // Mouse-selected cell area becomes the new selection and is shown in the
444 : : // reference text box
445 : :
446 : 0 : void ScFilterDlg::SetReference( const ScRange& rRef, ScDocument* pDocP )
447 : : {
448 [ # # ]: 0 : if ( bRefInputMode ) // Only possible if in reference edit mode
449 : : {
450 [ # # ]: 0 : if ( rRef.aStart != rRef.aEnd )
451 [ # # ]: 0 : RefInputStart( &aEdCopyArea );
452 : 0 : rtl::OUString aRefStr;
453 [ # # ][ # # ]: 0 : rRef.aStart.Format( aRefStr, SCA_ABS_3D, pDocP, pDocP->GetAddressConvention() );
454 [ # # ][ # # ]: 0 : aEdCopyArea.SetRefString( aRefStr );
[ # # ]
455 : : }
456 : 0 : }
457 : :
458 : :
459 : : //----------------------------------------------------------------------------
460 : :
461 : 0 : void ScFilterDlg::SetActive()
462 : : {
463 [ # # ]: 0 : if ( bRefInputMode )
464 : : {
465 : 0 : aEdCopyArea.GrabFocus();
466 [ # # ]: 0 : if ( aEdCopyArea.GetModifyHdl().IsSet() )
467 : 0 : ((Link&)aEdCopyArea.GetModifyHdl()).Call( &aEdCopyArea );
468 : : }
469 : : else
470 : 0 : GrabFocus();
471 : :
472 : 0 : RefInputDone();
473 : 0 : }
474 : :
475 : : //----------------------------------------------------------------------------
476 : :
477 : 0 : void ScFilterDlg::FillFieldLists()
478 : : {
479 : 0 : aLbField1.Clear();
480 : 0 : aLbField2.Clear();
481 : 0 : aLbField3.Clear();
482 : 0 : aLbField4.Clear();
483 [ # # ]: 0 : aLbField1.InsertEntry( aStrNone, 0 );
484 [ # # ]: 0 : aLbField2.InsertEntry( aStrNone, 0 );
485 [ # # ]: 0 : aLbField3.InsertEntry( aStrNone, 0 );
486 [ # # ]: 0 : aLbField4.InsertEntry( aStrNone, 0 );
487 : :
488 [ # # ]: 0 : if ( pDoc )
489 : : {
490 : 0 : rtl::OUString aFieldName;
491 : 0 : SCTAB nTab = nSrcTab;
492 : 0 : SCCOL nFirstCol = theQueryData.nCol1;
493 : 0 : SCROW nFirstRow = theQueryData.nRow1;
494 : 0 : SCCOL nMaxCol = theQueryData.nCol2;
495 : 0 : SCCOL col = 0;
496 : 0 : sal_uInt16 i=1;
497 : :
498 [ # # ]: 0 : for ( col=nFirstCol; col<=nMaxCol; col++ )
499 : : {
500 [ # # ]: 0 : pDoc->GetString( col, nFirstRow, nTab, aFieldName );
501 [ # # ][ # # ]: 0 : if (!aBtnHeader.IsChecked() || aFieldName.isEmpty())
[ # # ][ # # ]
502 : : {
503 : 0 : rtl::OUStringBuffer aBuf;
504 [ # # ]: 0 : aBuf.append(aStrColumn);
505 [ # # ]: 0 : aBuf.append(sal_Unicode(' '));
506 [ # # ][ # # ]: 0 : aBuf.append(ScColToAlpha(col));
[ # # ][ # # ]
507 [ # # ]: 0 : aFieldName = aBuf.makeStringAndClear();
508 : : }
509 [ # # ][ # # ]: 0 : aLbField1.InsertEntry( aFieldName, i );
[ # # ]
510 [ # # ][ # # ]: 0 : aLbField2.InsertEntry( aFieldName, i );
[ # # ]
511 [ # # ][ # # ]: 0 : aLbField3.InsertEntry( aFieldName, i );
[ # # ]
512 [ # # ][ # # ]: 0 : aLbField4.InsertEntry( aFieldName, i );
[ # # ]
513 : 0 : i++;
514 : 0 : }
515 : : }
516 : 0 : }
517 : :
518 : 0 : void ScFilterDlg::UpdateValueList( size_t nList )
519 : : {
520 : 0 : bool bCaseSens = aBtnCase.IsChecked();
521 : :
522 [ # # ][ # # ]: 0 : if (pDoc && nList > 0 && nList <= QUERY_ENTRY_COUNT)
[ # # ]
523 : : {
524 [ # # ]: 0 : ComboBox* pValList = maValueEdArr[nList-1];
525 [ # # ][ # # ]: 0 : sal_uInt16 nFieldSelPos = maFieldLbArr[nList-1]->GetSelectEntryPos();
526 : 0 : sal_uInt16 nListPos = 0;
527 [ # # ][ # # ]: 0 : rtl::OUString aCurValue = pValList->GetText();
[ # # ]
528 : :
529 [ # # ]: 0 : pValList->Clear();
530 [ # # ][ # # ]: 0 : pValList->InsertEntry( aStrNotEmpty, 0 );
[ # # ]
531 [ # # ][ # # ]: 0 : pValList->InsertEntry( aStrEmpty, 1 );
[ # # ]
532 : 0 : nListPos = 2;
533 : :
534 [ # # ]: 0 : if ( nFieldSelPos )
535 : : {
536 [ # # ]: 0 : WaitObject aWaiter( this ); // even if only the list box has content
537 : :
538 : 0 : SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1;
539 : 0 : EntryList* pList = NULL;
540 [ # # ][ # # ]: 0 : if (!maEntryLists.count(nColumn))
541 : : {
542 : 0 : size_t nOffset = GetSliderPos();
543 : 0 : SCTAB nTab = nSrcTab;
544 : 0 : SCROW nFirstRow = theQueryData.nRow1;
545 : 0 : SCROW nLastRow = theQueryData.nRow2;
546 [ # # ]: 0 : if (maHasDates.size() < nOffset+nList)
547 [ # # ]: 0 : maHasDates.resize(nOffset+nList, false);
548 [ # # ]: 0 : maHasDates[nOffset+nList-1] = false;
549 : :
550 : : // first without the first line
551 : : std::pair<EntryListsMap::iterator, bool> r =
552 [ # # ][ # # ]: 0 : maEntryLists.insert(nColumn, new EntryList);
[ # # ]
553 [ # # ]: 0 : if (!r.second)
554 : : // insertion failed.
555 : 0 : return;
556 : :
557 [ # # ]: 0 : pList = r.first->second;
558 : : pDoc->GetFilterEntriesArea(
559 : : nColumn, nFirstRow+1, nLastRow,
560 [ # # ][ # # ]: 0 : nTab, bCaseSens, pList->maList, maHasDates[nOffset+nList-1] );
561 : :
562 : : // Entry for the first line
563 : : //! Entry (pHdrEntry) doesn't generate collection?
564 : :
565 : 0 : pList->mnHeaderPos = INVALID_HEADER_POS;
566 [ # # ]: 0 : std::vector<ScTypedStrData> aHdrColl;
567 : 0 : bool bDummy = false;
568 : : pDoc->GetFilterEntriesArea(
569 [ # # ]: 0 : nColumn, nFirstRow, nFirstRow, nTab, true, aHdrColl, bDummy );
570 [ # # ]: 0 : if (!aHdrColl.empty())
571 : : {
572 : : // See if the header value is already in the list.
573 : 0 : std::vector<ScTypedStrData>::iterator itBeg = pList->maList.begin(), itEnd = pList->maList.end();
574 : : std::vector<ScTypedStrData>::iterator it = std::find_if(
575 [ # # ][ # # ]: 0 : itBeg, itEnd, FindTypedStrData(aHdrColl.front(), bCaseSens));
[ # # ]
576 [ # # ][ # # ]: 0 : if (it == itEnd)
577 : : {
578 : : // Not in the list. Insert it.
579 [ # # ][ # # ]: 0 : pList->maList.push_back(aHdrColl.front());
580 [ # # ]: 0 : if (bCaseSens)
581 [ # # ]: 0 : std::sort(pList->maList.begin(), pList->maList.end(), ScTypedStrData::LessCaseSensitive());
582 : : else
583 [ # # ]: 0 : std::sort(pList->maList.begin(), pList->maList.end(), ScTypedStrData::LessCaseInsensitive());
584 : :
585 : : // Record its position.
586 : 0 : itBeg = pList->maList.begin();
587 : 0 : itEnd = pList->maList.end();
588 [ # # ][ # # ]: 0 : it = std::find_if(itBeg, itEnd, FindTypedStrData(aHdrColl.front(), bCaseSens));
[ # # ]
589 [ # # ]: 0 : pList->mnHeaderPos = std::distance(itBeg, it);
590 : : }
591 : 0 : }
592 : : }
593 : : else
594 [ # # ]: 0 : pList = &maEntryLists[nColumn];
595 : :
596 : : OSL_ASSERT(pList);
597 : :
598 [ # # ][ # # ]: 0 : std::vector<ScTypedStrData>::const_iterator it = pList->maList.begin(), itEnd = pList->maList.end();
599 [ # # ][ # # ]: 0 : for (; it != itEnd; ++it)
600 : : {
601 [ # # ][ # # ]: 0 : pValList->InsertEntry(it->GetString(), nListPos);
[ # # ][ # # ]
602 : 0 : nListPos++;
603 [ # # ][ # # ]: 0 : }
604 : : }
605 [ # # ][ # # ]: 0 : pValList->SetText( aCurValue );
[ # # ]
606 [ # # ][ # # ]: 0 : pValList->EnableDDAutoWidth(false);
607 : : }
608 : :
609 : 0 : UpdateHdrInValueList( nList );
610 : : }
611 : :
612 : 0 : void ScFilterDlg::UpdateHdrInValueList( size_t nList )
613 : : {
614 : : //! GetText / SetText ??
615 : :
616 [ # # ]: 0 : if (!pDoc)
617 : : return;
618 : :
619 [ # # ][ # # ]: 0 : if (nList == 0 || nList > QUERY_ENTRY_COUNT)
620 : : return;
621 : :
622 [ # # ][ # # ]: 0 : size_t nFieldSelPos = maFieldLbArr[nList-1]->GetSelectEntryPos();
623 [ # # ]: 0 : if (!nFieldSelPos)
624 : : return;
625 : :
626 : 0 : SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1;
627 [ # # ][ # # ]: 0 : if (!maEntryLists.count(nColumn))
628 : : {
629 : : OSL_FAIL("Spalte noch nicht initialisiert");
630 : : return;
631 : : }
632 : :
633 [ # # ]: 0 : size_t nPos = maEntryLists[nColumn].mnHeaderPos;
634 [ # # ]: 0 : if (nPos == INVALID_HEADER_POS)
635 : : return;
636 : :
637 [ # # ]: 0 : ComboBox* pValList = maValueEdArr[nList-1];
638 : 0 : size_t nListPos = nPos + 2; // for "empty" and "non-empty"
639 : :
640 [ # # ]: 0 : const ScTypedStrData& rHdrEntry = maEntryLists[nColumn].maList[nPos];
641 : :
642 [ # # ]: 0 : const rtl::OUString& aHdrStr = rHdrEntry.GetString();
643 [ # # ][ # # ]: 0 : bool bWasThere = aHdrStr.equals(pValList->GetEntry(nListPos));
[ # # ]
644 [ # # ]: 0 : bool bInclude = !aBtnHeader.IsChecked();
645 : :
646 [ # # ]: 0 : if (bInclude) // Include entry
647 : : {
648 [ # # ]: 0 : if (!bWasThere)
649 [ # # ][ # # ]: 0 : pValList->InsertEntry(aHdrStr, nListPos);
[ # # ]
650 : : }
651 : : else // Omit entry
652 : : {
653 [ # # ]: 0 : if (bWasThere)
654 [ # # ]: 0 : pValList->RemoveEntry(nListPos);
655 : : }
656 : : }
657 : :
658 : : //----------------------------------------------------------------------------
659 : :
660 : 0 : void ScFilterDlg::ClearValueList( size_t nList )
661 : : {
662 [ # # ][ # # ]: 0 : if (nList > 0 && nList <= QUERY_ENTRY_COUNT)
663 : : {
664 : 0 : ComboBox* pValList = maValueEdArr[nList-1];
665 : 0 : pValList->Clear();
666 [ # # ]: 0 : pValList->InsertEntry( aStrNotEmpty, 0 );
667 [ # # ]: 0 : pValList->InsertEntry( aStrEmpty, 1 );
668 : 0 : pValList->SetText( EMPTY_STRING );
669 : : }
670 : 0 : }
671 : :
672 : :
673 : : //----------------------------------------------------------------------------
674 : :
675 : 0 : size_t ScFilterDlg::GetFieldSelPos( SCCOL nField )
676 : : {
677 [ # # ][ # # ]: 0 : if ( nField >= theQueryData.nCol1 && nField <= theQueryData.nCol2 )
678 : 0 : return static_cast<size_t>(nField - theQueryData.nCol1 + 1);
679 : : else
680 : 0 : return 0;
681 : : }
682 : :
683 : : //----------------------------------------------------------------------------
684 : :
685 : 0 : ScQueryItem* ScFilterDlg::GetOutputItem()
686 : : {
687 : 0 : ScAddress theCopyPos;
688 [ # # ]: 0 : ScQueryParam theParam( theQueryData );
689 : 0 : bool bCopyPosOk = false;
690 : :
691 [ # # ][ # # ]: 0 : if ( aBtnCopyResult.IsChecked() )
692 : : {
693 : : sal_uInt16 nResult = theCopyPos.Parse(
694 [ # # ][ # # ]: 0 : aEdCopyArea.GetText(), pDoc, pDoc->GetAddressConvention());
[ # # ][ # # ]
695 : 0 : bCopyPosOk = ( SCA_VALID == (nResult & SCA_VALID) );
696 : : }
697 : :
698 [ # # ][ # # ]: 0 : if ( aBtnCopyResult.IsChecked() && bCopyPosOk )
[ # # ][ # # ]
699 : : {
700 : 0 : theParam.bInplace = false;
701 : 0 : theParam.nDestTab = theCopyPos.Tab();
702 : 0 : theParam.nDestCol = theCopyPos.Col();
703 : 0 : theParam.nDestRow = theCopyPos.Row();
704 : : }
705 : : else
706 : : {
707 : 0 : theParam.bInplace = true;
708 : 0 : theParam.nDestTab = 0;
709 : 0 : theParam.nDestCol = 0;
710 : 0 : theParam.nDestRow = 0;
711 : : }
712 : :
713 [ # # ]: 0 : theParam.bHasHeader = aBtnHeader.IsChecked();
714 : 0 : theParam.bByRow = true;
715 [ # # ]: 0 : theParam.bDuplicate = !aBtnUnique.IsChecked();
716 [ # # ]: 0 : theParam.bCaseSens = aBtnCase.IsChecked();
717 [ # # ]: 0 : theParam.bRegExp = aBtnRegExp.IsChecked();
718 [ # # ]: 0 : theParam.bDestPers = aBtnDestPers.IsChecked();
719 : :
720 : : // only set the three - reset everything else
721 : :
722 [ # # ][ # # ]: 0 : DELETEZ( pOutItem );
723 [ # # ][ # # ]: 0 : pOutItem = new ScQueryItem( nWhichQuery, &theParam );
724 : :
725 [ # # ]: 0 : return pOutItem;
726 : : }
727 : :
728 : :
729 : : //----------------------------------------------------------------------------
730 : :
731 : 0 : sal_Bool ScFilterDlg::IsRefInputMode() const
732 : : {
733 : 0 : return bRefInputMode;
734 : : }
735 : :
736 : :
737 : : //----------------------------------------------------------------------------
738 : : // Handler:
739 : : // ========
740 : :
741 : 0 : IMPL_LINK( ScFilterDlg, EndDlgHdl, Button*, pBtn )
742 : : {
743 [ # # ]: 0 : if ( pBtn == &aBtnOk )
744 : : {
745 : 0 : bool bAreaInputOk = true;
746 : :
747 [ # # ]: 0 : if ( aBtnCopyResult.IsChecked() )
748 : : {
749 [ # # ][ # # ]: 0 : if ( !pOptionsMgr->VerifyPosStr( aEdCopyArea.GetText() ) )
750 : : {
751 [ # # ]: 0 : if ( !aBtnMore.GetState() )
752 : 0 : aBtnMore.SetState( true );
753 : :
754 [ # # ]: 0 : ERRORBOX( STR_INVALID_TABREF );
755 : 0 : aEdCopyArea.GrabFocus();
756 : 0 : bAreaInputOk = false;
757 : : }
758 : : }
759 : :
760 [ # # ]: 0 : if ( bAreaInputOk )
761 : : {
762 : 0 : SetDispatcherLock( false );
763 : 0 : SwitchToDocument();
764 : 0 : GetBindings().GetDispatcher()->Execute( FID_FILTER_OK,
765 : : SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
766 : 0 : GetOutputItem(), 0L, 0L );
767 : 0 : Close();
768 : : }
769 : : }
770 [ # # ]: 0 : else if ( pBtn == &aBtnCancel )
771 : : {
772 : 0 : Close();
773 : : }
774 : :
775 : 0 : return 0;
776 : : }
777 : :
778 : :
779 : : //----------------------------------------------------------------------------
780 : :
781 : 0 : IMPL_LINK_NOARG(ScFilterDlg, MoreClickHdl)
782 : : {
783 [ # # ]: 0 : if ( aBtnMore.GetState() )
784 : 0 : pTimer->Start();
785 : : else
786 : : {
787 : 0 : pTimer->Stop();
788 : 0 : bRefInputMode = false;
789 : : //@BugID 54702 Enable/disable only in Basic class
790 : : //SFX_APPWINDOW->Disable(FALSE); //! general method in ScAnyRefDlg
791 : : }
792 : 0 : return 0;
793 : : }
794 : :
795 : :
796 : : //----------------------------------------------------------------------------
797 : :
798 : 0 : IMPL_LINK( ScFilterDlg, TimeOutHdl, Timer*, _pTimer )
799 : : {
800 : : // Check if RefInputMode is still true every 50ms
801 : :
802 [ # # ][ # # ]: 0 : if( _pTimer == pTimer && IsActive() )
[ # # ]
803 [ # # ][ # # ]: 0 : bRefInputMode = (aEdCopyArea.HasFocus() || aRbCopyArea.HasFocus());
804 : :
805 [ # # ]: 0 : if ( aBtnMore.GetState() )
806 : 0 : pTimer->Start();
807 : :
808 : 0 : return 0;
809 : : }
810 : :
811 : :
812 : : //----------------------------------------------------------------------------
813 : :
814 : 0 : IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox*, pLb )
815 : : {
816 : : /*
817 : : * Handle enable/disable logic depending on which ListBox was selected
818 : : */
819 : 0 : sal_uInt16 nOffset = GetSliderPos();
820 : :
821 [ # # ]: 0 : if ( pLb == &aLbConnect1 )
822 : : {
823 : 0 : aLbField1.Enable();
824 : 0 : aLbCond1.Enable();
825 : 0 : aEdVal1.Enable();
826 : :
827 : 0 : sal_uInt16 nConnect1 = aLbConnect1.GetSelectEntryPos();
828 : 0 : size_t nQE = nOffset;
829 : 0 : theQueryData.GetEntry(nQE).eConnect =(ScQueryConnect)nConnect1;
830 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nQE + 1)
831 [ # # ]: 0 : maRefreshExceptQuery.resize(nQE + 1, false);
832 : 0 : maRefreshExceptQuery[nQE] = true;
833 : : }
834 : :
835 [ # # ]: 0 : else if ( pLb == &aLbConnect2 )
836 : : {
837 : 0 : aLbField2.Enable();
838 : 0 : aLbCond2.Enable();
839 : 0 : aEdVal2.Enable();
840 : :
841 : 0 : sal_uInt16 nConnect2 = aLbConnect2.GetSelectEntryPos();
842 : 0 : size_t nQE = 1+nOffset;
843 : 0 : theQueryData.GetEntry(nQE).eConnect =(ScQueryConnect)nConnect2;
844 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nQE + 1)
845 [ # # ]: 0 : maRefreshExceptQuery.resize(nQE + 1, false);
846 : 0 : maRefreshExceptQuery[nQE]=true;
847 : : }
848 [ # # ]: 0 : else if ( pLb == &aLbConnect3 )
849 : : {
850 : 0 : aLbField3.Enable();
851 : 0 : aLbCond3.Enable();
852 : 0 : aEdVal3.Enable();
853 : :
854 : 0 : sal_uInt16 nConnect3 = aLbConnect3.GetSelectEntryPos();
855 : 0 : size_t nQE = 2 + nOffset;
856 : 0 : theQueryData.GetEntry(nQE).eConnect = (ScQueryConnect)nConnect3;
857 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nQE + 1)
858 [ # # ]: 0 : maRefreshExceptQuery.resize(nQE + 1, false);
859 : 0 : maRefreshExceptQuery[nQE] = true;
860 : :
861 : : }
862 [ # # ]: 0 : else if ( pLb == &aLbConnect4 )
863 : : {
864 : 0 : aLbField4.Enable();
865 : 0 : aLbCond4.Enable();
866 : 0 : aEdVal4.Enable();
867 : :
868 : 0 : sal_uInt16 nConnect4 = aLbConnect4.GetSelectEntryPos();
869 : 0 : size_t nQE = 3 + nOffset;
870 : 0 : theQueryData.GetEntry(nQE).eConnect = (ScQueryConnect)nConnect4;
871 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nQE + 1)
872 [ # # ]: 0 : maRefreshExceptQuery.resize(nQE + 1, false);
873 : 0 : maRefreshExceptQuery[nQE] = true;
874 : : }
875 [ # # ]: 0 : else if ( pLb == &aLbField1 )
876 : : {
877 [ # # ]: 0 : if ( aLbField1.GetSelectEntryPos() == 0 )
878 : : {
879 : 0 : aLbConnect2.SetNoSelection();
880 : 0 : aLbConnect3.SetNoSelection();
881 : 0 : aLbConnect4.SetNoSelection();
882 : 0 : aLbField2.SelectEntryPos( 0 );
883 : 0 : aLbField3.SelectEntryPos( 0 );
884 : 0 : aLbField4.SelectEntryPos( 0 );
885 : 0 : aLbCond2.SelectEntryPos( 0 );
886 : 0 : aLbCond3.SelectEntryPos( 0 );
887 : 0 : aLbCond4.SelectEntryPos( 0 );
888 : 0 : ClearValueList( 1 );
889 : 0 : ClearValueList( 2 );
890 : 0 : ClearValueList( 3 );
891 : 0 : ClearValueList( 4 );
892 : :
893 : 0 : aLbConnect2.Disable();
894 : 0 : aLbConnect3.Disable();
895 : 0 : aLbConnect4.Disable();
896 : 0 : aLbField2.Disable();
897 : 0 : aLbField3.Disable();
898 : 0 : aLbField4.Disable();
899 : 0 : aLbCond2.Disable();
900 : 0 : aLbCond3.Disable();
901 : 0 : aLbCond4.Disable();
902 : 0 : aEdVal2.Disable();
903 : 0 : aEdVal3.Disable();
904 : 0 : aEdVal4.Disable();
905 : 0 : SCSIZE nCount = theQueryData.GetEntryCount();
906 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nCount + 1)
907 [ # # ]: 0 : maRefreshExceptQuery.resize(nCount + 1, false);
908 [ # # ]: 0 : for (sal_uInt16 i = nOffset; i < nCount; ++i)
909 : : {
910 : 0 : theQueryData.GetEntry(i).bDoQuery = false;
911 : 0 : maRefreshExceptQuery[i] = false;
912 : 0 : theQueryData.GetEntry(i).nField = static_cast<SCCOL>(0);
913 : : }
914 : 0 : maRefreshExceptQuery[nOffset] = true;
915 : : }
916 : : else
917 : : {
918 : 0 : UpdateValueList( 1 );
919 [ # # ]: 0 : if ( !aLbConnect2.IsEnabled() )
920 : : {
921 : 0 : aLbConnect2.Enable();
922 : : }
923 : 0 : theQueryData.GetEntry(nOffset).bDoQuery = true;
924 : 0 : sal_uInt16 nField = pLb->GetSelectEntryPos();
925 : 0 : theQueryData.GetEntry(nOffset).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ;
926 : : }
927 : : }
928 [ # # ]: 0 : else if ( pLb == &aLbField2 )
929 : : {
930 [ # # ]: 0 : if ( aLbField2.GetSelectEntryPos() == 0 )
931 : : {
932 : 0 : aLbConnect3.SetNoSelection();
933 : 0 : aLbConnect4.SetNoSelection();
934 : 0 : aLbField3.SelectEntryPos( 0 );
935 : 0 : aLbField4.SelectEntryPos( 0 );
936 : 0 : aLbCond3.SelectEntryPos( 0 );
937 : 0 : aLbCond4.SelectEntryPos( 0 );
938 : 0 : ClearValueList( 2 );
939 : 0 : ClearValueList( 3 );
940 : 0 : ClearValueList( 4 );
941 : :
942 : 0 : aLbConnect3.Disable();
943 : 0 : aLbConnect4.Disable();
944 : 0 : aLbField3.Disable();
945 : 0 : aLbField4.Disable();
946 : 0 : aLbCond3.Disable();
947 : 0 : aLbCond4.Disable();
948 : 0 : aEdVal3.Disable();
949 : 0 : aEdVal4.Disable();
950 : :
951 : 0 : sal_uInt16 nTemp=nOffset+1;
952 : 0 : SCSIZE nCount = theQueryData.GetEntryCount();
953 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nCount)
954 [ # # ]: 0 : maRefreshExceptQuery.resize(nCount, false);
955 [ # # ]: 0 : for (sal_uInt16 i= nTemp; i< nCount; i++)
956 : : {
957 : 0 : theQueryData.GetEntry(i).bDoQuery = false;
958 : 0 : maRefreshExceptQuery[i] = false;
959 : 0 : theQueryData.GetEntry(i).nField = static_cast<SCCOL>(0);
960 : : }
961 : 0 : maRefreshExceptQuery[nTemp] = true;
962 : : }
963 : : else
964 : : {
965 : 0 : UpdateValueList( 2 );
966 [ # # ]: 0 : if ( !aLbConnect3.IsEnabled() )
967 : : {
968 : 0 : aLbConnect3.Enable();
969 : : }
970 : 0 : sal_uInt16 nField = pLb->GetSelectEntryPos();
971 : 0 : sal_uInt16 nQ=1+nOffset;
972 : 0 : theQueryData.GetEntry(nQ).bDoQuery = true;
973 : 0 : theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ;
974 : : }
975 : : }
976 [ # # ]: 0 : else if ( pLb == &aLbField3 )
977 : : {
978 [ # # ]: 0 : if ( aLbField3.GetSelectEntryPos() == 0 )
979 : : {
980 : 0 : aLbConnect4.SetNoSelection();
981 : 0 : aLbField4.SelectEntryPos( 0 );
982 : 0 : aLbCond4.SelectEntryPos( 0 );
983 : 0 : ClearValueList( 3 );
984 : 0 : ClearValueList( 4 );
985 : :
986 : 0 : aLbConnect4.Disable();
987 : 0 : aLbField4.Disable();
988 : 0 : aLbCond4.Disable();
989 : 0 : aEdVal4.Disable();
990 : :
991 : 0 : sal_uInt16 nTemp=nOffset+2;
992 : 0 : SCSIZE nCount = theQueryData.GetEntryCount();
993 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nCount)
994 [ # # ]: 0 : maRefreshExceptQuery.resize(nCount, false);
995 [ # # ]: 0 : for (sal_uInt16 i = nTemp; i < nCount; ++i)
996 : : {
997 : 0 : theQueryData.GetEntry(i).bDoQuery = false;
998 : 0 : maRefreshExceptQuery[i] = false;
999 : 0 : theQueryData.GetEntry(i).nField = static_cast<SCCOL>(0);
1000 : : }
1001 : 0 : maRefreshExceptQuery[nTemp] = true;
1002 : : }
1003 : : else
1004 : : {
1005 : 0 : UpdateValueList( 3 );
1006 [ # # ]: 0 : if ( !aLbConnect4.IsEnabled() )
1007 : : {
1008 : 0 : aLbConnect4.Enable();
1009 : : }
1010 : :
1011 : 0 : sal_uInt16 nField = pLb->GetSelectEntryPos();
1012 : 0 : sal_uInt16 nQ=2+nOffset;
1013 : 0 : theQueryData.GetEntry(nQ).bDoQuery = true;
1014 : 0 : theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ;
1015 : :
1016 : : }
1017 : : }
1018 [ # # ]: 0 : else if ( pLb == &aLbField4 )
1019 : : {
1020 [ # # ]: 0 : if ( aLbField4.GetSelectEntryPos() == 0 )
1021 : : {
1022 : 0 : ClearValueList( 4 );
1023 : 0 : sal_uInt16 nTemp=nOffset+3;
1024 : 0 : SCSIZE nCount = theQueryData.GetEntryCount();
1025 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nCount)
1026 [ # # ]: 0 : maRefreshExceptQuery.resize(nCount, false);
1027 [ # # ]: 0 : for (sal_uInt16 i = nTemp; i < nCount; ++i)
1028 : : {
1029 : 0 : theQueryData.GetEntry(i).bDoQuery = false;
1030 : 0 : maRefreshExceptQuery[i] = false;
1031 : 0 : theQueryData.GetEntry(i).nField = static_cast<SCCOL>(0);
1032 : : }
1033 : 0 : maRefreshExceptQuery[nTemp] = true;
1034 : : }
1035 : : else
1036 : : {
1037 : 0 : UpdateValueList( 4 );
1038 : 0 : sal_uInt16 nField = pLb->GetSelectEntryPos();
1039 : 0 : sal_uInt16 nQ=3+nOffset;
1040 : 0 : theQueryData.GetEntry(nQ).bDoQuery = true;
1041 : 0 : theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ;
1042 : : }
1043 : :
1044 : : }
1045 [ # # ]: 0 : else if ( pLb == &aLbCond1)
1046 : : {
1047 : 0 : theQueryData.GetEntry(nOffset).eOp=(ScQueryOp)pLb->GetSelectEntryPos();
1048 : : }
1049 [ # # ]: 0 : else if ( pLb == &aLbCond2)
1050 : : {
1051 : 0 : sal_uInt16 nQ=1+nOffset;
1052 : 0 : theQueryData.GetEntry(nQ).eOp=(ScQueryOp)pLb->GetSelectEntryPos();
1053 : : }
1054 [ # # ]: 0 : else if ( pLb == &aLbCond3)
1055 : : {
1056 : 0 : sal_uInt16 nQ=2+nOffset;
1057 : 0 : theQueryData.GetEntry(nQ).eOp=(ScQueryOp)pLb->GetSelectEntryPos();
1058 : : }
1059 : : else
1060 : : {
1061 : 0 : sal_uInt16 nQ=3+nOffset;
1062 : 0 : theQueryData.GetEntry(nQ).eOp=(ScQueryOp)pLb->GetSelectEntryPos();
1063 : : }
1064 : :
1065 : 0 : return 0;
1066 : : }
1067 : :
1068 : :
1069 : : //----------------------------------------------------------------------------
1070 : :
1071 : 0 : IMPL_LINK( ScFilterDlg, CheckBoxHdl, CheckBox*, pBox )
1072 : : {
1073 : : // Column headers:
1074 : : // Field list: Columnxx <-> column header string
1075 : : // Value list: Column header value not applicable.
1076 : : // Upper/lower case:
1077 : : // Value list: completely new
1078 : :
1079 [ # # ]: 0 : if ( pBox == &aBtnHeader ) // Field list and value list
1080 : : {
1081 : 0 : sal_uInt16 nCurSel1 = aLbField1.GetSelectEntryPos();
1082 : 0 : sal_uInt16 nCurSel2 = aLbField2.GetSelectEntryPos();
1083 : 0 : sal_uInt16 nCurSel3 = aLbField3.GetSelectEntryPos();
1084 : 0 : sal_uInt16 nCurSel4 = aLbField4.GetSelectEntryPos();
1085 : 0 : FillFieldLists();
1086 : 0 : aLbField1.SelectEntryPos( nCurSel1 );
1087 : 0 : aLbField2.SelectEntryPos( nCurSel2 );
1088 : 0 : aLbField3.SelectEntryPos( nCurSel3 );
1089 : 0 : aLbField4.SelectEntryPos( nCurSel4 );
1090 : :
1091 : 0 : UpdateHdrInValueList( 1 );
1092 : 0 : UpdateHdrInValueList( 2 );
1093 : 0 : UpdateHdrInValueList( 3 );
1094 : 0 : UpdateHdrInValueList( 4 );
1095 : : }
1096 : :
1097 [ # # ]: 0 : if ( pBox == &aBtnCase ) // Complete value list
1098 : : {
1099 : 0 : maEntryLists.clear();
1100 : 0 : UpdateValueList( 1 ); // current text is recorded
1101 : 0 : UpdateValueList( 2 );
1102 : 0 : UpdateValueList( 3 );
1103 : 0 : UpdateValueList( 4 );
1104 : : }
1105 : :
1106 : 0 : return 0;
1107 : : }
1108 : :
1109 : :
1110 : : //----------------------------------------------------------------------------
1111 : :
1112 : 0 : IMPL_LINK( ScFilterDlg, ValModifyHdl, ComboBox*, pEd )
1113 : : {
1114 : 0 : size_t nOffset = GetSliderPos();
1115 : 0 : size_t i = 0;
1116 : 0 : size_t nQE = i + nOffset;
1117 [ # # ]: 0 : if ( pEd )
1118 : : {
1119 [ # # ][ # # ]: 0 : rtl::OUString aStrVal = pEd->GetText();
[ # # ]
1120 : 0 : ListBox* pLbCond = &aLbCond1;
1121 : 0 : ListBox* pLbField = &aLbField1;
1122 [ # # ]: 0 : if ( pEd == &aEdVal2 )
1123 : : {
1124 : 0 : pLbCond = &aLbCond2;
1125 : 0 : pLbField = &aLbField2;
1126 : 0 : i=1;
1127 : 0 : nQE=i+nOffset;
1128 : : }
1129 [ # # ]: 0 : if ( pEd == &aEdVal3 )
1130 : : {
1131 : 0 : pLbCond = &aLbCond3;
1132 : 0 : pLbField = &aLbField3;
1133 : 0 : i=2;
1134 : 0 : nQE=i+nOffset;
1135 : : }
1136 [ # # ]: 0 : if ( pEd == &aEdVal4 )
1137 : : {
1138 : 0 : pLbCond = &aLbCond4;
1139 : 0 : pLbField = &aLbField4;
1140 : 0 : i=3;
1141 : 0 : nQE=i+nOffset;
1142 : : }
1143 : :
1144 [ # # ][ # # ]: 0 : if ( aStrEmpty.equals(aStrVal) || aStrNotEmpty.equals(aStrVal) )
[ # # ]
1145 : : {
1146 [ # # ][ # # ]: 0 : pLbCond->SelectEntry(rtl::OUString('='));
[ # # ]
1147 [ # # ]: 0 : pLbCond->Disable();
1148 : : }
1149 : : else
1150 [ # # ]: 0 : pLbCond->Enable();
1151 : :
1152 [ # # ]: 0 : if (maHasDates.size() < nQE + 1)
1153 [ # # ]: 0 : maHasDates.resize(nQE + 1, false);
1154 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nQE + 1)
1155 [ # # ]: 0 : maRefreshExceptQuery.resize(nQE + 1, false);
1156 : :
1157 [ # # ]: 0 : ScQueryEntry& rEntry = theQueryData.GetEntry( nQE );
1158 [ # # ]: 0 : ScQueryEntry::Item& rItem = rEntry.GetQueryItem();
1159 [ # # ]: 0 : bool bDoThis = (pLbField->GetSelectEntryPos() != 0);
1160 : 0 : rEntry.bDoQuery = bDoThis;
1161 : :
1162 [ # # ][ # # ]: 0 : if ( rEntry.bDoQuery || maRefreshExceptQuery[nQE] )
[ # # ][ # # ]
1163 : : {
1164 [ # # ]: 0 : if ( aStrEmpty.equals(aStrVal) )
1165 : : {
1166 [ # # ]: 0 : rEntry.SetQueryByEmpty();
1167 : : }
1168 [ # # ]: 0 : else if ( aStrNotEmpty.equals(aStrVal) )
1169 : : {
1170 [ # # ]: 0 : rEntry.SetQueryByNonEmpty();
1171 : : }
1172 : : else
1173 : : {
1174 : 0 : rItem.maString = aStrVal;
1175 : 0 : rItem.mfVal = 0.0;
1176 : :
1177 : : sal_uInt32 nIndex;
1178 : : bool bNumber = pDoc->GetFormatTable()->IsNumberFormat(
1179 [ # # ][ # # ]: 0 : rItem.maString, nIndex, rItem.mfVal);
[ # # ][ # # ]
1180 [ # # ]: 0 : rItem.meType = bNumber ? ScQueryEntry::ByValue : ScQueryEntry::ByString;
1181 : : }
1182 : :
1183 [ # # ]: 0 : sal_uInt16 nField = pLbField->GetSelectEntryPos();
1184 : : rEntry.nField = nField ? (theQueryData.nCol1 +
1185 [ # # ]: 0 : static_cast<SCCOL>(nField) - 1) : static_cast<SCCOL>(0);
1186 : :
1187 [ # # ]: 0 : ScQueryOp eOp = (ScQueryOp)pLbCond->GetSelectEntryPos();
1188 : 0 : rEntry.eOp = eOp;
1189 [ # # ][ # # ]: 0 : if (maHasDates[nQE])
1190 : 0 : rItem.meType = ScQueryEntry::ByDate;
1191 : 0 : }
1192 : : }
1193 : 0 : return 0;
1194 : : }
1195 : :
1196 : : //----------------------------------------------------------------------------
1197 : 0 : IMPL_LINK_NOARG(ScFilterDlg, ScrollHdl)
1198 : : {
1199 : 0 : SliderMoved();
1200 : 0 : return 0;
1201 : : }
1202 : :
1203 : 0 : void ScFilterDlg::SliderMoved()
1204 : : {
1205 : 0 : size_t nOffset = GetSliderPos();
1206 : 0 : RefreshEditRow( nOffset);
1207 : 0 : }
1208 : :
1209 : 0 : size_t ScFilterDlg::GetSliderPos()
1210 : : {
1211 : 0 : return static_cast<size_t>(aScrollBar.GetThumbPos());
1212 : : }
1213 : :
1214 : 0 : void ScFilterDlg::RefreshEditRow( size_t nOffset )
1215 : : {
1216 [ # # ]: 0 : if (nOffset==0)
1217 : 0 : maConnLbArr[0]->Hide();
1218 : : else
1219 : 0 : maConnLbArr[0]->Show();
1220 : :
1221 [ # # ]: 0 : for (size_t i = 0; i < QUERY_ENTRY_COUNT; ++i)
1222 : : {
1223 : 0 : rtl::OUString aValStr;
1224 : 0 : size_t nCondPos = 0;
1225 : 0 : size_t nFieldSelPos = 0;
1226 : 0 : size_t nQE = i + nOffset;
1227 : :
1228 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nQE + 1)
1229 [ # # ]: 0 : maRefreshExceptQuery.resize(nQE + 1, false);
1230 : :
1231 [ # # ]: 0 : ScQueryEntry& rEntry = theQueryData.GetEntry( nQE);
1232 [ # # ][ # # ]: 0 : if ( rEntry.bDoQuery || maRefreshExceptQuery[nQE] )
[ # # ][ # # ]
1233 : : {
1234 : 0 : nCondPos = static_cast<size_t>(rEntry.eOp);
1235 [ # # ]: 0 : if(rEntry.bDoQuery)
1236 : 0 : nFieldSelPos = GetFieldSelPos( static_cast<SCCOL>(rEntry.nField) );
1237 : :
1238 [ # # ]: 0 : const ScQueryEntry::Item& rItem = rEntry.GetQueryItem();
1239 : 0 : const rtl::OUString& rQueryStr = rItem.maString;
1240 [ # # ][ # # ]: 0 : if (rEntry.IsQueryByEmpty())
1241 : : {
1242 : 0 : aValStr = aStrEmpty;
1243 [ # # ][ # # ]: 0 : maCondLbArr[i]->Disable();
1244 : : }
1245 [ # # ][ # # ]: 0 : else if (rEntry.IsQueryByNonEmpty())
1246 : : {
1247 : 0 : aValStr = aStrNotEmpty;
1248 [ # # ][ # # ]: 0 : maCondLbArr[i]->Disable();
1249 : : }
1250 : : else
1251 : : {
1252 : 0 : aValStr = rQueryStr;
1253 [ # # ][ # # ]: 0 : maCondLbArr[i]->Enable();
1254 : : }
1255 [ # # ][ # # ]: 0 : maFieldLbArr[i]->Enable();
1256 [ # # ][ # # ]: 0 : maValueEdArr[i]->Enable();
1257 : :
1258 [ # # ]: 0 : if (nOffset==0)
1259 : : {
1260 [ # # ]: 0 : if (i<3)
1261 : : {
1262 [ # # ]: 0 : if(rEntry.bDoQuery)
1263 [ # # ][ # # ]: 0 : maConnLbArr[i+1]->Enable();
1264 : : else
1265 [ # # ][ # # ]: 0 : maConnLbArr[i+1]->Disable();
1266 : 0 : size_t nQENext = nQE + 1;
1267 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nQENext + 1)
1268 [ # # ]: 0 : maRefreshExceptQuery.resize(nQENext + 1, false);
1269 [ # # ][ # # ]: 0 : if (theQueryData.GetEntry(nQENext).bDoQuery || maRefreshExceptQuery[nQENext])
[ # # ][ # # ]
[ # # ]
1270 [ # # ][ # # ]: 0 : maConnLbArr[i+1]->SelectEntryPos( (sal_uInt16) theQueryData.GetEntry(nQENext).eConnect );
[ # # ]
1271 : : else
1272 [ # # ][ # # ]: 0 : maConnLbArr[i+1]->SetNoSelection();
1273 : : }
1274 : : }
1275 : : else
1276 : : {
1277 [ # # ][ # # ]: 0 : if(theQueryData.GetEntry( nQE-1).bDoQuery)
1278 [ # # ][ # # ]: 0 : maConnLbArr[i]->Enable();
1279 : : else
1280 [ # # ][ # # ]: 0 : maConnLbArr[i]->Disable();
1281 : :
1282 [ # # ]: 0 : if (maRefreshExceptQuery.size() < nQE + 1)
1283 [ # # ]: 0 : maRefreshExceptQuery.resize(nQE + 1, false);
1284 [ # # ][ # # ]: 0 : if(rEntry.bDoQuery || maRefreshExceptQuery[nQE])
[ # # ][ # # ]
1285 [ # # ][ # # ]: 0 : maConnLbArr[i]->SelectEntryPos( (sal_uInt16) rEntry.eConnect );
1286 : : else
1287 [ # # ][ # # ]: 0 : maConnLbArr[i]->SetNoSelection();
1288 : : }
1289 : :
1290 : : }
1291 : : else
1292 : : {
1293 [ # # ]: 0 : if (nOffset==0)
1294 : : {
1295 [ # # ]: 0 : if(i<3)
1296 : : {
1297 [ # # ][ # # ]: 0 : maConnLbArr[i+1]->SetNoSelection();
1298 [ # # ][ # # ]: 0 : maConnLbArr[i+1]->Disable();
1299 : : }
1300 : : }
1301 : : else
1302 : : {
1303 [ # # ][ # # ]: 0 : if(theQueryData.GetEntry( nQE-1).bDoQuery)
1304 [ # # ][ # # ]: 0 : maConnLbArr[i]->Enable();
1305 : : else
1306 [ # # ][ # # ]: 0 : maConnLbArr[i]->Disable();
1307 [ # # ][ # # ]: 0 : maConnLbArr[i]->SetNoSelection();
1308 : : }
1309 [ # # ][ # # ]: 0 : maFieldLbArr[i]->Disable();
1310 [ # # ][ # # ]: 0 : maCondLbArr[i]->Disable();
1311 [ # # ][ # # ]: 0 : maValueEdArr[i]->Disable();
1312 : : }
1313 [ # # ][ # # ]: 0 : maFieldLbArr[i]->SelectEntryPos( nFieldSelPos );
1314 [ # # ][ # # ]: 0 : maCondLbArr [i]->SelectEntryPos( nCondPos );
1315 [ # # ][ # # ]: 0 : maValueEdArr[i]->SetText( aValStr );
[ # # ][ # # ]
1316 [ # # ]: 0 : UpdateValueList(i+1);
1317 : 0 : }
1318 : 0 : }
1319 : :
1320 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|