@@ -58,8 +58,7 @@ void DatabaseItem::loadKeys(std::function<void()> callback,
5858
5959 QString filter = (m_filter.isEmpty ()) ? " " : m_filter.pattern ();
6060
61- auto selfWPtr = getSelf ();
62- auto self = selfWPtr.toStrongRef ();
61+ auto self = getSelf ().toStrongRef ();
6362
6463 if (!self) {
6564 unlock ();
@@ -85,25 +84,22 @@ void DatabaseItem::loadKeys(std::function<void()> callback,
8584
8685 m_operations->getDatabases (dbLoadCallback);
8786
88- auto onKeysRendered = [selfWPtr, this , callback]() {
89- auto self = selfWPtr. toStrongRef ();
90-
91- if (!self) return ;
87+ auto onKeysRendered = QSharedPointer<RenderRawKeysCallback>(
88+ new RenderRawKeysCallback ( getSelf (), [ this , callback]() {
89+ ensureLoaderIsCreated ();
90+ unlock () ;
9291
93- ensureLoaderIsCreated ();
94- unlock ();
95-
96- if (!isExpanded ()) {
97- setExpanded (true );
98- m_model.expandItem (getSelf ());
99- }
92+ if (!isExpanded ()) {
93+ setExpanded (true );
94+ m_model.expandItem (getSelf ());
95+ }
10096
101- emit m_model.itemChanged (getSelf ());
97+ emit m_model.itemChanged (getSelf ());
10298
103- if (callback) {
104- callback ();
105- }
106- } ;
99+ if (callback) {
100+ callback ();
101+ }
102+ })) ;
107103
108104 auto nsItemsCallback = QSharedPointer<Operations::LoadNamespaceItemsCallback>(
109105 new Operations::LoadNamespaceItemsCallback (
@@ -277,7 +273,7 @@ void DatabaseItem::resetFilter() {
277273 reload ();
278274}
279275
280- QHash<QString, std::function<void ()>> DatabaseItem::eventHandlers () {
276+ QHash<QString, std::function<bool ()> > DatabaseItem::eventHandlers () {
281277 auto events = AbstractNamespaceItem::eventHandlers ();
282278
283279 events.insert (" click" , [this ]() {
@@ -286,16 +282,18 @@ QHash<QString, std::function<void()>> DatabaseItem::eventHandlers() {
286282 setExpanded (true );
287283 m_model.expandItem (getSelf ());
288284 }
289- return ;
285+ return true ;
290286 }
291287
292288 loadKeys ();
289+ return false ;
293290 });
294291
295292 events.insert (" right-click" , [this ]() {
296- if (m_childItems.size () != 0 ) return ;
293+ if (m_childItems.size () != 0 ) return true ;
297294
298295 emit m_model.itemChanged (getSelf ());
296+ return true ;
299297 });
300298
301299 events.insert (" add_key" , [this ]() {
@@ -315,20 +313,12 @@ QHash<QString, std::function<void()>> DatabaseItem::eventHandlers() {
315313 }));
316314
317315 m_operations->openNewKeyDialog (m_dbIndex, callback);
316+ return true ;
318317 });
319318
320319 events.insert (" reload" , [this ]() {
321- if (isLocked ()) {
322- QMessageBox::warning (
323- nullptr ,
324- QCoreApplication::translate (
325- " RESP" , " Another operation is currently in progress" ),
326- QCoreApplication::translate (
327- " RESP" , " Please wait until another operation will be finished." ));
328- return ;
329- }
330-
331320 reload ();
321+ return false ;
332322 });
333323
334324 events.insert (" flush" , [this ]() {
@@ -343,19 +333,20 @@ QHash<QString, std::function<void()>> DatabaseItem::eventHandlers() {
343333 getSelf (), [this ](const QString&) { unload (); }));
344334 m_operations->flushDb (m_dbIndex, callback);
345335 });
336+ return true ;
346337 });
347338
348339 events.insert (" console" ,
349- [this ]() { m_operations->openConsoleTab (m_dbIndex); });
340+ [this ]() { m_operations->openConsoleTab (m_dbIndex); return true ; });
350341
351- events.insert (" delete_keys" , [this ]() { m_operations->deleteDbKeys (*this ); });
342+ events.insert (" delete_keys" , [this ]() { m_operations->deleteDbKeys (*this ); return true ; });
352343
353- events.insert (" copy_keys" , [this ]() { m_operations->copyKeys (*this ); });
344+ events.insert (" copy_keys" , [this ]() { m_operations->copyKeys (*this ); return true ; });
354345
355346 events.insert (" rdb_import" ,
356- [this ]() { m_operations->importKeysFromRdb (*this ); });
347+ [this ]() { m_operations->importKeysFromRdb (*this ); return true ; });
357348
358- events.insert (" ttl" , [this ]() { m_operations->setTTL (*this ); });
349+ events.insert (" ttl" , [this ]() { m_operations->setTTL (*this ); return true ; });
359350
360351 return events;
361352}
0 commit comments