xref: /aoo4110/main/sc/source/ui/dbgui/filtdlg.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sc.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski // System - Includes ---------------------------------------------------------
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski // INCLUDE -------------------------------------------------------------------
32*b1cdbd2cSJim Jagielski #include <rangelst.hxx>
33*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
34*b1cdbd2cSJim Jagielski #include <vcl/waitobj.hxx>
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski #include "uiitems.hxx"
37*b1cdbd2cSJim Jagielski #include "dbcolect.hxx"
38*b1cdbd2cSJim Jagielski #include "reffact.hxx"
39*b1cdbd2cSJim Jagielski #include "viewdata.hxx"
40*b1cdbd2cSJim Jagielski #include "document.hxx"
41*b1cdbd2cSJim Jagielski #include "docsh.hxx"
42*b1cdbd2cSJim Jagielski #include "scresid.hxx"
43*b1cdbd2cSJim Jagielski 
44*b1cdbd2cSJim Jagielski #include "foptmgr.hxx"
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski #include "globstr.hrc"
47*b1cdbd2cSJim Jagielski #include "filter.hrc"
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski #define _FILTDLG_CXX
50*b1cdbd2cSJim Jagielski #include "filtdlg.hxx"
51*b1cdbd2cSJim Jagielski #undef _FILTDLG_CXX
52*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski // DEFINE --------------------------------------------------------------------
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski #define ERRORBOX(rid)	ErrorBox( this, WinBits( WB_OK|WB_DEF_OK), \
57*b1cdbd2cSJim Jagielski 				 				  ScGlobal::GetRscString(rid) ).Execute()
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski //============================================================================
61*b1cdbd2cSJim Jagielski //	class ScFilterDlg
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
64*b1cdbd2cSJim Jagielski 
ScFilterDlg(SfxBindings * pB,SfxChildWindow * pCW,Window * pParent,const SfxItemSet & rArgSet)65*b1cdbd2cSJim Jagielski ScFilterDlg::ScFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
66*b1cdbd2cSJim Jagielski 						  const SfxItemSet&	rArgSet )
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski 	:	ScAnyRefDlg	( pB, pCW, pParent, RID_SCDLG_FILTER ),
69*b1cdbd2cSJim Jagielski 		//
70*b1cdbd2cSJim Jagielski         aFlCriteria     ( this, ScResId( FL_CRITERIA ) ),
71*b1cdbd2cSJim Jagielski 		aLbConnect1		( this, ScResId( LB_OP1 ) ),
72*b1cdbd2cSJim Jagielski 		aLbField1		( this, ScResId( LB_FIELD1 ) ),
73*b1cdbd2cSJim Jagielski 		aLbCond1		( this, ScResId( LB_COND1 ) ),
74*b1cdbd2cSJim Jagielski 		aEdVal1			( this, ScResId( ED_VAL1 ) ),
75*b1cdbd2cSJim Jagielski 		aLbConnect2		( this, ScResId( LB_OP2 ) ),
76*b1cdbd2cSJim Jagielski 		aLbField2		( this, ScResId( LB_FIELD2 ) ),
77*b1cdbd2cSJim Jagielski 		aLbCond2		( this, ScResId( LB_COND2 ) ),
78*b1cdbd2cSJim Jagielski 		aEdVal2			( this, ScResId( ED_VAL2 ) ),
79*b1cdbd2cSJim Jagielski 		aLbConnect3		( this, ScResId( LB_OP3 ) ),
80*b1cdbd2cSJim Jagielski 		aLbField3		( this, ScResId( LB_FIELD3 ) ),
81*b1cdbd2cSJim Jagielski 		aLbCond3		( this, ScResId( LB_COND3 ) ),
82*b1cdbd2cSJim Jagielski 		aEdVal3			( this, ScResId( ED_VAL3 ) ),
83*b1cdbd2cSJim Jagielski 		aLbConnect4		( this, ScResId( LB_OP4 ) ),
84*b1cdbd2cSJim Jagielski 		aLbField4		( this, ScResId( LB_FIELD4 ) ),
85*b1cdbd2cSJim Jagielski 		aLbCond4		( this, ScResId( LB_COND4 ) ),
86*b1cdbd2cSJim Jagielski 		aEdVal4			( this, ScResId( ED_VAL4 ) ),
87*b1cdbd2cSJim Jagielski 		aFtConnect		( this, ScResId( FT_OP ) ),
88*b1cdbd2cSJim Jagielski 		aFtField		( this, ScResId( FT_FIELD ) ),
89*b1cdbd2cSJim Jagielski 		aFtCond			( this, ScResId( FT_COND ) ),
90*b1cdbd2cSJim Jagielski 		aFtVal			( this, ScResId( FT_VAL ) ),
91*b1cdbd2cSJim Jagielski 		aFlSeparator    ( this, ScResId( FL_SEPARATOR ) ),
92*b1cdbd2cSJim Jagielski 		aScrollBar      ( this, ScResId( LB_SCROLL ) ),
93*b1cdbd2cSJim Jagielski         aFlOptions      ( this, ScResId( FL_OPTIONS ) ),
94*b1cdbd2cSJim Jagielski         aBtnMore        ( this, ScResId( BTN_MORE ) ),
95*b1cdbd2cSJim Jagielski         aBtnHelp        ( this, ScResId( BTN_HELP ) ),
96*b1cdbd2cSJim Jagielski         aBtnOk          ( this, ScResId( BTN_OK ) ),
97*b1cdbd2cSJim Jagielski         aBtnCancel      ( this, ScResId( BTN_CANCEL ) ),
98*b1cdbd2cSJim Jagielski 		_INIT_COMMON_FILTER_RSCOBJS
99*b1cdbd2cSJim Jagielski 		aStrEmpty		( ScResId( SCSTR_EMPTY ) ),
100*b1cdbd2cSJim Jagielski 		aStrNotEmpty	( ScResId( SCSTR_NOTEMPTY ) ),
101*b1cdbd2cSJim Jagielski 		aStrRow			( ScResId( SCSTR_ROW ) ),
102*b1cdbd2cSJim Jagielski 		aStrColumn		( ScResId( SCSTR_COLUMN ) ),
103*b1cdbd2cSJim Jagielski 		//
104*b1cdbd2cSJim Jagielski 		pOptionsMgr		( NULL ),
105*b1cdbd2cSJim Jagielski 		nWhichQuery		( rArgSet.GetPool()->GetWhich( SID_QUERY ) ),
106*b1cdbd2cSJim Jagielski 		theQueryData	( ((const ScQueryItem&)
107*b1cdbd2cSJim Jagielski 						   rArgSet.Get( nWhichQuery )).GetQueryData() ),
108*b1cdbd2cSJim Jagielski 		pOutItem		( NULL ),
109*b1cdbd2cSJim Jagielski 		pViewData		( NULL ),
110*b1cdbd2cSJim Jagielski 		pDoc			( NULL ),
111*b1cdbd2cSJim Jagielski 		nSrcTab			( 0 ),
112*b1cdbd2cSJim Jagielski 		nFieldCount		( 0 ),
113*b1cdbd2cSJim Jagielski 		bRefInputMode	( sal_False ),
114*b1cdbd2cSJim Jagielski 		pTimer			( NULL )
115*b1cdbd2cSJim Jagielski {
116*b1cdbd2cSJim Jagielski 	for (sal_uInt16 i=0; i<=MAXCOL; i++)
117*b1cdbd2cSJim Jagielski 		pEntryLists[i] = NULL;
118*b1cdbd2cSJim Jagielski 	for (SCSIZE i=0;i<MAXQUERY;i++)
119*b1cdbd2cSJim Jagielski 	{
120*b1cdbd2cSJim Jagielski 		 bRefreshExceptQuery[i]=sal_False;
121*b1cdbd2cSJim Jagielski 	}
122*b1cdbd2cSJim Jagielski 	aBtnMore.SetMoreText( String(ScResId( SCSTR_MOREBTN_MOREOPTIONS )) );
123*b1cdbd2cSJim Jagielski 	aBtnMore.SetLessText( String(ScResId( SCSTR_MOREBTN_FEWEROPTIONS )) );
124*b1cdbd2cSJim Jagielski 	Init( rArgSet );
125*b1cdbd2cSJim Jagielski 	FreeResource();
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski 	// Hack: RefInput-Kontrolle
128*b1cdbd2cSJim Jagielski 	pTimer = new Timer;
129*b1cdbd2cSJim Jagielski 	pTimer->SetTimeout( 50 ); // 50ms warten
130*b1cdbd2cSJim Jagielski 	pTimer->SetTimeoutHdl( LINK( this, ScFilterDlg, TimeOutHdl ) );
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski 	String sAccName (ScResId(RID_FILTER_OPERATOR));
133*b1cdbd2cSJim Jagielski 	String sIndexName(sAccName);
134*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 1"));
135*b1cdbd2cSJim Jagielski 	aLbConnect1.SetAccessibleName(sIndexName);
136*b1cdbd2cSJim Jagielski 	sIndexName = sAccName;
137*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 2"));
138*b1cdbd2cSJim Jagielski 	aLbConnect2.SetAccessibleName(sIndexName);
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski 	sAccName = String(ScResId(RID_FILTER_FIELDNAME));
141*b1cdbd2cSJim Jagielski 	sIndexName = sAccName;
142*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 1"));
143*b1cdbd2cSJim Jagielski 	aLbField1.SetAccessibleName(sIndexName);
144*b1cdbd2cSJim Jagielski 	sIndexName = sAccName;
145*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 2"));
146*b1cdbd2cSJim Jagielski 	aLbField2.SetAccessibleName(sIndexName);
147*b1cdbd2cSJim Jagielski 	sIndexName = sAccName;
148*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 3"));
149*b1cdbd2cSJim Jagielski 	aLbField3.SetAccessibleName(sIndexName);
150*b1cdbd2cSJim Jagielski 
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski 	sAccName = String(ScResId(RID_FILTER_CONDITION));
153*b1cdbd2cSJim Jagielski 	sIndexName = sAccName;
154*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 1"));
155*b1cdbd2cSJim Jagielski 	aLbCond1.SetAccessibleName(sIndexName);
156*b1cdbd2cSJim Jagielski 	sIndexName = sAccName;
157*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 2"));
158*b1cdbd2cSJim Jagielski 	aLbCond2.SetAccessibleName(sIndexName);
159*b1cdbd2cSJim Jagielski 	sIndexName = sAccName;
160*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 3"));
161*b1cdbd2cSJim Jagielski 	aLbCond3.SetAccessibleName(sIndexName);
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski 	sAccName = String(ScResId(RID_FILTER_VALUE));
164*b1cdbd2cSJim Jagielski 	sIndexName = sAccName;
165*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 1"));
166*b1cdbd2cSJim Jagielski 	aEdVal1.SetAccessibleName(sIndexName);
167*b1cdbd2cSJim Jagielski 	sIndexName = sAccName;
168*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 2"));
169*b1cdbd2cSJim Jagielski 	aEdVal2.SetAccessibleName(sIndexName);
170*b1cdbd2cSJim Jagielski 	sIndexName = sAccName;
171*b1cdbd2cSJim Jagielski 	sIndexName.AppendAscii (RTL_CONSTASCII_STRINGPARAM (" 3"));
172*b1cdbd2cSJim Jagielski 	aEdVal3.SetAccessibleName(sIndexName);
173*b1cdbd2cSJim Jagielski 
174*b1cdbd2cSJim Jagielski 	aLbCopyArea.SetAccessibleName(ScResId(STR_COPY_AREA_TO));
175*b1cdbd2cSJim Jagielski 	aEdCopyArea.SetAccessibleName(ScResId(STR_COPY_AREA_TO));
176*b1cdbd2cSJim Jagielski 	aLbCopyArea.SetAccessibleRelationLabeledBy(&aBtnCopyResult);
177*b1cdbd2cSJim Jagielski 	aEdCopyArea.SetAccessibleRelationLabeledBy(&aBtnCopyResult);
178*b1cdbd2cSJim Jagielski 
179*b1cdbd2cSJim Jagielski 	aLbConnect1.SetAccessibleRelationLabeledBy(&aFtConnect);
180*b1cdbd2cSJim Jagielski 	aLbConnect2.SetAccessibleRelationLabeledBy(&aFtConnect);
181*b1cdbd2cSJim Jagielski 	aLbField1.SetAccessibleRelationLabeledBy(&aFtField);
182*b1cdbd2cSJim Jagielski 	aLbField2.SetAccessibleRelationLabeledBy(&aFtField);
183*b1cdbd2cSJim Jagielski 	aLbField3.SetAccessibleRelationLabeledBy(&aFtField);
184*b1cdbd2cSJim Jagielski 	aLbCond1.SetAccessibleRelationLabeledBy(&aFtCond);
185*b1cdbd2cSJim Jagielski 	aLbCond2.SetAccessibleRelationLabeledBy(&aFtCond);
186*b1cdbd2cSJim Jagielski 	aLbCond3.SetAccessibleRelationLabeledBy(&aFtCond);
187*b1cdbd2cSJim Jagielski 	aEdVal1.SetAccessibleRelationLabeledBy(&aFtVal);
188*b1cdbd2cSJim Jagielski 	aEdVal2.SetAccessibleRelationLabeledBy(&aFtVal);
189*b1cdbd2cSJim Jagielski 	aEdVal3.SetAccessibleRelationLabeledBy(&aFtVal);
190*b1cdbd2cSJim Jagielski }
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski 
193*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
194*b1cdbd2cSJim Jagielski 
~ScFilterDlg()195*b1cdbd2cSJim Jagielski __EXPORT ScFilterDlg::~ScFilterDlg()
196*b1cdbd2cSJim Jagielski {
197*b1cdbd2cSJim Jagielski 	for (sal_uInt16 i=0; i<=MAXCOL; i++)
198*b1cdbd2cSJim Jagielski 		delete pEntryLists[i];
199*b1cdbd2cSJim Jagielski 
200*b1cdbd2cSJim Jagielski 	delete pOptionsMgr;
201*b1cdbd2cSJim Jagielski 	delete pOutItem;
202*b1cdbd2cSJim Jagielski 
203*b1cdbd2cSJim Jagielski 	// Hack: RefInput-Kontrolle
204*b1cdbd2cSJim Jagielski 	pTimer->Stop();
205*b1cdbd2cSJim Jagielski 	delete pTimer;
206*b1cdbd2cSJim Jagielski }
207*b1cdbd2cSJim Jagielski 
208*b1cdbd2cSJim Jagielski 
209*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
210*b1cdbd2cSJim Jagielski 
Init(const SfxItemSet & rArgSet)211*b1cdbd2cSJim Jagielski void __EXPORT ScFilterDlg::Init( const SfxItemSet& rArgSet )
212*b1cdbd2cSJim Jagielski {
213*b1cdbd2cSJim Jagielski 	const ScQueryItem& rQueryItem = (const ScQueryItem&)
214*b1cdbd2cSJim Jagielski 									rArgSet.Get( nWhichQuery );
215*b1cdbd2cSJim Jagielski 
216*b1cdbd2cSJim Jagielski 	aBtnOk.SetClickHdl		( LINK( this, ScFilterDlg, EndDlgHdl ) );
217*b1cdbd2cSJim Jagielski 	aBtnCancel.SetClickHdl	( LINK( this, ScFilterDlg, EndDlgHdl ) );
218*b1cdbd2cSJim Jagielski 	aBtnMore.SetClickHdl	( LINK( this, ScFilterDlg, MoreClickHdl ) );
219*b1cdbd2cSJim Jagielski 	aBtnHeader.SetClickHdl	( LINK( this, ScFilterDlg, CheckBoxHdl ) );
220*b1cdbd2cSJim Jagielski 	aBtnCase.SetClickHdl	( LINK( this, ScFilterDlg, CheckBoxHdl ) );
221*b1cdbd2cSJim Jagielski 	//
222*b1cdbd2cSJim Jagielski 	aLbField1.SetSelectHdl	( LINK( this, ScFilterDlg, LbSelectHdl ) );
223*b1cdbd2cSJim Jagielski 	aLbField2.SetSelectHdl	( LINK( this, ScFilterDlg, LbSelectHdl ) );
224*b1cdbd2cSJim Jagielski 	aLbField3.SetSelectHdl	( LINK( this, ScFilterDlg, LbSelectHdl ) );
225*b1cdbd2cSJim Jagielski 	aLbField4.SetSelectHdl	( LINK( this, ScFilterDlg, LbSelectHdl ) );
226*b1cdbd2cSJim Jagielski 	aLbConnect1.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
227*b1cdbd2cSJim Jagielski 	aLbConnect2.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
228*b1cdbd2cSJim Jagielski 	aLbConnect3.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
229*b1cdbd2cSJim Jagielski 	aLbConnect4.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
230*b1cdbd2cSJim Jagielski 
231*b1cdbd2cSJim Jagielski 	aLbCond1.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
232*b1cdbd2cSJim Jagielski 	aLbCond2.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
233*b1cdbd2cSJim Jagielski 	aLbCond3.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
234*b1cdbd2cSJim Jagielski 	aLbCond4.SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski 	pViewData 	= rQueryItem.GetViewData();
237*b1cdbd2cSJim Jagielski 	pDoc	  	= pViewData ? pViewData->GetDocument() : NULL;
238*b1cdbd2cSJim Jagielski 	nSrcTab		= pViewData ? pViewData->GetTabNo() : static_cast<SCTAB>(0);
239*b1cdbd2cSJim Jagielski 
240*b1cdbd2cSJim Jagielski 	// fuer leichteren Zugriff:
241*b1cdbd2cSJim Jagielski 	aFieldLbArr	 [0] = &aLbField1;
242*b1cdbd2cSJim Jagielski 	aFieldLbArr	 [1] = &aLbField2;
243*b1cdbd2cSJim Jagielski 	aFieldLbArr	 [2] = &aLbField3;
244*b1cdbd2cSJim Jagielski 	aFieldLbArr	 [3] = &aLbField4;
245*b1cdbd2cSJim Jagielski 	aValueEdArr	 [0] = &aEdVal1;
246*b1cdbd2cSJim Jagielski 	aValueEdArr	 [1] = &aEdVal2;
247*b1cdbd2cSJim Jagielski 	aValueEdArr	 [2] = &aEdVal3;
248*b1cdbd2cSJim Jagielski 	aValueEdArr	 [3] = &aEdVal4;
249*b1cdbd2cSJim Jagielski 	aCondLbArr	 [0] = &aLbCond1;
250*b1cdbd2cSJim Jagielski 	aCondLbArr	 [1] = &aLbCond2;
251*b1cdbd2cSJim Jagielski 	aCondLbArr 	 [2] = &aLbCond3;
252*b1cdbd2cSJim Jagielski 	aCondLbArr 	 [3] = &aLbCond4;
253*b1cdbd2cSJim Jagielski 	aConnLbArr   [0] = &aLbConnect1;
254*b1cdbd2cSJim Jagielski 	aConnLbArr   [1] = &aLbConnect2;
255*b1cdbd2cSJim Jagielski 	aConnLbArr   [2] = &aLbConnect3;
256*b1cdbd2cSJim Jagielski 	aConnLbArr   [3] = &aLbConnect4;
257*b1cdbd2cSJim Jagielski 
258*b1cdbd2cSJim Jagielski 	// Optionen initialisieren lassen:
259*b1cdbd2cSJim Jagielski 
260*b1cdbd2cSJim Jagielski 	pOptionsMgr	 = new ScFilterOptionsMgr(
261*b1cdbd2cSJim Jagielski 							this,
262*b1cdbd2cSJim Jagielski 							pViewData,
263*b1cdbd2cSJim Jagielski 							theQueryData,
264*b1cdbd2cSJim Jagielski 							aBtnMore,
265*b1cdbd2cSJim Jagielski 							aBtnCase,
266*b1cdbd2cSJim Jagielski 							aBtnRegExp,
267*b1cdbd2cSJim Jagielski 							aBtnHeader,
268*b1cdbd2cSJim Jagielski 							aBtnUnique,
269*b1cdbd2cSJim Jagielski 							aBtnCopyResult,
270*b1cdbd2cSJim Jagielski 							aBtnDestPers,
271*b1cdbd2cSJim Jagielski 							aLbCopyArea,
272*b1cdbd2cSJim Jagielski 							aEdCopyArea,
273*b1cdbd2cSJim Jagielski 							aRbCopyArea,
274*b1cdbd2cSJim Jagielski 							aFtDbAreaLabel,
275*b1cdbd2cSJim Jagielski 							aFtDbArea,
276*b1cdbd2cSJim Jagielski                             aFlOptions,
277*b1cdbd2cSJim Jagielski 							aStrNoName,
278*b1cdbd2cSJim Jagielski 							aStrUndefined );
279*b1cdbd2cSJim Jagielski 
280*b1cdbd2cSJim Jagielski 	// Feldlisten einlesen und Eintraege selektieren:
281*b1cdbd2cSJim Jagielski 
282*b1cdbd2cSJim Jagielski 	FillFieldLists();
283*b1cdbd2cSJim Jagielski 
284*b1cdbd2cSJim Jagielski 	for ( SCSIZE i=0; i<4; i++ )
285*b1cdbd2cSJim Jagielski 	{
286*b1cdbd2cSJim Jagielski 		String	aValStr;
287*b1cdbd2cSJim Jagielski 		sal_uInt16	nCondPos	 = 0;
288*b1cdbd2cSJim Jagielski 		sal_uInt16	nFieldSelPos = 0;
289*b1cdbd2cSJim Jagielski 
290*b1cdbd2cSJim Jagielski 		ScQueryEntry& rEntry = theQueryData.GetEntry(i);
291*b1cdbd2cSJim Jagielski 		if ( rEntry.bDoQuery )
292*b1cdbd2cSJim Jagielski 		{
293*b1cdbd2cSJim Jagielski 			nCondPos	 = (sal_uInt16)rEntry.eOp;
294*b1cdbd2cSJim Jagielski 			nFieldSelPos = GetFieldSelPos( static_cast<SCCOL>(rEntry.nField) );
295*b1cdbd2cSJim Jagielski 			if ( rEntry.nVal == SC_EMPTYFIELDS && !rEntry.bQueryByString && *rEntry.pStr == EMPTY_STRING )
296*b1cdbd2cSJim Jagielski 			{
297*b1cdbd2cSJim Jagielski 				aValStr = aStrEmpty;
298*b1cdbd2cSJim Jagielski 				aCondLbArr[i]->Disable();
299*b1cdbd2cSJim Jagielski 			}
300*b1cdbd2cSJim Jagielski 			else if ( rEntry.nVal == SC_NONEMPTYFIELDS && !rEntry.bQueryByString && *rEntry.pStr == EMPTY_STRING )
301*b1cdbd2cSJim Jagielski 			{
302*b1cdbd2cSJim Jagielski 				aValStr = aStrNotEmpty;
303*b1cdbd2cSJim Jagielski 				aCondLbArr[i]->Disable();
304*b1cdbd2cSJim Jagielski 			}
305*b1cdbd2cSJim Jagielski 			else
306*b1cdbd2cSJim Jagielski 				aValStr = *rEntry.pStr;
307*b1cdbd2cSJim Jagielski 		}
308*b1cdbd2cSJim Jagielski 		else if ( i == 0 )
309*b1cdbd2cSJim Jagielski 		{
310*b1cdbd2cSJim Jagielski 			nFieldSelPos = GetFieldSelPos( pViewData->GetCurX() );
311*b1cdbd2cSJim Jagielski 			rEntry.nField = nFieldSelPos ? (theQueryData.nCol1 +
312*b1cdbd2cSJim Jagielski 				static_cast<SCCOL>(nFieldSelPos) - 1) : static_cast<SCCOL>(0);
313*b1cdbd2cSJim Jagielski 			rEntry.bDoQuery=sal_True;
314*b1cdbd2cSJim Jagielski 			bRefreshExceptQuery[i]=sal_True;
315*b1cdbd2cSJim Jagielski 
316*b1cdbd2cSJim Jagielski 		}
317*b1cdbd2cSJim Jagielski 		aFieldLbArr[i]->SelectEntryPos( nFieldSelPos );
318*b1cdbd2cSJim Jagielski 		aCondLbArr [i]->SelectEntryPos( nCondPos );
319*b1cdbd2cSJim Jagielski 		aValueEdArr[i]->SetText( aValStr );
320*b1cdbd2cSJim Jagielski 		aValueEdArr[i]->SetModifyHdl( LINK( this, ScFilterDlg, ValModifyHdl ) );
321*b1cdbd2cSJim Jagielski 		UpdateValueList( static_cast<sal_uInt16>(i+1) );
322*b1cdbd2cSJim Jagielski 	}
323*b1cdbd2cSJim Jagielski 
324*b1cdbd2cSJim Jagielski 	aScrollBar.SetEndScrollHdl( LINK( this, ScFilterDlg, ScrollHdl ) );
325*b1cdbd2cSJim Jagielski 	aScrollBar.SetScrollHdl( LINK( this, ScFilterDlg, ScrollHdl ) );
326*b1cdbd2cSJim Jagielski 
327*b1cdbd2cSJim Jagielski 	aScrollBar.SetRange( Range( 0, 4 ) );
328*b1cdbd2cSJim Jagielski 	aScrollBar.SetLineSize( 1 );
329*b1cdbd2cSJim Jagielski 	aLbConnect1.Hide();
330*b1cdbd2cSJim Jagielski 	// Disable/Enable Logik:
331*b1cdbd2cSJim Jagielski 
332*b1cdbd2cSJim Jagielski 	   (aLbField1.GetSelectEntryPos() != 0)
333*b1cdbd2cSJim Jagielski 	&& (aLbField2.GetSelectEntryPos() != 0)
334*b1cdbd2cSJim Jagielski 		? aLbConnect2.SelectEntryPos( (sal_uInt16)theQueryData.GetEntry(1).eConnect )
335*b1cdbd2cSJim Jagielski 		: aLbConnect2.SetNoSelection();
336*b1cdbd2cSJim Jagielski 
337*b1cdbd2cSJim Jagielski 	   (aLbField2.GetSelectEntryPos() != 0)
338*b1cdbd2cSJim Jagielski 	&& (aLbField3.GetSelectEntryPos() != 0)
339*b1cdbd2cSJim Jagielski 		? aLbConnect3.SelectEntryPos( (sal_uInt16)theQueryData.GetEntry(2).eConnect )
340*b1cdbd2cSJim Jagielski 		: aLbConnect3.SetNoSelection();
341*b1cdbd2cSJim Jagielski 
342*b1cdbd2cSJim Jagielski 	   (aLbField3.GetSelectEntryPos() != 0)
343*b1cdbd2cSJim Jagielski 	&& (aLbField4.GetSelectEntryPos() != 0)
344*b1cdbd2cSJim Jagielski 		? aLbConnect4.SelectEntryPos( (sal_uInt16)theQueryData.GetEntry(3).eConnect )
345*b1cdbd2cSJim Jagielski 		: aLbConnect4.SetNoSelection();
346*b1cdbd2cSJim Jagielski 	if ( aLbField1.GetSelectEntryPos() == 0 )
347*b1cdbd2cSJim Jagielski 	{
348*b1cdbd2cSJim Jagielski 		aLbConnect2.Disable();
349*b1cdbd2cSJim Jagielski 		aLbField2.Disable();
350*b1cdbd2cSJim Jagielski 		aLbCond2.Disable();
351*b1cdbd2cSJim Jagielski 		aEdVal2.Disable();
352*b1cdbd2cSJim Jagielski 	}
353*b1cdbd2cSJim Jagielski 	else if ( aLbConnect2.GetSelectEntryCount() == 0 )
354*b1cdbd2cSJim Jagielski 	{
355*b1cdbd2cSJim Jagielski 		aLbField2.Disable();
356*b1cdbd2cSJim Jagielski 		aLbCond2.Disable();
357*b1cdbd2cSJim Jagielski 		aEdVal2.Disable();
358*b1cdbd2cSJim Jagielski 	}
359*b1cdbd2cSJim Jagielski 
360*b1cdbd2cSJim Jagielski 	if ( aLbField2.GetSelectEntryPos() == 0 )
361*b1cdbd2cSJim Jagielski 	{
362*b1cdbd2cSJim Jagielski 		aLbConnect3.Disable();
363*b1cdbd2cSJim Jagielski 		aLbField3.Disable();
364*b1cdbd2cSJim Jagielski 		aLbCond3.Disable();
365*b1cdbd2cSJim Jagielski 		aEdVal3.Disable();
366*b1cdbd2cSJim Jagielski 	}
367*b1cdbd2cSJim Jagielski 	else if ( aLbConnect3.GetSelectEntryCount() == 0 )
368*b1cdbd2cSJim Jagielski 	{
369*b1cdbd2cSJim Jagielski 		aLbField3.Disable();
370*b1cdbd2cSJim Jagielski 		aLbCond3.Disable();
371*b1cdbd2cSJim Jagielski 		aEdVal3.Disable();
372*b1cdbd2cSJim Jagielski 	}
373*b1cdbd2cSJim Jagielski 	if ( aLbField3.GetSelectEntryPos() == 0 )
374*b1cdbd2cSJim Jagielski 	{
375*b1cdbd2cSJim Jagielski 		aLbConnect4.Disable();
376*b1cdbd2cSJim Jagielski 		aLbField4.Disable();
377*b1cdbd2cSJim Jagielski 		aLbCond4.Disable();
378*b1cdbd2cSJim Jagielski 		aEdVal4.Disable();
379*b1cdbd2cSJim Jagielski 	}
380*b1cdbd2cSJim Jagielski 	else if ( aLbConnect4.GetSelectEntryCount() == 0 )
381*b1cdbd2cSJim Jagielski 	{
382*b1cdbd2cSJim Jagielski 		aLbField4.Disable();
383*b1cdbd2cSJim Jagielski 		aLbCond4.Disable();
384*b1cdbd2cSJim Jagielski 		aEdVal4.Disable();
385*b1cdbd2cSJim Jagielski 	}
386*b1cdbd2cSJim Jagielski 
387*b1cdbd2cSJim Jagielski 	if(pDoc!=NULL &&
388*b1cdbd2cSJim Jagielski 		pDoc->GetChangeTrack()!=NULL) aBtnCopyResult.Disable();
389*b1cdbd2cSJim Jagielski 	// Modal-Modus einschalten
390*b1cdbd2cSJim Jagielski //	SetDispatcherLock( sal_True );
391*b1cdbd2cSJim Jagielski 	//@BugID 54702 Enablen/Disablen nur noch in Basisklasse
392*b1cdbd2cSJim Jagielski //	SFX_APPWINDOW->Disable(sal_False);		//! allgemeine Methode im ScAnyRefDlg
393*b1cdbd2cSJim Jagielski }
394*b1cdbd2cSJim Jagielski 
395*b1cdbd2cSJim Jagielski 
396*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
397*b1cdbd2cSJim Jagielski 
Close()398*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScFilterDlg::Close()
399*b1cdbd2cSJim Jagielski {
400*b1cdbd2cSJim Jagielski     if (pViewData)
401*b1cdbd2cSJim Jagielski         pViewData->GetDocShell()->CancelAutoDBRange();
402*b1cdbd2cSJim Jagielski 
403*b1cdbd2cSJim Jagielski 	return DoClose( ScFilterDlgWrapper::GetChildWindowId() );
404*b1cdbd2cSJim Jagielski }
405*b1cdbd2cSJim Jagielski 
406*b1cdbd2cSJim Jagielski 
407*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
408*b1cdbd2cSJim Jagielski // Uebergabe eines mit der Maus selektierten Tabellenbereiches, der dann als
409*b1cdbd2cSJim Jagielski // neue Selektion im Referenz-Edit angezeigt wird.
410*b1cdbd2cSJim Jagielski 
SetReference(const ScRange & rRef,ScDocument * pDocP)411*b1cdbd2cSJim Jagielski void ScFilterDlg::SetReference( const ScRange& rRef, ScDocument* pDocP )
412*b1cdbd2cSJim Jagielski {
413*b1cdbd2cSJim Jagielski 	if ( bRefInputMode )	// Nur moeglich, wenn im Referenz-Editmodus
414*b1cdbd2cSJim Jagielski 	{
415*b1cdbd2cSJim Jagielski 		if ( rRef.aStart != rRef.aEnd )
416*b1cdbd2cSJim Jagielski 			RefInputStart( &aEdCopyArea );
417*b1cdbd2cSJim Jagielski 		String aRefStr;
418*b1cdbd2cSJim Jagielski         rRef.aStart.Format( aRefStr, SCA_ABS_3D, pDocP, pDocP->GetAddressConvention() );
419*b1cdbd2cSJim Jagielski 		aEdCopyArea.SetRefString( aRefStr );
420*b1cdbd2cSJim Jagielski 	}
421*b1cdbd2cSJim Jagielski }
422*b1cdbd2cSJim Jagielski 
423*b1cdbd2cSJim Jagielski 
424*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
425*b1cdbd2cSJim Jagielski 
SetActive()426*b1cdbd2cSJim Jagielski void ScFilterDlg::SetActive()
427*b1cdbd2cSJim Jagielski {
428*b1cdbd2cSJim Jagielski 	if ( bRefInputMode )
429*b1cdbd2cSJim Jagielski 	{
430*b1cdbd2cSJim Jagielski 		aEdCopyArea.GrabFocus();
431*b1cdbd2cSJim Jagielski 		if ( aEdCopyArea.GetModifyHdl().IsSet() )
432*b1cdbd2cSJim Jagielski 			((Link&)aEdCopyArea.GetModifyHdl()).Call( &aEdCopyArea );
433*b1cdbd2cSJim Jagielski 	}
434*b1cdbd2cSJim Jagielski 	else
435*b1cdbd2cSJim Jagielski 		GrabFocus();
436*b1cdbd2cSJim Jagielski 
437*b1cdbd2cSJim Jagielski 	RefInputDone();
438*b1cdbd2cSJim Jagielski }
439*b1cdbd2cSJim Jagielski 
440*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
441*b1cdbd2cSJim Jagielski 
FillFieldLists()442*b1cdbd2cSJim Jagielski void ScFilterDlg::FillFieldLists()
443*b1cdbd2cSJim Jagielski {
444*b1cdbd2cSJim Jagielski 	aLbField1.Clear();
445*b1cdbd2cSJim Jagielski 	aLbField2.Clear();
446*b1cdbd2cSJim Jagielski 	aLbField3.Clear();
447*b1cdbd2cSJim Jagielski 	aLbField4.Clear();
448*b1cdbd2cSJim Jagielski 	aLbField1.InsertEntry( aStrNone, 0 );
449*b1cdbd2cSJim Jagielski 	aLbField2.InsertEntry( aStrNone, 0 );
450*b1cdbd2cSJim Jagielski 	aLbField3.InsertEntry( aStrNone, 0 );
451*b1cdbd2cSJim Jagielski 	aLbField4.InsertEntry( aStrNone, 0 );
452*b1cdbd2cSJim Jagielski 
453*b1cdbd2cSJim Jagielski 	if ( pDoc )
454*b1cdbd2cSJim Jagielski 	{
455*b1cdbd2cSJim Jagielski 		String	aFieldName;
456*b1cdbd2cSJim Jagielski 		SCTAB	nTab		= nSrcTab;
457*b1cdbd2cSJim Jagielski 		SCCOL	nFirstCol	= theQueryData.nCol1;
458*b1cdbd2cSJim Jagielski 		SCROW	nFirstRow	= theQueryData.nRow1;
459*b1cdbd2cSJim Jagielski 		SCCOL	nMaxCol		= theQueryData.nCol2;
460*b1cdbd2cSJim Jagielski 		SCCOL	col = 0;
461*b1cdbd2cSJim Jagielski 		sal_uInt16	i=1;
462*b1cdbd2cSJim Jagielski 
463*b1cdbd2cSJim Jagielski 		for ( col=nFirstCol; col<=nMaxCol; col++ )
464*b1cdbd2cSJim Jagielski 		{
465*b1cdbd2cSJim Jagielski 			pDoc->GetString( col, nFirstRow, nTab, aFieldName );
466*b1cdbd2cSJim Jagielski 			if ( !aBtnHeader.IsChecked() || (aFieldName.Len() == 0) )
467*b1cdbd2cSJim Jagielski 			{
468*b1cdbd2cSJim Jagielski 				aFieldName  = aStrColumn;
469*b1cdbd2cSJim Jagielski 				aFieldName += ' ';
470*b1cdbd2cSJim Jagielski                 aFieldName += ScColToAlpha( col );
471*b1cdbd2cSJim Jagielski 			}
472*b1cdbd2cSJim Jagielski 			aLbField1.InsertEntry( aFieldName, i );
473*b1cdbd2cSJim Jagielski 			aLbField2.InsertEntry( aFieldName, i );
474*b1cdbd2cSJim Jagielski 			aLbField3.InsertEntry( aFieldName, i );
475*b1cdbd2cSJim Jagielski 			aLbField4.InsertEntry( aFieldName, i );
476*b1cdbd2cSJim Jagielski 			i++;
477*b1cdbd2cSJim Jagielski 		}
478*b1cdbd2cSJim Jagielski 		nFieldCount = i;
479*b1cdbd2cSJim Jagielski 	}
480*b1cdbd2cSJim Jagielski }
481*b1cdbd2cSJim Jagielski 
482*b1cdbd2cSJim Jagielski 
483*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
484*b1cdbd2cSJim Jagielski 
UpdateValueList(sal_uInt16 nList)485*b1cdbd2cSJim Jagielski void ScFilterDlg::UpdateValueList( sal_uInt16 nList )
486*b1cdbd2cSJim Jagielski {
487*b1cdbd2cSJim Jagielski 	if ( pDoc && nList>0 && nList<=4 )
488*b1cdbd2cSJim Jagielski 	{
489*b1cdbd2cSJim Jagielski 		ComboBox*	pValList		= aValueEdArr[nList-1];
490*b1cdbd2cSJim Jagielski 		sal_uInt16		nFieldSelPos	= aFieldLbArr[nList-1]->GetSelectEntryPos();
491*b1cdbd2cSJim Jagielski 		sal_uInt16		nListPos		= 0;
492*b1cdbd2cSJim Jagielski 		String		aCurValue  		= pValList->GetText();
493*b1cdbd2cSJim Jagielski 
494*b1cdbd2cSJim Jagielski 		pValList->Clear();
495*b1cdbd2cSJim Jagielski 		pValList->InsertEntry( aStrNotEmpty, 0 );
496*b1cdbd2cSJim Jagielski 		pValList->InsertEntry( aStrEmpty, 1 );
497*b1cdbd2cSJim Jagielski 		nListPos = 2;
498*b1cdbd2cSJim Jagielski 
499*b1cdbd2cSJim Jagielski 		if ( nFieldSelPos )
500*b1cdbd2cSJim Jagielski 		{
501*b1cdbd2cSJim Jagielski 			WaitObject aWaiter( this );		// auch wenn nur die ListBox gefuellt wird
502*b1cdbd2cSJim Jagielski 
503*b1cdbd2cSJim Jagielski 			SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1;
504*b1cdbd2cSJim Jagielski 			if (!pEntryLists[nColumn])
505*b1cdbd2cSJim Jagielski 			{
506*b1cdbd2cSJim Jagielski                 sal_uInt16 nOffset = GetSliderPos();
507*b1cdbd2cSJim Jagielski 				SCTAB nTab		 = nSrcTab;
508*b1cdbd2cSJim Jagielski 				SCROW nFirstRow = theQueryData.nRow1;
509*b1cdbd2cSJim Jagielski 				SCROW nLastRow	 = theQueryData.nRow2;
510*b1cdbd2cSJim Jagielski                 mbHasDates[nOffset+nList-1] = false;
511*b1cdbd2cSJim Jagielski 
512*b1cdbd2cSJim Jagielski 				//	erstmal ohne die erste Zeile
513*b1cdbd2cSJim Jagielski 
514*b1cdbd2cSJim Jagielski 				pEntryLists[nColumn] = new TypedScStrCollection( 128, 128 );
515*b1cdbd2cSJim Jagielski 				pEntryLists[nColumn]->SetCaseSensitive( aBtnCase.IsChecked() );
516*b1cdbd2cSJim Jagielski 				pDoc->GetFilterEntriesArea( nColumn, nFirstRow+1, nLastRow,
517*b1cdbd2cSJim Jagielski                                             nTab, *pEntryLists[nColumn], mbHasDates[nOffset+nList-1] );
518*b1cdbd2cSJim Jagielski 
519*b1cdbd2cSJim Jagielski 				//	Eintrag fuer die erste Zeile
520*b1cdbd2cSJim Jagielski 				//!	Eintrag (pHdrEntry) ohne Collection erzeugen?
521*b1cdbd2cSJim Jagielski 
522*b1cdbd2cSJim Jagielski 				nHeaderPos[nColumn] = USHRT_MAX;
523*b1cdbd2cSJim Jagielski 				TypedScStrCollection aHdrColl( 1, 1 );
524*b1cdbd2cSJim Jagielski                 bool bDummy = false;
525*b1cdbd2cSJim Jagielski 				pDoc->GetFilterEntriesArea( nColumn, nFirstRow, nFirstRow,
526*b1cdbd2cSJim Jagielski                                             nTab, aHdrColl, bDummy );
527*b1cdbd2cSJim Jagielski 				TypedStrData* pHdrEntry = aHdrColl[0];
528*b1cdbd2cSJim Jagielski 				if ( pHdrEntry )
529*b1cdbd2cSJim Jagielski 				{
530*b1cdbd2cSJim Jagielski 					TypedStrData* pNewEntry = new TypedStrData(*pHdrEntry);
531*b1cdbd2cSJim Jagielski 					if ( pEntryLists[nColumn]->Insert( pNewEntry ) )
532*b1cdbd2cSJim Jagielski 					{
533*b1cdbd2cSJim Jagielski 						nHeaderPos[nColumn] = pEntryLists[nColumn]->IndexOf( pNewEntry );
534*b1cdbd2cSJim Jagielski 						DBG_ASSERT( nHeaderPos[nColumn] != USHRT_MAX,
535*b1cdbd2cSJim Jagielski 									"Header-Eintrag nicht wiedergefunden" );
536*b1cdbd2cSJim Jagielski 					}
537*b1cdbd2cSJim Jagielski 					else
538*b1cdbd2cSJim Jagielski 						delete pNewEntry;			// war schon drin
539*b1cdbd2cSJim Jagielski 				}
540*b1cdbd2cSJim Jagielski 			}
541*b1cdbd2cSJim Jagielski 
542*b1cdbd2cSJim Jagielski 			TypedScStrCollection* pColl = pEntryLists[nColumn];
543*b1cdbd2cSJim Jagielski 			sal_uInt16 nValueCount = pColl->GetCount();
544*b1cdbd2cSJim Jagielski 			if ( nValueCount > 0 )
545*b1cdbd2cSJim Jagielski 			{
546*b1cdbd2cSJim Jagielski 				for ( sal_uInt16 i=0; i<nValueCount; i++ )
547*b1cdbd2cSJim Jagielski 				{
548*b1cdbd2cSJim Jagielski 					pValList->InsertEntry( (*pColl)[i]->GetString(), nListPos );
549*b1cdbd2cSJim Jagielski 					nListPos++;
550*b1cdbd2cSJim Jagielski 				}
551*b1cdbd2cSJim Jagielski 			}
552*b1cdbd2cSJim Jagielski 		}
553*b1cdbd2cSJim Jagielski 		pValList->SetText( aCurValue );
554*b1cdbd2cSJim Jagielski 	}
555*b1cdbd2cSJim Jagielski 
556*b1cdbd2cSJim Jagielski 	UpdateHdrInValueList( nList );
557*b1cdbd2cSJim Jagielski }
558*b1cdbd2cSJim Jagielski 
UpdateHdrInValueList(sal_uInt16 nList)559*b1cdbd2cSJim Jagielski void ScFilterDlg::UpdateHdrInValueList( sal_uInt16 nList )
560*b1cdbd2cSJim Jagielski {
561*b1cdbd2cSJim Jagielski 	//!	GetText / SetText ??
562*b1cdbd2cSJim Jagielski 
563*b1cdbd2cSJim Jagielski 	if ( pDoc && nList>0 && nList<=4 )
564*b1cdbd2cSJim Jagielski 	{
565*b1cdbd2cSJim Jagielski 		sal_uInt16 nFieldSelPos = aFieldLbArr[nList-1]->GetSelectEntryPos();
566*b1cdbd2cSJim Jagielski 		if ( nFieldSelPos )
567*b1cdbd2cSJim Jagielski 		{
568*b1cdbd2cSJim Jagielski 			SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) - 1;
569*b1cdbd2cSJim Jagielski 			if ( pEntryLists[nColumn] )
570*b1cdbd2cSJim Jagielski 			{
571*b1cdbd2cSJim Jagielski 				sal_uInt16 nPos = nHeaderPos[nColumn];
572*b1cdbd2cSJim Jagielski 				if ( nPos != USHRT_MAX )
573*b1cdbd2cSJim Jagielski 				{
574*b1cdbd2cSJim Jagielski 					ComboBox* pValList = aValueEdArr[nList-1];
575*b1cdbd2cSJim Jagielski 					sal_uInt16 nListPos = nPos + 2;					// nach "leer" und "nicht leer"
576*b1cdbd2cSJim Jagielski 
577*b1cdbd2cSJim Jagielski 					TypedStrData* pHdrEntry = (*pEntryLists[nColumn])[nPos];
578*b1cdbd2cSJim Jagielski 					if ( pHdrEntry )
579*b1cdbd2cSJim Jagielski 					{
580*b1cdbd2cSJim Jagielski 						String aHdrStr = pHdrEntry->GetString();
581*b1cdbd2cSJim Jagielski 						sal_Bool bWasThere = ( pValList->GetEntry(nListPos) == aHdrStr );
582*b1cdbd2cSJim Jagielski 						sal_Bool bInclude = !aBtnHeader.IsChecked();
583*b1cdbd2cSJim Jagielski 
584*b1cdbd2cSJim Jagielski 						if (bInclude)			// Eintrag aufnehmen
585*b1cdbd2cSJim Jagielski 						{
586*b1cdbd2cSJim Jagielski 							if (!bWasThere)
587*b1cdbd2cSJim Jagielski 								pValList->InsertEntry(aHdrStr, nListPos);
588*b1cdbd2cSJim Jagielski 						}
589*b1cdbd2cSJim Jagielski 						else					// Eintrag weglassen
590*b1cdbd2cSJim Jagielski 						{
591*b1cdbd2cSJim Jagielski 							if (bWasThere)
592*b1cdbd2cSJim Jagielski 								pValList->RemoveEntry(nListPos);
593*b1cdbd2cSJim Jagielski 						}
594*b1cdbd2cSJim Jagielski 					}
595*b1cdbd2cSJim Jagielski 					else
596*b1cdbd2cSJim Jagielski 					{
597*b1cdbd2cSJim Jagielski 						DBG_ERROR("Eintag in Liste nicht gefunden");
598*b1cdbd2cSJim Jagielski 					}
599*b1cdbd2cSJim Jagielski 				}
600*b1cdbd2cSJim Jagielski 			}
601*b1cdbd2cSJim Jagielski 			else
602*b1cdbd2cSJim Jagielski 			{
603*b1cdbd2cSJim Jagielski 				DBG_ERROR("Spalte noch nicht initialisiert");
604*b1cdbd2cSJim Jagielski 			}
605*b1cdbd2cSJim Jagielski 		}
606*b1cdbd2cSJim Jagielski 	}
607*b1cdbd2cSJim Jagielski }
608*b1cdbd2cSJim Jagielski 
609*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
610*b1cdbd2cSJim Jagielski 
ClearValueList(sal_uInt16 nList)611*b1cdbd2cSJim Jagielski void ScFilterDlg::ClearValueList( sal_uInt16 nList )
612*b1cdbd2cSJim Jagielski {
613*b1cdbd2cSJim Jagielski 	if ( nList>0 && nList<=4 )
614*b1cdbd2cSJim Jagielski 	{
615*b1cdbd2cSJim Jagielski 		ComboBox* pValList = aValueEdArr[nList-1];
616*b1cdbd2cSJim Jagielski 		pValList->Clear();
617*b1cdbd2cSJim Jagielski 		pValList->InsertEntry( aStrNotEmpty, 0 );
618*b1cdbd2cSJim Jagielski 		pValList->InsertEntry( aStrEmpty, 1 );
619*b1cdbd2cSJim Jagielski 		pValList->SetText( EMPTY_STRING );
620*b1cdbd2cSJim Jagielski 	}
621*b1cdbd2cSJim Jagielski }
622*b1cdbd2cSJim Jagielski 
623*b1cdbd2cSJim Jagielski 
624*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
625*b1cdbd2cSJim Jagielski 
GetFieldSelPos(SCCOL nField)626*b1cdbd2cSJim Jagielski sal_uInt16 ScFilterDlg::GetFieldSelPos( SCCOL nField )
627*b1cdbd2cSJim Jagielski {
628*b1cdbd2cSJim Jagielski 	if ( nField >= theQueryData.nCol1 && nField <= theQueryData.nCol2 )
629*b1cdbd2cSJim Jagielski 		return static_cast<sal_uInt16>(nField - theQueryData.nCol1 + 1);
630*b1cdbd2cSJim Jagielski 	else
631*b1cdbd2cSJim Jagielski 		return 0;
632*b1cdbd2cSJim Jagielski }
633*b1cdbd2cSJim Jagielski 
634*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
635*b1cdbd2cSJim Jagielski 
GetOutputItem()636*b1cdbd2cSJim Jagielski ScQueryItem* ScFilterDlg::GetOutputItem()
637*b1cdbd2cSJim Jagielski {
638*b1cdbd2cSJim Jagielski 	ScAddress		theCopyPos;
639*b1cdbd2cSJim Jagielski 	ScQueryParam 	theParam( theQueryData );
640*b1cdbd2cSJim Jagielski     sal_Bool            bCopyPosOk = sal_False;
641*b1cdbd2cSJim Jagielski 
642*b1cdbd2cSJim Jagielski 	if ( aBtnCopyResult.IsChecked() )
643*b1cdbd2cSJim Jagielski 	{
644*b1cdbd2cSJim Jagielski 		String theCopyStr( aEdCopyArea.GetText() );
645*b1cdbd2cSJim Jagielski 		xub_StrLen nColonPos = theCopyStr.Search( ':' );
646*b1cdbd2cSJim Jagielski 
647*b1cdbd2cSJim Jagielski 		if ( STRING_NOTFOUND != nColonPos )
648*b1cdbd2cSJim Jagielski 			theCopyStr.Erase( nColonPos );
649*b1cdbd2cSJim Jagielski 
650*b1cdbd2cSJim Jagielski 		sal_uInt16 nResult = theCopyPos.Parse( theCopyStr, pDoc, pDoc->GetAddressConvention() );
651*b1cdbd2cSJim Jagielski 		bCopyPosOk = ( SCA_VALID == (nResult & SCA_VALID) );
652*b1cdbd2cSJim Jagielski 	}
653*b1cdbd2cSJim Jagielski 
654*b1cdbd2cSJim Jagielski 	if ( aBtnCopyResult.IsChecked() && bCopyPosOk )
655*b1cdbd2cSJim Jagielski 	{
656*b1cdbd2cSJim Jagielski 		theParam.bInplace   = sal_False;
657*b1cdbd2cSJim Jagielski 		theParam.nDestTab	= theCopyPos.Tab();
658*b1cdbd2cSJim Jagielski 		theParam.nDestCol	= theCopyPos.Col();
659*b1cdbd2cSJim Jagielski 		theParam.nDestRow	= theCopyPos.Row();
660*b1cdbd2cSJim Jagielski 	}
661*b1cdbd2cSJim Jagielski 	else
662*b1cdbd2cSJim Jagielski 	{
663*b1cdbd2cSJim Jagielski 		theParam.bInplace   = sal_True;
664*b1cdbd2cSJim Jagielski 		theParam.nDestTab	= 0;
665*b1cdbd2cSJim Jagielski 		theParam.nDestCol	= 0;
666*b1cdbd2cSJim Jagielski 		theParam.nDestRow	= 0;
667*b1cdbd2cSJim Jagielski 	}
668*b1cdbd2cSJim Jagielski 
669*b1cdbd2cSJim Jagielski 	theParam.bHasHeader		= aBtnHeader.IsChecked();
670*b1cdbd2cSJim Jagielski 	theParam.bByRow			= sal_True;
671*b1cdbd2cSJim Jagielski 	theParam.bDuplicate		= !aBtnUnique.IsChecked();
672*b1cdbd2cSJim Jagielski 	theParam.bCaseSens 		= aBtnCase.IsChecked();
673*b1cdbd2cSJim Jagielski 	theParam.bRegExp		= aBtnRegExp.IsChecked();
674*b1cdbd2cSJim Jagielski 	theParam.bDestPers		= aBtnDestPers.IsChecked();
675*b1cdbd2cSJim Jagielski 
676*b1cdbd2cSJim Jagielski 	//	nur die drei eingestellten - alles andere zuruecksetzen
677*b1cdbd2cSJim Jagielski 
678*b1cdbd2cSJim Jagielski 	DELETEZ( pOutItem );
679*b1cdbd2cSJim Jagielski 	pOutItem = new ScQueryItem( nWhichQuery, &theParam );
680*b1cdbd2cSJim Jagielski 
681*b1cdbd2cSJim Jagielski 	return pOutItem;
682*b1cdbd2cSJim Jagielski }
683*b1cdbd2cSJim Jagielski 
684*b1cdbd2cSJim Jagielski 
685*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
686*b1cdbd2cSJim Jagielski 
IsRefInputMode() const687*b1cdbd2cSJim Jagielski sal_Bool ScFilterDlg::IsRefInputMode() const
688*b1cdbd2cSJim Jagielski {
689*b1cdbd2cSJim Jagielski 	return bRefInputMode;
690*b1cdbd2cSJim Jagielski }
691*b1cdbd2cSJim Jagielski 
692*b1cdbd2cSJim Jagielski 
693*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
694*b1cdbd2cSJim Jagielski // Handler:
695*b1cdbd2cSJim Jagielski // ========
696*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScFilterDlg,EndDlgHdl,Button *,pBtn)697*b1cdbd2cSJim Jagielski IMPL_LINK( ScFilterDlg, EndDlgHdl, Button*, pBtn )
698*b1cdbd2cSJim Jagielski {
699*b1cdbd2cSJim Jagielski 	if ( pBtn == &aBtnOk )
700*b1cdbd2cSJim Jagielski 	{
701*b1cdbd2cSJim Jagielski 		sal_Bool bAreaInputOk = sal_True;
702*b1cdbd2cSJim Jagielski 
703*b1cdbd2cSJim Jagielski 		if ( aBtnCopyResult.IsChecked() )
704*b1cdbd2cSJim Jagielski 		{
705*b1cdbd2cSJim Jagielski 			if ( !pOptionsMgr->VerifyPosStr( aEdCopyArea.GetText() ) )
706*b1cdbd2cSJim Jagielski 			{
707*b1cdbd2cSJim Jagielski 				if ( !aBtnMore.GetState() )
708*b1cdbd2cSJim Jagielski 					aBtnMore.SetState( sal_True );
709*b1cdbd2cSJim Jagielski 
710*b1cdbd2cSJim Jagielski 				ERRORBOX( STR_INVALID_TABREF );
711*b1cdbd2cSJim Jagielski 				aEdCopyArea.GrabFocus();
712*b1cdbd2cSJim Jagielski 				bAreaInputOk = sal_False;
713*b1cdbd2cSJim Jagielski 			}
714*b1cdbd2cSJim Jagielski 		}
715*b1cdbd2cSJim Jagielski 
716*b1cdbd2cSJim Jagielski 		if ( bAreaInputOk )
717*b1cdbd2cSJim Jagielski 		{
718*b1cdbd2cSJim Jagielski 			SetDispatcherLock( sal_False );
719*b1cdbd2cSJim Jagielski 			SwitchToDocument();
720*b1cdbd2cSJim Jagielski 			GetBindings().GetDispatcher()->Execute( FID_FILTER_OK,
721*b1cdbd2cSJim Jagielski 									  SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD,
722*b1cdbd2cSJim Jagielski 									  GetOutputItem(), 0L, 0L );
723*b1cdbd2cSJim Jagielski 			Close();
724*b1cdbd2cSJim Jagielski 		}
725*b1cdbd2cSJim Jagielski 	}
726*b1cdbd2cSJim Jagielski 	else if ( pBtn == &aBtnCancel )
727*b1cdbd2cSJim Jagielski 	{
728*b1cdbd2cSJim Jagielski 		Close();
729*b1cdbd2cSJim Jagielski 	}
730*b1cdbd2cSJim Jagielski 
731*b1cdbd2cSJim Jagielski 	return 0;
732*b1cdbd2cSJim Jagielski }
733*b1cdbd2cSJim Jagielski 
734*b1cdbd2cSJim Jagielski 
735*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
736*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScFilterDlg,MoreClickHdl,MoreButton *,EMPTYARG)737*b1cdbd2cSJim Jagielski IMPL_LINK( ScFilterDlg, MoreClickHdl, MoreButton*, EMPTYARG )
738*b1cdbd2cSJim Jagielski {
739*b1cdbd2cSJim Jagielski 	if ( aBtnMore.GetState() )
740*b1cdbd2cSJim Jagielski 		pTimer->Start();
741*b1cdbd2cSJim Jagielski 	else
742*b1cdbd2cSJim Jagielski 	{
743*b1cdbd2cSJim Jagielski 		pTimer->Stop();
744*b1cdbd2cSJim Jagielski 		bRefInputMode = sal_False;
745*b1cdbd2cSJim Jagielski 		//@BugID 54702 Enablen/Disablen nur noch in Basisklasse
746*b1cdbd2cSJim Jagielski 		//SFX_APPWINDOW->Disable(sal_False);		//! allgemeine Methode im ScAnyRefDlg
747*b1cdbd2cSJim Jagielski 	}
748*b1cdbd2cSJim Jagielski 	return 0;
749*b1cdbd2cSJim Jagielski }
750*b1cdbd2cSJim Jagielski 
751*b1cdbd2cSJim Jagielski 
752*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
753*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScFilterDlg,TimeOutHdl,Timer *,_pTimer)754*b1cdbd2cSJim Jagielski IMPL_LINK( ScFilterDlg, TimeOutHdl, Timer*, _pTimer )
755*b1cdbd2cSJim Jagielski {
756*b1cdbd2cSJim Jagielski     // alle 50ms nachschauen, ob RefInputMode noch stimmt
757*b1cdbd2cSJim Jagielski 
758*b1cdbd2cSJim Jagielski     if( _pTimer == pTimer && IsActive() )
759*b1cdbd2cSJim Jagielski         bRefInputMode = (aEdCopyArea.HasFocus() || aRbCopyArea.HasFocus());
760*b1cdbd2cSJim Jagielski 
761*b1cdbd2cSJim Jagielski     if ( aBtnMore.GetState() )
762*b1cdbd2cSJim Jagielski         pTimer->Start();
763*b1cdbd2cSJim Jagielski 
764*b1cdbd2cSJim Jagielski     return 0;
765*b1cdbd2cSJim Jagielski }
766*b1cdbd2cSJim Jagielski 
767*b1cdbd2cSJim Jagielski 
768*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
769*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScFilterDlg,LbSelectHdl,ListBox *,pLb)770*b1cdbd2cSJim Jagielski IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox*, pLb )
771*b1cdbd2cSJim Jagielski {
772*b1cdbd2cSJim Jagielski 	/*
773*b1cdbd2cSJim Jagielski 	 * Behandlung der Enable/Disable-Logik,
774*b1cdbd2cSJim Jagielski 	 * abhaengig davon, welche ListBox angefasst wurde:
775*b1cdbd2cSJim Jagielski 	 */
776*b1cdbd2cSJim Jagielski 	sal_uInt16 nOffset = GetSliderPos();
777*b1cdbd2cSJim Jagielski 
778*b1cdbd2cSJim Jagielski 	if ( pLb == &aLbConnect1 )
779*b1cdbd2cSJim Jagielski 	{
780*b1cdbd2cSJim Jagielski 		aLbField1.Enable();
781*b1cdbd2cSJim Jagielski 		aLbCond1.Enable();
782*b1cdbd2cSJim Jagielski 		aEdVal1.Enable();
783*b1cdbd2cSJim Jagielski 
784*b1cdbd2cSJim Jagielski 		sal_uInt16 	nConnect1 = aLbConnect1.GetSelectEntryPos();
785*b1cdbd2cSJim Jagielski 		sal_uInt16 nQE = nOffset;
786*b1cdbd2cSJim Jagielski 		theQueryData.GetEntry(nQE).eConnect =(ScQueryConnect)nConnect1;
787*b1cdbd2cSJim Jagielski 		bRefreshExceptQuery[nQE]=sal_True;
788*b1cdbd2cSJim Jagielski 	}
789*b1cdbd2cSJim Jagielski 
790*b1cdbd2cSJim Jagielski 	else if ( pLb == &aLbConnect2 )
791*b1cdbd2cSJim Jagielski 	{
792*b1cdbd2cSJim Jagielski 		aLbField2.Enable();
793*b1cdbd2cSJim Jagielski 		aLbCond2.Enable();
794*b1cdbd2cSJim Jagielski 		aEdVal2.Enable();
795*b1cdbd2cSJim Jagielski 
796*b1cdbd2cSJim Jagielski 		sal_uInt16 	nConnect2 = aLbConnect2.GetSelectEntryPos();
797*b1cdbd2cSJim Jagielski 		sal_uInt16 nQE = 1+nOffset;
798*b1cdbd2cSJim Jagielski 		theQueryData.GetEntry(nQE).eConnect =(ScQueryConnect)nConnect2;
799*b1cdbd2cSJim Jagielski 		 bRefreshExceptQuery[nQE]=sal_True;
800*b1cdbd2cSJim Jagielski 	}
801*b1cdbd2cSJim Jagielski 	else if ( pLb == &aLbConnect3 )
802*b1cdbd2cSJim Jagielski 	{
803*b1cdbd2cSJim Jagielski 		aLbField3.Enable();
804*b1cdbd2cSJim Jagielski 		aLbCond3.Enable();
805*b1cdbd2cSJim Jagielski 		aEdVal3.Enable();
806*b1cdbd2cSJim Jagielski 
807*b1cdbd2cSJim Jagielski 		sal_uInt16 	nConnect3 = aLbConnect3.GetSelectEntryPos();
808*b1cdbd2cSJim Jagielski 		sal_uInt16 nQE = 2+nOffset;
809*b1cdbd2cSJim Jagielski 		theQueryData.GetEntry(nQE).eConnect = (ScQueryConnect)nConnect3;
810*b1cdbd2cSJim Jagielski 		bRefreshExceptQuery[nQE]=sal_True;
811*b1cdbd2cSJim Jagielski 
812*b1cdbd2cSJim Jagielski 	}
813*b1cdbd2cSJim Jagielski 	else if ( pLb == &aLbConnect4 )
814*b1cdbd2cSJim Jagielski 	{
815*b1cdbd2cSJim Jagielski 		aLbField4.Enable();
816*b1cdbd2cSJim Jagielski 		aLbCond4.Enable();
817*b1cdbd2cSJim Jagielski 		aEdVal4.Enable();
818*b1cdbd2cSJim Jagielski 
819*b1cdbd2cSJim Jagielski 		sal_uInt16 	nConnect4 = aLbConnect4.GetSelectEntryPos();
820*b1cdbd2cSJim Jagielski 		sal_uInt16 nQE = 3+nOffset;
821*b1cdbd2cSJim Jagielski 		theQueryData.GetEntry(nQE).eConnect = (ScQueryConnect)nConnect4;
822*b1cdbd2cSJim Jagielski 		bRefreshExceptQuery[nQE]=sal_True;
823*b1cdbd2cSJim Jagielski 
824*b1cdbd2cSJim Jagielski 	}
825*b1cdbd2cSJim Jagielski 	else if ( pLb == &aLbField1 )
826*b1cdbd2cSJim Jagielski 	{
827*b1cdbd2cSJim Jagielski 		if ( aLbField1.GetSelectEntryPos() == 0 )
828*b1cdbd2cSJim Jagielski 		{
829*b1cdbd2cSJim Jagielski 			aLbConnect2.SetNoSelection();
830*b1cdbd2cSJim Jagielski 			aLbConnect3.SetNoSelection();
831*b1cdbd2cSJim Jagielski 			aLbConnect4.SetNoSelection();
832*b1cdbd2cSJim Jagielski 			aLbField2.SelectEntryPos( 0 );
833*b1cdbd2cSJim Jagielski 			aLbField3.SelectEntryPos( 0 );
834*b1cdbd2cSJim Jagielski 			aLbField4.SelectEntryPos( 0 );
835*b1cdbd2cSJim Jagielski 			aLbCond2.SelectEntryPos( 0 );
836*b1cdbd2cSJim Jagielski 			aLbCond3.SelectEntryPos( 0 );
837*b1cdbd2cSJim Jagielski 			aLbCond4.SelectEntryPos( 0 );
838*b1cdbd2cSJim Jagielski 			ClearValueList( 1 );
839*b1cdbd2cSJim Jagielski 			ClearValueList( 2 );
840*b1cdbd2cSJim Jagielski 			ClearValueList( 3 );
841*b1cdbd2cSJim Jagielski 			ClearValueList( 4 );
842*b1cdbd2cSJim Jagielski 
843*b1cdbd2cSJim Jagielski 			aLbConnect2.Disable();
844*b1cdbd2cSJim Jagielski 			aLbConnect3.Disable();
845*b1cdbd2cSJim Jagielski 			aLbConnect4.Disable();
846*b1cdbd2cSJim Jagielski 			aLbField2.Disable();
847*b1cdbd2cSJim Jagielski 			aLbField3.Disable();
848*b1cdbd2cSJim Jagielski 			aLbField4.Disable();
849*b1cdbd2cSJim Jagielski 			aLbCond2.Disable();
850*b1cdbd2cSJim Jagielski 			aLbCond3.Disable();
851*b1cdbd2cSJim Jagielski 			aLbCond4.Disable();
852*b1cdbd2cSJim Jagielski 			aEdVal2.Disable();
853*b1cdbd2cSJim Jagielski 			aEdVal3.Disable();
854*b1cdbd2cSJim Jagielski 			aEdVal4.Disable();
855*b1cdbd2cSJim Jagielski 			for (sal_uInt16 i= nOffset; i< MAXQUERY; i++)
856*b1cdbd2cSJim Jagielski 			{
857*b1cdbd2cSJim Jagielski 				theQueryData.GetEntry(i).bDoQuery = sal_False;
858*b1cdbd2cSJim Jagielski 				bRefreshExceptQuery[i]=sal_False;
859*b1cdbd2cSJim Jagielski 				theQueryData.GetEntry(i).nField =  static_cast<SCCOL>(0);
860*b1cdbd2cSJim Jagielski 			}
861*b1cdbd2cSJim Jagielski 			bRefreshExceptQuery[nOffset] =sal_True;
862*b1cdbd2cSJim Jagielski 		}
863*b1cdbd2cSJim Jagielski 		else
864*b1cdbd2cSJim Jagielski 		{
865*b1cdbd2cSJim Jagielski 			UpdateValueList( 1 );
866*b1cdbd2cSJim Jagielski 			if ( !aLbConnect2.IsEnabled() )
867*b1cdbd2cSJim Jagielski 			{
868*b1cdbd2cSJim Jagielski 				aLbConnect2.Enable();
869*b1cdbd2cSJim Jagielski 			}
870*b1cdbd2cSJim Jagielski 			theQueryData.GetEntry(nOffset).bDoQuery = sal_True;
871*b1cdbd2cSJim Jagielski 			sal_uInt16 	nField	= pLb->GetSelectEntryPos();
872*b1cdbd2cSJim Jagielski 			theQueryData.GetEntry(nOffset).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ;
873*b1cdbd2cSJim Jagielski 		}
874*b1cdbd2cSJim Jagielski 	}
875*b1cdbd2cSJim Jagielski 	else if ( pLb == &aLbField2 )
876*b1cdbd2cSJim Jagielski 	{
877*b1cdbd2cSJim Jagielski 		if ( aLbField2.GetSelectEntryPos() == 0 )
878*b1cdbd2cSJim Jagielski 		{
879*b1cdbd2cSJim Jagielski             aLbConnect3.SetNoSelection();
880*b1cdbd2cSJim Jagielski 			aLbConnect4.SetNoSelection();
881*b1cdbd2cSJim Jagielski 			aLbField3.SelectEntryPos( 0 );
882*b1cdbd2cSJim Jagielski 			aLbField4.SelectEntryPos( 0 );
883*b1cdbd2cSJim Jagielski 			aLbCond3.SelectEntryPos( 0 );
884*b1cdbd2cSJim Jagielski 			aLbCond4.SelectEntryPos( 0 );
885*b1cdbd2cSJim Jagielski 			ClearValueList( 2 );
886*b1cdbd2cSJim Jagielski 			ClearValueList( 3 );
887*b1cdbd2cSJim Jagielski 			ClearValueList( 4 );
888*b1cdbd2cSJim Jagielski 
889*b1cdbd2cSJim Jagielski 			aLbConnect3.Disable();
890*b1cdbd2cSJim Jagielski 			aLbConnect4.Disable();
891*b1cdbd2cSJim Jagielski 			aLbField3.Disable();
892*b1cdbd2cSJim Jagielski 			aLbField4.Disable();
893*b1cdbd2cSJim Jagielski 			aLbCond3.Disable();
894*b1cdbd2cSJim Jagielski 			aLbCond4.Disable();
895*b1cdbd2cSJim Jagielski 			aEdVal3.Disable();
896*b1cdbd2cSJim Jagielski 			aEdVal4.Disable();
897*b1cdbd2cSJim Jagielski 
898*b1cdbd2cSJim Jagielski 			sal_uInt16 nTemp=nOffset+1;
899*b1cdbd2cSJim Jagielski 			for (sal_uInt16 i= nTemp; i< MAXQUERY; i++)
900*b1cdbd2cSJim Jagielski 			{
901*b1cdbd2cSJim Jagielski 				theQueryData.GetEntry(i).bDoQuery = sal_False;
902*b1cdbd2cSJim Jagielski 				bRefreshExceptQuery[i]=sal_False;
903*b1cdbd2cSJim Jagielski 				theQueryData.GetEntry(i).nField =  static_cast<SCCOL>(0);
904*b1cdbd2cSJim Jagielski 			}
905*b1cdbd2cSJim Jagielski 			bRefreshExceptQuery[nTemp]=sal_True;
906*b1cdbd2cSJim Jagielski 		}
907*b1cdbd2cSJim Jagielski 		else
908*b1cdbd2cSJim Jagielski 		{
909*b1cdbd2cSJim Jagielski 			UpdateValueList( 2 );
910*b1cdbd2cSJim Jagielski 			if ( !aLbConnect3.IsEnabled() )
911*b1cdbd2cSJim Jagielski 			{
912*b1cdbd2cSJim Jagielski 				aLbConnect3.Enable();
913*b1cdbd2cSJim Jagielski 			}
914*b1cdbd2cSJim Jagielski 			sal_uInt16 	nField	= pLb->GetSelectEntryPos();
915*b1cdbd2cSJim Jagielski 			sal_uInt16 nQ=1+nOffset;
916*b1cdbd2cSJim Jagielski 			theQueryData.GetEntry(nQ).bDoQuery = sal_True;
917*b1cdbd2cSJim Jagielski 			theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ;
918*b1cdbd2cSJim Jagielski 		}
919*b1cdbd2cSJim Jagielski 	}
920*b1cdbd2cSJim Jagielski 	else if ( pLb == &aLbField3 )
921*b1cdbd2cSJim Jagielski 	{
922*b1cdbd2cSJim Jagielski 		if ( aLbField3.GetSelectEntryPos() == 0 )
923*b1cdbd2cSJim Jagielski 		{
924*b1cdbd2cSJim Jagielski 			aLbConnect4.SetNoSelection();
925*b1cdbd2cSJim Jagielski 			aLbField4.SelectEntryPos( 0 );
926*b1cdbd2cSJim Jagielski 			aLbCond4.SelectEntryPos( 0 );
927*b1cdbd2cSJim Jagielski 			ClearValueList( 3 );
928*b1cdbd2cSJim Jagielski 			ClearValueList( 4 );
929*b1cdbd2cSJim Jagielski 
930*b1cdbd2cSJim Jagielski 			aLbConnect4.Disable();
931*b1cdbd2cSJim Jagielski 			aLbField4.Disable();
932*b1cdbd2cSJim Jagielski 			aLbCond4.Disable();
933*b1cdbd2cSJim Jagielski 			aEdVal4.Disable();
934*b1cdbd2cSJim Jagielski 
935*b1cdbd2cSJim Jagielski 			sal_uInt16 nTemp=nOffset+2;
936*b1cdbd2cSJim Jagielski 			for (sal_uInt16 i= nTemp; i< MAXQUERY; i++)
937*b1cdbd2cSJim Jagielski 			{
938*b1cdbd2cSJim Jagielski 				theQueryData.GetEntry(i).bDoQuery = sal_False;
939*b1cdbd2cSJim Jagielski 				bRefreshExceptQuery[i]=sal_False;
940*b1cdbd2cSJim Jagielski 				theQueryData.GetEntry(i).nField =  static_cast<SCCOL>(0);
941*b1cdbd2cSJim Jagielski 			}
942*b1cdbd2cSJim Jagielski 			bRefreshExceptQuery[nTemp]=sal_True;
943*b1cdbd2cSJim Jagielski 		}
944*b1cdbd2cSJim Jagielski 		else
945*b1cdbd2cSJim Jagielski 		{
946*b1cdbd2cSJim Jagielski 			UpdateValueList( 3 );
947*b1cdbd2cSJim Jagielski 			if ( !aLbConnect4.IsEnabled() )
948*b1cdbd2cSJim Jagielski 			{
949*b1cdbd2cSJim Jagielski 				aLbConnect4.Enable();
950*b1cdbd2cSJim Jagielski 			}
951*b1cdbd2cSJim Jagielski 
952*b1cdbd2cSJim Jagielski 			sal_uInt16 	nField	= pLb->GetSelectEntryPos();
953*b1cdbd2cSJim Jagielski 			sal_uInt16 nQ=2+nOffset;
954*b1cdbd2cSJim Jagielski 			theQueryData.GetEntry(nQ).bDoQuery = sal_True;
955*b1cdbd2cSJim Jagielski 			theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ;
956*b1cdbd2cSJim Jagielski 
957*b1cdbd2cSJim Jagielski 		}
958*b1cdbd2cSJim Jagielski 	}
959*b1cdbd2cSJim Jagielski 	else if ( pLb == &aLbField4 )
960*b1cdbd2cSJim Jagielski 	{
961*b1cdbd2cSJim Jagielski 		if ( aLbField4.GetSelectEntryPos() == 0 )
962*b1cdbd2cSJim Jagielski 		{
963*b1cdbd2cSJim Jagielski 			ClearValueList( 4 );
964*b1cdbd2cSJim Jagielski 			sal_uInt16 nTemp=nOffset+3;
965*b1cdbd2cSJim Jagielski 			for (sal_uInt16 i= nTemp; i< MAXQUERY; i++)
966*b1cdbd2cSJim Jagielski 			{
967*b1cdbd2cSJim Jagielski 				theQueryData.GetEntry(i).bDoQuery = sal_False;
968*b1cdbd2cSJim Jagielski 				bRefreshExceptQuery[i]=sal_False;
969*b1cdbd2cSJim Jagielski 				theQueryData.GetEntry(i).nField =  static_cast<SCCOL>(0);
970*b1cdbd2cSJim Jagielski 			}
971*b1cdbd2cSJim Jagielski 			bRefreshExceptQuery[nTemp]=sal_True;
972*b1cdbd2cSJim Jagielski 		}
973*b1cdbd2cSJim Jagielski 		else
974*b1cdbd2cSJim Jagielski 		{
975*b1cdbd2cSJim Jagielski 			UpdateValueList( 4 );
976*b1cdbd2cSJim Jagielski 			sal_uInt16 	nField	= pLb->GetSelectEntryPos();
977*b1cdbd2cSJim Jagielski 			sal_uInt16 nQ=3+nOffset;
978*b1cdbd2cSJim Jagielski 			theQueryData.GetEntry(nQ).bDoQuery = sal_True;
979*b1cdbd2cSJim Jagielski 			theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + static_cast<SCCOL>(nField) - 1 ;
980*b1cdbd2cSJim Jagielski 		}
981*b1cdbd2cSJim Jagielski 
982*b1cdbd2cSJim Jagielski 	}
983*b1cdbd2cSJim Jagielski 	else if ( pLb == &aLbCond1)
984*b1cdbd2cSJim Jagielski 	{
985*b1cdbd2cSJim Jagielski 		theQueryData.GetEntry(nOffset).eOp=(ScQueryOp)pLb->GetSelectEntryPos();
986*b1cdbd2cSJim Jagielski 	}
987*b1cdbd2cSJim Jagielski 	else if ( pLb == &aLbCond2)
988*b1cdbd2cSJim Jagielski 	{
989*b1cdbd2cSJim Jagielski 		sal_uInt16 nQ=1+nOffset;
990*b1cdbd2cSJim Jagielski 		theQueryData.GetEntry(nQ).eOp=(ScQueryOp)pLb->GetSelectEntryPos();
991*b1cdbd2cSJim Jagielski 	}
992*b1cdbd2cSJim Jagielski 	else if ( pLb == &aLbCond3)
993*b1cdbd2cSJim Jagielski 	{
994*b1cdbd2cSJim Jagielski 		sal_uInt16 nQ=2+nOffset;
995*b1cdbd2cSJim Jagielski 		theQueryData.GetEntry(nQ).eOp=(ScQueryOp)pLb->GetSelectEntryPos();
996*b1cdbd2cSJim Jagielski 	}
997*b1cdbd2cSJim Jagielski 	else
998*b1cdbd2cSJim Jagielski 	{
999*b1cdbd2cSJim Jagielski 		sal_uInt16 nQ=3+nOffset;
1000*b1cdbd2cSJim Jagielski 		theQueryData.GetEntry(nQ).eOp=(ScQueryOp)pLb->GetSelectEntryPos();
1001*b1cdbd2cSJim Jagielski 	}
1002*b1cdbd2cSJim Jagielski 
1003*b1cdbd2cSJim Jagielski 	return 0;
1004*b1cdbd2cSJim Jagielski }
1005*b1cdbd2cSJim Jagielski 
1006*b1cdbd2cSJim Jagielski 
1007*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1008*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScFilterDlg,CheckBoxHdl,CheckBox *,pBox)1009*b1cdbd2cSJim Jagielski IMPL_LINK( ScFilterDlg, CheckBoxHdl, CheckBox*, pBox )
1010*b1cdbd2cSJim Jagielski {
1011*b1cdbd2cSJim Jagielski 	//	Spaltenkoepfe:
1012*b1cdbd2cSJim Jagielski 	//		FeldListen: Spaltexx <-> Spaltenkopf-String
1013*b1cdbd2cSJim Jagielski 	//		WertListen: Spaltenkopf-Wert entfaellt.
1014*b1cdbd2cSJim Jagielski 	//	Gross-/Kleinschreibung:
1015*b1cdbd2cSJim Jagielski 	//		WertListen: komplett neu
1016*b1cdbd2cSJim Jagielski 
1017*b1cdbd2cSJim Jagielski 	if ( pBox == &aBtnHeader )				// Feldlisten und Wertlisten
1018*b1cdbd2cSJim Jagielski 	{
1019*b1cdbd2cSJim Jagielski 		sal_uInt16 nCurSel1 = aLbField1.GetSelectEntryPos();
1020*b1cdbd2cSJim Jagielski 		sal_uInt16 nCurSel2 = aLbField2.GetSelectEntryPos();
1021*b1cdbd2cSJim Jagielski 		sal_uInt16 nCurSel3 = aLbField3.GetSelectEntryPos();
1022*b1cdbd2cSJim Jagielski 		sal_uInt16 nCurSel4 = aLbField4.GetSelectEntryPos();
1023*b1cdbd2cSJim Jagielski 		FillFieldLists();
1024*b1cdbd2cSJim Jagielski 		aLbField1.SelectEntryPos( nCurSel1 );
1025*b1cdbd2cSJim Jagielski 		aLbField2.SelectEntryPos( nCurSel2 );
1026*b1cdbd2cSJim Jagielski 		aLbField3.SelectEntryPos( nCurSel3 );
1027*b1cdbd2cSJim Jagielski 		aLbField4.SelectEntryPos( nCurSel4 );
1028*b1cdbd2cSJim Jagielski 
1029*b1cdbd2cSJim Jagielski 		UpdateHdrInValueList( 1 );
1030*b1cdbd2cSJim Jagielski 		UpdateHdrInValueList( 2 );
1031*b1cdbd2cSJim Jagielski 		UpdateHdrInValueList( 3 );
1032*b1cdbd2cSJim Jagielski 		UpdateHdrInValueList( 4 );
1033*b1cdbd2cSJim Jagielski 	}
1034*b1cdbd2cSJim Jagielski 
1035*b1cdbd2cSJim Jagielski 	if ( pBox == &aBtnCase )			// Wertlisten komplett
1036*b1cdbd2cSJim Jagielski 	{
1037*b1cdbd2cSJim Jagielski 		for (sal_uInt16 i=0; i<=MAXCOL; i++)
1038*b1cdbd2cSJim Jagielski 			DELETEZ( pEntryLists[i] );
1039*b1cdbd2cSJim Jagielski 
1040*b1cdbd2cSJim Jagielski 		UpdateValueList( 1 );		// aktueller Text wird gemerkt
1041*b1cdbd2cSJim Jagielski 		UpdateValueList( 2 );
1042*b1cdbd2cSJim Jagielski 		UpdateValueList( 3 );
1043*b1cdbd2cSJim Jagielski 		UpdateValueList( 4 );
1044*b1cdbd2cSJim Jagielski 	}
1045*b1cdbd2cSJim Jagielski 
1046*b1cdbd2cSJim Jagielski 	return 0;
1047*b1cdbd2cSJim Jagielski }
1048*b1cdbd2cSJim Jagielski 
1049*b1cdbd2cSJim Jagielski 
1050*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1051*b1cdbd2cSJim Jagielski 
IMPL_LINK(ScFilterDlg,ValModifyHdl,ComboBox *,pEd)1052*b1cdbd2cSJim Jagielski IMPL_LINK( ScFilterDlg, ValModifyHdl, ComboBox*, pEd )
1053*b1cdbd2cSJim Jagielski {
1054*b1cdbd2cSJim Jagielski 	sal_uInt16   nOffset = GetSliderPos();
1055*b1cdbd2cSJim Jagielski 	sal_uInt16   i=0;
1056*b1cdbd2cSJim Jagielski 	sal_uInt16   nQE =i + nOffset;
1057*b1cdbd2cSJim Jagielski 	if ( pEd )
1058*b1cdbd2cSJim Jagielski 	{
1059*b1cdbd2cSJim Jagielski 		String    aStrVal	= pEd->GetText();
1060*b1cdbd2cSJim Jagielski 		ListBox*  pLbCond	= &aLbCond1;
1061*b1cdbd2cSJim Jagielski 		ListBox*  pLbField	= &aLbField1;
1062*b1cdbd2cSJim Jagielski 		if ( pEd == &aEdVal2 )
1063*b1cdbd2cSJim Jagielski 		{
1064*b1cdbd2cSJim Jagielski 			pLbCond  = &aLbCond2;
1065*b1cdbd2cSJim Jagielski 			pLbField = &aLbField2;
1066*b1cdbd2cSJim Jagielski 			i=1;
1067*b1cdbd2cSJim Jagielski 			nQE=i+nOffset;
1068*b1cdbd2cSJim Jagielski 		}
1069*b1cdbd2cSJim Jagielski 		if ( pEd == &aEdVal3 )
1070*b1cdbd2cSJim Jagielski 		{
1071*b1cdbd2cSJim Jagielski 			pLbCond = &aLbCond3;
1072*b1cdbd2cSJim Jagielski 			pLbField = &aLbField3;
1073*b1cdbd2cSJim Jagielski 			i=2;
1074*b1cdbd2cSJim Jagielski 			nQE=i+nOffset;
1075*b1cdbd2cSJim Jagielski 		}
1076*b1cdbd2cSJim Jagielski 		if ( pEd == &aEdVal4 )
1077*b1cdbd2cSJim Jagielski 		{
1078*b1cdbd2cSJim Jagielski 			pLbCond = &aLbCond4;
1079*b1cdbd2cSJim Jagielski 			pLbField = &aLbField4;
1080*b1cdbd2cSJim Jagielski 			i=3;
1081*b1cdbd2cSJim Jagielski 			nQE=i+nOffset;
1082*b1cdbd2cSJim Jagielski 		}
1083*b1cdbd2cSJim Jagielski 
1084*b1cdbd2cSJim Jagielski 		if ( aStrEmpty == aStrVal || aStrNotEmpty == aStrVal )
1085*b1cdbd2cSJim Jagielski 		{
1086*b1cdbd2cSJim Jagielski 			pLbCond->SelectEntry( '=' );
1087*b1cdbd2cSJim Jagielski 			pLbCond->Disable();
1088*b1cdbd2cSJim Jagielski 		}
1089*b1cdbd2cSJim Jagielski 		else
1090*b1cdbd2cSJim Jagielski 			pLbCond->Enable();
1091*b1cdbd2cSJim Jagielski 
1092*b1cdbd2cSJim Jagielski 		ScQueryEntry& rEntry = theQueryData.GetEntry( nQE );
1093*b1cdbd2cSJim Jagielski 		sal_Bool bDoThis = (pLbField->GetSelectEntryPos() != 0);
1094*b1cdbd2cSJim Jagielski 		rEntry.bDoQuery = bDoThis;
1095*b1cdbd2cSJim Jagielski 
1096*b1cdbd2cSJim Jagielski 		if ( rEntry.bDoQuery || bRefreshExceptQuery[nQE] )
1097*b1cdbd2cSJim Jagielski 		{
1098*b1cdbd2cSJim Jagielski 			if ( aStrVal == aStrEmpty )
1099*b1cdbd2cSJim Jagielski 			{
1100*b1cdbd2cSJim Jagielski 				rEntry.pStr->Erase();
1101*b1cdbd2cSJim Jagielski 				rEntry.nVal = SC_EMPTYFIELDS;
1102*b1cdbd2cSJim Jagielski 				rEntry.bQueryByString = sal_False;
1103*b1cdbd2cSJim Jagielski 			}
1104*b1cdbd2cSJim Jagielski 			else if ( aStrVal == aStrNotEmpty )
1105*b1cdbd2cSJim Jagielski 			{
1106*b1cdbd2cSJim Jagielski 				rEntry.pStr->Erase();
1107*b1cdbd2cSJim Jagielski 				rEntry.nVal = SC_NONEMPTYFIELDS;
1108*b1cdbd2cSJim Jagielski 				rEntry.bQueryByString = sal_False;
1109*b1cdbd2cSJim Jagielski 			}
1110*b1cdbd2cSJim Jagielski 			else
1111*b1cdbd2cSJim Jagielski 			{
1112*b1cdbd2cSJim Jagielski 				*rEntry.pStr		  = aStrVal;
1113*b1cdbd2cSJim Jagielski 				rEntry.nVal			  = 0;
1114*b1cdbd2cSJim Jagielski 				rEntry.bQueryByString = sal_True;
1115*b1cdbd2cSJim Jagielski 			}
1116*b1cdbd2cSJim Jagielski 
1117*b1cdbd2cSJim Jagielski 			sal_uInt16 	nField	= pLbField->GetSelectEntryPos();
1118*b1cdbd2cSJim Jagielski 			rEntry.nField = nField ? (theQueryData.nCol1 +
1119*b1cdbd2cSJim Jagielski 				static_cast<SCCOL>(nField) - 1) : static_cast<SCCOL>(0);
1120*b1cdbd2cSJim Jagielski 
1121*b1cdbd2cSJim Jagielski 			ScQueryOp eOp  = (ScQueryOp)pLbCond->GetSelectEntryPos();
1122*b1cdbd2cSJim Jagielski             rEntry.eOp	   = eOp;
1123*b1cdbd2cSJim Jagielski             rEntry.bQueryByDate = mbHasDates[nQE];
1124*b1cdbd2cSJim Jagielski 
1125*b1cdbd2cSJim Jagielski 		}
1126*b1cdbd2cSJim Jagielski 	}
1127*b1cdbd2cSJim Jagielski 	return 0;
1128*b1cdbd2cSJim Jagielski }
1129*b1cdbd2cSJim Jagielski 
1130*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
IMPL_LINK(ScFilterDlg,ScrollHdl,ScrollBar *,EMPTYARG)1131*b1cdbd2cSJim Jagielski IMPL_LINK( ScFilterDlg, ScrollHdl, ScrollBar*, EMPTYARG )
1132*b1cdbd2cSJim Jagielski {
1133*b1cdbd2cSJim Jagielski 	SliderMoved();
1134*b1cdbd2cSJim Jagielski 	return 0;
1135*b1cdbd2cSJim Jagielski }
1136*b1cdbd2cSJim Jagielski 
SliderMoved()1137*b1cdbd2cSJim Jagielski void ScFilterDlg::SliderMoved()
1138*b1cdbd2cSJim Jagielski {
1139*b1cdbd2cSJim Jagielski 	sal_uInt16 nOffset = GetSliderPos();
1140*b1cdbd2cSJim Jagielski 	RefreshEditRow( nOffset);
1141*b1cdbd2cSJim Jagielski }
GetSliderPos()1142*b1cdbd2cSJim Jagielski sal_uInt16 ScFilterDlg::GetSliderPos()
1143*b1cdbd2cSJim Jagielski {
1144*b1cdbd2cSJim Jagielski 	return (sal_uInt16) aScrollBar.GetThumbPos();
1145*b1cdbd2cSJim Jagielski }
RefreshEditRow(sal_uInt16 nOffset)1146*b1cdbd2cSJim Jagielski void ScFilterDlg::RefreshEditRow( sal_uInt16 nOffset )
1147*b1cdbd2cSJim Jagielski {
1148*b1cdbd2cSJim Jagielski 	if (nOffset==0)
1149*b1cdbd2cSJim Jagielski 		aConnLbArr[0]->Hide();
1150*b1cdbd2cSJim Jagielski 	else
1151*b1cdbd2cSJim Jagielski 		aConnLbArr[0]->Show();
1152*b1cdbd2cSJim Jagielski 
1153*b1cdbd2cSJim Jagielski 	for ( sal_uInt16 i=0; i<4; i++ )
1154*b1cdbd2cSJim Jagielski 	{
1155*b1cdbd2cSJim Jagielski 		String	aValStr;
1156*b1cdbd2cSJim Jagielski 		sal_uInt16	nCondPos	 = 0;
1157*b1cdbd2cSJim Jagielski 		sal_uInt16	nFieldSelPos = 0;
1158*b1cdbd2cSJim Jagielski 		sal_uInt16  nQE = i+nOffset;
1159*b1cdbd2cSJim Jagielski 
1160*b1cdbd2cSJim Jagielski 		ScQueryEntry& rEntry = theQueryData.GetEntry( nQE);
1161*b1cdbd2cSJim Jagielski 		if ( rEntry.bDoQuery || bRefreshExceptQuery[nQE] )
1162*b1cdbd2cSJim Jagielski 		{
1163*b1cdbd2cSJim Jagielski 			nCondPos	 = (sal_uInt16)rEntry.eOp;
1164*b1cdbd2cSJim Jagielski 			if(rEntry.bDoQuery)
1165*b1cdbd2cSJim Jagielski 			   nFieldSelPos = GetFieldSelPos( static_cast<SCCOL>(rEntry.nField) );
1166*b1cdbd2cSJim Jagielski 
1167*b1cdbd2cSJim Jagielski 			if ( rEntry.nVal == SC_EMPTYFIELDS && !rEntry.bQueryByString && *rEntry.pStr == EMPTY_STRING )
1168*b1cdbd2cSJim Jagielski 			{
1169*b1cdbd2cSJim Jagielski 				aValStr = aStrEmpty;
1170*b1cdbd2cSJim Jagielski 				aCondLbArr[i]->Disable();
1171*b1cdbd2cSJim Jagielski 			}
1172*b1cdbd2cSJim Jagielski 			else if ( rEntry.nVal == SC_NONEMPTYFIELDS && !rEntry.bQueryByString && *rEntry.pStr == EMPTY_STRING )
1173*b1cdbd2cSJim Jagielski 			{
1174*b1cdbd2cSJim Jagielski 				aValStr = aStrNotEmpty;
1175*b1cdbd2cSJim Jagielski 				aCondLbArr[i]->Disable();
1176*b1cdbd2cSJim Jagielski 			}
1177*b1cdbd2cSJim Jagielski 			else
1178*b1cdbd2cSJim Jagielski 			{
1179*b1cdbd2cSJim Jagielski 				aValStr = *rEntry.pStr;
1180*b1cdbd2cSJim Jagielski 				aCondLbArr[i]->Enable();
1181*b1cdbd2cSJim Jagielski 			}
1182*b1cdbd2cSJim Jagielski 			aFieldLbArr[i]->Enable();
1183*b1cdbd2cSJim Jagielski 			aValueEdArr[i]->Enable();
1184*b1cdbd2cSJim Jagielski 
1185*b1cdbd2cSJim Jagielski 			if (nOffset==0)
1186*b1cdbd2cSJim Jagielski 			{
1187*b1cdbd2cSJim Jagielski 				if (i<3)
1188*b1cdbd2cSJim Jagielski 				{
1189*b1cdbd2cSJim Jagielski 					if(rEntry.bDoQuery)
1190*b1cdbd2cSJim Jagielski 						aConnLbArr[i+1]->Enable();
1191*b1cdbd2cSJim Jagielski 					else
1192*b1cdbd2cSJim Jagielski 						aConnLbArr[i+1]->Disable();
1193*b1cdbd2cSJim Jagielski 					sal_uInt16 nQENext = nQE+1;
1194*b1cdbd2cSJim Jagielski 					if(theQueryData.GetEntry(nQENext).bDoQuery || bRefreshExceptQuery[nQENext])
1195*b1cdbd2cSJim Jagielski 						aConnLbArr[i+1]->SelectEntryPos( (sal_uInt16) theQueryData.GetEntry(nQENext).eConnect );
1196*b1cdbd2cSJim Jagielski 					else
1197*b1cdbd2cSJim Jagielski 						aConnLbArr[i+1]->SetNoSelection();
1198*b1cdbd2cSJim Jagielski 				}
1199*b1cdbd2cSJim Jagielski 			}
1200*b1cdbd2cSJim Jagielski 			else
1201*b1cdbd2cSJim Jagielski 			{
1202*b1cdbd2cSJim Jagielski 				if(theQueryData.GetEntry( nQE-1).bDoQuery)
1203*b1cdbd2cSJim Jagielski 					aConnLbArr[i]->Enable();
1204*b1cdbd2cSJim Jagielski 				else
1205*b1cdbd2cSJim Jagielski 					aConnLbArr[i]->Disable();
1206*b1cdbd2cSJim Jagielski 
1207*b1cdbd2cSJim Jagielski 				if(rEntry.bDoQuery || bRefreshExceptQuery[nQE])
1208*b1cdbd2cSJim Jagielski 					aConnLbArr[i]->SelectEntryPos( (sal_uInt16) rEntry.eConnect );
1209*b1cdbd2cSJim Jagielski 				else
1210*b1cdbd2cSJim Jagielski 					aConnLbArr[i]->SetNoSelection();
1211*b1cdbd2cSJim Jagielski 			}
1212*b1cdbd2cSJim Jagielski 
1213*b1cdbd2cSJim Jagielski 		}
1214*b1cdbd2cSJim Jagielski 		else
1215*b1cdbd2cSJim Jagielski 		{
1216*b1cdbd2cSJim Jagielski 			if (nOffset==0)
1217*b1cdbd2cSJim Jagielski 			{
1218*b1cdbd2cSJim Jagielski 				if(i<3)
1219*b1cdbd2cSJim Jagielski 				{
1220*b1cdbd2cSJim Jagielski 					aConnLbArr[i+1]->SetNoSelection();
1221*b1cdbd2cSJim Jagielski 					aConnLbArr[i+1]->Disable();
1222*b1cdbd2cSJim Jagielski 				}
1223*b1cdbd2cSJim Jagielski 			}
1224*b1cdbd2cSJim Jagielski 			else
1225*b1cdbd2cSJim Jagielski 			{
1226*b1cdbd2cSJim Jagielski 				if(theQueryData.GetEntry( nQE-1).bDoQuery)
1227*b1cdbd2cSJim Jagielski 					aConnLbArr[i]->Enable();
1228*b1cdbd2cSJim Jagielski 				else
1229*b1cdbd2cSJim Jagielski 					aConnLbArr[i]->Disable();
1230*b1cdbd2cSJim Jagielski 				aConnLbArr[i]->SetNoSelection();
1231*b1cdbd2cSJim Jagielski 			}
1232*b1cdbd2cSJim Jagielski 			aFieldLbArr[i]->Disable();
1233*b1cdbd2cSJim Jagielski 			aCondLbArr[i]->Disable();
1234*b1cdbd2cSJim Jagielski 			aValueEdArr[i]->Disable();
1235*b1cdbd2cSJim Jagielski 		}
1236*b1cdbd2cSJim Jagielski 		aFieldLbArr[i]->SelectEntryPos( nFieldSelPos );
1237*b1cdbd2cSJim Jagielski 		aCondLbArr [i]->SelectEntryPos( nCondPos );
1238*b1cdbd2cSJim Jagielski 		aValueEdArr[i]->SetText( aValStr );
1239*b1cdbd2cSJim Jagielski 		UpdateValueList( static_cast<sal_uInt16>(i+1) );
1240*b1cdbd2cSJim Jagielski 	}
1241*b1cdbd2cSJim Jagielski }
1242