Revert changes added to tree model

This commit is contained in:
Igor Malinovskiy
2021-12-28 10:07:15 +02:00
parent 3b10d76dca
commit 654ce36a8a
9 changed files with 63 additions and 64 deletions
+2 -2
View File
@@ -58,7 +58,7 @@ void ConnectionsManager::updateGroup(const ConnectionGroup &group)
return;
}
itemChanged(serverGroup);
emit itemChanged(serverGroup);
saveConfig();
@@ -352,7 +352,7 @@ void ConnectionsManager::createServerItemForConnection(
[this, serverItem]() {
if (!serverItem) return;
itemChanged(
emit itemChanged(
serverItem.dynamicCast<ConnectionsTree::TreeItem>().toWeakRef());
});
@@ -268,7 +268,7 @@ void AbstractNamespaceItem::clearLoader() {
}
void AbstractNamespaceItem::showLoadingError(const QString &err) {
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
emit m_model.error(err);
}
@@ -298,7 +298,7 @@ void AbstractNamespaceItem::sortChilds() {
m_model.beforeItemLayoutChanged(getSelf());
std::sort(m_childItems.begin(), m_childItems.end(), compareChilds);
m_model.itemLayoutChanged(getSelf());
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
}
void AbstractNamespaceItem::renderRawKeys(
@@ -374,9 +374,11 @@ QHash<QString, std::function<void()>> AbstractNamespaceItem::eventHandlers() {
}
getMemoryUsage([this](qlonglong) {
sortChilds();
unlock();
m_runningOperation.clear();
QTimer::singleShot(0, this, [this]() {
sortChilds();
unlock();
m_runningOperation.clear();
});
});
});
});
@@ -407,7 +409,9 @@ void AbstractNamespaceItem::fetchMore() {
int childsCount = m_childItems.size();
auto rawKeys = m_rawChildKeys;
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
m_rawChildKeys.clear();
return renderRawKeys(
@@ -451,7 +455,7 @@ void AbstractNamespaceItem::calculateUsedMemory(
QMutexLocker locker(&m_updateUsedMemoryMutex);
Q_UNUSED(locker);
m_usedMemory += result;
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
(*resultsRemaining)--;
@@ -75,7 +75,7 @@ void DatabaseItem::loadKeys(std::function<void()> callback, bool partialReload)
if (dbMapping.contains(m_dbIndex)) {
m_keysCount = dbMapping[m_dbIndex];
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
}
};
@@ -90,7 +90,7 @@ void DatabaseItem::loadKeys(std::function<void()> callback, bool partialReload)
m_model.expandItem(getSelf());
}
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
if (callback) {
callback();
@@ -160,7 +160,7 @@ void DatabaseItem::setMetadata(const QString& key, QVariant value) {
liveUpdateTimer()->start();
}
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
}
}
@@ -225,7 +225,9 @@ void DatabaseItem::performLiveUpdate() {
if (m_childItems.size() >=
settings.value("app/liveUpdateKeysLimit", 1000).toInt()) {
liveUpdateTimer()->stop();
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
QMessageBox::warning(
nullptr,
QCoreApplication::translate("RDM", "Live update was disabled"),
@@ -236,20 +238,20 @@ void DatabaseItem::performLiveUpdate() {
"settings."));
} else {
liveUpdateTimer()->start();
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
}
}, true);
}
void DatabaseItem::filterKeys(const QRegExp& filter) {
m_filter = filter;
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
reload();
}
void DatabaseItem::resetFilter() {
m_filter = QRegExp(m_operations->defaultFilter());
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
reload();
}
@@ -271,7 +273,7 @@ QHash<QString, std::function<void()>> DatabaseItem::eventHandlers() {
events.insert("right-click", [this]() {
if (m_childItems.size() != 0) return;
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
});
events.insert("add_key", [this]() {
@@ -92,7 +92,7 @@ int KeyItem::getDbIndex() const {
void KeyItem::setRemoved() {
m_removed = true;
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
}
void KeyItem::getMemoryUsage(std::function<void(qlonglong)> callback) {
@@ -104,14 +104,14 @@ void KeyItem::getMemoryUsage(std::function<void(qlonglong)> callback) {
[this, callback](qlonglong result) {
m_usedMemory = result;
callback(result);
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
}, [](qlonglong){});
}
void KeyItem::setFullPath(const QByteArray& p) {
m_fullPath = p;
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
}
QHash<QString, std::function<void()>> KeyItem::eventHandlers() {
@@ -51,7 +51,7 @@ void NamespaceItem::setRemoved() {
clear();
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
}
void NamespaceItem::load() {
@@ -60,7 +60,7 @@ void NamespaceItem::load() {
unlock();
setExpanded(true);
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
m_model.expandItem(getSelf());
};
@@ -115,7 +115,7 @@ QHash<QString, std::function<void()>> NamespaceItem::eventHandlers() {
load();
} else if (!isExpanded()) {
setExpanded(true);
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
m_model.expandItem(getSelf());
}
});
@@ -93,12 +93,14 @@ void ServerItem::load() {
++db;
}
m_model.beforeChildLoaded(getSelf(), dbs.size());
m_databases = dbs;
m_model.childLoaded(getSelf());
QTimer::singleShot(0, this, [this, dbs]() {
m_model.beforeChildLoaded(getSelf(), dbs.size());
m_databases = dbs;
m_model.childLoaded(getSelf());
unlock();
m_model.expandItem(getSelf());
unlock();
m_model.expandItem(getSelf());
});
};
m_currentOperation = m_operations->getDatabases(callback);
@@ -180,7 +182,7 @@ QHash<QString, std::function<void()> > ServerItem::eventHandlers() {
events.insert("reload", [this]() {
reload();
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
});
events.insert("unload", [this]() { unload(); });
@@ -45,13 +45,13 @@ ConnectionsTree::Model &ConnectionsTree::TreeItem::model() { return m_model; }
void ConnectionsTree::TreeItem::lock() {
m_locked = true;
if (getSelf())
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
}
void ConnectionsTree::TreeItem::unlock() {
m_locked = false;
if (getSelf())
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
}
QHash<QString, std::function<void()>>
@@ -66,7 +66,7 @@ void ConnectionsTree::TreeItem::handleEvent(QString event) {
if (isLocked() && event != "cancel") {
qDebug() << "Item is locked. Ignore event: " << event;
m_model.itemChanged(getSelf());
emit m_model.itemChanged(getSelf());
return;
}
+18 -29
View File
@@ -14,6 +14,7 @@ Model::Model(QObject *parent)
m_rawPointers(new QHash<TreeItem *, QWeakPointer<TreeItem>>())
{
qRegisterMetaType<QWeakPointer<TreeItem>>("QWeakPointer<TreeItem>");
QObject::connect(this, &Model::itemChanged, this, &Model::onItemChanged);
}
QVariant Model::data(const QModelIndex &index, int role) const {
@@ -118,8 +119,8 @@ QModelIndex Model::getIndexFromItem(QWeakPointer<TreeItem> item) {
return createIndex(sRef->row(), 0, (void *)sRef.data());
}
void Model::itemChanged(QWeakPointer<TreeItem> item) {
if (!item) return;
void Model::onItemChanged(QWeakPointer<TreeItem> item) {
if (!item) return;
auto index = getIndexFromItem(item);
@@ -130,7 +131,7 @@ void Model::itemChanged(QWeakPointer<TreeItem> item) {
void Model::beforeItemChildsUnloaded(QWeakPointer<TreeItem> item)
{
if (!item) return;
if (!item) return;
auto index = getIndexFromItem(item);
@@ -146,7 +147,7 @@ void Model::beforeItemChildsUnloaded(QWeakPointer<TreeItem> item)
void Model::beforeChildLoadedAtPos(QWeakPointer<TreeItem> item, int pos)
{
if (!item) return;
if (!item) return;
auto index = getIndexFromItem(item);
@@ -157,7 +158,7 @@ void Model::beforeChildLoadedAtPos(QWeakPointer<TreeItem> item, int pos)
void Model::beforeChildLoaded(QWeakPointer<TreeItem> item, int count)
{
if (!item) return;
if (!item) return;
auto index = getIndexFromItem(item);
@@ -173,7 +174,7 @@ void Model::beforeChildLoaded(QWeakPointer<TreeItem> item, int count)
void Model::childLoaded(QWeakPointer<TreeItem> item)
{
if (!item) return;
if (!item) return;
auto index = getIndexFromItem(item);
@@ -184,26 +185,24 @@ void Model::childLoaded(QWeakPointer<TreeItem> item)
void Model::beforeItemChildRemoved(QWeakPointer<TreeItem> item, int row)
{
if (!item) return;
if (!item) return;
auto index = getIndexFromItem(item);
if (!index.isValid()) return;
qDebug() << "before child removal";
if (!index.isValid()) return;
beginRemoveRows(index, row, row);
}
void Model::itemChildRemoved(QWeakPointer<TreeItem> childItem)
{
if (!childItem) return;
if (!childItem) return;
endRemoveRows();
}
void Model::expandItem(QWeakPointer<TreeItem> item) {
if (!item) return;
if (!item) return;
auto index = getIndexFromItem(item);
@@ -227,7 +226,7 @@ void Model::iterateAllChilds(QSharedPointer<TreeItem> item, QList<PendingIndexCh
}
void Model::beforeItemLayoutChanged(QWeakPointer<TreeItem> item) {
if (!item) return;
if (!item) return;
auto itemS = item.toStrongRef();
@@ -237,23 +236,19 @@ void Model::beforeItemLayoutChanged(QWeakPointer<TreeItem> item) {
if (m_pendingChanges.contains(item)) {
m_pendingChanges.remove(item);
}
qDebug() << "Layout about to change";
}
emit layoutAboutToBeChanged({}, QAbstractItemModel::VerticalSortHint);
QList<PendingIndexChange> pendingChanges;
iterateAllChilds(itemS, pendingChanges);
qDebug() << "----- pending changes:" << pendingChanges.size();
iterateAllChilds(itemS, pendingChanges);
m_pendingChanges[item] = pendingChanges;
}
void Model::itemLayoutChanged(QWeakPointer<TreeItem> item) {
if (!item) return;
if (!item) return;
auto itemS = item.toStrongRef();
@@ -279,15 +274,9 @@ void Model::itemLayoutChanged(QWeakPointer<TreeItem> item) {
}
auto from = change.second;
auto to = getIndexFromItem(child);
qDebug() << "Update model index from " << from.row() << from.parent() << "to" << to.row() << to.parent();
auto to = getIndexFromItem(child);
changePersistentIndex(from, to);
}
qDebug() << "layout changed";
QPersistentModelIndex indx(index);
}
emit layoutChanged({}, QAbstractItemModel::VerticalSortHint);
@@ -480,7 +469,7 @@ void Model::addRootItem(QSharedPointer<SortableTreeItem> item) {
}
void Model::removeRootItem(QSharedPointer<TreeItem> item) {
if (!item) return;
if (!item) return;
beginRemoveRows(QModelIndex(), item->row(), item->row());
m_treeItems.removeAll(item);
+5 -3
View File
@@ -68,9 +68,9 @@ class Model : public QAbstractItemModel {
void error(const QString &err);
public:
void itemChanged(QWeakPointer<TreeItem> item);
void itemChanged(QWeakPointer<TreeItem> item);
public:
void beforeItemChildsUnloaded(QWeakPointer<TreeItem> item);
void beforeChildLoadedAtPos(QWeakPointer<TreeItem> item, int pos);
@@ -90,6 +90,8 @@ class Model : public QAbstractItemModel {
void itemLayoutChanged(QWeakPointer<TreeItem> item);
public slots:
void onItemChanged(QWeakPointer<TreeItem> item);
void setMetadata(const QModelIndex &index, const QString &metaKey,
QVariant value);
@@ -114,7 +116,7 @@ class Model : public QAbstractItemModel {
typedef QPair<QWeakPointer<TreeItem>, QModelIndex> PendingIndexChange;
void iterateAllChilds(QSharedPointer<TreeItem> item, QList<PendingIndexChange> &pendingChanges);
void iterateAllChilds(QSharedPointer<TreeItem> item, QList<PendingIndexChange> &pendingChanges);
protected:
QList<QSharedPointer<TreeItem>> m_treeItems;