1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
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"
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
;
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
; }
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
60 void InitButtonData();
65 #endif // INCLUDED_DBACCESS_SOURCE_UI_INC_MARKTREE_HXX
67 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */