Add custom image functionality for inline mod buttons. (#5369)
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
This commit is contained in:
@@ -1,13 +1,19 @@
|
||||
#include "controllers/moderationactions/ModerationActionModel.hpp"
|
||||
|
||||
#include "controllers/moderationactions/ModerationAction.hpp"
|
||||
#include "messages/Image.hpp"
|
||||
#include "util/LoadPixmap.hpp"
|
||||
#include "util/PostToThread.hpp"
|
||||
#include "util/StandardItemHelper.hpp"
|
||||
|
||||
#include <QIcon>
|
||||
#include <QPixmap>
|
||||
|
||||
namespace chatterino {
|
||||
|
||||
// commandmodel
|
||||
ModerationActionModel ::ModerationActionModel(QObject *parent)
|
||||
: SignalVectorModel<ModerationAction>(1, parent)
|
||||
: SignalVectorModel<ModerationAction>(2, parent)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -15,14 +21,31 @@ ModerationActionModel ::ModerationActionModel(QObject *parent)
|
||||
ModerationAction ModerationActionModel::getItemFromRow(
|
||||
std::vector<QStandardItem *> &row, const ModerationAction &original)
|
||||
{
|
||||
return ModerationAction(row[0]->data(Qt::DisplayRole).toString());
|
||||
return ModerationAction(
|
||||
row[Column::Command]->data(Qt::DisplayRole).toString(),
|
||||
row[Column::Icon]->data(Qt::UserRole).toString());
|
||||
}
|
||||
|
||||
// turns a row in the model into a vector item
|
||||
void ModerationActionModel::getRowFromItem(const ModerationAction &item,
|
||||
std::vector<QStandardItem *> &row)
|
||||
{
|
||||
setStringItem(row[0], item.getAction());
|
||||
setStringItem(row[Column::Command], item.getAction());
|
||||
setFilePathItem(row[Column::Icon], item.iconPath());
|
||||
if (!item.iconPath().isEmpty())
|
||||
{
|
||||
auto oImage = item.getImage();
|
||||
assert(oImage.has_value());
|
||||
if (oImage.has_value())
|
||||
{
|
||||
auto url = oImage->get()->url();
|
||||
loadPixmapFromUrl(url, [row](const QPixmap &pixmap) {
|
||||
postToThread([row, pixmap]() {
|
||||
row[Column::Icon]->setData(pixmap, Qt::DecorationRole);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace chatterino
|
||||
|
||||
Reference in New Issue
Block a user