LeechCraft
0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
Toggle main menu visibility
Loading...
Searching...
No Matches
progressmanager.cpp
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
#include "
progressmanager.h
"
10
11
namespace
LC::Util
12
{
13
ProgressModelRow::ProgressModelRow
(
ProgressManager
& model,
const
QModelIndex& index)
14
: Manager_ { model }
15
, Index_ { index }
16
{
17
}
18
19
ProgressModelRow::~ProgressModelRow
()
20
{
21
if
(Index_.isValid ())
22
Manager_.Model_.
RemoveItem
(Index_.row ());
23
}
24
25
void
ProgressModelRow::Disengage
()
26
{
27
Index_ = QPersistentModelIndex {};
28
}
29
30
void
ProgressModelRow::SetDone
(qint64 done)
31
{
32
if
(Index_.isValid ())
33
Manager_.Model_.SetField<&ProgressManager::Item::Done_> (Index_.row (), done);
34
}
35
36
void
ProgressModelRow::SetTotal
(qint64 total)
37
{
38
if
(Index_.isValid ())
39
Manager_.Model_.SetField<&ProgressManager::Item::Total_> (Index_.row (), total);
40
}
41
42
void
ProgressModelRow::ChangeTotalBy
(qint64 delta)
43
{
44
if
(Index_.isValid ())
45
{
46
const
auto
total = Manager_.Model_.GetItems () [Index_.row ()].Total_;
47
Manager_.Model_.SetField<&ProgressManager::Item::Total_> (Index_.row (), total + delta);
48
}
49
}
50
51
void
ProgressModelRow::SetState
(
ProcessState
state, QString customText)
52
{
53
if
(Index_.isValid ())
54
Manager_.Model_.SetFields<
55
&ProgressManager::Item::State_,
56
&ProgressManager::Item::CustomStateText_
57
> (Index_.row (), state, std::move (customText));
58
}
59
60
void
ProgressModelRow::SetCustomData
(
const
QVariant& data)
61
{
62
if
(Index_.isValid ())
63
Manager_.Model_.GetMutItems () [Index_.row ()].CustomData_ = data;
64
}
65
66
void
ProgressModelRow::operator++
()
67
{
68
if
(!Index_.isValid ())
69
return
;
70
71
const
auto
done = Manager_.Model_.GetItems () [Index_.row ()].Done_;
72
Manager_.Model_.SetField<&ProgressManager::Item::Done_> (Index_.row (), done + 1);
73
}
74
75
ProgressManager::ProgressManager
(QObject *parent)
76
: QObject { parent }
77
{
78
}
79
80
void
ProgressManager::SetGlobalData
(
const
QVariant& data,
int
role)
81
{
82
Model_.SetGlobalData (data, role);
83
}
84
85
QAbstractItemModel&
ProgressManager::GetModel
()
86
{
87
return
Model_;
88
}
89
90
IJobHolderRepresentationHandler_ptr
ProgressManager::CreateDefaultHandler
()
91
{
92
struct
Handler :
IJobHolderRepresentationHandler
93
{
94
QAbstractItemModel& Model_;
95
96
explicit
Handler (QAbstractItemModel& model)
97
: Model_ { model }
98
{
99
}
100
101
QAbstractItemModel& GetRepresentation ()
override
102
{
103
return
Model_;
104
}
105
};
106
107
return
std::make_unique<Handler> (Model_);
108
}
109
110
std::unique_ptr<ProgressModelRow>
ProgressManager::AddRow
(
RowInfo
info)
111
{
112
return
AddRow
(std::move (info), {});
113
}
114
115
std::unique_ptr<ProgressModelRow>
ProgressManager::AddRow
(
RowInfo
info,
Initializers
inits)
116
{
117
auto
name = info.
Name_
;
118
const
auto
pos = Model_.AddItem ({
119
.RowInfo_ = std::move (info),
120
.Total_ = inits.
Total_
,
121
.State_ = inits.
State_
,
122
.CustomStateText_ = std::move (inits.
CustomStateText_
),
123
.Icon_ = std::move (inits.
Icon_
),
124
125
.CachedName_ = std::move (name),
126
127
.CustomData_ = std::move (inits.
CustomData_
),
128
});
129
return
std::make_unique<ProgressModelRow> (*
this
, Model_.index (pos, 0));
130
}
131
132
QVariant
ProgressManager::GetCustomData
(
const
QModelIndex& index)
const
133
{
134
return
Model_.GetItems () [index.row ()].CustomData_;
135
}
136
}
IJobHolderRepresentationHandler
Definition
ijobholder.h:118
LC::Util::FlatItemsModelTypedBase::RemoveItem
void RemoveItem(int idx)
Definition
flatitemsmodeltypedbase.h:88
LC::Util::ProgressManager
Definition
progressmanager.h:41
LC::Util::ProgressManager::AddRow
std::unique_ptr< ProgressModelRow > AddRow(RowInfo)
Definition
progressmanager.cpp:110
LC::Util::ProgressManager::ProgressManager
ProgressManager(QObject *parent=nullptr)
Definition
progressmanager.cpp:75
LC::Util::ProgressManager::GetCustomData
QVariant GetCustomData(const QModelIndex &) const
Definition
progressmanager.cpp:132
LC::Util::ProgressManager::SetGlobalData
void SetGlobalData(const QVariant &data, int role)
Definition
progressmanager.cpp:80
LC::Util::ProgressManager::CreateDefaultHandler
IJobHolderRepresentationHandler_ptr CreateDefaultHandler()
Definition
progressmanager.cpp:90
LC::Util::ProgressManager::GetModel
QAbstractItemModel & GetModel()
Definition
progressmanager.cpp:85
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()
Definition
progressmanager.cpp:19
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::operator++
void operator++()
Definition
progressmanager.cpp:66
LC::Util::ProgressModelRow::SetState
void SetState(ProcessState state, QString customText={})
Definition
progressmanager.cpp:51
IJobHolderRepresentationHandler_ptr
std::unique_ptr< IJobHolderRepresentationHandler > IJobHolderRepresentationHandler_ptr
Definition
ijobholder.h:172
LC::Util
Definition
icoreproxy.h:34
LC::ProcessState
ProcessState
Definition
ijobholder.h:72
progressmanager.h
LC::RowInfo
Definition
ijobholder.h:64
LC::RowInfo::Name_
QString Name_
Definition
ijobholder.h:65
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
src
util
xpc
progressmanager.cpp
Generated by
1.17.0