Coverage Report

Created: 2025-12-08 09:28

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/sc/source/ui/inc/namemgrtable.hxx
Line
Count
Source
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
10
#pragma once
11
12
#include <vcl/weld.hxx>
13
14
#include <address.hxx>
15
16
#include <memory>
17
#include <vector>
18
#include <map>
19
20
class ScRangeName;
21
class ScRangeData;
22
23
struct ScRangeNameLine
24
{
25
    OUString aName;
26
    OUString aExpression;
27
    OUString aScope;
28
};
29
30
class SC_DLLPUBLIC ScRangeManagerTable
31
{
32
private:
33
    std::unique_ptr<weld::TreeView> m_xTreeView;
34
35
    OUString maGlobalString;
36
37
    // should be const because we should not modify it here
38
    const std::map<OUString, ScRangeName>& m_RangeMap;
39
    // for performance, save which entries already have the formula entry
40
    // otherwise opening the dialog with a lot of range names is extremely slow because
41
    // we would calculate all formula strings during opening
42
    std::map<OUString, bool> maCalculatedFormulaEntries;
43
    const ScAddress maPos;
44
45
    int m_nId;
46
47
    bool mbNeedUpdate;
48
49
    void GetLine(ScRangeNameLine& aLine, const weld::TreeIter& rEntry);
50
    void Init();
51
    const ScRangeData* findRangeData(const ScRangeNameLine& rLine);
52
53
    DECL_DLLPRIVATE_LINK(SizeAllocHdl, const Size&, void);
54
    DECL_DLLPRIVATE_LINK(VisRowsScrolledHdl, weld::TreeView&, void);
55
56
public:
57
    ScRangeManagerTable(std::unique_ptr<weld::TreeView>,
58
        const std::map<OUString, ScRangeName>& rTabRangeNames,
59
        const ScAddress& rPos);
60
61
    void CheckForFormulaString();
62
63
0
    int n_children() const { return m_xTreeView->n_children(); }
64
    void connect_changed(const Link<weld::TreeView&, void>& rLink)
65
0
    {
66
0
        m_xTreeView->connect_selection_changed(rLink);
67
0
    }
68
0
    void set_cursor(int nPos) { m_xTreeView->set_cursor(nPos); }
69
70
    void addEntry(const ScRangeNameLine& rLine, bool bSetCurEntry);
71
    void DeleteSelectedEntries();
72
    void SetEntry( const ScRangeNameLine& rLine );
73
74
    void GetCurrentLine(ScRangeNameLine& rLine);
75
    bool IsMultiSelection() const;
76
    std::vector<ScRangeNameLine> GetSelectedEntries();
77
78
    void BlockUpdate()
79
0
    {
80
0
        mbNeedUpdate = false;
81
0
    }
82
83
    bool UpdatesBlocked() const
84
0
    {
85
0
        return !mbNeedUpdate;
86
0
    }
87
88
    void UnblockUpdate()
89
0
    {
90
0
        mbNeedUpdate = true;
91
0
    }
92
};
93
94
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */