mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
replaced raw pointers with unique_ptr
This commit is contained in:
parent
a9080ceb3c
commit
c83fc043e0
|
@ -390,7 +390,7 @@ void Window::addShortcuts()
|
|||
splitContainer->appendSplit(split);
|
||||
});
|
||||
|
||||
createWindowShortcut(this, "CTRL+H", [this] {
|
||||
createWindowShortcut(this, "CTRL+H", [] {
|
||||
getSettings()->hideSimilar.setValue(!getSettings()->hideSimilar);
|
||||
getApp()->windows->forceLayoutChannelViews();
|
||||
});
|
||||
|
|
|
@ -4,18 +4,9 @@ namespace chatterino {
|
|||
|
||||
QuickSwitcherModel::QuickSwitcherModel(QWidget *parent)
|
||||
: QAbstractListModel(parent)
|
||||
, items_(INITIAL_ITEMS_SIZE)
|
||||
{
|
||||
}
|
||||
|
||||
QuickSwitcherModel::~QuickSwitcherModel()
|
||||
{
|
||||
for (AbstractSwitcherItem *item : this->items_)
|
||||
{
|
||||
delete item;
|
||||
}
|
||||
}
|
||||
|
||||
int QuickSwitcherModel::rowCount(const QModelIndex &parent) const
|
||||
{
|
||||
return this->items_.size();
|
||||
|
@ -30,29 +21,29 @@ QVariant QuickSwitcherModel::data(const QModelIndex &index,
|
|||
if (index.row() >= this->items_.size())
|
||||
return QVariant();
|
||||
|
||||
auto item = this->items_.at(index.row());
|
||||
auto item = this->items_[index.row()].get();
|
||||
// See https://stackoverflow.com/a/44503822 .
|
||||
return QVariant::fromValue(static_cast<void *>(item));
|
||||
}
|
||||
|
||||
void QuickSwitcherModel::addItem(AbstractSwitcherItem *item)
|
||||
void QuickSwitcherModel::addItem(std::unique_ptr<AbstractSwitcherItem> item)
|
||||
{
|
||||
// {begin,end}InsertRows needs to be called to notify attached views
|
||||
this->beginInsertRows(QModelIndex(), this->items_.size(),
|
||||
this->items_.size());
|
||||
this->items_.append(item);
|
||||
this->items_.push_back(std::move(item));
|
||||
this->endInsertRows();
|
||||
}
|
||||
|
||||
void QuickSwitcherModel::clear()
|
||||
{
|
||||
if (this->items_.empty())
|
||||
return;
|
||||
|
||||
// {begin,end}RemoveRows needs to be called to notify attached views
|
||||
this->beginRemoveRows(QModelIndex(), 0, this->items_.size() - 1);
|
||||
|
||||
for (AbstractSwitcherItem *item : this->items_)
|
||||
{
|
||||
delete item;
|
||||
}
|
||||
// clear
|
||||
this->items_.clear();
|
||||
|
||||
this->endRemoveRows();
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include "widgets/dialogs/switcher/AbstractSwitcherItem.hpp"
|
||||
|
||||
namespace chatterino {
|
||||
|
@ -8,7 +9,6 @@ class QuickSwitcherModel : public QAbstractListModel
|
|||
{
|
||||
public:
|
||||
QuickSwitcherModel(QWidget *parent = nullptr);
|
||||
~QuickSwitcherModel();
|
||||
|
||||
/**
|
||||
* @brief Reimplements QAbstractItemModel::rowCount.
|
||||
|
@ -37,7 +37,7 @@ public:
|
|||
*
|
||||
* @param item item to add to the model
|
||||
*/
|
||||
void addItem(AbstractSwitcherItem *item);
|
||||
void addItem(std::unique_ptr<AbstractSwitcherItem> item);
|
||||
|
||||
/**
|
||||
* @brief Clears this QuickSwitcherModel of all items. This will delete all
|
||||
|
@ -47,13 +47,6 @@ public:
|
|||
void clear();
|
||||
|
||||
private:
|
||||
/*
|
||||
* On my system, the default QVector capacity is 0. 20 is an attempt at preventing
|
||||
* frequent reallocations. The number is not backed by any user data but rather a
|
||||
* guess at how many switcher items are probably going to be added.
|
||||
*/
|
||||
static constexpr int INITIAL_ITEMS_SIZE = 20;
|
||||
|
||||
QVector<AbstractSwitcherItem *> items_;
|
||||
std::vector<std::unique_ptr<AbstractSwitcherItem>> items_;
|
||||
};
|
||||
} // namespace chatterino
|
||||
|
|
|
@ -106,8 +106,8 @@ void QuickSwitcherPopup::updateSuggestions(const QString &text)
|
|||
if (split->getChannel()->getName().contains(text,
|
||||
Qt::CaseInsensitive))
|
||||
{
|
||||
SwitchSplitItem *item = new SwitchSplitItem(split);
|
||||
this->switcherModel_.addItem(item);
|
||||
auto item = std::make_unique<SwitchSplitItem>(split);
|
||||
this->switcherModel_.addItem(std::move(item));
|
||||
|
||||
// We want to continue the outer loop so we need a goto
|
||||
goto nextPage;
|
||||
|
@ -117,8 +117,8 @@ void QuickSwitcherPopup::updateSuggestions(const QString &text)
|
|||
// Then check if tab title matches
|
||||
if (tabTitle.contains(text, Qt::CaseInsensitive))
|
||||
{
|
||||
SwitchSplitItem *item = new SwitchSplitItem(sc);
|
||||
this->switcherModel_.addItem(item);
|
||||
auto item = std::make_unique<SwitchSplitItem>(sc);
|
||||
this->switcherModel_.addItem(std::move(item));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -128,8 +128,8 @@ void QuickSwitcherPopup::updateSuggestions(const QString &text)
|
|||
// Add item for opening a channel in a new tab
|
||||
if (!text.isEmpty())
|
||||
{
|
||||
NewTabItem *item = new NewTabItem(text);
|
||||
this->switcherModel_.addItem(item);
|
||||
auto item = std::make_unique<NewTabItem>(text);
|
||||
this->switcherModel_.addItem(std::move(item));
|
||||
}
|
||||
|
||||
const auto &startIdx = this->switcherModel_.index(0);
|
||||
|
|
Loading…
Reference in a new issue