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 #ifndef DBAUI_QUERYFILTER_HXX
25*b1cdbd2cSJim Jagielski #define DBAUI_QUERYFILTER_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #ifndef _DIALOG_HXX //autogen
28*b1cdbd2cSJim Jagielski #include <vcl/dialog.hxx>
29*b1cdbd2cSJim Jagielski #endif
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski #ifndef _LSTBOX_HXX //autogen
32*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx>
33*b1cdbd2cSJim Jagielski #endif
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski #ifndef _EDIT_HXX //autogen
36*b1cdbd2cSJim Jagielski #include <vcl/edit.hxx>
37*b1cdbd2cSJim Jagielski #endif
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski #ifndef _FIXED_HXX //autogen
40*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx>
41*b1cdbd2cSJim Jagielski #endif
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski #ifndef _BUTTON_HXX //autogen
44*b1cdbd2cSJim Jagielski #include <vcl/button.hxx>
45*b1cdbd2cSJim Jagielski #endif
46*b1cdbd2cSJim Jagielski #ifndef _CONNECTIVITY_PARSE_SQLITERATOR_HXX_
47*b1cdbd2cSJim Jagielski #include <connectivity/sqliterator.hxx>
48*b1cdbd2cSJim Jagielski #endif
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski #ifndef CONNECTIVITY_PREDICATEINPUT_HXX
51*b1cdbd2cSJim Jagielski #include <connectivity/predicateinput.hxx>
52*b1cdbd2cSJim Jagielski #endif
53*b1cdbd2cSJim Jagielski #ifndef SVX_QUERYDESIGNCONTEXT_HXX
54*b1cdbd2cSJim Jagielski #include "svx/ParseContext.hxx"
55*b1cdbd2cSJim Jagielski #endif
56*b1cdbd2cSJim Jagielski 
57*b1cdbd2cSJim Jagielski namespace rtl
58*b1cdbd2cSJim Jagielski {
59*b1cdbd2cSJim Jagielski 	class OUString;
60*b1cdbd2cSJim Jagielski }
61*b1cdbd2cSJim Jagielski namespace com
62*b1cdbd2cSJim Jagielski {
63*b1cdbd2cSJim Jagielski 	namespace sun
64*b1cdbd2cSJim Jagielski 	{
65*b1cdbd2cSJim Jagielski 		namespace star
66*b1cdbd2cSJim Jagielski 		{
67*b1cdbd2cSJim Jagielski 			namespace sdb
68*b1cdbd2cSJim Jagielski 			{
69*b1cdbd2cSJim Jagielski 				class XSingleSelectQueryComposer;
70*b1cdbd2cSJim Jagielski 			}
71*b1cdbd2cSJim Jagielski 			namespace sdbc
72*b1cdbd2cSJim Jagielski 			{
73*b1cdbd2cSJim Jagielski 				class XConnection;
74*b1cdbd2cSJim Jagielski 				class XDatabaseMetaData;
75*b1cdbd2cSJim Jagielski 			}
76*b1cdbd2cSJim Jagielski 			namespace container
77*b1cdbd2cSJim Jagielski 			{
78*b1cdbd2cSJim Jagielski 				class XNameAccess;
79*b1cdbd2cSJim Jagielski 			}
80*b1cdbd2cSJim Jagielski 			namespace beans
81*b1cdbd2cSJim Jagielski 			{
82*b1cdbd2cSJim Jagielski 				struct PropertyValue;
83*b1cdbd2cSJim Jagielski 			}
84*b1cdbd2cSJim Jagielski 		}
85*b1cdbd2cSJim Jagielski 	}
86*b1cdbd2cSJim Jagielski }
87*b1cdbd2cSJim Jagielski //==================================================================
88*b1cdbd2cSJim Jagielski // DlgFilterCrit
89*b1cdbd2cSJim Jagielski //==================================================================
90*b1cdbd2cSJim Jagielski namespace dbaui
91*b1cdbd2cSJim Jagielski {
92*b1cdbd2cSJim Jagielski 	class DlgFilterCrit	:public ModalDialog
93*b1cdbd2cSJim Jagielski 						,public ::svxform::OParseContextClient
94*b1cdbd2cSJim Jagielski 	{
95*b1cdbd2cSJim Jagielski 	private:
96*b1cdbd2cSJim Jagielski 		ListBox			aLB_WHEREFIELD1;
97*b1cdbd2cSJim Jagielski 		ListBox			aLB_WHERECOMP1;
98*b1cdbd2cSJim Jagielski 		Edit			aET_WHEREVALUE1;
99*b1cdbd2cSJim Jagielski 		ListBox			aLB_WHERECOND2;
100*b1cdbd2cSJim Jagielski 		ListBox			aLB_WHEREFIELD2;
101*b1cdbd2cSJim Jagielski 		ListBox			aLB_WHERECOMP2;
102*b1cdbd2cSJim Jagielski 		Edit			aET_WHEREVALUE2;
103*b1cdbd2cSJim Jagielski 		ListBox			aLB_WHERECOND3;
104*b1cdbd2cSJim Jagielski 		ListBox			aLB_WHEREFIELD3;
105*b1cdbd2cSJim Jagielski 		ListBox			aLB_WHERECOMP3;
106*b1cdbd2cSJim Jagielski 		Edit			aET_WHEREVALUE3;
107*b1cdbd2cSJim Jagielski 		FixedText		aFT_WHEREFIELD;
108*b1cdbd2cSJim Jagielski 		FixedText		aFT_WHERECOMP;
109*b1cdbd2cSJim Jagielski 		FixedText		aFT_WHEREVALUE;
110*b1cdbd2cSJim Jagielski 		FixedText		aFT_WHEREOPER;
111*b1cdbd2cSJim Jagielski         FixedLine       aFL_FIELDS;
112*b1cdbd2cSJim Jagielski 		OKButton		aBT_OK;
113*b1cdbd2cSJim Jagielski 		CancelButton	aBT_CANCEL;
114*b1cdbd2cSJim Jagielski 		HelpButton		aBT_HELP;
115*b1cdbd2cSJim Jagielski 		String			aSTR_NOENTRY;
116*b1cdbd2cSJim Jagielski 		String			aSTR_COMPARE_OPERATORS;
117*b1cdbd2cSJim Jagielski 
118*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryComposer>	m_xQueryComposer;
119*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>		m_xColumns;
120*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>			m_xConnection;
121*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData>	m_xMetaData;
122*b1cdbd2cSJim Jagielski 
123*b1cdbd2cSJim Jagielski 		::dbtools::OPredicateInputController	m_aPredicateInput;
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski 		void			SelectField( ListBox& rBox, const String& rField );
126*b1cdbd2cSJim Jagielski 		DECL_LINK( ListSelectHdl, ListBox * );
127*b1cdbd2cSJim Jagielski 		DECL_LINK( ListSelectCompHdl, ListBox * );
128*b1cdbd2cSJim Jagielski 
129*b1cdbd2cSJim Jagielski 		void			SetLine( sal_uInt16 nIdx,const ::com::sun::star::beans::PropertyValue& _rItem,sal_Bool _bOr );
130*b1cdbd2cSJim Jagielski 		void			EnableLines();
131*b1cdbd2cSJim Jagielski 		sal_Int32		GetOSQLPredicateType( const String& _rSelectedPredicate ) const;
132*b1cdbd2cSJim Jagielski 		sal_uInt16			GetSelectionPos(sal_Int32 eType,const ListBox& rListBox) const;
133*b1cdbd2cSJim Jagielski 		sal_Bool 		getCondition(const ListBox& _rField,const ListBox& _rComp,const Edit& _rValue,::com::sun::star::beans::PropertyValue& _rFilter) const;
134*b1cdbd2cSJim Jagielski 		void			fillLines(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > >& _aValues);
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > getMatchingColumn( const Edit& _rValueInput ) const;
137*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > getColumn( const ::rtl::OUString& _rFieldName ) const;
138*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > getQueryColumn( const ::rtl::OUString& _rFieldName ) const;
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski 	public:
141*b1cdbd2cSJim Jagielski 		DlgFilterCrit(	Window * pParent,
142*b1cdbd2cSJim Jagielski 						const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
143*b1cdbd2cSJim Jagielski 						const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _rxConnection,
144*b1cdbd2cSJim Jagielski 						const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryComposer>& _rxComposer,
145*b1cdbd2cSJim Jagielski 						const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& _rxCols
146*b1cdbd2cSJim Jagielski 					);
147*b1cdbd2cSJim Jagielski 		~DlgFilterCrit();
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski         void            BuildWherePart();
150*b1cdbd2cSJim Jagielski 
151*b1cdbd2cSJim Jagielski 	protected:
152*b1cdbd2cSJim Jagielski 		DECL_LINK( PredicateLoseFocus, Edit* );
153*b1cdbd2cSJim Jagielski 	};
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski }
156*b1cdbd2cSJim Jagielski 
157*b1cdbd2cSJim Jagielski #endif // DBAUI_QUERYFILTER_HXX
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski 
160