From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- sc/source/ui/inc/condformatdlgentry.hxx | 331 ++++++++++++++++++++++++++++++++ 1 file changed, 331 insertions(+) create mode 100644 sc/source/ui/inc/condformatdlgentry.hxx (limited to 'sc/source/ui/inc/condformatdlgentry.hxx') diff --git a/sc/source/ui/inc/condformatdlgentry.hxx b/sc/source/ui/inc/condformatdlgentry.hxx new file mode 100644 index 000000000..6725ef94c --- /dev/null +++ b/sc/source/ui/inc/condformatdlgentry.hxx @@ -0,0 +1,331 @@ +/* -*- 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 +#include +#include +#include + +class ScIconSetFrmtDataEntry; +class ScCondFormatDlg; +class ScCondFormatList; +class ColorListBox; +class ScColorScaleFormat; +class ScDataBarFormat; +class ScIconSetFormat; +struct ScDataBarFormatData; + +namespace condformat::entry { + +enum ScCondFrmtEntryType +{ + CONDITION, + FORMULA, + COLORSCALE2, + COLORSCALE3, + DATABAR, + ICONSET, + DATE +}; + +} + +class ScCondFrmtEntry +{ +protected: + ScCondFormatList* mpParent; + std::unique_ptr mxBuilder; + +private: + //general ui elements + std::unique_ptr mxBorder; + std::unique_ptr mxGrid; + std::unique_ptr mxFtCondNr; + std::unique_ptr mxFtCondition; + + bool mbActive; + OUString const maStrCondition; + Link maClickHdl; + + DECL_LINK( EntrySelectHdl, const MouseEvent&, bool ); + +protected: + std::unique_ptr mxLbType; + + ScDocument* mpDoc; + ScAddress maPos; + + virtual void Select(); + virtual void Deselect(); + + virtual OUString GetExpressionString() = 0; + +public: + ScCondFrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, const ScAddress& rPos); + virtual ~ScCondFrmtEntry(); + + void Show() { mxGrid->show(); } + + void set_grid_top_attach(int nAttach) { mxBorder->set_grid_top_attach(nAttach); } + int get_preferred_height() const { return mxBorder->get_preferred_size().Height(); } + + void SetPos(const ScAddress& rPos) { maPos = rPos; }; + bool IsSelected() const { return mbActive;} + void SetIndex(sal_Int32 nIndex); + + virtual ScFormatEntry* GetEntry() const = 0; + virtual void SetActive() = 0; + virtual void SetInactive() = 0; + + virtual condformat::entry::ScCondFrmtEntryType GetType() = 0; +}; + +class ScConditionFrmtEntry : public ScCondFrmtEntry, public SfxListener +{ + //cond format ui elements + SvxFontPrevWindow maWdPreview; + std::unique_ptr mxLbCondType; + std::unique_ptr mxEdVal1; + std::unique_ptr mxEdVal2; + std::unique_ptr mxFtVal; + std::unique_ptr mxFtStyle; + std::unique_ptr mxLbStyle; + std::unique_ptr mxWdPreviewWin; + std::unique_ptr mxWdPreview; + bool mbIsInStyleCreate; + + static const sal_Int32 NUM_COND_ENTRIES = 24; + // Lookup table from positions in maLbCondType to the condition mode enum + static const ScConditionMode mpEntryToCond[NUM_COND_ENTRIES]; + + ScFormatEntry* createConditionEntry() const; + + virtual OUString GetExpressionString() override; + void Init(ScCondFormatDlg* pDialogParent); + DECL_LINK( StyleSelectHdl, weld::ComboBox&, void ); + DECL_LINK( ConditionTypeSelectHdl, weld::ComboBox&, void ); + DECL_LINK( OnEdChanged, formula::RefEdit&, void ); + + // Searches the lookup table for the entry position, given condition mode + static sal_Int32 ConditionModeToEntryPos( ScConditionMode eMode ); + // Accesses the lookup table for the condition mode, given entry position + static ScConditionMode EntryPosToConditionMode( sal_Int32 aEntryPos ); + // Returns the number of edit fields used for a given condition mode + static sal_Int32 GetNumberEditFields( ScConditionMode eMode ); + +protected: + virtual void Select() override; + virtual void Deselect() override; + +public: + ScConditionFrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, ScCondFormatDlg* pDialogParent, + const ScAddress& rPos, const ScCondFormatEntry* pFormatEntry = nullptr); + virtual ~ScConditionFrmtEntry() override; + + virtual ScFormatEntry* GetEntry() const override; + virtual void SetActive() override; + virtual void SetInactive() override; + + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; + + virtual condformat::entry::ScCondFrmtEntryType GetType() override { return condformat::entry::CONDITION; } +}; + +class ScFormulaFrmtEntry : public ScCondFrmtEntry +{ + SvxFontPrevWindow maWdPreview; + std::unique_ptr mxFtStyle; + std::unique_ptr mxLbStyle; + std::unique_ptr mxWdPreviewWin; + std::unique_ptr mxWdPreview; + std::unique_ptr mxEdFormula; + + ScFormatEntry* createFormulaEntry() const; + virtual OUString GetExpressionString() override; + void Init(ScCondFormatDlg* pDialogParent); + + DECL_LINK(StyleSelectHdl, weld::ComboBox&, void); + +public: + ScFormulaFrmtEntry(ScCondFormatList* pParent, ScDocument* PDoc, ScCondFormatDlg* pDialogParent, const ScAddress& rPos, const ScCondFormatEntry* pFormatEntry = nullptr); + virtual ~ScFormulaFrmtEntry() override; + + virtual ScFormatEntry* GetEntry() const override; + virtual void SetActive() override; + virtual void SetInactive() override; + virtual condformat::entry::ScCondFrmtEntryType GetType() override { return condformat::entry::FORMULA; } +}; + +class ScColorScale2FrmtEntry : public ScCondFrmtEntry +{ + + //color format ui elements + std::unique_ptr mxLbColorFormat; + + //color scale ui elements + std::unique_ptr mxLbEntryTypeMin; + std::unique_ptr mxLbEntryTypeMax; + + std::unique_ptr mxEdMin; + std::unique_ptr mxEdMax; + + std::unique_ptr mxLbColMin; + std::unique_ptr mxLbColMax; + + std::unique_ptr mxFtMin; + std::unique_ptr mxFtMax; + + ScFormatEntry* createColorscaleEntry() const; + + virtual OUString GetExpressionString() override; + void Init(); + + DECL_LINK( EntryTypeHdl, weld::ComboBox&, void ); +public: + ScColorScale2FrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat = nullptr); + virtual ~ScColorScale2FrmtEntry() override; + virtual ScFormatEntry* GetEntry() const override; + virtual void SetActive() override; + virtual void SetInactive() override; + virtual condformat::entry::ScCondFrmtEntryType GetType() override { return condformat::entry::COLORSCALE2; } +}; + +class ScColorScale3FrmtEntry : public ScCondFrmtEntry +{ + + //color format ui elements + std::unique_ptr mxLbColorFormat; + + //color scale ui elements + std::unique_ptr mxLbEntryTypeMin; + std::unique_ptr mxLbEntryTypeMiddle; + std::unique_ptr mxLbEntryTypeMax; + + std::unique_ptr mxEdMin; + std::unique_ptr mxEdMiddle; + std::unique_ptr mxEdMax; + + std::unique_ptr mxLbColMin; + std::unique_ptr mxLbColMiddle; + std::unique_ptr mxLbColMax; + + std::unique_ptr mxFtMin; + std::unique_ptr mxFtMax; + + ScFormatEntry* createColorscaleEntry() const; + + virtual OUString GetExpressionString() override; + void Init(); + + DECL_LINK( EntryTypeHdl, weld::ComboBox&, void ); +public: + ScColorScale3FrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScColorScaleFormat* pFormat = nullptr); + virtual ~ScColorScale3FrmtEntry() override; + virtual ScFormatEntry* GetEntry() const override; + virtual void SetActive() override; + virtual void SetInactive() override; + virtual condformat::entry::ScCondFrmtEntryType GetType() override { return condformat::entry::COLORSCALE3; } +}; + +class ScDataBarFrmtEntry : public ScCondFrmtEntry +{ + //color format ui elements + std::unique_ptr mxLbColorFormat; + + //data bar ui elements + std::unique_ptr mxLbDataBarMinType; + std::unique_ptr mxLbDataBarMaxType; + std::unique_ptr mxEdDataBarMin; + std::unique_ptr mxEdDataBarMax; + std::unique_ptr mxBtOptions; + + std::unique_ptr mxFtMin; + std::unique_ptr mxFtMax; + + std::unique_ptr mpDataBarData; + + ScFormatEntry* createDatabarEntry() const; + + virtual OUString GetExpressionString() override; + void Init(); + + DECL_LINK( OptionBtnHdl, weld::Button&, void ); + DECL_LINK( DataBarTypeSelectHdl, weld::ComboBox&, void ); +public: + ScDataBarFrmtEntry(ScCondFormatList* pParemt, ScDocument* pDoc, const ScAddress& rPos, const ScDataBarFormat* pFormat = nullptr); + virtual ~ScDataBarFrmtEntry() override; + virtual ScFormatEntry* GetEntry() const override; + virtual void SetActive() override; + virtual void SetInactive() override; + + virtual condformat::entry::ScCondFrmtEntryType GetType() override { return condformat::entry::DATABAR; } +}; + +class ScDateFrmtEntry : public ScCondFrmtEntry, public SfxListener +{ +public: + ScDateFrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, const ScCondDateFormatEntry* pFormat = nullptr); + virtual ~ScDateFrmtEntry() override; + virtual ScFormatEntry* GetEntry() const override; + virtual void SetActive() override; + virtual void SetInactive() override; + virtual condformat::entry::ScCondFrmtEntryType GetType() override { return condformat::entry::DATE; } + + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; + +protected: + virtual OUString GetExpressionString() override; + +private: + void Init(); + + DECL_LINK( StyleSelectHdl, weld::ComboBox&, void ); + + SvxFontPrevWindow maWdPreview; + std::unique_ptr mxLbDateEntry; + std::unique_ptr mxFtStyle; + std::unique_ptr mxLbStyle; + std::unique_ptr mxWdPreviewWin; + std::unique_ptr mxWdPreview; + + bool mbIsInStyleCreate; +}; + +class ScIconSetFrmtEntry : public ScCondFrmtEntry +{ + //color format ui elements + std::unique_ptr mxLbColorFormat; + + // icon set ui elements + std::unique_ptr mxLbIconSetType; + + std::unique_ptr mxIconParent; + + typedef std::vector> ScIconSetFrmtDataEntriesType; + ScIconSetFrmtDataEntriesType maEntries; + + virtual OUString GetExpressionString() override; + + void Init(); + + DECL_LINK(IconSetTypeHdl, weld::ComboBox&, void); + +public: + ScIconSetFrmtEntry(ScCondFormatList* pParent, ScDocument* pDoc, const ScAddress& rPos, const ScIconSetFormat* pFormat = nullptr); + virtual ~ScIconSetFrmtEntry() override; + virtual ScFormatEntry* GetEntry() const override; + virtual void SetActive() override; + virtual void SetInactive() override; + virtual condformat::entry::ScCondFrmtEntryType GetType() override { return condformat::entry::ICONSET; } +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3