You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.4 KiB
54 lines
1.4 KiB
#pragma once |
|
|
|
#include <QWidget> |
|
#include <QListView> |
|
#include <QTextEdit> |
|
#include <QTimer> |
|
#include <QMenu> |
|
#include <QVector> |
|
|
|
class MemberListModel; |
|
class DbManager; |
|
|
|
struct DetailAddress { |
|
int family; |
|
int protocol; |
|
QByteArray addr; |
|
int port; |
|
}; |
|
|
|
class AccountList : public QWidget { |
|
Q_OBJECT |
|
public: |
|
explicit AccountList(DbManager* db = nullptr, QWidget *parent = nullptr); |
|
|
|
void setChannel(const QString& channelId); |
|
void refresh(); |
|
|
|
private slots: |
|
void onMemberClicked(const QModelIndex& index); |
|
void onMemberDoubleClicked(const QModelIndex& index); |
|
void onMemberContextMenu(const QPoint& pos); |
|
void onDetailTimerTick(); |
|
|
|
private: |
|
void showMemberDetail(quint64 nodeId); |
|
void updateDetailDisplay(); |
|
static QString relativeTimeStr(qint64 timestamp); |
|
static QString addrStr(const void* addr, int family); |
|
|
|
QListView *m_listView; |
|
MemberListModel *m_model; |
|
DbManager *m_db; |
|
QTextEdit *m_detailText; |
|
QTimer *m_refreshTimer; |
|
QTimer *m_detailTimer; |
|
QString m_channelId; |
|
|
|
quint64 m_detailNodeId = 0; |
|
QString m_detailName; |
|
bool m_detailOnline = false; |
|
qint64 m_detailLastSeen = 0; |
|
qint64 m_detailCreated = 0; |
|
QVector<DetailAddress> m_detailAddrs; |
|
};
|
|
|