/* -*- 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 . */ #ifndef INCLUDED_EDITENG_FLDITEM_HXX #define INCLUDED_EDITENG_FLDITEM_HXX #include #include #include #include #include #include namespace com::sun::star::text { class XTextContent; } class SvNumberFormatter; class MetaAction; // class SvxFieldItem --------------------------------------------------- class EDITENG_DLLPUBLIC SvxFieldData { public: static SvxFieldData* Create(const css::uno::Reference& xContent); static constexpr auto CLASS_ID = css::text::textfield::Type::UNSPECIFIED; virtual sal_Int32 GetClassId() const { return CLASS_ID; } SvxFieldData(); virtual ~SvxFieldData(); SvxFieldData(SvxFieldData const &) = default; SvxFieldData(SvxFieldData &&) = default; SvxFieldData & operator =(SvxFieldData const &) = default; SvxFieldData & operator =(SvxFieldData &&) = default; virtual std::unique_ptr Clone() const; virtual bool operator==( const SvxFieldData& ) const; virtual MetaAction* createBeginComment() const; static MetaAction* createEndComment(); }; /** * This item stores a field (SvxFieldData). The field is controlled by or * belongs to the item. The field itself is determined by a derivation from * SvxFieldData (RTTI) */ class EDITENG_DLLPUBLIC SvxFieldItem final : public SfxPoolItem { std::unique_ptr mpField; public: SvxFieldItem( std::unique_ptr pField, const sal_uInt16 nId ); SvxFieldItem( const SvxFieldData& rField, const sal_uInt16 nId ); SvxFieldItem( const SvxFieldItem& rItem ); virtual ~SvxFieldItem() override; virtual bool operator==( const SfxPoolItem& ) const override; virtual SvxFieldItem* Clone( SfxItemPool *pPool = nullptr ) const override; const SvxFieldData* GetField() const { return mpField.get(); } }; // The following are the derivatives of SvxFieldData ... enum class SvxDateType { Fix, Var }; enum class SvxDateFormat { AppDefault = 0, // Set as in App System, // Set as in System StdSmall, StdBig, A, // 13.02.96 B, // 13.02.1996 C, // 13.Feb 1996 D, // 13.February 1996 E, // Tue, 13.February 1996 F // Tuesday, 13.February 1996 }; class EDITENG_DLLPUBLIC SvxDateField final : public SvxFieldData { sal_Int32 nFixDate; SvxDateType eType; SvxDateFormat eFormat; public: static constexpr auto CLASS_ID = css::text::textfield::Type::DATE; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxDateField(); explicit SvxDateField( const Date& rDate, SvxDateType eType, SvxDateFormat eFormat = SvxDateFormat::StdSmall ); sal_Int32 GetFixDate() const { return nFixDate; } void SetFixDate( const Date& rDate ) { nFixDate = rDate.GetDate(); } SvxDateType GetType() const { return eType; } void SetType( SvxDateType eTp ) { eType = eTp; } SvxDateFormat GetFormat() const { return eFormat; } void SetFormat( SvxDateFormat eFmt ) { eFormat = eFmt; } // If eLanguage==LANGUAGE_DONTKNOW the language/country // used in number formatter initialization is taken. OUString GetFormatted( SvNumberFormatter& rFormatter, LanguageType eLanguage ) const; static OUString GetFormatted( Date const & rDate, SvxDateFormat eFormat, SvNumberFormatter& rFormatter, LanguageType eLanguage ); virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; virtual MetaAction* createBeginComment() const override; }; enum class SvxURLFormat { AppDefault = 0, // Set as in App Url, // Represent URL Repr // Constitute representation }; class EDITENG_DLLPUBLIC SvxURLField final : public SvxFieldData { private: SvxURLFormat eFormat; OUString aURL; // URL-Address OUString aRepresentation; // What is shown OUString aTargetFrame; // In what Frame public: static constexpr auto CLASS_ID = css::text::textfield::Type::URL; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxURLField(); SvxURLField( OUString aURL, OUString aRepres, SvxURLFormat eFmt = SvxURLFormat::Url ); const OUString& GetURL() const { return aURL; } void SetURL( const OUString& rURL ) { aURL = rURL; } const OUString& GetRepresentation() const { return aRepresentation; } void SetRepresentation( const OUString& rRep ) { aRepresentation= rRep; } const OUString& GetTargetFrame() const { return aTargetFrame; } void SetTargetFrame( const OUString& rFrm ) { aTargetFrame = rFrm; } SvxURLFormat GetFormat() const { return eFormat; } void SetFormat( SvxURLFormat eFmt ) { eFormat = eFmt; } virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; virtual MetaAction* createBeginComment() const override; }; class EDITENG_DLLPUBLIC SvxPageField final: public SvxFieldData { public: virtual sal_Int32 GetClassId() const override { return css::text::textfield::Type::PAGE; } SvxPageField(); virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; virtual MetaAction* createBeginComment() const override; }; class EDITENG_DLLPUBLIC SvxPageTitleField final: public SvxFieldData { public: static constexpr auto CLASS_ID = css::text::textfield::Type::PAGE_NAME; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxPageTitleField(); virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; virtual MetaAction* createBeginComment() const override; }; class EDITENG_DLLPUBLIC SvxPagesField final: public SvxFieldData { public: static constexpr auto CLASS_ID = css::text::textfield::Type::PAGES; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxPagesField(); virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; }; class EDITENG_DLLPUBLIC SvxTimeField final: public SvxFieldData { public: static constexpr auto CLASS_ID = css::text::textfield::Type::TIME; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxTimeField(); virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; virtual MetaAction* createBeginComment() const override; }; class EDITENG_DLLPUBLIC SvxFileField final: public SvxFieldData { public: static constexpr auto CLASS_ID = css::text::textfield::Type::DOCINFO_TITLE; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxFileField(); virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; }; class EDITENG_DLLPUBLIC SvxTableField final: public SvxFieldData { int mnTab; public: static constexpr auto CLASS_ID = css::text::textfield::Type::TABLE; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxTableField(); explicit SvxTableField(int nTab); void SetTab(int nTab); int GetTab() const { return mnTab;} virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; }; enum class SvxTimeType { Fix, Var }; enum class SvxTimeFormat { AppDefault = 0, // Set as in App System, // Set as in System Standard, HH24_MM, // 13:49 HH24_MM_SS, // 13:49:38 HH24_MM_SS_00, // 13:49:38.78 HH12_MM, // 01:49 HH12_MM_SS, // 01:49:38 HH12_MM_SS_00, // 01:49:38.78 HH12_MM_AMPM, // 01:49 PM HH12_MM_SS_AMPM, // 01:49:38 PM HH12_MM_SS_00_AMPM // 01:49:38.78 PM }; class EDITENG_DLLPUBLIC SvxExtTimeField final : public SvxFieldData { private: sal_Int64 m_nFixTime; SvxTimeType eType; SvxTimeFormat eFormat; public: static constexpr auto CLASS_ID = css::text::textfield::Type::EXTENDED_TIME; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxExtTimeField(); explicit SvxExtTimeField( const tools::Time& rTime, SvxTimeType eType, SvxTimeFormat eFormat = SvxTimeFormat::Standard ); sal_Int64 GetFixTime() const { return m_nFixTime; } void SetFixTime( const tools::Time& rTime ) { m_nFixTime = rTime.GetTime(); } SvxTimeType GetType() const { return eType; } void SetType( SvxTimeType eTp ) { eType = eTp; } SvxTimeFormat GetFormat() const { return eFormat; } void SetFormat( SvxTimeFormat eFmt ) { eFormat = eFmt; } // If eLanguage==LANGUAGE_DONTKNOW the language/country // used in number formatter initialization is taken. OUString GetFormatted( SvNumberFormatter& rFormatter, LanguageType eLanguage ) const; static OUString GetFormatted( tools::Time const & rTime, SvxTimeFormat eFormat, SvNumberFormatter& rFormatter, LanguageType eLanguage ); virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; virtual MetaAction* createBeginComment() const override; }; enum class SvxFileType { Fix, Var }; enum class SvxFileFormat { NameAndExt = 0, // File name with Extension PathFull, // full path PathOnly, // only path NameOnly // only file name }; class EDITENG_DLLPUBLIC SvxExtFileField final : public SvxFieldData { private: OUString aFile; SvxFileType eType; SvxFileFormat eFormat; public: static constexpr auto CLASS_ID = css::text::textfield::Type::EXTENDED_FILE; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxExtFileField(); explicit SvxExtFileField( const OUString& rString, SvxFileType eType = SvxFileType::Var, SvxFileFormat eFormat = SvxFileFormat::PathFull ); const OUString& GetFile() const { return aFile; } void SetFile( const OUString& rString ) { aFile = rString; } SvxFileType GetType() const { return eType; } void SetType( SvxFileType eTp ) { eType = eTp; } SvxFileFormat GetFormat() const { return eFormat; } void SetFormat( SvxFileFormat eFmt ) { eFormat = eFmt; } OUString GetFormatted() const; virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; }; enum class SvxAuthorType { Fix, Var }; enum class SvxAuthorFormat { FullName, // full name LastName, // Only Last name FirstName, // Only first name ShortName // Initials }; class EDITENG_DLLPUBLIC SvxAuthorField final : public SvxFieldData { private: OUString aName; OUString aFirstName; OUString aShortName; SvxAuthorType eType; SvxAuthorFormat eFormat; public: static constexpr auto CLASS_ID = css::text::textfield::Type::AUTHOR; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxAuthorField( const OUString& rFirstName, const OUString& rLastName, const OUString& rShortName, SvxAuthorType eType = SvxAuthorType::Var, SvxAuthorFormat eFormat = SvxAuthorFormat::FullName ); SvxAuthorType GetType() const { return eType; } void SetType( SvxAuthorType eTp ) { eType = eTp; } SvxAuthorFormat GetFormat() const { return eFormat; } void SetFormat( SvxAuthorFormat eFmt ) { eFormat = eFmt; } OUString GetFormatted() const; virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; }; /** this field is used as a placeholder for a header&footer in impress. The actual value is stored at the page */ class EDITENG_DLLPUBLIC SvxHeaderField final: public SvxFieldData { public: static constexpr auto CLASS_ID = css::text::textfield::Type::PRESENTATION_HEADER; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxHeaderField(); virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; }; /** this field is used as a placeholder for a header&footer in impress. The actual value is stored at the page */ class EDITENG_DLLPUBLIC SvxFooterField final: public SvxFieldData { public: static constexpr auto CLASS_ID = css::text::textfield::Type::PRESENTATION_FOOTER; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxFooterField(); virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; }; /** this field is used as a placeholder for a header&footer in impress. The actual value is stored at the page */ class EDITENG_DLLPUBLIC SvxDateTimeField final: public SvxFieldData { public: static constexpr auto CLASS_ID = css::text::textfield::Type::PRESENTATION_DATE_TIME; virtual sal_Int32 GetClassId() const override { return CLASS_ID; } SvxDateTimeField(); static OUString GetFormatted( Date const & rDate, tools::Time const & rTime, SvxDateFormat eDateFormat, SvxTimeFormat eTimeFormat, SvNumberFormatter& rFormatter, LanguageType eLanguage ); virtual std::unique_ptr Clone() const override; virtual bool operator==( const SvxFieldData& ) const override; }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ e/docx-commentsex LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-07-14clang-tidy modernize-pass-by-value in svtoolsNoel Grandin
Change-Id: I60e7373c924a479fed72eb4f0538006e3e422004 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137019 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-11-21tdf#123936 Formatting files in module include with clang-formatPhilipp Hofer
Change-Id: I0507dd797cd5a35e0ae14f4b69ee4e172d08a71a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105681 Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> Tested-by: Jenkins
2020-11-19tdf#124176 use pragma once instead of include guardsRoman Kuznetsov
in /core/include/svtools/ Change-Id: Ic8614f77dfde02f4c1fc4cceccd1de4ff5a05f72 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106006 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2019-02-05tdf#42949 Fix IWYU warnings in include/svtools/*Gabor Kelemen
Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Change-Id: I937ed12f2a96943664087ddcdd035f1347e84a57 Reviewed-on: https://gerrit.libreoffice.org/67102 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2016-08-29coverity#1371317 avoid unnecessary copiesCaolán McNamara
and coverity#1371211 Change-Id: I65e277c4af70a86f1513749de4eb116d929e858f Reviewed-on: https://gerrit.libreoffice.org/28448 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2013-11-09fdo#65108 inter-module includes <> include/svtoolsNorbert Thiebaud
Change-Id: I7e004e1e4fbc2141ff421af6be0e8bf5a026b189
2013-10-23fixincludeguards.sh: include/s*Thomas Arnhold
Change-Id: I57fcfd442d2b5815e7c07a9cbd660f3698168dee
2013-04-23execute move of global headersBjoern Michaelsen
see https://gerrit.libreoffice.org/#/c/3367/ and Change-Id: I00c96fa77d04b33a6f8c8cd3490dfcd9bdc9e84a for details Change-Id: I199a75bc4042af20817265d5ef85b1134a96ff5a