File: vcsevent.h

package info (click to toggle)
kdevelop 4%3A24.12.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 71,888 kB
  • sloc: cpp: 290,869; python: 3,626; javascript: 3,518; sh: 1,316; ansic: 703; xml: 401; php: 95; lisp: 66; makefile: 31; sed: 12
file content (114 lines) | stat: -rw-r--r-- 3,472 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*
    SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de>
    SPDX-FileCopyrightText: 2007 Matthew Woehlke <mw_triad@users.sourceforge.net>

    SPDX-License-Identifier: GPL-2.0-or-later
*/

#ifndef KDEVPLATFORM_VCSEVENT_H
#define KDEVPLATFORM_VCSEVENT_H

#include "vcsexport.h"

#include <util/namespacedoperatorbitwiseorworkaroundqtbug.h>

#include <QMetaType>
#include <QSharedDataPointer>

class QString;
class QDateTime;
template <typename T> class QList;

namespace KDevelop
{
class VcsRevision;

/**
 * Small container class that contains information about a history event of a
 * single repository item.
 */
class KDEVPLATFORMVCS_EXPORT VcsItemEvent
{
public:
    /**
     * Class that tells you what happened to a given repository location in a
     * specific revision.
     *
     * Combinations of some of the flags are possible, for example Add|Modified,
     * Copy|Modified or Merge|Modified, or when returned from VcsEvent::actions().
     */
    enum Action
    {
        Added            = 1<<0 /**< Item was added. */,
        Deleted          = 1<<1 /**< Item was deleted. */,
        Modified         = 1<<2 /**< Item was modified, for example by editing. */,
        Copied           = 1<<3 /**< Item was copied. */,
        Merged           = 1<<4 /**< Item had changes merged into it. */,
        ContentsModified = 1<<5 /**< Directory was not changed (only contents changed). */,
        Replaced         = 1<<6 /**< Item was replaced. */
    };
    Q_DECLARE_FLAGS( Actions, Action )

    VcsItemEvent();
    virtual ~VcsItemEvent();
    VcsItemEvent(const VcsItemEvent& );

    QString repositoryLocation() const;
    QString repositoryCopySourceLocation() const; // may be empty
    VcsRevision repositoryCopySourceRevision() const; // may be invalid, even if rCSL is not
    Actions actions() const;

    void setRepositoryLocation( const QString& );
    void setRepositoryCopySourceLocation( const QString& );
    void setRepositoryCopySourceRevision( const KDevelop::VcsRevision& );
    void setActions( Actions );

    VcsItemEvent& operator=( const VcsItemEvent& rhs);

private:
    QSharedDataPointer<class VcsItemEventPrivate> d;
};

Q_DECLARE_OPERATORS_FOR_FLAGS(VcsItemEvent::Actions)

/**
 * Small container class that contains information about a single revision.
 *
 * @note log() only returns information about the specific item that was asked
 * about. When working with a VCS that supports atomic commits (i.e. where a
 * revision might affect more than one item), use change() to retrieve
 * information about all items affected by a particular revision.
 */
class KDEVPLATFORMVCS_EXPORT VcsEvent
{
public:
    VcsEvent();
    virtual ~VcsEvent();
    VcsEvent( const VcsEvent& );

    VcsRevision revision() const;
    QString author() const;
    QDateTime date() const;
    QString message() const;
    QList<VcsItemEvent> items() const;

    void setRevision( const VcsRevision& );
    void setAuthor( const QString& );
    void setDate( const QDateTime& );
    void setMessage(const QString& );
    void setItems( const QList<VcsItemEvent>& );
    void addItem(const VcsItemEvent& item);
    VcsEvent& operator=( const VcsEvent& rhs);

private:
    QSharedDataPointer<class VcsEventPrivate> d;
};

}

Q_DECLARE_METATYPE( KDevelop::VcsEvent )
Q_DECLARE_TYPEINFO( KDevelop::VcsEvent, Q_MOVABLE_TYPE );
Q_DECLARE_METATYPE( KDevelop::VcsItemEvent )
Q_DECLARE_TYPEINFO( KDevelop::VcsItemEvent, Q_MOVABLE_TYPE );

#endif