LeechCraft
0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
progressmanager.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 <QIcon>
12
#include <
util/models/itemsmodel.h
>
13
#include <
interfaces/ijobholder.h
>
14
#include "
xpcconfig.h
"
15
16
namespace
LC::Util
17
{
18
class
ProgressManager
;
19
20
class
UTIL_XPC_API
ProgressModelRow
final
21
{
22
ProgressManager
& Manager_;
23
QPersistentModelIndex Index_;
24
public
:
25
explicit
ProgressModelRow
(
ProgressManager
&,
const
QModelIndex&);
26
~ProgressModelRow
();
27
28
void
Disengage
();
29
30
void
SetDone
(qint64);
31
void
SetTotal
(qint64);
32
void
ChangeTotalBy
(qint64 delta);
33
void
SetState
(
ProcessState
state, QString customText = {});
34
35
void
SetCustomData
(
const
QVariant&);
36
37
void
operator++ ();
38
};
39
40
class
UTIL_XPC_API
ProgressManager
:
public
QObject
41
{
42
friend
class
ProgressModelRow
;
43
public
:
44
constexpr
static
auto
CustomDataRole
=
MaxValue<JobHolderProcessRole>
+ 1;
45
46
constexpr
static
auto
MaxRole
=
CustomDataRole
;
47
private
:
48
struct
Item
49
{
50
RoleOf<RowInfo, +JobHolderRole::RowInfo>
RowInfo_;
51
RoleOf<qint64, +JobHolderProcessRole::Done>
Done_ = 0;
52
RoleOf<qint64, +JobHolderProcessRole::Total>
Total_ = 0;
53
RoleOf<ProcessState, +JobHolderProcessRole::State>
State_ =
ProcessState::Running
;
54
RoleOf<QString, +JobHolderProcessRole::StateCustomText>
CustomStateText_ {};
55
RoleOf<QIcon, Qt::DecorationRole>
Icon_;
56
57
RoleOf<QString, Qt::DisplayRole>
CachedName_;
58
59
RoleOf<QVariant, CustomDataRole>
CustomData_;
60
};
61
RoledItemsModel<Item>
Model_;
62
public
:
63
explicit
ProgressManager
(QObject *parent =
nullptr
);
64
65
void
SetGlobalData (
const
QVariant& data,
int
role);
66
67
QAbstractItemModel& GetModel ();
68
IJobHolderRepresentationHandler_ptr
CreateDefaultHandler ();
69
70
struct
Initializers
71
{
72
ProcessState
State_
=
ProcessState::Running
;
73
qint64
Total_
= 0;
74
QString
CustomStateText_
{};
75
QIcon
Icon_
{};
76
QVariant
CustomData_
{};
77
};
78
79
[[nodiscard]] std::unique_ptr<ProgressModelRow> AddRow (
RowInfo
);
80
[[nodiscard]] std::unique_ptr<ProgressModelRow> AddRow (
RowInfo
, Initializers);
81
82
QVariant GetCustomData (
const
QModelIndex&)
const
;
83
};
84
}
LC::Util::ProgressManager
Definition
progressmanager.h:41
LC::Util::ProgressManager::ProgressModelRow
friend class ProgressModelRow
Definition
progressmanager.h:42
LC::Util::ProgressManager::ProgressManager
ProgressManager(QObject *parent=nullptr)
Definition
progressmanager.cpp:75
LC::Util::ProgressManager::CustomDataRole
static constexpr auto CustomDataRole
Definition
progressmanager.h:44
LC::Util::ProgressManager::MaxRole
static constexpr auto MaxRole
Definition
progressmanager.h:46
LC::Util::ProgressModelRow::ChangeTotalBy
void ChangeTotalBy(qint64 delta)
Definition
progressmanager.cpp:42
LC::Util::ProgressModelRow::SetCustomData
void SetCustomData(const QVariant &)
Definition
progressmanager.cpp:60
LC::Util::ProgressModelRow::SetTotal
void SetTotal(qint64)
Definition
progressmanager.cpp:36
LC::Util::ProgressModelRow::SetDone
void SetDone(qint64)
Definition
progressmanager.cpp:30
LC::Util::ProgressModelRow::ProgressModelRow
ProgressModelRow(ProgressManager &, const QModelIndex &)
Definition
progressmanager.cpp:13
LC::Util::ProgressModelRow::Disengage
void Disengage()
Definition
progressmanager.cpp:25
LC::Util::ProgressModelRow::SetState
void SetState(ProcessState state, QString customText={})
Definition
progressmanager.cpp:51
LC::Util::RoledItemsModel
Definition
itemsmodel.h:138
ijobholder.h
IJobHolderRepresentationHandler_ptr
std::unique_ptr< IJobHolderRepresentationHandler > IJobHolderRepresentationHandler_ptr
Definition
ijobholder.h:172
itemsmodel.h
LC::Util
Definition
icoreproxy.h:34
LC::MaxValue
constexpr int MaxValue
Definition
maxvalue.h:14
LC::ProcessState
ProcessState
Definition
ijobholder.h:72
LC::ProcessState::Running
@ Running
Definition
ijobholder.h:73
LC::RowInfo
Definition
ijobholder.h:64
LC::Util::ProgressManager::Initializers
Definition
progressmanager.h:71
LC::Util::ProgressManager::Initializers::CustomStateText_
QString CustomStateText_
Definition
progressmanager.h:74
LC::Util::ProgressManager::Initializers::Total_
qint64 Total_
Definition
progressmanager.h:73
LC::Util::ProgressManager::Initializers::State_
ProcessState State_
Definition
progressmanager.h:72
LC::Util::ProgressManager::Initializers::Icon_
QIcon Icon_
Definition
progressmanager.h:75
LC::Util::ProgressManager::Initializers::CustomData_
QVariant CustomData_
Definition
progressmanager.h:76
LC::Util::RoleOf
Definition
itemsmodel.h:19
xpcconfig.h
UTIL_XPC_API
#define UTIL_XPC_API
Definition
xpcconfig.h:16
src
util
xpc
progressmanager.h
Generated by
1.17.0