blob: f3de0819fe3eafd005fbaf388bc4d4603c9cccdd [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SC_FILTDLG_HXX
#define SC_FILTDLG_HXX
#ifndef _MOREBTN_HXX //autogen
#include <vcl/morebtn.hxx>
#endif
#ifndef _COMBOBOX_HXX //autogen
#include <vcl/combobox.hxx>
#endif
#ifndef _LSTBOX_HXX //autogen
#include <vcl/lstbox.hxx>
#endif
#include <svtools/stdctrl.hxx>
#include "global.hxx" // -> ScQueryParam
#include "address.hxx"
#include "anyrefdg.hxx"
//----------------------------------------------------------------------------
class ScFilterOptionsMgr;
class ScRangeData;
class ScViewData;
class ScDocument;
class ScQueryItem;
class TypedScStrCollection;
//==================================================================
// Gemeinsame Resource-Objekte:
#define _COMMON_FILTER_RSCOBJS \
CheckBox aBtnCase; \
CheckBox aBtnRegExp; \
CheckBox aBtnHeader; \
CheckBox aBtnUnique; \
CheckBox aBtnCopyResult; \
ListBox aLbCopyArea; \
formula::RefEdit aEdCopyArea; \
formula::RefButton aRbCopyArea; \
CheckBox aBtnDestPers; \
FixedText aFtDbAreaLabel; \
FixedInfo aFtDbArea; \
const String aStrUndefined; \
const String aStrNoName; \
const String aStrNone;
#define _INIT_COMMON_FILTER_RSCOBJS \
aBtnCase ( this, ScResId( BTN_CASE ) ), \
aBtnRegExp ( this, ScResId( BTN_REGEXP ) ), \
aBtnHeader ( this, ScResId( BTN_HEADER ) ), \
aBtnUnique ( this, ScResId( BTN_UNIQUE ) ), \
aBtnCopyResult ( this, ScResId( BTN_COPY_RESULT ) ), \
aLbCopyArea ( this, ScResId( LB_COPY_AREA ) ), \
aEdCopyArea ( this, this, ScResId( ED_COPY_AREA ) ), \
aRbCopyArea ( this, ScResId( RB_COPY_AREA ), &aEdCopyArea, this ), \
aBtnDestPers ( this, ScResId( BTN_DEST_PERS ) ), \
aFtDbAreaLabel ( this, ScResId( FT_DBAREA_LABEL ) ), \
aFtDbArea ( this, ScResId( FT_DBAREA ) ), \
aStrUndefined ( ScResId( SCSTR_UNDEFINED ) ), \
aStrNoName ( ScGlobal::GetRscString(STR_DB_NONAME) ), \
aStrNone ( ScResId( SCSTR_NONE ) ),
//============================================================================
class ScFilterDlg : public ScAnyRefDlg
{
public:
ScFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
const SfxItemSet& rArgSet );
~ScFilterDlg();
virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
virtual sal_Bool IsRefInputMode() const;
virtual void SetActive();
virtual sal_Bool Close();
void SliderMoved();
sal_uInt16 GetSliderPos();
void RefreshEditRow( sal_uInt16 nOffset );
private:
FixedLine aFlCriteria;
//----------------------------
ListBox aLbConnect1;
ListBox aLbField1;
ListBox aLbCond1;
ComboBox aEdVal1;
//----------------------------
ListBox aLbConnect2;
ListBox aLbField2;
ListBox aLbCond2;
ComboBox aEdVal2;
//----------------------------
ListBox aLbConnect3;
ListBox aLbField3;
ListBox aLbCond3;
ComboBox aEdVal3;
//----------------------------
ListBox aLbConnect4;
ListBox aLbField4;
ListBox aLbCond4;
ComboBox aEdVal4;
//----------------------------
FixedText aFtConnect;
FixedText aFtField;
FixedText aFtCond;
FixedText aFtVal;
FixedLine aFlSeparator;
ScrollBar aScrollBar;
FixedLine aFlOptions;
MoreButton aBtnMore;
HelpButton aBtnHelp;
OKButton aBtnOk;
CancelButton aBtnCancel;
_COMMON_FILTER_RSCOBJS
const String aStrEmpty;
const String aStrNotEmpty;
const String aStrRow;
const String aStrColumn;
ScFilterOptionsMgr* pOptionsMgr;
const sal_uInt16 nWhichQuery;
const ScQueryParam theQueryData;
ScQueryItem* pOutItem;
ScViewData* pViewData;
ScDocument* pDoc;
SCTAB nSrcTab;
ComboBox* aValueEdArr[4];
ListBox* aFieldLbArr[4];
ListBox* aCondLbArr[4];
ListBox* aConnLbArr[4];
bool mbHasDates[MAXQUERY];
sal_Bool bRefreshExceptQuery[MAXQUERY];
sal_uInt16 nFieldCount;
sal_Bool bRefInputMode;
TypedScStrCollection* pEntryLists[MAXCOLCOUNT];
sal_uInt16 nHeaderPos[MAXCOLCOUNT];
// Hack: RefInput-Kontrolle
Timer* pTimer;
#ifdef _FILTDLG_CXX
private:
void Init ( const SfxItemSet& rArgSet );
void FillFieldLists ();
void FillAreaList ();
void UpdateValueList ( sal_uInt16 nList );
void UpdateHdrInValueList( sal_uInt16 nList );
void ClearValueList ( sal_uInt16 nList );
sal_uInt16 GetFieldSelPos ( SCCOL nField );
ScQueryItem* GetOutputItem ();
// Handler:
DECL_LINK( LbSelectHdl, ListBox* );
DECL_LINK( ValModifyHdl, ComboBox* );
DECL_LINK( CheckBoxHdl, CheckBox* );
DECL_LINK( EndDlgHdl, Button* );
DECL_LINK( MoreClickHdl, MoreButton* );
DECL_LINK( ScrollHdl, ScrollBar* );
// Hack: RefInput-Kontrolle
DECL_LINK( TimeOutHdl, Timer* );
#endif
};
//============================================================================
class ScSpecialFilterDlg : public ScAnyRefDlg
{
public:
ScSpecialFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, Window* pParent,
const SfxItemSet& rArgSet );
~ScSpecialFilterDlg();
virtual void SetReference( const ScRange& rRef, ScDocument* pDoc );
virtual sal_Bool IsRefInputMode() const;
virtual void SetActive();
virtual sal_Bool Close();
private:
FixedText aFtFilterArea;
ListBox aLbFilterArea;
formula::RefEdit aEdFilterArea;
formula::RefButton aRbFilterArea;
FixedLine aFlOptions;
_COMMON_FILTER_RSCOBJS
OKButton aBtnOk;
CancelButton aBtnCancel;
HelpButton aBtnHelp;
MoreButton aBtnMore;
ScFilterOptionsMgr* pOptionsMgr;
const sal_uInt16 nWhichQuery;
const ScQueryParam theQueryData;
ScQueryItem* pOutItem;
ScViewData* pViewData;
ScDocument* pDoc;
formula::RefEdit* pRefInputEdit;
sal_Bool bRefInputMode;
// Hack: RefInput-Kontrolle
Timer* pTimer;
#ifdef _SFILTDLG_CXX
private:
void Init( const SfxItemSet& rArgSet );
ScQueryItem* GetOutputItem( const ScQueryParam& rParam,
const ScRange& rSource );
// Handler
DECL_LINK( FilterAreaSelHdl, ListBox* );
DECL_LINK( FilterAreaModHdl, formula::RefEdit* );
DECL_LINK( EndDlgHdl, Button* );
DECL_LINK( ScrollHdl, ScrollBar* );
// Hack: RefInput-Kontrolle
DECL_LINK( TimeOutHdl, Timer* );
#endif
};
#endif // SC_FILTDLG_HXX