mirror of
https://github.com/redis/RedisDesktopManager.git
synced 2026-10-17 04:31:27 +08:00
Revert changes added to tree model
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user