QListWidget/QTableWidget: extract method view()
Change-Id: Ie6505e2aea2c3a7a10f91be19dfc66197bf97556 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
c74cba1117
commit
c82ad28125
@ -69,7 +69,7 @@ void QListModel::insert(int row, QListWidgetItem *item)
|
|||||||
if (!item)
|
if (!item)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
item->view = qobject_cast<QListWidget*>(QObject::parent());
|
item->view = this->view();
|
||||||
if (item->view && item->view->isSortingEnabled()) {
|
if (item->view && item->view->isSortingEnabled()) {
|
||||||
// sorted insertion
|
// sorted insertion
|
||||||
QList<QListWidgetItem*>::iterator it;
|
QList<QListWidgetItem*>::iterator it;
|
||||||
@ -93,7 +93,7 @@ void QListModel::insert(int row, const QStringList &labels)
|
|||||||
const int count = labels.size();
|
const int count = labels.size();
|
||||||
if (count <= 0)
|
if (count <= 0)
|
||||||
return;
|
return;
|
||||||
QListWidget *view = qobject_cast<QListWidget*>(QObject::parent());
|
QListWidget *view = this->view();
|
||||||
if (view && view->isSortingEnabled()) {
|
if (view && view->isSortingEnabled()) {
|
||||||
// sorted insertion
|
// sorted insertion
|
||||||
for (int i = 0; i < count; ++i) {
|
for (int i = 0; i < count; ++i) {
|
||||||
@ -109,7 +109,7 @@ void QListModel::insert(int row, const QStringList &labels)
|
|||||||
for (int i = 0; i < count; ++i) {
|
for (int i = 0; i < count; ++i) {
|
||||||
QListWidgetItem *item = new QListWidgetItem(labels.at(i));
|
QListWidgetItem *item = new QListWidgetItem(labels.at(i));
|
||||||
item->d->theid = row;
|
item->d->theid = row;
|
||||||
item->view = qobject_cast<QListWidget*>(QObject::parent());
|
item->view = this->view();
|
||||||
items.insert(row++, item);
|
items.insert(row++, item);
|
||||||
}
|
}
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
@ -223,7 +223,7 @@ bool QListModel::insertRows(int row, int count, const QModelIndex &parent)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
beginInsertRows(QModelIndex(), row, row + count - 1);
|
beginInsertRows(QModelIndex(), row, row + count - 1);
|
||||||
QListWidget *view = qobject_cast<QListWidget*>(QObject::parent());
|
QListWidget *view = this->view();
|
||||||
QListWidgetItem *itm = nullptr;
|
QListWidgetItem *itm = nullptr;
|
||||||
|
|
||||||
for (int r = row; r < row + count; ++r) {
|
for (int r = row; r < row + count; ++r) {
|
||||||
@ -387,7 +387,7 @@ void QListModel::itemChanged(QListWidgetItem *item, const QList<int> &roles)
|
|||||||
|
|
||||||
QStringList QListModel::mimeTypes() const
|
QStringList QListModel::mimeTypes() const
|
||||||
{
|
{
|
||||||
const QListWidget *view = qobject_cast<const QListWidget*>(QObject::parent());
|
const QListWidget *view = this->view();
|
||||||
if (view)
|
if (view)
|
||||||
return view->mimeTypes();
|
return view->mimeTypes();
|
||||||
return {};
|
return {};
|
||||||
@ -405,10 +405,9 @@ QMimeData *QListModel::mimeData(const QModelIndexList &indexes) const
|
|||||||
itemlist.reserve(indexesCount);
|
itemlist.reserve(indexesCount);
|
||||||
for (int i = 0; i < indexesCount; ++i)
|
for (int i = 0; i < indexesCount; ++i)
|
||||||
itemlist << at(indexes.at(i).row());
|
itemlist << at(indexes.at(i).row());
|
||||||
const QListWidget *view = qobject_cast<const QListWidget*>(QObject::parent());
|
|
||||||
|
|
||||||
cachedIndexes = indexes;
|
cachedIndexes = indexes;
|
||||||
QMimeData *mimeData = view->mimeData(itemlist);
|
QMimeData *mimeData = view()->mimeData(itemlist);
|
||||||
cachedIndexes.clear();
|
cachedIndexes.clear();
|
||||||
return mimeData;
|
return mimeData;
|
||||||
}
|
}
|
||||||
@ -418,19 +417,17 @@ bool QListModel::dropMimeData(const QMimeData *data, Qt::DropAction action,
|
|||||||
int row, int column, const QModelIndex &index)
|
int row, int column, const QModelIndex &index)
|
||||||
{
|
{
|
||||||
Q_UNUSED(column);
|
Q_UNUSED(column);
|
||||||
QListWidget *view = qobject_cast<QListWidget*>(QObject::parent());
|
|
||||||
if (index.isValid())
|
if (index.isValid())
|
||||||
row = index.row();
|
row = index.row();
|
||||||
else if (row == -1)
|
else if (row == -1)
|
||||||
row = items.size();
|
row = items.size();
|
||||||
|
|
||||||
return view->dropMimeData(row, data, action);
|
return view()->dropMimeData(row, data, action);
|
||||||
}
|
}
|
||||||
|
|
||||||
Qt::DropActions QListModel::supportedDropActions() const
|
Qt::DropActions QListModel::supportedDropActions() const
|
||||||
{
|
{
|
||||||
const QListWidget *view = qobject_cast<const QListWidget*>(QObject::parent());
|
return view()->supportedDropActions();
|
||||||
return view->supportedDropActions();
|
|
||||||
}
|
}
|
||||||
#endif // QT_CONFIG(draganddrop)
|
#endif // QT_CONFIG(draganddrop)
|
||||||
|
|
||||||
|
@ -50,6 +50,8 @@ public:
|
|||||||
QListModel(QListWidget *parent);
|
QListModel(QListWidget *parent);
|
||||||
~QListModel();
|
~QListModel();
|
||||||
|
|
||||||
|
inline QListWidget *view() const { return qobject_cast<QListWidget *>(QObject::parent()); }
|
||||||
|
|
||||||
void clear();
|
void clear();
|
||||||
QListWidgetItem *at(int row) const;
|
QListWidgetItem *at(int row) const;
|
||||||
void insert(int row, QListWidgetItem *item);
|
void insert(int row, QListWidgetItem *item);
|
||||||
|
@ -168,7 +168,7 @@ void QTableModel::setItem(int row, int column, QTableWidgetItem *item)
|
|||||||
oldItem->view = nullptr;
|
oldItem->view = nullptr;
|
||||||
delete tableItems.at(i);
|
delete tableItems.at(i);
|
||||||
|
|
||||||
QTableWidget *view = qobject_cast<QTableWidget*>(QObject::parent());
|
QTableWidget *view = this->view();
|
||||||
|
|
||||||
// set new
|
// set new
|
||||||
if (item)
|
if (item)
|
||||||
@ -264,7 +264,7 @@ void QTableModel::setHorizontalHeaderItem(int section, QTableWidgetItem *item)
|
|||||||
oldItem->view = nullptr;
|
oldItem->view = nullptr;
|
||||||
delete oldItem;
|
delete oldItem;
|
||||||
|
|
||||||
QTableWidget *view = qobject_cast<QTableWidget*>(QObject::parent());
|
QTableWidget *view = this->view();
|
||||||
|
|
||||||
if (item) {
|
if (item) {
|
||||||
item->view = view;
|
item->view = view;
|
||||||
@ -286,7 +286,7 @@ void QTableModel::setVerticalHeaderItem(int section, QTableWidgetItem *item)
|
|||||||
oldItem->view = nullptr;
|
oldItem->view = nullptr;
|
||||||
delete oldItem;
|
delete oldItem;
|
||||||
|
|
||||||
QTableWidget *view = qobject_cast<QTableWidget*>(QObject::parent());
|
QTableWidget *view = this->view();
|
||||||
|
|
||||||
if (item) {
|
if (item) {
|
||||||
item->view = view;
|
item->view = view;
|
||||||
@ -405,7 +405,7 @@ bool QTableModel::setData(const QModelIndex &index, const QVariant &value, int r
|
|||||||
if (!value.isValid())
|
if (!value.isValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
QTableWidget *view = qobject_cast<QTableWidget*>(QObject::parent());
|
QTableWidget *view = this->view();
|
||||||
if (!view)
|
if (!view)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -434,7 +434,7 @@ bool QTableModel::setItemData(const QModelIndex &index, const QMap<int, QVariant
|
|||||||
if (!index.isValid())
|
if (!index.isValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
QTableWidget *view = qobject_cast<QTableWidget*>(QObject::parent());
|
QTableWidget *view = this->view();
|
||||||
QTableWidgetItem *itm = item(index);
|
QTableWidgetItem *itm = item(index);
|
||||||
if (itm) {
|
if (itm) {
|
||||||
itm->view = nullptr; // prohibits item from calling itemChanged()
|
itm->view = nullptr; // prohibits item from calling itemChanged()
|
||||||
@ -817,8 +817,10 @@ void QTableModel::setItemPrototype(const QTableWidgetItem *item)
|
|||||||
|
|
||||||
QStringList QTableModel::mimeTypes() const
|
QStringList QTableModel::mimeTypes() const
|
||||||
{
|
{
|
||||||
const QTableWidget *view = qobject_cast<const QTableWidget*>(QObject::parent());
|
auto v = view();
|
||||||
return (view ? view->mimeTypes() : QStringList());
|
if (v)
|
||||||
|
return v->mimeTypes();
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
QMimeData *QTableModel::internalMimeData() const
|
QMimeData *QTableModel::internalMimeData() const
|
||||||
@ -833,7 +835,7 @@ QMimeData *QTableModel::mimeData(const QModelIndexList &indexes) const
|
|||||||
items.reserve(indexesCount);
|
items.reserve(indexesCount);
|
||||||
for (int i = 0; i < indexesCount; ++i)
|
for (int i = 0; i < indexesCount; ++i)
|
||||||
items << item(indexes.at(i));
|
items << item(indexes.at(i));
|
||||||
const QTableWidget *view = qobject_cast<const QTableWidget*>(QObject::parent());
|
const QTableWidget *view = this->view();
|
||||||
|
|
||||||
// cachedIndexes is a little hack to avoid copying from QModelIndexList to
|
// cachedIndexes is a little hack to avoid copying from QModelIndexList to
|
||||||
// QList<QTreeWidgetItem*> and back again in the view
|
// QList<QTreeWidgetItem*> and back again in the view
|
||||||
@ -857,13 +859,13 @@ bool QTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action,
|
|||||||
column = 0;
|
column = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
QTableWidget *view = qobject_cast<QTableWidget*>(QObject::parent());
|
QTableWidget *view = this->view();
|
||||||
return (view ? view->dropMimeData(row, column, data, action) : false);
|
return (view ? view->dropMimeData(row, column, data, action) : false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Qt::DropActions QTableModel::supportedDropActions() const
|
Qt::DropActions QTableModel::supportedDropActions() const
|
||||||
{
|
{
|
||||||
const QTableWidget *view = qobject_cast<const QTableWidget*>(QObject::parent());
|
const QTableWidget *view = this->view();
|
||||||
return (view ? view->supportedDropActions() : Qt::DropActions(Qt::IgnoreAction));
|
return (view ? view->supportedDropActions() : Qt::DropActions(Qt::IgnoreAction));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,6 +58,8 @@ public:
|
|||||||
QTableModel(int rows, int columns, QTableWidget *parent);
|
QTableModel(int rows, int columns, QTableWidget *parent);
|
||||||
~QTableModel();
|
~QTableModel();
|
||||||
|
|
||||||
|
inline QTableWidget *view() const { return qobject_cast<QTableWidget *>(QObject::parent()); }
|
||||||
|
|
||||||
bool insertRows(int row, int count = 1, const QModelIndex &parent = QModelIndex()) override;
|
bool insertRows(int row, int count = 1, const QModelIndex &parent = QModelIndex()) override;
|
||||||
bool insertColumns(int column, int count = 1, const QModelIndex &parent = QModelIndex()) override;
|
bool insertColumns(int column, int count = 1, const QModelIndex &parent = QModelIndex()) override;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user