1 #pragma once
2 #include "abstractnamespaceitem.h"
3 
4 namespace ConnectionsTree {
5 
6 class ServerItem;
7 
8 class DatabaseItem : public AbstractNamespaceItem {
9  public:
10   DatabaseItem(unsigned int index, int keysCount,
11                QSharedPointer<Operations> operations,
12                QWeakPointer<TreeItem> parent, Model& model);
13 
14   ~DatabaseItem();
15 
16   QByteArray getName() const override;
17 
18   QByteArray getFullPath() const override;
19 
20   QString getDisplayName() const override;
21 
type()22   QString type() const override { return "database"; }
23 
24   bool isEnabled() const override;
25 
26   QVariantMap metadata() const override;
27 
28   void setMetadata(const QString&, QVariant) override;
29 
30   void getMemoryUsage(std::function<void(qlonglong)> callback) override;
31 
32   void reload(std::function<void()> callback = std::function<void()>());
33 
34  protected:
35   void loadKeys(std::function<void()> callback = std::function<void()>(),
36                 bool partialReload=false);
37   void unload(bool notify = true);
38   void performLiveUpdate();
39   void filterKeys(const QRegExp& filter);
40   void resetFilter();
41 
42   QHash<QString, std::function<void()>> eventHandlers() override;
43 
44  private:
45   QSharedPointer<QTimer> liveUpdateTimer();
46   bool isLiveUpdateEnabled() const;
47   QVariantList filterHistoryTop10() const;
48 
49  private:
50   unsigned int m_keysCount;
51   QSharedPointer<QTimer> m_liveUpdateTimer;
52 };
53 
54 }  // namespace ConnectionsTree
55