void UserStatusUpdate::SetCommentsCount(quint64 count)
{
    if (m_CommentsCount != count) {
        m_CommentsCount = count;
        emit commentsCountChanged();
    }
}
Exemple #2
0
void Entry::_setCommentsCount(int tc)
{
    _commentsCount = tc;
    emit commentsCountChanged();
}
Exemple #3
0
void Entry::init(const QJsonObject& data)
{
    _initBase(data);

    _createdAt       = Tasty::parseDate(data.value("created_at").toString());
    _url             = data.value("entry_url").toString();
    _isVotable       = data.value("is_voteable").toBool();
    _isFavoritable   = data.value("can_favorite").toBool(Tasty::instance()->isAuthorized());
    _isFavorited     = data.value("is_favorited").toBool();
    _isWatchable     = data.value("can_watch").toBool();
    _isWatched       = data.value("is_watching").toBool();
    _isPrivate       = data.value("is_private").toBool();
    _isFixed         = data.value("fixed_state").toString() == "fixed";

    auto fixDate = data.value("fixed_up_at").toString();
    _fixedAt         = QDateTime::fromString(fixDate.left(19), "yyyy-MM-ddTHH:mm:ss");

    auto me = Tasty::instance()->me();
    auto isMy = me && _author->id() == me->id();
    _isDeletable     = data.value("can_delete").toBool(isMy);
    _isEditable      = data.value("can_edit").toBool(isMy);

    auto tlogData = data.value("tlog").toObject();
    if (_tlog && tlogData.contains("slug"))
        _tlog->init(tlogData);
    else
        _tlog        = new Tlog(tlogData, this);

//    if (data.contains("rating"))
//    {
//        if (_rating)
//
//        else
//            _rating  = new Rating(data.value("rating").toObject(), this);
//    }
    if (!_rating)
        _rating = new Rating(this);

    if (isLoading())
        _rating->init(data.value("rating").toObject());
    else
        _rating->setId(_id);

    _commentsCount   = data.value("comments_count").toInt();

    if (data.contains("title_truncated"))
        _truncatedTitle = data.value("title_truncated").toString();
    else if (_truncatedTitle.isEmpty())
        _truncatedTitle = Tasty::truncateHtml(_title, 100);

    if (data.contains("text_truncated"))
        _truncatedText  = data.value("text_truncated").toString();
    else if (_truncatedText.isEmpty())
        _truncatedText = Tasty::truncateHtml(_text, 300);

    _source          = data.value("source").toString(); // quote author

    delete _media;
    _media           =  _type == "video" ? new Media(data.value("iframely").toObject(), this)
                                         : nullptr; // music?
//    _imagePreview    = data.value("preview_image").toObject();

    QRegularExpression wordRe("\\s[^\\s]+\\s");
    QRegularExpression tagRe("<[^>]*>");
//    QRegularExpression wordRe("\\b\\w+\\b");
    auto content = _title + _text;
    _wordCount   = content.remove(tagRe).count(wordRe);

    _correctHtml();

    pTasty->dataCache()->addEntry(sharedFromThis());

    _commentsData    = data.value("comments").toArray();
    if (_commentsModel && _commentsModel->entryId() == _id)
    {
        _commentsModel->init(_commentsData, _commentsCount);
        _commentsData = QJsonArray();
    }

    auto imageAttach = data.value("image_attachments").toArray();
    delete _attachedImagesModel;
    _attachedImagesModel = new AttachedImagesModel(&imageAttach, this);

    _rating->reCalcBayes();

    emit updated();
    emit commentsCountChanged();
}