##// END OF EJS Templates
Adds actions for items in the DataSourceWidget...
Adds actions for items in the DataSourceWidget For each item will be associated actions (generated from the model of the item) that will be displayed in the menu when right clicking on the item in the tree

File last commit:

r133:11579fae1cc2
r133:11579fae1cc2
Show More
DataSourceTreeWidgetItem.cpp
87 lines | 2.6 KiB | text/x-c | CppLexer
/ gui / src / DataSource / DataSourceTreeWidgetItem.cpp
Alexandre Leroux
Defines the QTreeWidgetItem for a data source item
r79 #include <DataSource/DataSourceItem.h>
#include <DataSource/DataSourceTreeWidgetItem.h>
Alexandre Leroux
Handles the icon of a DataSourceTreeWidgetItem (depending of the type of the data source item)
r80 #include <SqpApplication.h>
Alexandre Leroux
Adds actions for items in the DataSourceWidget...
r133 #include <QAction>
Alexandre Leroux
Defines the QTreeWidgetItem for a data source item
r79 Q_LOGGING_CATEGORY(LOG_DataSourceTreeWidgetItem, "DataSourceTreeWidgetItem")
Alexandre Leroux
Handles the icon of a DataSourceTreeWidgetItem (depending of the type of the data source item)
r80 namespace {
QIcon itemIcon(const DataSourceItem *dataSource)
{
if (dataSource) {
auto dataSourceType = dataSource->type();
switch (dataSourceType) {
case DataSourceItemType::NODE:
return sqpApp->style()->standardIcon(QStyle::SP_DirIcon);
case DataSourceItemType::PRODUCT:
return sqpApp->style()->standardIcon(QStyle::SP_FileIcon);
default:
// No action
break;
}
Alexandre Leroux
Add warnings if the icon of a data source can't be set
r91
qCWarning(LOG_DataSourceTreeWidgetItem())
<< QObject::tr("Can't set data source icon : unknown data source type");
}
else {
qCWarning(LOG_DataSourceTreeWidgetItem())
<< QObject::tr("Can't set data source icon : the data source is null");
Alexandre Leroux
Handles the icon of a DataSourceTreeWidgetItem (depending of the type of the data source item)
r80 }
// Default cases
return QIcon{};
}
} // namespace
Alexandre Leroux
Defines the QTreeWidgetItem for a data source item
r79 struct DataSourceTreeWidgetItem::DataSourceTreeWidgetItemPrivate {
explicit DataSourceTreeWidgetItemPrivate(const DataSourceItem *data) : m_Data{data} {}
/// Model used to retrieve data source information
const DataSourceItem *m_Data;
Alexandre Leroux
Adds actions for items in the DataSourceWidget...
r133 /// Actions associated to the item. The parent of the item (QTreeWidget) takes the ownership of
/// the actions
QList<QAction *> m_Actions;
Alexandre Leroux
Defines the QTreeWidgetItem for a data source item
r79 };
DataSourceTreeWidgetItem::DataSourceTreeWidgetItem(const DataSourceItem *data, int type)
: DataSourceTreeWidgetItem{nullptr, data, type}
{
}
DataSourceTreeWidgetItem::DataSourceTreeWidgetItem(QTreeWidget *parent, const DataSourceItem *data,
int type)
: QTreeWidgetItem{parent, type},
impl{spimpl::make_unique_impl<DataSourceTreeWidgetItemPrivate>(data)}
{
Alexandre Leroux
Handles the icon of a DataSourceTreeWidgetItem (depending of the type of the data source item)
r80 // Sets the icon depending on the data source
setIcon(0, itemIcon(impl->m_Data));
Alexandre Leroux
Adds actions for items in the DataSourceWidget...
r133
/// @todo ALX : generate actions based on the DataSourceItem (model)
Alexandre Leroux
Defines the QTreeWidgetItem for a data source item
r79 }
QVariant DataSourceTreeWidgetItem::data(int column, int role) const
{
if (role == Qt::DisplayRole) {
return (impl->m_Data) ? impl->m_Data->data(column) : QVariant{};
}
else {
return QTreeWidgetItem::data(column, role);
}
}
void DataSourceTreeWidgetItem::setData(int column, int role, const QVariant &value)
{
// Data can't be changed by edition
if (role != Qt::EditRole) {
QTreeWidgetItem::setData(column, role, value);
}
}
Alexandre Leroux
Adds actions for items in the DataSourceWidget...
r133
QList<QAction *> DataSourceTreeWidgetItem::actions() const noexcept
{
return impl->m_Actions;
}