mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 11:00:48 +03:00
Make the timer single shot
This commit is contained in:
parent
792011c1c9
commit
0770f6e6b5
4 changed files with 24 additions and 12 deletions
|
@ -57,6 +57,7 @@ public slots:
|
||||||
void fetchRoomAvatar(const QString &roomid, const QUrl &avatar_url);
|
void fetchRoomAvatar(const QString &roomid, const QUrl &avatar_url);
|
||||||
void initialSyncCompleted(const SyncResponse &response);
|
void initialSyncCompleted(const SyncResponse &response);
|
||||||
void syncCompleted(const SyncResponse &response);
|
void syncCompleted(const SyncResponse &response);
|
||||||
|
void syncFailed(const QString &msg);
|
||||||
void changeTopRoomInfo(const RoomInfo &info);
|
void changeTopRoomInfo(const RoomInfo &info);
|
||||||
void sendTextMessage(const QString &msg);
|
void sendTextMessage(const QString &msg);
|
||||||
void messageSent(const QString event_id, int txn_id);
|
void messageSent(const QString event_id, int txn_id);
|
||||||
|
|
|
@ -67,6 +67,7 @@ signals:
|
||||||
void getOwnProfileResponse(const QUrl &avatar_url, const QString &display_name);
|
void getOwnProfileResponse(const QUrl &avatar_url, const QString &display_name);
|
||||||
void initialSyncCompleted(const SyncResponse &response);
|
void initialSyncCompleted(const SyncResponse &response);
|
||||||
void syncCompleted(const SyncResponse &response);
|
void syncCompleted(const SyncResponse &response);
|
||||||
|
void syncFailed(const QString &msg);
|
||||||
void messageSent(const QString &event_id, const int txn_id);
|
void messageSent(const QString &event_id, const int txn_id);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
|
@ -38,6 +38,7 @@ ChatPage::ChatPage(QWidget *parent)
|
||||||
content_downloader_ = new QNetworkAccessManager(parent);
|
content_downloader_ = new QNetworkAccessManager(parent);
|
||||||
|
|
||||||
room_list_ = new RoomList(this);
|
room_list_ = new RoomList(this);
|
||||||
|
ui->sideBarMainLayout->addWidget(room_list_);
|
||||||
|
|
||||||
top_bar_ = new TopRoomBar(this);
|
top_bar_ = new TopRoomBar(this);
|
||||||
ui->topBarLayout->addWidget(top_bar_);
|
ui->topBarLayout->addWidget(top_bar_);
|
||||||
|
@ -49,8 +50,10 @@ ChatPage::ChatPage(QWidget *parent)
|
||||||
ui->contentLayout->addWidget(text_input_);
|
ui->contentLayout->addWidget(text_input_);
|
||||||
|
|
||||||
user_info_widget_ = new UserInfoWidget(ui->sideBarTopWidget);
|
user_info_widget_ = new UserInfoWidget(ui->sideBarTopWidget);
|
||||||
|
ui->sideBarTopUserInfoLayout->addWidget(user_info_widget_);
|
||||||
|
|
||||||
sync_timer_ = new QTimer(this);
|
sync_timer_ = new QTimer(this);
|
||||||
|
sync_timer_->setSingleShot(true);
|
||||||
connect(sync_timer_, SIGNAL(timeout()), this, SLOT(startSync()));
|
connect(sync_timer_, SIGNAL(timeout()), this, SLOT(startSync()));
|
||||||
|
|
||||||
connect(user_info_widget_, SIGNAL(logout()), matrix_client_, SLOT(logout()));
|
connect(user_info_widget_, SIGNAL(logout()), matrix_client_, SLOT(logout()));
|
||||||
|
@ -60,12 +63,10 @@ ChatPage::ChatPage(QWidget *parent)
|
||||||
SIGNAL(roomChanged(const RoomInfo &)),
|
SIGNAL(roomChanged(const RoomInfo &)),
|
||||||
this,
|
this,
|
||||||
SLOT(changeTopRoomInfo(const RoomInfo &)));
|
SLOT(changeTopRoomInfo(const RoomInfo &)));
|
||||||
|
|
||||||
connect(room_list_,
|
connect(room_list_,
|
||||||
SIGNAL(roomChanged(const RoomInfo &)),
|
SIGNAL(roomChanged(const RoomInfo &)),
|
||||||
view_manager_,
|
view_manager_,
|
||||||
SLOT(setHistoryView(const RoomInfo &)));
|
SLOT(setHistoryView(const RoomInfo &)));
|
||||||
|
|
||||||
connect(room_list_,
|
connect(room_list_,
|
||||||
SIGNAL(fetchRoomAvatar(const QString &, const QUrl &)),
|
SIGNAL(fetchRoomAvatar(const QString &, const QUrl &)),
|
||||||
this,
|
this,
|
||||||
|
@ -76,21 +77,22 @@ ChatPage::ChatPage(QWidget *parent)
|
||||||
this,
|
this,
|
||||||
SLOT(sendTextMessage(const QString &)));
|
SLOT(sendTextMessage(const QString &)));
|
||||||
|
|
||||||
ui->sideBarTopUserInfoLayout->addWidget(user_info_widget_);
|
|
||||||
ui->sideBarMainLayout->addWidget(room_list_);
|
|
||||||
|
|
||||||
connect(matrix_client_,
|
connect(matrix_client_,
|
||||||
SIGNAL(initialSyncCompleted(SyncResponse)),
|
SIGNAL(initialSyncCompleted(const SyncResponse &)),
|
||||||
this,
|
this,
|
||||||
SLOT(initialSyncCompleted(SyncResponse)));
|
SLOT(initialSyncCompleted(const SyncResponse &)));
|
||||||
connect(matrix_client_,
|
connect(matrix_client_,
|
||||||
SIGNAL(syncCompleted(SyncResponse)),
|
SIGNAL(syncCompleted(const SyncResponse &)),
|
||||||
this,
|
this,
|
||||||
SLOT(syncCompleted(SyncResponse)));
|
SLOT(syncCompleted(const SyncResponse &)));
|
||||||
connect(matrix_client_,
|
connect(matrix_client_,
|
||||||
SIGNAL(getOwnProfileResponse(QUrl, QString)),
|
SIGNAL(syncFailed(const QString &)),
|
||||||
this,
|
this,
|
||||||
SLOT(updateOwnProfileInfo(QUrl, QString)));
|
SLOT(syncFailed(const QString &)));
|
||||||
|
connect(matrix_client_,
|
||||||
|
SIGNAL(getOwnProfileResponse(const QUrl &, const QString &)),
|
||||||
|
this,
|
||||||
|
SLOT(updateOwnProfileInfo(const QUrl &, const QString &)));
|
||||||
connect(matrix_client_,
|
connect(matrix_client_,
|
||||||
SIGNAL(messageSent(QString, int)),
|
SIGNAL(messageSent(QString, int)),
|
||||||
this,
|
this,
|
||||||
|
@ -160,12 +162,20 @@ void ChatPage::setOwnAvatar(const QByteArray &img)
|
||||||
user_info_widget_->setAvatar(pixmap.toImage());
|
user_info_widget_->setAvatar(pixmap.toImage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChatPage::syncFailed(const QString &msg)
|
||||||
|
{
|
||||||
|
qWarning() << "Sync error:" << msg;
|
||||||
|
sync_timer_->start(sync_interval_ * 5);
|
||||||
|
}
|
||||||
|
|
||||||
void ChatPage::syncCompleted(const SyncResponse &response)
|
void ChatPage::syncCompleted(const SyncResponse &response)
|
||||||
{
|
{
|
||||||
matrix_client_->setNextBatchToken(response.nextBatch());
|
matrix_client_->setNextBatchToken(response.nextBatch());
|
||||||
|
|
||||||
/* room_list_->sync(response.rooms()); */
|
/* room_list_->sync(response.rooms()); */
|
||||||
view_manager_->sync(response.rooms());
|
view_manager_->sync(response.rooms());
|
||||||
|
|
||||||
|
sync_timer_->start(sync_interval_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatPage::initialSyncCompleted(const SyncResponse &response)
|
void ChatPage::initialSyncCompleted(const SyncResponse &response)
|
||||||
|
|
|
@ -206,7 +206,7 @@ void MatrixClient::onSyncResponse(QNetworkReply *reply)
|
||||||
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||||
|
|
||||||
if (status == 0 || status >= 400) {
|
if (status == 0 || status >= 400) {
|
||||||
qWarning() << reply->errorString();
|
emit syncFailed(reply->errorString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue