/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * */ #ifndef INCLUDED_SC_SOURCE_UI_INC_STATISTICSTWOVARIABLEDIALOG_HXX #define INCLUDED_SC_SOURCE_UI_INC_STATISTICSTWOVARIABLEDIALOG_HXX #include #include "anyrefdg.hxx" #include "viewdata.hxx" class ScStatisticsTwoVariableDialog : public ScAnyRefDlgController { public: enum GroupedBy { BY_COLUMN, BY_ROW }; ScStatisticsTwoVariableDialog( SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent, ScViewData* pViewData, const OUString& rUIXMLDescription, const OString& rID); virtual ~ScStatisticsTwoVariableDialog() override; virtual void SetReference( const ScRange& rRef, ScDocument& rDoc ) override; virtual void SetActive() override; protected: void CalculateInputAndWriteToOutput(); virtual ScRange ApplyOutput(ScDocShell* pDocShell) = 0; virtual const char* GetUndoNameId() = 0; virtual bool InputRangesValid(); void ValidateDialogInput(); // Widgets std::unique_ptr mxVariable1RangeLabel; std::unique_ptr mxVariable1RangeEdit; std::unique_ptr mxVariable1RangeButton; std::unique_ptr mxVariable2RangeLabel; std::unique_ptr mxVariable2RangeEdit; std::unique_ptr mxVariable2RangeButton; std::unique_ptr mxOutputRangeLabel; std::unique_ptr mxOutputRangeEdit; std::unique_ptr mxOutputRangeButton; // Data ScViewData* mViewData; ScDocument& mDocument; ScRange mVariable1Range; ScRange mVariable2Range; ScAddress::Details const mAddressDetails; ScAddress mOutputAddress; GroupedBy mGroupedBy; private: // Widgets std::unique_ptr mxButtonOk; std::unique_ptr mxGroupByColumnsRadio; std::unique_ptr mxGroupByRowsRadio; formula::RefEdit* mpActiveEdit; ScAddress mCurrentAddress; bool mDialogLostFocus; void Init(); void GetRangeFromSelection(); DECL_LINK( GroupByChanged, weld::ToggleButton&, void ); DECL_LINK( OkClicked, weld::Button&, void ); DECL_LINK( GetEditFocusHandler, formula::RefEdit&, void ); DECL_LINK( GetButtonFocusHandler, formula::RefButton&, void ); DECL_LINK( LoseEditFocusHandler, formula::RefEdit&, void ); DECL_LINK( LoseButtonFocusHandler, formula::RefButton&, void ); DECL_LINK( RefInputModifyHandler, formula::RefEdit&, void ); }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */