LeechCraft Azoth
0.6.70-18450-gabe19ee3b0
Modular multiprotocol IM plugin for LeechCraft
Toggle main menu visibility
Loading...
Searching...
No Matches
itransfermanager.h
Go to the documentation of this file.
1
/**********************************************************************
2
* LeechCraft - modular cross-platform feature rich internet client.
3
* Copyright (C) 2006-2014 Georg Rudoy
4
*
5
* Distributed under the Boost Software License, Version 1.0.
6
* (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7
**********************************************************************/
8
9
#pragma once
10
11
#include <variant>
12
#include <QObject>
13
#include <QString>
14
15
namespace
LC::Azoth::Emitters
16
{
17
class
TransferJob;
18
class
TransferManager;
19
}
20
21
namespace
LC::Azoth
22
{
23
namespace
Transfers
24
{
25
enum class
Phase
: std::uint8_t
26
{
27
Starting
,
28
Transferring
,
29
Finished
30
};
31
32
enum class
ErrorReason
: std::uint8_t
33
{
34
Aborted
,
35
FileInaccessible
,
36
FileCorrupted
,
37
ProtocolError
,
38
};
39
40
struct
Error
41
{
42
ErrorReason
Reason_
;
43
QString
Message_
{};
44
45
bool
operator==
(
const
Error
&)
const
=
default
;
46
};
47
}
48
49
using
TransferState
= std::variant<
50
Transfers::Phase
,
51
Transfers::Error
52
>;
53
54
inline
bool
IsTerminal
(
const
TransferState
& state)
55
{
56
return
std::holds_alternative<Transfers::Error> (state) || state ==
TransferState
{
Transfers::Phase::Finished
};
57
}
58
62
class
ITransferJob
63
{
64
public
:
65
virtual
~ITransferJob
() =
default
;
66
67
virtual
Emitters::TransferJob&
GetTransferJobEmitter
() = 0;
68
73
virtual
void
Abort
() = 0;
74
};
75
76
class
ITransferManager
;
77
78
struct
IncomingOffer
79
{
80
ITransferManager
*
Manager_
;
81
uint64_t
JobId_
;
82
83
QString
EntryId_
;
84
85
QString
Name_
;
86
qsizetype
Size_
;
87
88
QString
Description_
{};
89
90
bool
operator==
(
const
IncomingOffer
& other)
const
=
default
;
91
};
92
96
class
ITransferManager
97
{
98
public
:
99
virtual
~ITransferManager
() =
default
;
100
101
virtual
Emitters::TransferManager&
GetTransferManagerEmitter
() = 0;
102
116
virtual
bool
IsAvailable
()
const
= 0;
117
118
virtual
ITransferJob
*
Accept
(
const
IncomingOffer
& offer,
const
QString& savePath) = 0;
119
120
virtual
void
Decline
(
const
IncomingOffer
&) = 0;
121
148
virtual
ITransferJob
*
SendFile
(
const
QString&
id
,
149
const
QString& variant,
150
const
QString& path,
151
const
QString& comment) = 0;
152
};
153
}
154
155
Q_DECLARE_INTERFACE (
LC::Azoth::ITransferJob
,
"org.Deviant.LeechCraft.Azoth.ITransferJob/1.0"
)
156
Q_DECLARE_INTERFACE (
LC
::
Azoth
::ITransferManager,
"org.Deviant.LeechCraft.Azoth.ITransferManager/1.0"
)
LC::Azoth::ITransferJob
This interface must be implemented by objects representing file transfer jobs.
Definition
itransfermanager.h:63
LC::Azoth::ITransferJob::GetTransferJobEmitter
virtual Emitters::TransferJob & GetTransferJobEmitter()=0
LC::Azoth::ITransferJob::Abort
virtual void Abort()=0
Aborts a transfer.
LC::Azoth::ITransferJob::~ITransferJob
virtual ~ITransferJob()=default
LC::Azoth::ITransferManager
This interface must be implemented by transfer managers returned from IAccount::GetTransferManager().
Definition
itransfermanager.h:97
LC::Azoth::ITransferManager::Decline
virtual void Decline(const IncomingOffer &)=0
LC::Azoth::ITransferManager::SendFile
virtual ITransferJob * SendFile(const QString &id, const QString &variant, const QString &path, const QString &comment)=0
Requests a file transfer with the remote party.
LC::Azoth::ITransferManager::~ITransferManager
virtual ~ITransferManager()=default
LC::Azoth::ITransferManager::GetTransferManagerEmitter
virtual Emitters::TransferManager & GetTransferManagerEmitter()=0
LC::Azoth::ITransferManager::IsAvailable
virtual bool IsAvailable() const =0
Returns whether the transfer manager is available.
LC::Azoth::ITransferManager::Accept
virtual ITransferJob * Accept(const IncomingOffer &offer, const QString &savePath)=0
LC::Azoth::Emitters
Definition
imediacall.h:17
LC::Azoth::Transfers
Definition
itransfermanager.h:24
LC::Azoth::Transfers::ErrorReason
ErrorReason
Definition
itransfermanager.h:33
LC::Azoth::Transfers::ErrorReason::FileCorrupted
@ FileCorrupted
Definition
itransfermanager.h:36
LC::Azoth::Transfers::ErrorReason::Aborted
@ Aborted
Definition
itransfermanager.h:34
LC::Azoth::Transfers::ErrorReason::ProtocolError
@ ProtocolError
Definition
itransfermanager.h:37
LC::Azoth::Transfers::ErrorReason::FileInaccessible
@ FileInaccessible
Definition
itransfermanager.h:35
LC::Azoth::Transfers::Phase
Phase
Definition
itransfermanager.h:26
LC::Azoth::Transfers::Phase::Finished
@ Finished
Definition
itransfermanager.h:29
LC::Azoth::Transfers::Phase::Transferring
@ Transferring
Definition
itransfermanager.h:28
LC::Azoth::Transfers::Phase::Starting
@ Starting
Definition
itransfermanager.h:27
LC::Azoth
Definition
activityinfo.h:16
LC::Azoth::TransferState
std::variant< Transfers::Phase, Transfers::Error > TransferState
Definition
itransfermanager.h:49
LC::Azoth::IsTerminal
bool IsTerminal(const TransferState &state)
Definition
itransfermanager.h:54
LC
Definition
activityinfo.h:14
LC::Azoth::IncomingOffer
Definition
itransfermanager.h:79
LC::Azoth::IncomingOffer::operator==
bool operator==(const IncomingOffer &other) const =default
LC::Azoth::IncomingOffer::EntryId_
QString EntryId_
Definition
itransfermanager.h:83
LC::Azoth::IncomingOffer::Manager_
ITransferManager * Manager_
Definition
itransfermanager.h:80
LC::Azoth::IncomingOffer::Name_
QString Name_
Definition
itransfermanager.h:85
LC::Azoth::IncomingOffer::JobId_
uint64_t JobId_
Definition
itransfermanager.h:81
LC::Azoth::IncomingOffer::Size_
qsizetype Size_
Definition
itransfermanager.h:86
LC::Azoth::IncomingOffer::Description_
QString Description_
Definition
itransfermanager.h:88
LC::Azoth::Transfers::Error
Definition
itransfermanager.h:41
LC::Azoth::Transfers::Error::Message_
QString Message_
Definition
itransfermanager.h:43
LC::Azoth::Transfers::Error::operator==
bool operator==(const Error &) const =default
LC::Azoth::Transfers::Error::Reason_
ErrorReason Reason_
Definition
itransfermanager.h:42
src
plugins
azoth
interfaces
azoth
itransfermanager.h
Generated by
1.17.0