From 267c6f2ac71f92999e969232431ba04678e7437e Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 07:54:39 +0200 Subject: Adding upstream version 4:24.2.0. Signed-off-by: Daniel Baumann --- sc/source/ui/inc/dpgroupdlg.hxx | 138 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 sc/source/ui/inc/dpgroupdlg.hxx (limited to 'sc/source/ui/inc/dpgroupdlg.hxx') diff --git a/sc/source/ui/inc/dpgroupdlg.hxx b/sc/source/ui/inc/dpgroupdlg.hxx new file mode 100644 index 0000000000..d3c390f460 --- /dev/null +++ b/sc/source/ui/inc/dpgroupdlg.hxx @@ -0,0 +1,138 @@ +/* -*- 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/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +#pragma once + +#include +#include + +class ScDoubleField; +class SvtCalendarBox; + +class ScDPGroupEditHelper +{ +public: + explicit ScDPGroupEditHelper(weld::RadioButton& rRbAuto, + weld::RadioButton& rRbMan, + weld::Widget& rEdValue); + + bool IsAuto() const; + double GetValue() const; + void SetValue( bool bAuto, double fValue ); + +protected: + ~ScDPGroupEditHelper() {} + +private: + virtual bool ImplGetValue( double& rfValue ) const = 0; + virtual void ImplSetValue( double fValue ) = 0; + + DECL_LINK(ToggleHdl, weld::Toggleable&, void); + +private: + weld::RadioButton& mrRbAuto; + weld::RadioButton& mrRbMan; + weld::Widget& mrEdValue; +}; + +class ScDPNumGroupEditHelper : public ScDPGroupEditHelper +{ +public: + explicit ScDPNumGroupEditHelper(weld::RadioButton& rRbAuto, + weld::RadioButton& rRbMan, + ScDoubleField& rEdValue); + + virtual ~ScDPNumGroupEditHelper() {} +private: + virtual bool ImplGetValue( double& rfValue ) const override; + virtual void ImplSetValue( double fValue ) override; + +private: + ScDoubleField& mrEdValue; +}; + +class ScDPDateGroupEditHelper : public ScDPGroupEditHelper +{ +public: + explicit ScDPDateGroupEditHelper(weld::RadioButton& rRbAuto, + weld::RadioButton& rRbMan, + SvtCalendarBox& rEdValue, + const Date& rNullDate); + + virtual ~ScDPDateGroupEditHelper() {} + +private: + virtual bool ImplGetValue( double& rfValue ) const override; + virtual void ImplSetValue( double fValue ) override; + +private: + SvtCalendarBox& mrEdValue; + Date maNullDate; +}; + +class ScDPNumGroupDlg : public weld::GenericDialogController +{ +public: + explicit ScDPNumGroupDlg(weld::Window* pParent, const ScDPNumGroupInfo& rInfo); + virtual ~ScDPNumGroupDlg() override; + ScDPNumGroupInfo GetGroupInfo() const; + +private: + std::unique_ptr mxRbAutoStart; + std::unique_ptr mxRbManStart; + std::unique_ptr mxEdStart; + std::unique_ptr mxRbAutoEnd; + std::unique_ptr mxRbManEnd; + std::unique_ptr mxEdEnd; + std::unique_ptr mxEdBy; + ScDPNumGroupEditHelper maStartHelper; + ScDPNumGroupEditHelper maEndHelper; +}; + +class ScDPDateGroupDlg : public weld::GenericDialogController +{ +public: + explicit ScDPDateGroupDlg(weld::Window* pParent, const ScDPNumGroupInfo& rInfo, + sal_Int32 nDatePart, const Date& rNullDate); + virtual ~ScDPDateGroupDlg() override; + ScDPNumGroupInfo GetGroupInfo() const; + sal_Int32 GetDatePart() const; + +private: + DECL_LINK(ToggleHdl, weld::Toggleable&, void); + DECL_LINK(CheckHdl, const weld::TreeView::iter_col&, void); + + void Check(); +private: + std::unique_ptr mxRbAutoStart; + std::unique_ptr mxRbManStart; + std::unique_ptr mxEdStart; + std::unique_ptr mxRbAutoEnd; + std::unique_ptr mxRbManEnd; + std::unique_ptr mxEdEnd; + std::unique_ptr mxRbNumDays; + std::unique_ptr mxRbUnits; + std::unique_ptr mxEdNumDays; + std::unique_ptr mxLbUnits; + std::unique_ptr mxBtnOk; + ScDPDateGroupEditHelper maStartHelper; + ScDPDateGroupEditHelper maEndHelper; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3