diff --git a/saoriaccount.cpp b/saoriaccount.cpp index 776a9f6..ba92539 100644 --- a/saoriaccount.cpp +++ b/saoriaccount.cpp @@ -107,13 +107,7 @@ void SaoriAccount::getTimelineData(const QString timeline, const QUrlQuery query) { - // TODO max_id、since_id、limitの処理を追加すべし。 - QUrl url; - if (timeline.left(8) == "accounts") { - url = QUrl(instance()->timelineUrl(timeline.left(8)).toString() + "/" + timeline.mid(9) + "/statuses"); - } else { - url = instance()->timelineUrl(timeline); - } + QUrl url = instance()->timelineUrl(timeline); int limit = SaoriApplication::saori()->setting()->value(SAORI_SETTING_GETLIMIT,SAORI_SETTING_GETLIMIT_DEFAULT).toInt(); if (url.isEmpty()) return; QNetworkRequest request = createHearder(); diff --git a/saoridon.cpp b/saoridon.cpp index fa03362..f4925b9 100644 --- a/saoridon.cpp +++ b/saoridon.cpp @@ -172,7 +172,16 @@ const QUrl Saoridon::timelineUrl(const QString timeline) { - return m_timelineMap[timeline]; + QStringList t = timeline.split(':'); + if (t.count() == 0) return QUrl(); + if (t[0] == "accounts") { + if (t.count() < 2) return QUrl(); + QUrl u = m_timelineMap["accounts"]; + if (t.count() == 3) u.setUrl(u.toString() + "/" + t[1] + "/" + t[2]); + else u.setUrl(u.toString() + "/" + t[1]); + return u; + } + return m_timelineMap[t[0]]; } const QUrl Saoridon::addQuery(const QUrl url, const QString key, const QString value) diff --git a/saoriview.cpp b/saoriview.cpp index d05f895..f237067 100644 --- a/saoriview.cpp +++ b/saoriview.cpp @@ -69,6 +69,10 @@ auto saoriaccount = SaoriApplication::saori()->findAccount(m_account); if (saoriaccount) { connect(saoriaccount,&SaoriAccount::apiData,this,&SaoriView::recived); + if (view.left(9) == "accounts:") { + QStringList t = view.split(':'); + if (t.count() >= 2) saoriaccount->getTimelineData(t[0] + ":" + t[1],QUrlQuery()); + } saoriaccount->getTimelineData(view,QUrlQuery()); connect(ui->scrollArea->verticalScrollBar(),&QScrollBar::valueChanged,this,[=](int p){ if (ui->scrollArea->verticalScrollBar()->maximum() == p) { @@ -168,15 +172,9 @@ QDateTime dt = QDateTime::fromString(json["created_at"].toString(),"yyyy-MM-ddTHH:mm:ss.zzzZ"); dt.setTimeSpec(Qt::UTC); - //FIXME デバッグ用。 - if (ui->header->isHidden() && (m_viewname.left(8) == "accounts")) { - ui->header->setContent(headerParser(json["account"].toObject())); - ui->header->show(); - } - result = (!json["reblog"].isNull()) ? (statusParser(json["reblog"].toObject()) + - htmlAnc("accounts:" + json["account"].toObject()["id"].toString(), + htmlAnc("accounts:" + json["account"].toObject()["id"].toString() + ":statuses", htmlDiv("reblogger",htmlHr() + htmlImg("mavatar",json["account"].toObject()["avatar"].toString()) + tr("boosted by: %1").arg(json["account"].toObject()["display_name"].toString()) @@ -205,7 +203,7 @@ QString result; if (json.isEmpty()) return QString(); result = htmlDiv("account", - htmlAnc("accounts:" + json["id"].toString(), + htmlAnc("accounts:" + json["id"].toString() + ":statuses", htmlSpan("avatar", htmlHr() + htmlImg("avatar",json["avatar"].toString())) + @@ -303,7 +301,7 @@ htmlDiv("notification_type",title + htmlHr()) + htmlDiv("created_at",tr("created at :") + dt.toLocalTime().toString()) + statusParser(json["status"].toObject()) + - htmlAnc("accounts:" + json["account"].toObject()["id"].toString(), + htmlAnc("accounts:" + json["account"].toObject()["id"].toString() + ":statuses", htmlDiv("reblogger",htmlHr() + htmlImg("mavatar",json["account"].toObject()["avatar"].toString()) + tr("%1 (@%2)").arg(json["account"].toObject()["display_name"].toString(), @@ -341,8 +339,16 @@ void SaoriView::recived(const QString timeline,const QByteArray data) { + if ((timeline.left(9) == "accounts:") && (m_viewname.left(9) == "accounts:")) { + QStringList t = timeline.split(':'); + if (t.count() == 2) { + qDebug() << data; + QJsonObject json = QJsonDocument::fromJson(data).object(); + ui->header->setContent(headerParser(json)); + ui->header->show(); + } + } if (timeline != m_viewname) return; - qDebug() << "resived " + timeline; QJsonArray json = QJsonDocument::fromJson(data).array(); for (auto j:json) { int i = 0;