LeechCraft Azoth
0.6.70-13907-g785196c688
Modular multiprotocol IM plugin for LeechCraft
iprovidecommands.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
* Boost Software License - Version 1.0 - August 17th, 2003
6
*
7
* Permission is hereby granted, free of charge, to any person or organization
8
* obtaining a copy of the software and accompanying documentation covered by
9
* this license (the "Software") to use, reproduce, display, distribute,
10
* execute, and transmit the Software, and to prepare derivative works of the
11
* Software, and to permit third-parties to whom the Software is furnished to
12
* do so, all subject to the following:
13
*
14
* The copyright notices in the Software and this entire statement, including
15
* the above license grant, this restriction and the following disclaimer,
16
* must be included in all copies of the Software, in whole or in part, and
17
* all derivative works of the Software, unless such copies or derivative
18
* works are solely in the form of machine-executable object code generated by
19
* a source language processor.
20
*
21
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
* FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
24
* SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
25
* FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
26
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27
* DEALINGS IN THE SOFTWARE.
28
**********************************************************************/
29
30
#pragma once
31
32
#include <variant>
33
#include <functional>
34
#include <stdexcept>
35
#include <QStringList>
36
#include <QtPlugin>
37
38
namespace
LC
39
{
40
namespace
Azoth
41
{
42
class
ICLEntry;
43
44
struct
StringCommandResult
45
{
46
bool
StopProcessing_
;
47
QString
Message_
;
48
};
49
struct
TextMorphResult
50
{
51
QString
NewText_
;
52
};
53
typedef
std::variant<bool, StringCommandResult, TextMorphResult>
CommandResult_t
;
54
55
typedef
std::function<
CommandResult_t
(ICLEntry*, QString&)>
Command_f
;
56
57
class
CommandException :
public
std::runtime_error
58
{
59
const
QString Error_;
60
const
bool
TryOtherCommands_;
61
public
:
62
CommandException
(
const
QString& error,
bool
canTryOthers =
false
)
63
: std::runtime_error { error.toUtf8 ().constData () }
64
, Error_ { error }
65
, TryOtherCommands_ { canTryOthers }
66
{
67
}
68
69
const
QString&
GetError
()
const
70
{
71
return
Error_;
72
}
73
74
bool
CanTryOtherCommands
()
const
75
{
76
return
TryOtherCommands_;
77
}
78
};
79
80
struct
StaticCommand
81
{
82
QStringList
Names_
;
83
Command_f
Command_
;
84
85
QString
Description_
;
86
QString
Help_
;
87
88
StaticCommand
() =
default
;
89
StaticCommand
(
const
StaticCommand
&) =
default
;
90
91
StaticCommand
(
const
QStringList& names,
const
Command_f
& command)
92
:
Names_
{ names }
93
,
Command_
{ command }
94
{
95
}
96
97
StaticCommand
(
const
QStringList& names,
const
Command_f
& command,
98
const
QString& descr,
const
QString& help)
99
:
Names_
{ names }
100
,
Command_
{ command }
101
,
Description_
{ descr }
102
,
Help_
{ help }
103
{
104
}
105
};
106
107
typedef
QList<StaticCommand>
StaticCommands_t
;
108
109
class
IProvideCommands
110
{
111
public
:
112
virtual
~IProvideCommands
() {}
113
114
virtual
StaticCommands_t
GetStaticCommands
(
ICLEntry
*) = 0;
115
};
116
}
117
}
118
119
Q_DECLARE_INTERFACE (
LC::Azoth::IProvideCommands
,
"org.LeechCraft.Azoth.IProvideCommands/1.0"
)
LC::Azoth::StaticCommands_t
QList< StaticCommand > StaticCommands_t
Definition:
iprovidecommands.h:161
LC::Azoth::IProvideCommands::GetStaticCommands
virtual StaticCommands_t GetStaticCommands(ICLEntry *)=0
LC::Azoth::StringCommandResult::Message_
QString Message_
Definition:
iprovidecommands.h:101
QList
Definition:
iaccountactionsprovider.h:37
LC::Azoth::CommandException::CommandException
CommandException(const QString &error, bool canTryOthers=false)
Definition:
iprovidecommands.h:116
LC::Azoth::StaticCommand::Names_
QStringList Names_
Definition:
iprovidecommands.h:136
LC::Azoth::StaticCommand::Description_
QString Description_
Definition:
iprovidecommands.h:139
LC::Azoth::ICLEntry
Represents a single entry in contact list.
Definition:
iclentry.h:142
LC::Azoth::StaticCommand::StaticCommand
StaticCommand()=default
LC::Azoth::Command_f
std::function< CommandResult_t(ICLEntry *, QString &)> Command_f
Definition:
iprovidecommands.h:109
LC::Azoth::IProvideCommands::~IProvideCommands
virtual ~IProvideCommands()
Definition:
iprovidecommands.h:166
LC::Azoth::CommandException::CanTryOtherCommands
bool CanTryOtherCommands() const
Definition:
iprovidecommands.h:128
LC::Azoth::StaticCommand::Help_
QString Help_
Definition:
iprovidecommands.h:140
LC::Azoth::StringCommandResult::StopProcessing_
bool StopProcessing_
Definition:
iprovidecommands.h:100
LC::Azoth::CommandResult_t
std::variant< bool, StringCommandResult, TextMorphResult > CommandResult_t
Definition:
iprovidecommands.h:107
LC
Definition:
activityinfo.h:35
LC::Azoth::StaticCommand::Command_
Command_f Command_
Definition:
iprovidecommands.h:137
LC::Azoth::CommandException::GetError
const QString & GetError() const
Definition:
iprovidecommands.h:123
LC::Azoth::IProvideCommands
Definition:
iprovidecommands.h:164
LC::Azoth::TextMorphResult::NewText_
QString NewText_
Definition:
iprovidecommands.h:105
src
plugins
azoth
interfaces
azoth
iprovidecommands.h
Generated by
1.8.18