Coverage Report

Created: 2025-11-16 09:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/include/vcl/timer.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_TIMER_HXX
21
#define INCLUDED_VCL_TIMER_HXX
22
23
#include <tools/link.hxx>
24
#include <vcl/task.hxx>
25
26
class VCL_DLLPUBLIC Timer : public Task
27
{
28
    Link<Timer *, void> maInvokeHandler;   ///< Callback Link
29
    sal_uInt64          mnTimeout;
30
    const bool          mbAuto;
31
32
protected:
33
    virtual void SetDeletionFlags() override;
34
    virtual sal_uInt64 UpdateMinPeriod( sal_uInt64 nTimeNow ) const override;
35
36
    Timer( bool bAuto, const char *pDebugName );
37
38
public:
39
    Timer( const char *pDebugName );
40
    Timer( const Timer& rTimer );
41
    virtual ~Timer() override;
42
    Timer& operator=( const Timer& rTimer );
43
44
    /**
45
     * Calls the maInvokeHandler with the parameter this.
46
     */
47
    virtual void    Invoke() override;
48
    /**
49
     * Calls the maInvokeHandler with the parameter.
50
     *
51
     * Convenience Invoke function, mainly used to call with nullptr.
52
     *
53
     * @param arg parameter for the Link::Call function
54
     */
55
    void            Invoke( Timer *arg );
56
6.00M
    void            SetInvokeHandler( const Link<Timer *, void>& rLink ) { maInvokeHandler = rLink; }
57
0
    void            ClearInvokeHandler() { SetInvokeHandler( Link<Timer *, void>() ); }
58
59
    void            SetTimeout( sal_uInt64 nTimeoutMs );
60
14.8k
    sal_uInt64      GetTimeout() const { return mnTimeout; }
61
    virtual void Start(bool bStartTimer = true) override;
62
};
63
64
/// An auto-timer is a multi-shot timer re-emitting itself at
65
/// interval until destroyed or stopped.
66
class VCL_DLLPUBLIC AutoTimer : public Timer
67
{
68
public:
69
    AutoTimer( const char *pDebugName );
70
};
71
72
/// Value suitable as a timeout user input into an EditBox to an expensive update
73
345k
#define EDIT_UPDATEDATA_TIMEOUT     350
74
75
#endif // INCLUDED_VCL_TIMER_HXX
76
77
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */