Example #1
0
void StatisticsWidget::renderData() {
  FUNCTION

  QString view = ui->viewCB->currentText();
  QString groupBy = ui->groupByCB->currentText();
  QDateTime fromDT = ui->fromDTE->dateTime();
  QDateTime toDT = ui->toDTE->dateTime();

  QList<KeyPress*> keyPressesAll = DesktopService::_instance->server->getKeyPresses(_user);
  QList<KeyPress*> kpqs;
  for(qint32 i = 0; i < keyPressesAll.size(); ++i) {
    KeyPress* keyPress = keyPressesAll.at(i);
    if((keyPress->start() >= fromDT) && (keyPress->start() <= toDT))
      kpqs.push_back(keyPress);
  }

  if(view == "All") {
    ui->groupByCB->setVisible(false);
    ui->statisticsTW->setColumnCount(5);
    ui->statisticsTW->setHorizontalHeaderLabels(QStringList() << "Computer" << "Application" << "Start" << "Duration" << "Keys");    ui->statisticsTW->setRowCount(kpqs.size());
    for(qint32 i = 0; i < kpqs.size(); ++i) {
      KeyPress* keyPress = kpqs.at(i);
      Computer* computer = QDjangoQuerySet<Computer>().get(QDjangoWhere("id", QDjangoWhere::Equals, keyPress->computer_id()));
      QTableWidgetItem* item0 = new QTableWidgetItem(computer->ip());
      QTableWidgetItem* item1 = new QTableWidgetItem(keyPress->application());
      QTableWidgetItem* item2 = new QTableWidgetItem(keyPress->start().toString());
      QTableWidgetItem* item3 = new QTableWidgetItem(QString::number(keyPress->duration()));
      QTableWidgetItem* item4 = new QTableWidgetItem(keyPress->keys().join(" "));

      ui->statisticsTW->setItem(i, 0, item0);
      ui->statisticsTW->setItem(i, 1, item1);
      ui->statisticsTW->setItem(i, 2, item2);
      ui->statisticsTW->setItem(i, 3, item3);
      ui->statisticsTW->setItem(i, 4, item4);
    }
  } else {
    ui->groupByCB->setVisible(true);
    ui->statisticsTW->setColumnCount(2);
    ui->statisticsTW->setHorizontalHeaderLabels(QStringList() << groupBy << "Total duration");
    QMap<QString, qint32> groups;
    for(qint32 i = 0; i < kpqs.size(); ++i) {
      KeyPress* keyPress = kpqs.at(i);
      if(groupBy == "Computer") {
        Computer* computer = QDjangoQuerySet<Computer>().get(QDjangoWhere("id", QDjangoWhere::Equals, keyPress->computer_id()));
        groups[computer->ip()] += keyPress->duration();
      } else if(groupBy == "Application") {
        groups[keyPress->application()] += keyPress->duration();
      }
    }

    QList<QString> keys = groups.keys();
    ui->statisticsTW->setRowCount(keys.size());
    for(qint32 i = 0; i < keys.size(); ++i) {
      QString key = keys.at(i);
      QTableWidgetItem* item0 = new QTableWidgetItem(key);
      QTableWidgetItem* item1 = new QTableWidgetItem(QString::number(groups.value(key)));

      ui->statisticsTW->setItem(i, 0, item0);
      ui->statisticsTW->setItem(i, 1, item1);
    }
  }
}