ishowcourses.cpp 9.34 KB
#include "ishowcourses.h"
#include "ui_ishowcourses.h"
#include <QDebug>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QScriptEngine>
#include <QScriptValue>
#include <QFile>
#include "iwebRequest.h"


QJsonArray objarray;
QJsonArray pptarray;
int showPptNum = 0;
QTreeWidgetItem * itemChoose;

IshowCourses::IshowCourses(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::IshowCourses)
{
    ui->setupUi(this);
    ui->treeWidget->setColumnCount(1); //设置列数
    ui->treeWidget->header()->setStretchLastSection(false);
    ui->treeWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

    connect(ui->treeWidget,&QTreeWidget::itemClicked,this,&IshowCourses::slotOpenCourses);
    connect(IWebRequest::Instance(), SIGNAL(response(int,int,QString,QString)), this, SLOT(updateCoursesPpt(int,int,QString,QString)));

    QFile source(":Images/style/styleMsg.html");
    source.open(QIODevice::ReadOnly);
    ui->webView->setHtml(QString::fromUtf8(source.readAll().constData()));
    source.close();

}

void IshowCourses::slotOpenCourses(QTreeWidgetItem* item1, int columns)
{
    static int lastRowNum = -1;
    if(ui->treeWidget->currentItem()->parent() == NULL || ui->treeWidget->currentItem()->parent()->parent() == NULL)
    {
        qDebug("CMQ choose is root columns = %d",ui->treeWidget->currentIndex().row());
    }
    else
    {
        int rowNum = ui->treeWidget->currentIndex().row();
        if(ui->treeWidget->currentItem()->parent()->parent() != NULL /*&& lastRowNum != rowNum*/)
        {
            int root_num = 0;
            lastRowNum = rowNum;
            root_num = ui->treeWidget->indexOfTopLevelItem(item1->parent()->parent());
            int parent_row=item1->parent()->parent()->indexOfChild(item1->parent());
            qDebug("CMQ 111 root_num = %d parent_row = %d",root_num,parent_row);
            int CoursesId = objarray.at(root_num).toObject().find("submenu").value().toArray().at(parent_row).toObject().\
                    find("subcourse").value().toArray().at(rowNum).toObject().find("courseInfo").value().toObject().find("id").value().toDouble();
            if(itemChoose != item1)
            {
                itemChoose = item1;
                QStringList params;
                params.append(QString("%1").arg(CoursesId));
                IWebRequest::Instance()->sendRequestToServer(REQ_USER_COURSE_PPT_GET, params);
            }
//            qDebug()<<"CoursesId = "<<params.at(0);

        }
    }

}

void IshowCourses::updateCoursesPpt(int cmd, int, QString, QString result)
{
    if(cmd == REQ_USER_COURSE_PPT_GET)
    {
        QJsonParseError jsonErr;
        QJsonDocument myjsonDoc1 = QJsonDocument::fromJson(result.toLatin1(),&jsonErr);
        pptarray = myjsonDoc1.object().find("result").value().toObject().find("ppt").value().toArray();
        qDebug()<<"pptarray = "<<pptarray.at(0).toObject().find("pic").value().toObject().find("url").value().toString();
        ui->webView->load(QUrl(pptarray.at(0).toObject().find("pic").value().toObject().find("url").value().toString()));
        showPptNum = 0;
        ui->label_page->setText(QString("%1/%2").arg(showPptNum+1).arg(pptarray.size()));
    }
    else if(cmd == REQ_USER_COURSE_LIST_GET)
    {
        QTreeWidgetItem * itemFirst;
        QTreeWidgetItem * itemSecond;
        QTreeWidgetItem * itemThirdly;
        QString title;

        QJsonParseError jsonErr;
        QJsonDocument myjsonDoc1 = QJsonDocument::fromJson(result.toLatin1(),&jsonErr);
        objarray = myjsonDoc1.object().find("result").value().toObject().find("lists").value().toArray();
        ui->treeWidget->clear();
        itemChoose = NULL;
        for(int i = 0;i < objarray.count();i++)
        {
            QJsonObject jobj = objarray.at(i).toObject();
            title = jobj.find("en_title").value().toString();
            itemFirst = AddTreeRoot(title);

            QJsonArray subarray = jobj.find("submenu").value().toArray();
            ui->treeWidget->setItemExpanded(itemFirst,true);//展开
            for(int j = 0;j < subarray.count();j++)
            {
                QJsonArray subcourse = subarray.at(j).toObject().find("subcourse").value().toArray();
                title = subarray.at(j).toObject().find("en_title").value().toString() + QString(" (%1)").arg(subcourse.size());
                itemSecond = AddTreeNode(itemFirst,title);
                int num = subarray.at(j).toObject().find("pid").value().toDouble();
                for(int k = 0;k < subcourse.count();k++)
                {
                    if(num == 2)
                    {
                        title = subcourse.at(k).toObject().find("courseInfo").value().toObject().find("title").value().toString() + QString(" ") + \
                                subcourse.at(k).toObject().find("courseInfo").value().toObject().find("content").value().toString().trimmed();
                    }
                    else
                    {
                        title = subcourse.at(k).toObject().find("courseInfo").value().toObject().find("content").value().toString().trimmed();
                    }
                    title.remove("\n");
                    AddTreeNode(itemSecond,title);
                }
            }
        }
    }
}

QTreeWidgetItem * IshowCourses::AddTreeRoot(QString name)
{
    QTreeWidgetItem * item=new QTreeWidgetItem(QStringList()<<name);
    QFont mfont;
    mfont.setPointSize(10);
    mfont.setBold(true);
    item->setFont(0,mfont);
    ui->treeWidget->addTopLevelItem(item);
    return item;
}

QTreeWidgetItem * IshowCourses::AddTreeNode(QTreeWidgetItem *parent,QString name)
{
    QTreeWidgetItem * item=new QTreeWidgetItem(QStringList()<<name);
    parent->addChild(item);
//    item->setSizeHint(1,QSize(40,25));
    return item;
}

IshowCourses::~IshowCourses()
{
    delete ui;
}


void IshowCourses::onAddNoteFront()
{
    if(ui->treeWidget->currentItem()->parent() == 0)
    {
        QTreeWidgetItem *pNode = new QTreeWidgetItem;   //添加第一个父节点
        pNode->setText(0,tr("FrontFrontFrontFront"));
//        m_RootList.append(pNode);
        ui->treeWidget->insertTopLevelItem(ui->treeWidget->currentIndex().row(), pNode);
    }
    else
    {
        QTreeWidgetItem *pChildNode = new QTreeWidgetItem(QStringList(QString("ChildFront"))); //添加子节点
        ui->treeWidget->currentItem()->parent()->insertChild(ui->treeWidget->currentItem()->parent()->indexOfChild(ui->treeWidget->currentItem()), pChildNode);
    }
}
//当前节点后面添加节点:

void IshowCourses::onAddNoteNext()
{
    if(ui->treeWidget->currentItem()->parent() == 0)
    {
        QTreeWidgetItem *pNode = new QTreeWidgetItem;   //添加第一个父节点
        pNode->setText(0,tr("NextNextNextNextNext"));
//        m_RootList.append(pNode);
        ui->treeWidget->insertTopLevelItem(ui->treeWidget->currentIndex().row()+1, pNode);
    }
    else
    {
        QTreeWidgetItem *pChildNode = new QTreeWidgetItem(QStringList(QString("ChildNext"))); //添加子节点
        ui->treeWidget->currentItem()->parent()->insertChild(ui->treeWidget->currentItem()->parent()->indexOfChild(ui->treeWidget->currentItem())+1, pChildNode);
    }
}
//当前节点添加子节点:

void IshowCourses::onAddChild()
{
    QTreeWidgetItem *pChildNode = new QTreeWidgetItem(ui->treeWidget->currentItem(),QStringList(QString("aaaaaafa1"))); //添加子节点
    ui->treeWidget->currentItem()->addChild(pChildNode);
}
//删除当前节点以及子节点:

void IshowCourses::onDelNode()
{
    if(0 == ui->treeWidget->currentItem()->parent())
    {
        ui->treeWidget->currentItem()->takeChildren();
        ui->treeWidget->takeTopLevelItem(ui->treeWidget->indexOfTopLevelItem(ui->treeWidget->currentItem()));
    }
    else
    {
        ui->treeWidget->currentItem()->parent()->removeChild(ui->treeWidget->currentItem());
    }
}

void IshowCourses::showMainMaximized()
{
    ui->webView->load(QUrl(pptarray.at(showPptNum).toObject().find("pic").value().toObject().find("url").value().toString()));
//    ui->webView->resize(QSize(960,720));
    if(ui->webView->minimumWidth() == 960)
        ui->webView->setMinimumSize(QSize(638,474));
    else
        ui->webView->setMinimumSize(QSize(960,720));
    qDebug()<<"showMainMaximized = "<<ui->webView->width();
}

void IshowCourses::on_pushButton_next_clicked()
{
    if(pptarray.size() > 0)
    {
        showPptNum++;
        if(showPptNum > pptarray.size()-1)
            showPptNum = pptarray.size()-1;
        ui->webView->load(QUrl(pptarray.at(showPptNum).toObject().find("pic").value().toObject().find("url").value().toString()));
        ui->label_page->setText(QString("%1/%2").arg(showPptNum+1).arg(pptarray.size()));
    }
}

void IshowCourses::on_pushButton_last_clicked()
{
    if(pptarray.size() > 0)
    {
        showPptNum--;
        if(showPptNum < 0)
            showPptNum = 0;
        ui->webView->load(QUrl(pptarray.at(showPptNum).toObject().find("pic").value().toObject().find("url").value().toString()));
        ui->label_page->setText(QString("%1/%2").arg(showPptNum+1).arg(pptarray.size()));
    }
}

void IshowCourses::go_now_courses()
{
    if(itemChoose)
        ui->treeWidget->scrollToItem(itemChoose);

    if(objarray.size() < 1)
    {
        //获取课程列表
        QStringList paramsCourse;
        paramsCourse.append(QString("1"));
        paramsCourse.append(QString("1"));
        IWebRequest::Instance()->sendRequestToServer(REQ_USER_COURSE_LIST_GET, paramsCourse);
    }
}