Version 5.2.6.1, tag libreoffice-5.2.6.1
[LibreOffice.git] / dbaccess / source / ui / inc / marktree.hxx
blob17ef28b6199cce620b5aa29c97044561e3d93335
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_MARKTREE_HXX
21 #define INCLUDED_DBACCESS_SOURCE_UI_INC_MARKTREE_HXX
23 #include "dbtreelistbox.hxx"
25 #include "svtools/svlbitm.hxx"
27 namespace dbaui
30 // OMarkableTreeListBox
31 /** a tree list box where all entries can be marked (with a checkbox) and
32 unmarked. In addition, inner nodes know a third state which applies
33 if some, but not all of their descendants are marked.
35 class OMarkableTreeListBox : public DBTreeListBox
37 SvLBoxButtonData* m_pCheckButton;
38 Link<void*,void> m_aCheckButtonHandler;
40 public:
41 OMarkableTreeListBox( vcl::Window* pParent, WinBits nWinStyle=0 );
42 virtual ~OMarkableTreeListBox();
43 virtual void dispose() override;
45 virtual void KeyInput( const KeyEvent& rKEvt ) override;
46 virtual void CheckButtonHdl() override;
47 void CheckButtons(); // make the button states consistent (bottom-up)
49 /// the handler given is called whenever the check state of one or more items changed
50 void SetCheckHandler(const Link<void*,void>& _rHdl) { m_aCheckButtonHandler = _rHdl; }
52 protected:
53 virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle& _rRect) override;
54 virtual void checkedButton_noBroadcast(SvTreeListEntry* _pEntry);
56 SvButtonState implDetermineState(SvTreeListEntry* _pEntry);
57 // determines the check state of the given entry, by analyzing the states of all descendants
59 private:
60 void InitButtonData();
63 } // namespace dbaui
65 #endif // INCLUDED_DBACCESS_SOURCE_UI_INC_MARKTREE_HXX
67 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */