Line data Source code
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 : #ifndef INCLUDED_SFX2_INFOBAR_HXX
10 : #define INCLUDED_SFX2_INFOBAR_HXX
11 :
12 : #include <vector>
13 :
14 : #include <vcl/button.hxx>
15 : #include <vcl/fixed.hxx>
16 :
17 : #include <sfx2/dllapi.h>
18 : #include <sfx2/childwin.hxx>
19 :
20 : /** SfxChildWindow for positioning the InfoBar in the view.
21 : */
22 : class SFX2_DLLPUBLIC SfxInfoBarContainerChild : public SfxChildWindow
23 : {
24 : private:
25 : SfxBindings* m_pBindings;
26 :
27 : public:
28 : SfxInfoBarContainerChild( Window* pParent,
29 : sal_uInt16 nId,
30 : SfxBindings* pBindings,
31 : SfxChildWinInfo* pInfo );
32 : virtual ~SfxInfoBarContainerChild();
33 :
34 : SFX_DECL_CHILDWINDOW_WITHID( SfxInfoBarContainerChild );
35 :
36 : void Update( );
37 : };
38 :
39 : /** Class representing a single InfoBar to be added in a SfxInfoBarContainerWindow.
40 : */
41 : class SfxInfoBarWindow : public Window
42 : {
43 : private:
44 : OUString m_sId;
45 : FixedText* m_pMessage;
46 : Button* m_pCloseBtn;
47 : std::vector< PushButton* > m_aActionBtns;
48 :
49 : public:
50 : SfxInfoBarWindow( Window* parent, const OUString& sId,
51 : const OUString& sMessage,
52 : std::vector< PushButton* > aButtons );
53 : virtual ~SfxInfoBarWindow( );
54 :
55 0 : virtual const OUString& getId() const { return m_sId; }
56 : virtual void Paint( const Rectangle& ) SAL_OVERRIDE;
57 : virtual void Resize( ) SAL_OVERRIDE;
58 :
59 : private:
60 : DECL_LINK( CloseHandler, void* );
61 : };
62 :
63 : class SfxInfoBarContainerWindow : public Window
64 : {
65 : private:
66 : SfxInfoBarContainerChild* m_pChildWin;
67 : std::vector< SfxInfoBarWindow* > m_pInfoBars;
68 :
69 : public:
70 : SfxInfoBarContainerWindow( SfxInfoBarContainerChild* pChildWin );
71 : virtual ~SfxInfoBarContainerWindow( );
72 :
73 : void appendInfoBar( const OUString& sId, const OUString& sMessage, std::vector< PushButton* > aButtons );
74 : SfxInfoBarWindow* getInfoBar( const OUString& sId );
75 : void removeInfoBar( SfxInfoBarWindow* pInfoBar );
76 :
77 : virtual void Resize( ) SAL_OVERRIDE;
78 : };
79 :
80 :
81 : #endif
82 :
83 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|