Commit 77aa13b6 authored by Mathieu Valois's avatar Mathieu Valois
Browse files

merge more-charts

parents 800f1dfb d533f775
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -87,9 +87,11 @@ private:
    QMessageBox waitBox;
    QVBoxLayout * layoutCharset = nullptr;
    QVBoxLayout * layoutLength = nullptr;
    QVBoxLayout * layoutSimple = nullptr;
    QVBoxLayout * layoutAdvanced = nullptr;
    ProgressThread* progressThread = nullptr;
    int firstTime=1;
    double initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, double & percentageTotal, double & percentageSecurity);
    double initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, QPieSeries* pieSimple, QPieSeries* pieAdvanced, double & percentageTotal, double & percentageSecurity);
};


+2 −0
Original line number Diff line number Diff line
@@ -196,6 +196,8 @@ public:
	inline int getNbThreads() const { return nbThread; }
	inline const IntOccurrence& getStatsLength() const { return stats_length; }
	inline const StringOccurrence& getStatsCharsets() const { return stats_charactersets; }
	inline const StringOccurrence& getStatsSimple() const { return stats_simplemasks; }
	inline const StringOccurrence& getStatsAdvanced() const { return stats_advancedmasks; }
	inline const thread_data* getThreadsData() const { return td; }

private:
+66 −20
Original line number Diff line number Diff line
@@ -174,6 +174,7 @@ void MainWindow::startGame() {

    delete layoutLength;
    delete layoutCharset;
    delete layoutSimple;

    WorkerThread *workerThread = new WorkerThread(stats);
    connect(workerThread, SIGNAL(resultReady()), this, SLOT(handleResults()));
@@ -198,7 +199,7 @@ void MainWindow::disableWithCount()
    ui->withcountButton->setChecked(false);
}

double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, double & percentageTotal, double & percentageSecurity) {
double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCharset, QPieSeries* pieSimple, QPieSeries* pieAdvanced, double & percentageTotal, double & percentageSecurity) {
    double total = stats.getTotalCounter();
    double filter = stats.getTotalFilter();
    percentageTotal = percentage(filter, total);
@@ -246,9 +247,65 @@ double MainWindow::initGraphicalStats(QBarSeries * barLength, QPieSeries * pieCh
        }
    }
    pieCharset->append("Other charsets", nbHideC);

    /* SIMPLE PIECHART */
    multimap<uint64_t, string> reverseS = flip_map<string>(stats.getStatsSimple());
    int top_simple = 0;
    uint64_t nbHideS = 0;

    MapIterator<uint64_t, string> itS;
    for(itS = reverseS.end(); itS != reverseS.begin(); itS--) {
        if (itS == reverseS.end()) continue;
        top_simple++;
        if (top_simple <= 10) {
            pieSimple->append(QString::fromStdString(itS->second), itS->first);
        } else {
            nbHideS += itS->first;
        }
    }
    pieSimple->append("Other Masks", nbHideS);

    /* ADVANCED PIECHART */
    multimap<uint64_t, string> reverseA = flip_map<string>(stats.getStatsAdvanced());
    int top_advanced = 0;
    uint64_t nbHideA = 0;

    MapIterator<uint64_t, string> itA;
    for(itA = reverseA.end(); itA != reverseA.begin(); itA--) {
        if (itA == reverseA.end()) continue;
        top_advanced++;
        if (top_advanced <= 10) {
            pieAdvanced->append(QString::fromStdString(itA->second), itA->first);
        } else {
            nbHideA += itA->first;
        }
    }
    pieAdvanced->append("Other Masks", nbHideA);
    return maxPercLength;
}

QVBoxLayout* drawPieChart(QPieSeries* qps, QVBoxLayout* layout, const string& title){
    qps->setLabelsVisible();

    QPieSlice *slice = qps->slices().at(0);
    slice->setExploded();
    slice->setLabelVisible();
    slice->setPen(QPen(Qt::darkGreen, 2));
    slice->setBrush(Qt::green);

    QChart *chart = new QChart();
    chart->addSeries(qps);
    chart->setTitle(QString::fromStdString(title));
    chart->legend()->hide();

    QChartView *chartView = new QChartView(chart);
    chartView->setRenderHint(QPainter::Antialiasing);

    layout = new QVBoxLayout();
    layout->addWidget(chartView);
    return layout;
}

void MainWindow::handleResults()
{

@@ -278,9 +335,11 @@ void MainWindow::handleResults()

    QBarSeries * barLength = new QBarSeries();
    QPieSeries * pieCharset = new QPieSeries();
    QPieSeries * pieSimple = new QPieSeries();
    QPieSeries * pieAdvanced = new QPieSeries();
    double percentageTotal, percentageSecurity, maxPercLength;

    maxPercLength = initGraphicalStats(barLength, pieCharset, percentageTotal, percentageSecurity);
    maxPercLength = initGraphicalStats(barLength, pieCharset, pieSimple, pieAdvanced, percentageTotal, percentageSecurity);

    /* HISTOGRAM FOR LENGTH */
    QChart *chartL = new QChart();
@@ -302,26 +361,13 @@ void MainWindow::handleResults()


    /* PIECHART FOR CHARSET */
    pieCharset->setLabelsVisible();

    QPieSlice *slice = pieCharset->slices().at(0);
    slice->setExploded();
    slice->setLabelVisible();
    slice->setPen(QPen(Qt::darkGreen, 2));
    slice->setBrush(Qt::green);

    QChart *chartC = new QChart();
    chartC->addSeries(pieCharset);
    chartC->setTitle("Charset");
    chartC->legend()->hide();

    QChartView *chartViewC = new QChartView(chartC);
    chartViewC->setRenderHint(QPainter::Antialiasing);
    ui->charsetWidget->setLayout(drawPieChart(pieCharset, layoutCharset, "Charset"));

    layoutCharset = new QVBoxLayout();
    layoutCharset->addWidget(chartViewC);
    ui->charsetWidget->setLayout(layoutCharset);
    /* PIECHART FOR SIMPLE */
    ui->simpleMasksWidget->setLayout(drawPieChart(pieSimple, layoutSimple, "Simple masks"));

    /* PIECHART FOR ADVANCED */
    ui->advancedMasksWidget->setLayout(drawPieChart(pieAdvanced, layoutAdvanced, "Advanced masks"));

    /* LABELS */

+22 −16
Original line number Diff line number Diff line
@@ -303,40 +303,46 @@
        <property name="frameShadow">
         <enum>QFrame::Raised</enum>
        </property>
        <layout class="QVBoxLayout" name="verticalLayout_3" stretch="0,0,1,1,0">
         <item>
          <widget class="QLabel" name="AnalyzedLabel">
        <layout class="QGridLayout" name="gridLayout" rowstretch="0,0,1,1,0">
         <item row="2" column="0">
          <widget class="QWidget" name="lengthWidget" native="true"/>
         </item>
         <item row="4" column="0">
          <widget class="QLabel" name="resultLabel">
           <property name="text">
            <string/>
           </property>
          </widget>
         </item>
         <item>
         <item row="1" column="0">
          <widget class="QLabel" name="securityLabel">
           <property name="text">
            <string/>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QWidget" name="lengthWidget" native="true">
         <item row="0" column="0">
          <widget class="QLabel" name="AnalyzedLabel">
           <property name="text">
            <string/>
           </property>
          </widget>
         </item>
         <item row="3" column="1">
          <widget class="QWidget" name="advancedMasksWidget" native="true"/>
         </item>
         <item row="2" column="1">
          <widget class="QWidget" name="charsetWidget" native="true">
           <property name="minimumSize">
            <size>
             <width>800</width>
             <width>500</width>
             <height>0</height>
            </size>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QWidget" name="charsetWidget" native="true"/>
         </item>
         <item>
          <widget class="QLabel" name="resultLabel">
           <property name="text">
            <string/>
           </property>
          </widget>
         <item row="3" column="0">
          <widget class="QWidget" name="simpleMasksWidget" native="true"/>
         </item>
        </layout>
       </widget>