mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-02 09:55:55 +00:00
Great improve size calculation in torrent content model
Step to address issue #24.
This commit is contained in:
parent
3f755de80b
commit
d7ea394993
@ -53,9 +53,8 @@ TorrentContentModelFile::TorrentContentModelFile(const libtorrent::file_entry& f
|
|||||||
|
|
||||||
m_size = (qulonglong)f.size;
|
m_size = (qulonglong)f.size;
|
||||||
|
|
||||||
// Update parent
|
// Add to parent
|
||||||
m_parentItem->appendChild(this);
|
m_parentItem->appendChild(this);
|
||||||
m_parentItem->updateSize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int TorrentContentModelFile::fileIndex() const
|
int TorrentContentModelFile::fileIndex() const
|
||||||
@ -74,7 +73,6 @@ void TorrentContentModelFile::setPriority(int new_prio, bool update_parent)
|
|||||||
|
|
||||||
// Update parent
|
// Update parent
|
||||||
if (update_parent) {
|
if (update_parent) {
|
||||||
m_parentItem->updateSize();
|
|
||||||
m_parentItem->updateProgress();
|
m_parentItem->updateProgress();
|
||||||
m_parentItem->updatePriority();
|
m_parentItem->updatePriority();
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ TorrentContentModelFolder::TorrentContentModelFolder(const QString& name, Torren
|
|||||||
if (m_name.endsWith(".!qB"))
|
if (m_name.endsWith(".!qB"))
|
||||||
m_name.chop(4);
|
m_name.chop(4);
|
||||||
|
|
||||||
// Update parent
|
// Add to parent
|
||||||
m_parentItem->appendChild(this);
|
m_parentItem->appendChild(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,6 +71,9 @@ void TorrentContentModelFolder::appendChild(TorrentContentModelItem* item)
|
|||||||
{
|
{
|
||||||
Q_ASSERT(item);
|
Q_ASSERT(item);
|
||||||
m_childItems.append(item);
|
m_childItems.append(item);
|
||||||
|
// Update own size
|
||||||
|
if (item->itemType() == FileType)
|
||||||
|
increaseSize(item->size());
|
||||||
}
|
}
|
||||||
|
|
||||||
TorrentContentModelItem* TorrentContentModelFolder::child(int row) const
|
TorrentContentModelItem* TorrentContentModelFolder::child(int row) const
|
||||||
@ -132,7 +135,6 @@ void TorrentContentModelFolder::setPriority(int new_prio, bool update_parent)
|
|||||||
child->setPriority(m_priority, false);
|
child->setPriority(m_priority, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateSize();
|
|
||||||
updateProgress();
|
updateProgress();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,19 +156,11 @@ void TorrentContentModelFolder::updateProgress()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentContentModelFolder::updateSize()
|
void TorrentContentModelFolder::increaseSize(qulonglong delta)
|
||||||
{
|
{
|
||||||
if (isRootItem())
|
if (isRootItem())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
qulonglong size = 0;
|
m_size += delta;
|
||||||
foreach (TorrentContentModelItem* child, m_childItems) {
|
m_parentItem->increaseSize(delta);
|
||||||
if (child->priority() != prio::IGNORED)
|
|
||||||
size += child->size();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (size != m_size) {
|
|
||||||
m_size = size;
|
|
||||||
m_parentItem->updateSize();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ public:
|
|||||||
|
|
||||||
ItemType itemType() const { return FolderType; }
|
ItemType itemType() const { return FolderType; }
|
||||||
|
|
||||||
void updateSize();
|
void increaseSize(qulonglong delta);
|
||||||
void updateProgress();
|
void updateProgress();
|
||||||
void updatePriority();
|
void updatePriority();
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
TorrentContentModelItem::TorrentContentModelItem(TorrentContentModelFolder* parent)
|
TorrentContentModelItem::TorrentContentModelItem(TorrentContentModelFolder* parent)
|
||||||
: m_parentItem(parent)
|
: m_parentItem(parent)
|
||||||
|
, m_size(0)
|
||||||
, m_priority(prio::NORMAL)
|
, m_priority(prio::NORMAL)
|
||||||
, m_totalDone(0)
|
, m_totalDone(0)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user