LeechCraft Azoth
0.6.70-18808-g3467692359
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
#include <util/sll/trackingpointer.h>
15
#include "
iclentry.h
"
16
17
namespace
LC::Azoth::Emitters
18
{
19
class
TransferJob;
20
class
TransferManager;
21
}
22
23
namespace
LC::Azoth
24
{
25
namespace
Transfers
26
{
27
enum class
Phase
: std::uint8_t
28
{
29
Starting
,
30
Transferring
,
31
Finished
32
};
33
34
enum class
ErrorReason
: std::uint8_t
35
{
36
Aborted
,
37
FileInaccessible
,
38
FileCorrupted
,
39
ProtocolError
,
40
};
41
42
struct
Error
43
{
44
ErrorReason
Reason_
;
45
QString
Message_
{};
46
47
bool
operator==
(
const
Error
&)
const
=
default
;
48
};
49
}
50
51
using
TransferState
= std::variant<
52
Transfers::Phase
,
53
Transfers::Error
54
>;
55
56
inline
bool
IsTerminal
(
const
TransferState
& state)
57
{
58
return
std::holds_alternative<Transfers::Error> (state) || state ==
TransferState
{
Transfers::Phase::Finished
};
59
}
60
64
class
ITransferJob
65
{
66
public
:
67
virtual
~ITransferJob
() =
default
;
68
69
virtual
Emitters::TransferJob&
GetTransferJobEmitter
() = 0;
70
75
virtual
void
Abort
() = 0;
76
};
77
78
class
ITransferManager
;
79
80
struct
IncomingOffer
81
{
82
ITransferManager
*
Manager_
;
83
uint64_t
JobId_
;
84
85
Util::TrackingPointer<ICLEntry>
Entry_
;
86
87
QString
Name_
;
88
qsizetype
Size_
;
89
90
QString
Description_
{};
91
92
bool
operator==
(
const
IncomingOffer
& other)
const
=
default
;
93
};
94
98
class
ITransferManager
99
{
100
public
:
101
virtual
~ITransferManager
() =
default
;
102
103
virtual
Emitters::TransferManager&
GetTransferManagerEmitter
() = 0;
104
118
virtual
bool
IsAvailable
()
const
= 0;
119
120
virtual
ITransferJob
*
Accept
(
const
IncomingOffer
& offer,
const
QString& savePath) = 0;
121
122
virtual
void
Decline
(
const
IncomingOffer
&) = 0;
123
146
virtual
ITransferJob
*
SendFile
(
ICLEntry
& entry,
147
const
QString& variant,
148
const
QString& path,
149
const
QString& comment) = 0;
150
};
151
}
152
153
Q_DECLARE_INTERFACE (
LC::Azoth::ITransferJob
,
"org.Deviant.LeechCraft.Azoth.ITransferJob/1.0"
)
154
Q_DECLARE_INTERFACE (
LC
::
Azoth
::ITransferManager,
"org.Deviant.LeechCraft.Azoth.ITransferManager/1.0"
)
LC::Azoth::ICLEntry
Represents a single entry in contact list.
Definition
iclentry.h:49
LC::Azoth::ITransferJob
This interface must be implemented by objects representing file transfer jobs.
Definition
itransfermanager.h:65
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:99
LC::Azoth::ITransferManager::Decline
virtual void Decline(const IncomingOffer &)=0
LC::Azoth::ITransferManager::~ITransferManager
virtual ~ITransferManager()=default
LC::Azoth::ITransferManager::GetTransferManagerEmitter
virtual Emitters::TransferManager & GetTransferManagerEmitter()=0
LC::Azoth::ITransferManager::SendFile
virtual ITransferJob * SendFile(ICLEntry &entry, const QString &variant, const QString &path, const QString &comment)=0
Requests a file transfer with the remote party.
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
iclentry.h
LC::Azoth::Emitters
Definition
imediacall.h:17
LC::Azoth::Transfers
Definition
itransfermanager.h:26
LC::Azoth::Transfers::ErrorReason
ErrorReason
Definition
itransfermanager.h:35
LC::Azoth::Transfers::ErrorReason::FileCorrupted
@ FileCorrupted
Definition
itransfermanager.h:38
LC::Azoth::Transfers::ErrorReason::Aborted
@ Aborted
Definition
itransfermanager.h:36
LC::Azoth::Transfers::ErrorReason::ProtocolError
@ ProtocolError
Definition
itransfermanager.h:39
LC::Azoth::Transfers::ErrorReason::FileInaccessible
@ FileInaccessible
Definition
itransfermanager.h:37
LC::Azoth::Transfers::Phase
Phase
Definition
itransfermanager.h:28
LC::Azoth::Transfers::Phase::Finished
@ Finished
Definition
itransfermanager.h:31
LC::Azoth::Transfers::Phase::Transferring
@ Transferring
Definition
itransfermanager.h:30
LC::Azoth::Transfers::Phase::Starting
@ Starting
Definition
itransfermanager.h:29
LC::Azoth
Definition
activityinfo.h:16
LC::Azoth::TransferState
std::variant< Transfers::Phase, Transfers::Error > TransferState
Definition
itransfermanager.h:51
LC::Azoth::IsTerminal
bool IsTerminal(const TransferState &state)
Definition
itransfermanager.h:56
LC
Definition
activityinfo.h:14
LC::Azoth::IncomingOffer
Definition
itransfermanager.h:81
LC::Azoth::IncomingOffer::operator==
bool operator==(const IncomingOffer &other) const =default
LC::Azoth::IncomingOffer::Manager_
ITransferManager * Manager_
Definition
itransfermanager.h:82
LC::Azoth::IncomingOffer::Entry_
Util::TrackingPointer< ICLEntry > Entry_
Definition
itransfermanager.h:85
LC::Azoth::IncomingOffer::Name_
QString Name_
Definition
itransfermanager.h:87
LC::Azoth::IncomingOffer::JobId_
uint64_t JobId_
Definition
itransfermanager.h:83
LC::Azoth::IncomingOffer::Size_
qsizetype Size_
Definition
itransfermanager.h:88
LC::Azoth::IncomingOffer::Description_
QString Description_
Definition
itransfermanager.h:90
LC::Azoth::Transfers::Error
Definition
itransfermanager.h:43
LC::Azoth::Transfers::Error::Message_
QString Message_
Definition
itransfermanager.h:45
LC::Azoth::Transfers::Error::operator==
bool operator==(const Error &) const =default
LC::Azoth::Transfers::Error::Reason_
ErrorReason Reason_
Definition
itransfermanager.h:44
src
plugins
azoth
interfaces
azoth
itransfermanager.h
Generated by
1.17.0