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

#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;
};