refactor: fix sonarcloud warnings (#3649)
* refactor: help sonarcloud to see that tr_bandwidth dtor does not throw * refactor: use std::map instead of QMap in qt FileTreeModel
This commit is contained in:
parent
99c21efecc
commit
293f4f6759
|
@ -101,15 +101,22 @@ static void remove_child(std::vector<tr_bandwidth*>& v, tr_bandwidth* remove_me)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tr_bandwidth::deparent() noexcept
|
||||||
|
{
|
||||||
|
if (parent_ == nullptr)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_child(parent_->children_, this);
|
||||||
|
parent_ = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
void tr_bandwidth::setParent(tr_bandwidth* new_parent)
|
void tr_bandwidth::setParent(tr_bandwidth* new_parent)
|
||||||
{
|
{
|
||||||
TR_ASSERT(this != new_parent);
|
TR_ASSERT(this != new_parent);
|
||||||
|
|
||||||
if (this->parent_ != nullptr)
|
deparent();
|
||||||
{
|
|
||||||
remove_child(this->parent_->children_, this);
|
|
||||||
this->parent_ = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (new_parent != nullptr)
|
if (new_parent != nullptr)
|
||||||
{
|
{
|
||||||
|
|
|
@ -88,9 +88,9 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
~tr_bandwidth()
|
~tr_bandwidth() noexcept
|
||||||
{
|
{
|
||||||
this->setParent(nullptr);
|
deparent();
|
||||||
}
|
}
|
||||||
|
|
||||||
tr_bandwidth& operator=(tr_bandwidth&&) = delete;
|
tr_bandwidth& operator=(tr_bandwidth&&) = delete;
|
||||||
|
@ -119,6 +119,8 @@ public:
|
||||||
|
|
||||||
void setParent(tr_bandwidth* new_parent);
|
void setParent(tr_bandwidth* new_parent);
|
||||||
|
|
||||||
|
void deparent() noexcept;
|
||||||
|
|
||||||
[[nodiscard]] constexpr tr_priority_t getPriority() const noexcept
|
[[nodiscard]] constexpr tr_priority_t getPriority() const noexcept
|
||||||
{
|
{
|
||||||
return this->priority_;
|
return this->priority_;
|
||||||
|
|
|
@ -286,9 +286,12 @@ void FileTreeModel::clearSubtree(QModelIndex const& top)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->fileIndex() != -1)
|
if (auto const idx = item->fileIndex(); idx != -1)
|
||||||
{
|
{
|
||||||
index_cache_.remove(item->fileIndex());
|
if (auto const iter = index_cache_.find(idx); iter != std::end(index_cache_))
|
||||||
|
{
|
||||||
|
index_cache_.erase(iter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete item;
|
delete item;
|
||||||
|
@ -301,12 +304,13 @@ void FileTreeModel::clear()
|
||||||
root_item_ = std::make_unique<FileTreeItem>();
|
root_item_ = std::make_unique<FileTreeItem>();
|
||||||
endResetModel();
|
endResetModel();
|
||||||
|
|
||||||
assert(index_cache_.isEmpty());
|
assert(std::empty(index_cache_));
|
||||||
}
|
}
|
||||||
|
|
||||||
FileTreeItem* FileTreeModel::findItemForFileIndex(int file_index) const
|
FileTreeItem* FileTreeModel::findItemForFileIndex(int file_index) const
|
||||||
{
|
{
|
||||||
return index_cache_.value(file_index, nullptr);
|
auto iter = index_cache_.find(file_index);
|
||||||
|
return iter == std::end(index_cache_) ? nullptr : iter->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileTreeModel::addFile(
|
void FileTreeModel::addFile(
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <cstdint> // uint64_t
|
#include <cstdint> // uint64_t
|
||||||
|
#include <map>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#include <QAbstractItemModel>
|
#include <QAbstractItemModel>
|
||||||
#include <QMap>
|
|
||||||
#include <QSet>
|
#include <QSet>
|
||||||
|
|
||||||
#include <libtransmission/tr-macros.h>
|
#include <libtransmission/tr-macros.h>
|
||||||
|
@ -95,7 +95,7 @@ private:
|
||||||
FileTreeItem* itemFromIndex(QModelIndex const&) const;
|
FileTreeItem* itemFromIndex(QModelIndex const&) const;
|
||||||
QModelIndexList getOrphanIndices(QModelIndexList const& indices) const;
|
QModelIndexList getOrphanIndices(QModelIndexList const& indices) const;
|
||||||
|
|
||||||
QMap<int, FileTreeItem*> index_cache_;
|
std::map<int, FileTreeItem*> index_cache_;
|
||||||
std::unique_ptr<FileTreeItem> root_item_;
|
std::unique_ptr<FileTreeItem> root_item_;
|
||||||
bool is_editable_ = {};
|
bool is_editable_ = {};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue