blob: 9e089be829c3c53681a8d928d48142733556bbc9 [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_PVFUNDLG_HXX
#define SC_PVFUNDLG_HXX
#include <com/sun/star/sheet/DataPilotFieldReference.hpp>
#include <com/sun/star/sheet/DataPilotFieldSortInfo.hpp>
#include <vcl/fixed.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/dialog.hxx>
#include <vcl/button.hxx>
#include <vcl/morebtn.hxx>
#include <vcl/field.hxx>
#include <svtools/stdctrl.hxx>
#include <svx/checklbx.hxx>
#include <sfx2/itemconnect.hxx>
#include "pivot.hxx"
#include <hash_map>
// ============================================================================
typedef sfx::ListBoxWrapper< sal_Int32 > ScDPListBoxWrapper;
class ScDPObject;
// ============================================================================
class ScDPFunctionListBox : public MultiListBox
{
public:
explicit ScDPFunctionListBox( Window* pParent, const ResId& rResId );
void SetSelection( sal_uInt16 nFuncMask );
sal_uInt16 GetSelection() const;
private:
void FillFunctionNames();
};
// ============================================================================
class ScDPFunctionDlg : public ModalDialog
{
public:
explicit ScDPFunctionDlg( Window* pParent, const ScDPLabelDataVector& rLabelVec,
const ScDPLabelData& rLabelData, const ScPivotFuncData& rFuncData );
sal_uInt16 GetFuncMask() const;
::com::sun::star::sheet::DataPilotFieldReference GetFieldRef() const;
private:
void Init( const ScDPLabelData& rLabelData, const ScPivotFuncData& rFuncData );
DECL_LINK( SelectHdl, ListBox* );
DECL_LINK( DblClickHdl, MultiListBox* );
private:
FixedLine maFlFunc;
ScDPFunctionListBox maLbFunc;
FixedText maFtNameLabel;
FixedInfo maFtName;
FixedLine maFlDisplay;
FixedText maFtType;
ListBox maLbType;
FixedText maFtBaseField;
ListBox maLbBaseField;
FixedText maFtBaseItem;
ListBox maLbBaseItem;
OKButton maBtnOk;
CancelButton maBtnCancel;
HelpButton maBtnHelp;
MoreButton maBtnMore;
ScDPListBoxWrapper maLbTypeWrp; /// Wrapper for direct usage of API constants.
const ScDPLabelDataVector& mrLabelVec; /// Data of all labels.
bool mbEmptyItem; /// true = Empty base item in listbox.
};
// ============================================================================
class ScDPSubtotalDlg : public ModalDialog
{
public:
explicit ScDPSubtotalDlg( Window* pParent, ScDPObject& rDPObj,
const ScDPLabelData& rLabelData, const ScPivotFuncData& rFuncData,
const ScDPNameVec& rDataFields, bool bEnableLayout );
sal_uInt16 GetFuncMask() const;
void FillLabelData( ScDPLabelData& rLabelData ) const;
private:
void Init( const ScDPLabelData& rLabelData, const ScPivotFuncData& rFuncData );
DECL_LINK( DblClickHdl, MultiListBox* );
DECL_LINK( RadioClickHdl, RadioButton* );
DECL_LINK( ClickHdl, PushButton* );
private:
FixedLine maFlSubt;
RadioButton maRbNone;
RadioButton maRbAuto;
RadioButton maRbUser;
ScDPFunctionListBox maLbFunc;
FixedText maFtNameLabel;
FixedInfo maFtName;
CheckBox maCbShowAll;
OKButton maBtnOk;
CancelButton maBtnCancel;
HelpButton maBtnHelp;
PushButton maBtnOptions;
ScDPObject& mrDPObj; /// The DataPilot object (for member names).
const ScDPNameVec& mrDataFields; /// The list of all data field names.
ScDPLabelData maLabelData; /// Cache for sub dialog.
bool mbEnableLayout; /// true = Enable Layout mode controls.
};
// ============================================================================
class ScDPSubtotalOptDlg : public ModalDialog
{
public:
explicit ScDPSubtotalOptDlg( Window* pParent, ScDPObject& rDPObj,
const ScDPLabelData& rLabelData, const ScDPNameVec& rDataFields,
bool bEnableLayout );
void FillLabelData( ScDPLabelData& rLabelData ) const;
private:
void Init( const ScDPNameVec& rDataFields, bool bEnableLayout );
void InitHideListBox();
DECL_LINK( RadioClickHdl, RadioButton* );
DECL_LINK( CheckHdl, CheckBox* );
DECL_LINK( SelectHdl, ListBox* );
private:
FixedLine maFlSortBy;
ListBox maLbSortBy;
RadioButton maRbSortAsc;
RadioButton maRbSortDesc;
RadioButton maRbSortMan;
FixedLine maFlLayout;
FixedText maFtLayout;
ListBox maLbLayout;
CheckBox maCbLayoutEmpty;
FixedLine maFlAutoShow;
CheckBox maCbShow;
NumericField maNfShow;
FixedText maFtShow;
FixedText maFtShowFrom;
ListBox maLbShowFrom;
FixedText maFtShowUsing;
ListBox maLbShowUsing;
FixedLine maFlHide;
SvxCheckListBox maLbHide;
FixedText maFtHierarchy;
ListBox maLbHierarchy;
OKButton maBtnOk;
CancelButton maBtnCancel;
HelpButton maBtnHelp;
ScDPListBoxWrapper maLbLayoutWrp; /// Wrapper for direct usage of API constants.
ScDPListBoxWrapper maLbShowFromWrp; /// Wrapper for direct usage of API constants.
ScDPObject& mrDPObj; /// The DataPilot object (for member names).
ScDPLabelData maLabelData; /// Cache for members data.
};
// ============================================================================
class ScDPShowDetailDlg : public ModalDialog
{
public:
explicit ScDPShowDetailDlg( Window* pParent, ScDPObject& rDPObj, sal_uInt16 nOrient );
virtual short Execute();
/**
* @return String internal name of the selected field. Note that this may
* be different from the name displayed in the dialog if the field
* has a layout name.
*/
String GetDimensionName() const;
private:
DECL_LINK( DblClickHdl, ListBox* );
private:
FixedText maFtDims;
ListBox maLbDims;
OKButton maBtnOk;
CancelButton maBtnCancel;
HelpButton maBtnHelp;
typedef ::std::hash_map<String, long, ScStringHashCode> DimNameIndexMap;
DimNameIndexMap maNameIndexMap;
ScDPObject& mrDPObj;
};
// ============================================================================
#endif