Coverage Report

Created: 2025-11-16 09:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/include/vcl/quickselectionengine.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
 * 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_VCL_QUICKSELECTIONENGINE_HXX
21
#define INCLUDED_VCL_QUICKSELECTIONENGINE_HXX
22
23
#include <rtl/ustring.hxx>
24
#include <vcl/dllapi.h>
25
#include <memory>
26
27
class KeyEvent;
28
29
30
namespace vcl
31
{
32
33
34
    typedef const void* StringEntryIdentifier;
35
36
37
    //= ISearchableStringList
38
39
    // TODO: consolidate this with vcl::IMnemonicEntryList
40
    class SAL_NO_VTABLE VCL_DLLPUBLIC ISearchableStringList
41
    {
42
    public:
43
        /** returns the current entry in the list of searchable strings.
44
45
            Search operations will start with this entry.
46
        */
47
        virtual StringEntryIdentifier   CurrentEntry( OUString& _out_entryText ) const = 0;
48
49
        /** returns the next entry in the list.
50
51
            The implementation is expected to wrap around. That is, if the given entry denotes the last
52
            entry in the list, then NextEntry should return the first entry.
53
        */
54
        virtual StringEntryIdentifier   NextEntry( StringEntryIdentifier _currentEntry, OUString& _out_entryText ) const = 0;
55
56
        /** selects a given entry
57
        */
58
        virtual void                    SelectEntry( StringEntryIdentifier _entry ) = 0;
59
60
    protected:
61
0
        ~ISearchableStringList() {}
62
    };
63
64
65
    //= QuickSelectionEngine
66
67
    struct QuickSelectionEngine_Data;
68
    class VCL_DLLPUBLIC QuickSelectionEngine
69
    {
70
    public:
71
        QuickSelectionEngine( ISearchableStringList& _entryList );
72
        ~QuickSelectionEngine();
73
74
        bool    HandleKeyEvent( const KeyEvent& _rKEvt );
75
        void    Reset();
76
77
    private:
78
        ::std::unique_ptr< QuickSelectionEngine_Data >    m_pData;
79
80
    private:
81
        QuickSelectionEngine( const QuickSelectionEngine& ) = delete;
82
        QuickSelectionEngine& operator=( const QuickSelectionEngine& ) = delete;
83
    };
84
85
86
} // namespace vcl
87
88
89
#endif // INCLUDED_VCL_QUICKSELECTIONENGINE_HXX
90
91
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */