/* -*- 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/. */ #pragma once #include #include "condformatdlgitem.hxx" #include "condformatdlgentry.hxx" #include "anyrefdg.hxx" #include #define DLG_RET_ADD 8 #define DLG_RET_EDIT 16 class ScDocument; class ScConditionalFormat; class ScViewData; class ScCondFormatDlg; class ScCondFormatList { private: std::unique_ptr mxScrollWindow; std::unique_ptr mxGrid; typedef std::vector> EntryContainer; EntryContainer maEntries; bool mbFrozen; bool mbNewEntry; ScDocument* mpDoc; ScAddress maPos; ScRangeList maRanges; ScCondFormatDlg* mpDialogParent; public: ScCondFormatList(ScCondFormatDlg* pParent, std::unique_ptr xWindow, std::unique_ptr xGrid); weld::Container* GetContainer() { return mxGrid.get(); } ~ScCondFormatList(); void init(ScDocument& rDoc, const ScConditionalFormat* pFormat, const ScRangeList& rRanges, const ScAddress& rPos, condformat::dialog::ScCondFormatDialogType eType); void SetRange(const ScRangeList& rRange); std::unique_ptr GetConditionalFormat() const; weld::Window* GetFrameWeld(); void Freeze() { mbFrozen = true; } void Thaw() { mbFrozen = false; } void RecalcAll(); DECL_LINK( AddBtnHdl, weld::Button&, void ); DECL_LINK( RemoveBtnHdl, weld::Button&, void ); DECL_LINK( UpBtnHdl, weld::Button&, void ); DECL_LINK( DownBtnHdl, weld::Button&, void ); DECL_LINK( EntrySelectHdl, ScCondFrmtEntry&, void ); DECL_LINK( TypeListHdl, weld::ComboBox&, void ); DECL_LINK( AfterTypeListHdl, void*, void ); DECL_LINK( ColFormatTypeHdl, weld::ComboBox&, void ); DECL_LINK( AfterColFormatTypeHdl, void*, void ); }; class ScCondFormatDlg : public ScAnyRefDlgController { private: sal_Int32 mnKey; ScAddress maPos; ScViewData* mpViewData; std::shared_ptr mpDlgItem; OUString msBaseTitle; formula::RefEdit* mpLastEdit; std::unique_ptr mxBtnOk; std::unique_ptr mxBtnAdd; std::unique_ptr mxBtnRemove; std::unique_ptr mxBtnUp; std::unique_ptr mxBtnDown; std::unique_ptr mxBtnCancel; std::unique_ptr mxFtRange; std::unique_ptr mxEdRange; std::unique_ptr mxRbRange; std::unique_ptr mxCondFormList; void updateTitle(); DECL_LINK( EdRangeModifyHdl, formula::RefEdit&, void ); protected: virtual void RefInputDone( bool bForced = false ) override; void OkPressed(); void CancelPressed(); public: ScCondFormatDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pWindow, ScViewData* pViewData, const ScCondFormatDlgItem* pDlgItem); virtual ~ScCondFormatDlg() override; std::unique_ptr GetConditionalFormat() const; virtual void SetReference(const ScRange&, ScDocument&) override; virtual bool IsRefInputMode() const override; virtual void SetActive() override; virtual bool IsTableLocked() const override; virtual void Close() override; void InvalidateRefData(); void OnSelectionChange(size_t nIndex, size_t nSize, bool bSelected = true); DECL_LINK( BtnPressedHdl, weld::Button&, void ); DECL_LINK( RangeGetFocusHdl, formula::RefEdit&, void ); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */