diff --git a/saoriview.cpp b/saoriview.cpp index 8feed55..790101e 100644 --- a/saoriview.cpp +++ b/saoriview.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include QList SaoriView::m_viewList; @@ -50,6 +51,11 @@ if (saoriaccount) { connect(saoriaccount,&SaoriAccount::apiData,this,&SaoriView::recived); saoriaccount->getTimelineData(view); + connect(ui->scrollArea->verticalScrollBar(),&QScrollBar::valueChanged,this,[=](int p){ + if (ui->scrollArea->verticalScrollBar()->maximum() == p) { + saoriaccount->getTimelineData(view); + } + }); } } @@ -155,10 +161,24 @@ if (timeline != m_viewname) return; QJsonArray json = QJsonDocument::fromJson(data).array(); for (auto j:json) { - auto entry = new SaoriViewEntry(j.toObject()["id"].toInt(),ui->scrollAreaWidgetContents); - connect(entry,&SaoriViewEntry::anchorClicked,this,&SaoriView::linkClicked); + int i = 0; + SaoriViewEntry *entry = nullptr; + for(;m_entries.count() > i;i ++) { + if (m_entries.at(i)->id() == j.toObject()["id"].toString().toLong()) { + entry = m_entries.at(i); + qDebug() << "update"; + break; + } + if (m_entries.at(i)->id() < j.toObject()["id"].toString().toLong()) break; + } + if (entry == nullptr) { + qDebug() << j.toObject()["id"].toString().toLong(); + entry = new SaoriViewEntry(j.toObject()["id"].toString().toLong(),ui->scrollAreaWidgetContents); + connect(entry,&SaoriViewEntry::anchorClicked,this,&SaoriView::linkClicked); + m_entries.insert(i,entry); + qobject_cast(ui->scrollAreaWidgetContents->layout())->insertWidget(i,entry); + } entry->setContent(statusParser(j.toObject())); - ui->scrollAreaWidgetContents->layout()->addWidget(entry); } }