1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  *   Licensed to the Apache Software Foundation (ASF) under one or more
12  *   contributor license agreements. See the NOTICE file distributed
13  *   with this work for additional information regarding copyright
14  *   ownership. The ASF licenses this file to you under the Apache
15  *   License, Version 2.0 (the "License"); you may not use this file
16  *   except in compliance with the License. You may obtain a copy of
17  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #ifndef INCLUDED_FORMS_SOURCE_RICHTEXT_RICHTEXTUNOWRAPPER_HXX
21 #define INCLUDED_FORMS_SOURCE_RICHTEXT_RICHTEXTUNOWRAPPER_HXX
22 
23 #include <memory>
24 #include <editeng/unotext.hxx>
25 #include <editeng/unoedsrc.hxx>
26 
27 
28 namespace frm
29 {
30 
31     class IEngineTextChangeListener
32     {
33     public:
34         virtual void potentialTextChange( ) = 0;
35 
36     protected:
37         ~IEngineTextChangeListener() {}
38     };
39 
40     class ORichTextUnoWrapper : public SvxUnoText
41     {
42     public:
43         ORichTextUnoWrapper( EditEngine& _rEngine, IEngineTextChangeListener* _pTextChangeListener );
44 
45     protected:
46         virtual ~ORichTextUnoWrapper() throw() override;
47 
48 
49     private:
50         ORichTextUnoWrapper( const ORichTextUnoWrapper& ) = delete;
51         ORichTextUnoWrapper& operator=( const ORichTextUnoWrapper& ) = delete;
52     };
53 
54     class RichTextEditSource : public SvxEditSource
55     {
56     private:
57         EditEngine&                 m_rEngine;
58         std::unique_ptr<SvxTextForwarder>
59                                     m_pTextForwarder;
60         IEngineTextChangeListener*  m_pTextChangeListener;
61 
62     public:
63         RichTextEditSource( EditEngine& _rEngine, IEngineTextChangeListener* _pTextChangeListener );
64 
65         // SvxEditSource
66         virtual std::unique_ptr<SvxEditSource> Clone() const override;
67         virtual SvxTextForwarder*   GetTextForwarder() override;
68         virtual void                UpdateData() override;
69 
70     protected:
71         virtual ~RichTextEditSource() override;
72 
73     private:
74         RichTextEditSource( const RichTextEditSource& _rSource ) = delete;
75         RichTextEditSource& operator=( const RichTextEditSource& ) = delete;
76     };
77 
78 
79 } // namespace frm
80 
81 
82 #endif // INCLUDED_FORMS_SOURCE_RICHTEXT_RICHTEXTUNOWRAPPER_HXX
83 
84 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
85