void FeedReaderFeedItem::toggle()
{
    mParent->lockLayout(this, true);

    if (ui->expandFrame->isHidden()) {
        ui->expandFrame->show();
        ui->expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png")));
        ui->expandButton->setToolTip(tr("Hide"));

        setMsgRead();
    } else {
        ui->expandFrame->hide();
        ui->expandButton->setIcon(QIcon(QString(":/images/edit_add24.png")));
        ui->expandButton->setToolTip(tr("Expand"));
    }

    mParent->lockLayout(this, false);
}
void FeedReaderFeedItem::doExpand(bool open)
{
	if (mParent) {
		mParent->lockLayout(this, true);
	}

	if (open) {
		ui->expandFrame->show();
		ui->expandButton->setIcon(QIcon(QString(":/images/edit_remove24.png")));
		ui->expandButton->setToolTip(tr("Hide"));

		setMsgRead();
	} else {
		ui->expandFrame->hide();
		ui->expandButton->setIcon(QIcon(QString(":/images/edit_add24.png")));
		ui->expandButton->setToolTip(tr("Expand"));
	}

	emit sizeChanged(this);

	if (mParent) {
		mParent->lockLayout(this, false);
	}
}
void FeedReaderFeedItem::readAndClearItem()
{
    setMsgRead();
    removeItem();
}
void CDoodChatManagerModel::addHistoryMsgToListView(MsgList msgList)
{
    qDebug()<<Q_FUNC_INFO<<"msg size:"<<msgList.size();
    int len = msgList.size();
    bool isUpdate = false;
    if(msgList.size() <= 0){
        return;
    }

    for(int i = 0; i<len;++i){

        Msg msg = msgList.at(i);
        if(/*msg.msgtype.toInt() == MSG_TYPE_IMG || */msg.fromid =="0"||msg.fromid == ""){
            continue;
        }
        if(msg.localid == "" ||msg.localid == "0"){
            msg.localid = createLocalId();
        }

        if(msg.msgtype.toInt() == MEDIA_MSG_REVOKE && msgIsExitById(msg.revokeMsgId)){
            QStringList msgs;
            msgs.push_back(msg.revokeMsgId);
            emit deleteMessage(id(),msgs);
            removeItemByMsgId(msg.revokeMsgId);
        }

        if(!m_pChatMap.contains(msg.localid)&&!msgIsExitById(msg.msgid)) {

            QDateTime msgDate = QDateTime::fromString(msg.time, "yyyy-MM-dd hh:mm:ss");
            bool bShow = isJudageShowTime(msgDate);
            isUpdate = true;
            qDebug()<< Q_FUNC_INFO<<"msgTime:"<<msg.time;
            CDoodChatItem *pChatItem = new CDoodChatItem(this);
            pChatItem->setLocalId(msg.localid);
            pChatItem->setMsgType(msg.msgtype);
            pChatItem->setActiveType(msg.activeType);
            pChatItem->setMsgId(msg.msgid);
            pChatItem->setTargetId(msg.targetid);
            pChatItem->setFromId(msg.fromid);
            pChatItem->setToId(msg.toid);
            pChatItem->setName(msg.name);
            pChatItem->setTime(msgDate);
            pChatItem->setShowTime(bShow);
            pChatItem->setLoading(false);
            pChatItem->setContactThumbAvatar(msg.thumb_avatar);
            pChatItem->setIsMyselft(mAccountUserId == msg.fromid);
            if(msg.msgtype.toInt() == MSG_TYPE_FILE){
                pChatItem->setFileSize(msg.f_size.toLongLong());
                pChatItem->setProgress(0);
                pChatItem->setThumbAvatar(msg.f_url);
                pChatItem->setTar_thumbAvatar(msg.encrypt_user);
                pChatItem->setTextMsg(msg.filename);
                pChatItem->setBody(msg.encrypt_key);
                pChatItem->setFilePath("");
                pChatItem->mFileUrl = msg.f_url;
            }
            else if(msg.msgtype.toInt() == MSG_TYPE_IMG){
                if(msg.body != ""&& fileExistAtLocal(msg.body)){
                    msg.body = "file://"+msg.body;
                }else{
                    msg.body = "qrc:/res/control/defaultimage.png";
                }
                pChatItem->setBody(msg.body);
                pChatItem->setTar_thumbAvatar(msg.thumb_url);
                pChatItem->setTextMsg(msg.main_url);
                pChatItem->setBodyBig(msg.main_url);
                pChatItem->mImageMainUrl = msg.main_url;
                pChatItem->mImageThumbUrl = msg.thumb_url;
                pChatItem->setEncrypt_key(msg.encrypt_key);

            }else if(msg.msgtype.toInt() == MEDIA_MSG_REVOKE){
                pChatItem->setMsgType(QString::number(MSG_TYPE_TIP));
                if(msg.fromid == mAccountUserId){
                    pChatItem->setBody("您撤回了一条消息");
                }else{
                    pChatItem->setBody(msg.body+"撤回了一条消息");
                }
            }
            else{
                pChatItem->setBody(msg.body);
            }

            //addItem(pChatItem);
            qint64 pos = indexOfNewItem(pChatItem->time());
            if(pos>=0 &&pos<= m_pChatMap.size()){
                insertItem(pos,pChatItem);
            }

            m_pChatMap[msg.localid] = pChatItem;
            updateItemNameAndAvatar(msg.localid,msg.fromid);
            pChatItem->mEnkey = msg.encrypt_key;
            pChatItem->mEnkeyUser = msg.encrypt_user;
            if(msg.msgtype.toInt() == MSG_TYPE_IMG){
                if(msg.body == "qrc:/res/control/defaultimage.png"|| !fileExistAtLocal(msg.body)){
                    pChatItem->setLoading(true);
                    emit downloadImage(id(),msg.localid,msg.thumb_url,msg.encrypt_key);
                }
            }
        }
    }
    if(isUpdate){
        emit updateDataFinished();
    }
    if(_list->count()>0){
        QString msgid;
        msgid=qobject_cast<CDoodChatItem*>(_list->at(_list->count()-1))->msgId();
        emit setMsgRead(msgid);
    }
}