CString CDlgVidSeek::GetDuration()
{
	if (m_seek == NULL)
		return "00:00/00:00";

	LONGLONG cur, stop;

	m_seek->GetPositions (&cur, &stop);

	
	ULONG nTotalMS = (ULONG) (cur / 10000); 
	int nSeconds = nTotalMS / 1000;
	
	nSeconds %= 60;

	CString str1, str2;
	BOOL bH = FALSE;

	str2 = DurationToString (m_llDuration, &bH);
	str1 = DurationToString (cur, &bH);

	CString strDuration;
	strDuration.Format ("%s/%s", str1, str2);

	return strDuration;
}
void CDurationComboBox::SetVal(double Val)
{
	CString	s(DurationToString(Val));
	int	iItem = FindStringExact(0, s);
	if (iItem >= 0)
		SetCurSel(iItem);
	else
		SetWindowText(s);	// order matters
	m_Duration = Val;
}
示例#3
0
void StatisticWindow::saveToCSV(const QVector<sStatisticItem*> &items,  const QString& FileName)
{
    QFile outputFile(FileName);
    outputFile.open(QIODevice::WriteOnly);

    if(!outputFile.isOpen()){
        qDebug() << "Error: unable to open" << FileName << "for output";
        return;
    }

    QTextStream outStream(&outputFile);

    for (int i = 0; i<items.size(); i++)
        outStream << items[i]->Name << "," << items[i]->TotalTime  << "," << DurationToString(items[i]->TotalTime) << "," << QString::number(items[i]->NormalValue*100,'f',2) << "\r\n";

    outputFile.close();
}
示例#4
0
void StatisticWindow::rebuild(QDate from, QDate to)
{
    QDateTime statStart(from);
    QDateTime statEnd(to.addDays(1));

    //prepare containers
    m_Uncategorized.TotalTime = 0;
    m_Uncategorized.NormalValue = 0;
    m_Uncategorized.Name = tr("Uncategorized");
    m_Uncategorized.Color = Qt::gray;
    m_Categories.resize(m_DataManager->categoriesCount());
    for (int i = 0; i<m_Categories.size(); i++){
        m_Categories[i].TotalTime = 0;
        m_Categories[i].NormalValue = 0;
        m_Categories[i].Name = m_DataManager->categories(i)->name;
        m_Categories[i].Color = m_DataManager->categories(i)->color;
    }

    m_Applications.resize(m_DataManager->applicationsCount());
    for (int i = 0; i<m_Applications.size(); i++){
        sAppInfo* app = m_DataManager->applications(i);
        m_Applications[i].TotalTime = 0;
        m_Applications[i].NormalValue = 0;
        m_Applications[i].Name = app->activities[0].name;
        m_Applications[i].Color = Qt::white;
        m_Applications[i].childs.resize(app->activities.size());
        for (int j = 0; j<m_Applications[i].childs.size(); j++){
            m_Applications[i].childs[j].TotalTime = 0;
            m_Applications[i].childs[j].NormalValue = 0;
            m_Applications[i].childs[j].Name = app->activities[j].name;
            m_Applications[i].childs[j].Color = Qt::white;
        }
    }

    //calculation
    int TotalTime = 0;
    for (int i = 0; i<m_Applications.size(); i++){
        const sAppInfo* app = m_DataManager->applications(i);
        for (int activity = 0; activity<app->activities.size(); activity++){
            const sActivityInfo* ainfo = &app->activities[activity];
            for (int j = 0; j<ainfo->periods.size(); j++){
                QDateTime start = ainfo->periods[j].start;
                QDateTime end = ainfo->periods[j].start.addSecs(ainfo->periods[j].length);
                if (end>statStart && start<statEnd){
                    if (start<statStart)
                        start = statStart;
                    if (end>statEnd)
                        end = statEnd;
                    int duration = start.secsTo(end);
                    TotalTime+=duration;
                    m_Applications[i].TotalTime+=duration;
                    m_Applications[i].childs[activity].TotalTime+=duration;
                    int cat = ainfo->categories[ainfo->periods[j].profileIndex].category;
                    if (cat==-1)
                        m_Uncategorized.TotalTime+=duration;
                    else
                        m_Categories[cat].TotalTime+=duration;
                }
                if (start>statEnd || end>statEnd)
                    break;
            }
        }
    }

    //calculate normalized values
    if (TotalTime>0){
        m_Uncategorized.NormalValue = (float)m_Uncategorized.TotalTime/TotalTime;
        for (int i = 0; i<m_Categories.size(); i++)
            m_Categories[i].NormalValue = (float)m_Categories[i].TotalTime/TotalTime;

        for (int i = 0; i<m_Applications.size(); i++){
            m_Applications[i].NormalValue = (float)m_Applications[i].TotalTime/TotalTime;
            for (int j = 0; j<m_Applications[i].childs.size(); j++)
                m_Applications[i].childs[j].NormalValue = (float)m_Applications[i].childs[j].TotalTime/TotalTime;
        }
    }

    qSort( m_Categories.begin(), m_Categories.end(), lessThan );

    ui->widgetDiagram->setTotalTime(TotalTime);
    ui->widgetDiagram->update();


    //fill applications widget
    ui->treeWidgetApplications->setSortingEnabled(false);
    ui->treeWidgetApplications->clear();
    for (int i = 0; i<m_Applications.size(); i++){
        if (m_Applications[i].TotalTime>0){
            QTreeWidgetItem* item = new QTreeWidgetItem();
            item->setText(0,m_Applications[i].Name);
            item->setData(0,Qt::UserRole,i);
            item->setText(1,DurationToString(m_Applications[i].TotalTime));
            item->setText(2,fixSize(QString::number(m_Applications[i].NormalValue*100,'f',2),5)+"%");
            ui->treeWidgetApplications->addTopLevelItem(item);
            for (int j = 0; j<m_Applications[i].childs.size(); j++){
                if (m_Applications[i].childs[j].TotalTime>0){
                    QTreeWidgetItem* aitem = new QTreeWidgetItem();
                    QString childName = m_Applications[i].childs[j].Name;
                    if (j==0)
                        childName+=tr("(default)");
                    aitem->setText(0,childName);
                    aitem->setData(0,Qt::UserRole,i);
                    aitem->setData(0,Qt::UserRole+1,j);
                    aitem->setText(1,DurationToString(m_Applications[i].childs[j].TotalTime));
                    aitem->setText(2,fixSize(QString::number(m_Applications[i].childs[j].NormalValue*100,'f',2),5)+"%");
                    item->addChild(aitem);
                }
            }

        }
    }
    ui->treeWidgetApplications->setSortingEnabled(true);
}
示例#5
0
void cStatisticDiagramWidget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event)
    QPainter painter( this );
    painter.setPen( QPen( Qt::black, 1 ) );

    if (m_TotalTime==0 || m_Categories==NULL || m_Uncategorized==NULL){
        painter.drawText(0,0,this->width(),this->height(),Qt::AlignCenter | Qt::TextSingleLine,tr("NO DATA"));
    }
    else{
        float secondsInPixel = (float)m_TotalTime/height();
        int miscTotal = 0;
        int shift = 0;
        if (m_Uncategorized->TotalTime>0 && m_Uncategorized->TotalTime<secondsInPixel)
            miscTotal=m_Uncategorized->TotalTime;
        for (int i = 0; i<m_Categories->size(); i++){
            const sStatisticItem& item = m_Categories->at(i);
            if (item.TotalTime>0){
                if ((float)item.TotalTime/secondsInPixel<2){
                  miscTotal+=item.TotalTime;
                }
                else{
                    int catHeight = (float)item.TotalTime/secondsInPixel;
                    painter.setBrush(QBrush(item.Color));
                    QRectF r(0,shift,width()-1,catHeight);
                    painter.drawRect(r);
                    if (catHeight>20){
                        painter.drawText(r,Qt::AlignCenter | Qt::TextSingleLine,item.Name+"["+DurationToString(item.TotalTime)+"]["+QString::number(item.NormalValue*100,'f',2)+"%]");
                    }
                    shift+=catHeight;
                }
            }
        }

        if (m_Uncategorized->TotalTime>0 && m_Uncategorized->TotalTime>=secondsInPixel){
            int catHeight = (float)m_Uncategorized->TotalTime/secondsInPixel;
            painter.setBrush(QBrush(m_Uncategorized->Color));
            QRectF r(0,shift,width()-1,catHeight);
            painter.drawRect(r);
            if (catHeight>20){
                painter.drawText(r,Qt::AlignCenter | Qt::TextSingleLine,m_Uncategorized->Name+"["+DurationToString(m_Uncategorized->TotalTime)+"]["+QString::number(m_Uncategorized->NormalValue*100,'f',2)+"%]");
            }
            shift+=catHeight;
        }

        int catHeight = height()-1-miscTotal;
        if (catHeight>1){
            painter.setBrush(QBrush(Qt::white));
            QRectF r(0,shift,width()-1,catHeight);
            painter.drawRect(r);
            if (catHeight>20){
                painter.drawText(r,Qt::AlignCenter | Qt::TextSingleLine,tr("Other categories")+"["+DurationToString(miscTotal)+"]");
            }
        }

    }

}