Chatterino
StandardItemHelper.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QStandardItem>
4 #include <QUrl>
5 
6 namespace chatterino {
7 
8 static auto defaultItemFlags(bool selectable)
9 {
10  return Qt::ItemIsEnabled |
11  (selectable ? Qt::ItemIsSelectable | Qt::ItemIsDragEnabled |
12  Qt::ItemIsDropEnabled
13  : Qt::ItemFlag());
14 }
15 
16 static void setBoolItem(QStandardItem *item, bool value,
17  bool userCheckable = true, bool selectable = true)
18 {
19  item->setFlags(
20  Qt::ItemFlags(defaultItemFlags(selectable) |
21  (userCheckable ? Qt::ItemIsUserCheckable : 0)));
22  item->setCheckState(value ? Qt::Checked : Qt::Unchecked);
23 }
24 
25 static void setStringItem(QStandardItem *item, const QString &value,
26  bool editable = true, bool selectable = true)
27 {
28  item->setData(value, Qt::EditRole);
29  item->setFlags(Qt::ItemFlags(defaultItemFlags(selectable) |
30  (editable ? (Qt::ItemIsEditable) : 0)));
31 }
32 
33 static void setFilePathItem(QStandardItem *item, const QUrl &value,
34  bool selectable = true)
35 {
36  item->setData(value, Qt::UserRole);
37  item->setData(value.fileName(), Qt::DisplayRole);
38  item->setFlags(
39  Qt::ItemFlags(defaultItemFlags(selectable) |
40  (selectable ? Qt::ItemIsSelectable : Qt::NoItemFlags)));
41 }
42 
43 static void setColorItem(QStandardItem *item, const QColor &value,
44  bool selectable = true)
45 {
46  item->setData(value, Qt::DecorationRole);
47  item->setFlags(
48  Qt::ItemFlags(defaultItemFlags(selectable) |
49  (selectable ? Qt::ItemIsSelectable : Qt::NoItemFlags)));
50 }
51 
52 static QStandardItem *emptyItem()
53 {
54  auto *item = new QStandardItem();
55  item->setFlags(Qt::ItemFlags());
56  return item;
57 }
58 
59 } // namespace chatterino
Definition: Application.cpp:48