From 8f67e6dee5e0b2bacde7c8af3579094d89921382 Mon Sep 17 00:00:00 2001
From: Olivier Langella <Olivier.Langella@moulon.inra.fr>
Date: Tue, 4 Apr 2017 22:27:03 +0200
Subject: [PATCH] load result dialog is OK

---
 src/CMakeLists.txt                            |  4 +-
 .../load_results_dialog.ui                    | 32 ++++++++++--
 .../load_results_dialog/loadresultsdialog.cpp | 52 +++++++++++++------
 .../load_results_dialog/loadresultsdialog.h   |  8 ++-
 src/gui/mainwindow.cpp                        | 22 ++++++--
 src/gui/mainwindow.h                          |  1 +
 .../automaticfilterwidget.cpp                 |  6 +++
 .../automaticfilterwidget.h                   |  1 +
 8 files changed, 101 insertions(+), 25 deletions(-)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9e1f53ba..88bd6083 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -29,8 +29,8 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Xml_EXECUTABLE_COMPILE_FLAGS} ${Qt5
 
 #sudo apt-get install libpappsomspp-dev
 #FIND_PACKAGE( Pappsomspp REQUIRED )
-# SET (PAPPSOMSPP_DIR  "/home/olivier/eclipse/git/pappsomspp")
- SET (PAPPSOMSPP_DIR  "/home/langella/developpement/git/pappsomspp")
+ SET (PAPPSOMSPP_DIR  "/home/olivier/eclipse/git/pappsomspp")
+# SET (PAPPSOMSPP_DIR  "/home/langella/developpement/git/pappsomspp")
  SET (PAPPSOMSPP_INCLUDE_DIR "${PAPPSOMSPP_DIR}/src")
  SET (PAPPSOMSPP_QT4_LIBRARY "${PAPPSOMSPP_DIR}/cbuild/src/libpappsomspp-qt4.so")
 
diff --git a/src/gui/load_results_dialog/load_results_dialog.ui b/src/gui/load_results_dialog/load_results_dialog.ui
index f2ee0a20..1a4abe2a 100644
--- a/src/gui/load_results_dialog/load_results_dialog.ui
+++ b/src/gui/load_results_dialog/load_results_dialog.ui
@@ -6,14 +6,40 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>533</width>
-    <height>300</height>
+    <width>573</width>
+    <height>559</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>mode</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_3">
+      <item>
+       <widget class="QRadioButton" name="combine_radio">
+        <property name="text">
+         <string>com&amp;bine</string>
+        </property>
+        <property name="checked">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QRadioButton" name="individual_radio">
+        <property name="text">
+         <string>indi&amp;vidual</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
    <item>
     <widget class="QGroupBox" name="choose_files_groupbox">
      <property name="title">
@@ -21,7 +47,7 @@
      </property>
      <layout class="QGridLayout" name="gridLayout_2">
       <item row="0" column="0">
-       <widget class="QListView" name="listView"/>
+       <widget class="QListView" name="file_list_view"/>
       </item>
       <item row="1" column="0">
        <widget class="QPushButton" name="add_files_button">
diff --git a/src/gui/load_results_dialog/loadresultsdialog.cpp b/src/gui/load_results_dialog/loadresultsdialog.cpp
index 0a6971eb..765d5ce8 100644
--- a/src/gui/load_results_dialog/loadresultsdialog.cpp
+++ b/src/gui/load_results_dialog/loadresultsdialog.cpp
@@ -28,7 +28,6 @@
 #include <QFileDialog>
 #include <QMessageBox>
 #include <pappsomspp/pappsoexception.h>
-#include "../project_view/automatic_filter_widget/automaticfilterwidget.h"
 
 
 LoadResultsDialog::LoadResultsDialog(QWidget * parent):
@@ -38,11 +37,24 @@ LoadResultsDialog::LoadResultsDialog(QWidget * parent):
     qDebug() << "LoadResultsDialog::LoadResultsDialog begin";
     ui->setupUi(this);
     this->setModal(true);
+    _p_file_list = new QStringListModel();
+
+
+    _p_automatic_filter_widget = new AutomaticFilterWidget(this);
+    _p_automatic_filter_widget->hideButton();
+    
+    QSettings settings;
+    AutomaticFilterParameters param = _p_automatic_filter_widget->getAutomaticFilterParameters();
+    param.setFilterCrossSamplePeptideNumber(settings.value("automatic_filter/cross_sample", "true").toBool());
+    param.setFilterMinimumPeptidePerMatch((unsigned int) settings.value("automatic_filter/peptide_number", "2").toInt());
+    param.setFilterPeptideEvalue(settings.value("automatic_filter/peptide_evalue", "0.05").toDouble());
+    param.setFilterProteinEvalue(settings.value("automatic_filter/protein_evalue", "0.01").toDouble());
+    _p_automatic_filter_widget->setAutomaticFilterParameters(param);
+
+    
     
     
-    AutomaticFilterWidget* p_automatic_filter_widget = new AutomaticFilterWidget(this);
-    p_automatic_filter_widget->hideButton();
-    ui->filter_parameter_layout->addWidget(p_automatic_filter_widget);
+    ui->filter_parameter_layout->addWidget(_p_automatic_filter_widget);
 #if QT_VERSION >= 0x050000
     // Qt5 code
     /*
@@ -63,26 +75,36 @@ LoadResultsDialog::~LoadResultsDialog()
     delete ui;
 }
 
+bool LoadResultsDialog::isIndividual() const {
+    if (ui->individual_radio->isChecked()) {
+        return true;
+    }
+}
+QStringList LoadResultsDialog::getFileList() const {
+    return _p_file_list->stringList();
+}
+
+AutomaticFilterParameters LoadResultsDialog::getAutomaticFilterParameters() const {
+    return _p_automatic_filter_widget->getAutomaticFilterParameters();
+}
 
-    
 void LoadResultsDialog::chooseFiles() {
-   try {
+    try {
         QSettings settings;
         QString default_location = settings.value("path/identificationfiles", "").toString();
 
-        QString filename = QFileDialog::getOpenFileName(this,
-                           tr("Open XPIP File"), default_location,
-                           tr("X!Tandem files (*.xml);;all files (*)"));
+        QStringList filenames = QFileDialog::getOpenFileNames(this,tr("identification files"),default_location,
+                                tr("X!Tandem files (*.xml);;all files (*)") );
 
-        if (filename.isEmpty()) {
-            return;
+        if (filenames.size() > 0) {
+            settings.setValue("path/identificationfiles", QFileInfo(filenames[0]).absolutePath());
         }
-
-        settings.setValue("path/identificationfiles", QFileInfo(filename).absolutePath());
+        _p_file_list->setStringList(filenames);
+        ui->file_list_view->setModel(_p_file_list);
 
     }
     catch (pappso::PappsoException & error) {
-      //QMessageBox::warning(this,
-       //                  tr("Error choosing identification result files : %1").arg(error.qwhat()), error);
+        //QMessageBox::warning(this,
+        //                  tr("Error choosing identification result files : %1").arg(error.qwhat()), error);
     }
 }
diff --git a/src/gui/load_results_dialog/loadresultsdialog.h b/src/gui/load_results_dialog/loadresultsdialog.h
index bec67ade..5af69f86 100644
--- a/src/gui/load_results_dialog/loadresultsdialog.h
+++ b/src/gui/load_results_dialog/loadresultsdialog.h
@@ -24,8 +24,9 @@
 #ifndef LOADRESULTSDIALOG_H
 #define LOADRESULTSDIALOG_H
 
-#include "../../../core/automaticfilterparameters.h"
 #include <QDialog>
+#include <QStringListModel>
+#include "../project_view/automatic_filter_widget/automaticfilterwidget.h"
 
 
 namespace Ui {
@@ -42,6 +43,9 @@ public:
     explicit LoadResultsDialog(QWidget * parent);
     ~LoadResultsDialog();
 
+    AutomaticFilterParameters getAutomaticFilterParameters() const;
+    QStringList getFileList() const;
+    bool isIndividual() const;
 
 public slots:
     void chooseFiles();
@@ -50,6 +54,8 @@ signals:
 
 private:
     Ui::LoadResultsDialog *ui;
+    QStringListModel * _p_file_list;
+    AutomaticFilterWidget* _p_automatic_filter_widget;
 
 };
 
diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp
index d71adf10..2f1f0869 100644
--- a/src/gui/mainwindow.cpp
+++ b/src/gui/mainwindow.cpp
@@ -64,9 +64,11 @@ MainWindow::MainWindow(QWidget *parent):
     */
     workerThread.start();
 
+    _p_load_results_dialog = new LoadResultsDialog(this);
+
 
     _project_window = new ProjectWindow(this);
-    
+
     ui->centralwidget->layout()->addWidget(_project_window);
     _project_window->show();
     //_protein_list_window = new ProteinListWindow(this);
@@ -87,6 +89,7 @@ MainWindow::MainWindow(QWidget *parent):
 
     connect(this, SIGNAL(operateXpipFile(QString)), worker,SLOT(doXpipFileLoad(QString)));
     connect(worker, SIGNAL(projectReady(ProjectSp)), this,SLOT(doProjectReady(ProjectSp)));
+    connect(_p_load_results_dialog, SIGNAL(accepted()), this,SLOT(doAcceptedLoadResultDialog()));
     /*
         connect(&workerThread, SIGNAL(finished()), worker, SLOT(deleteLater()));
         connect(this, SIGNAL(operateMsDataFile(QString)), worker,SLOT(doMsDataFileLoad(QString)));
@@ -120,6 +123,20 @@ void MainWindow::viewError(QString error) {
 }
 
 
+void MainWindow::doAcceptedLoadResultDialog() {
+    qDebug() << "MainWindow::doAcceptedLoadResultDialog begin";
+    AutomaticFilterParameters param = _p_load_results_dialog->getAutomaticFilterParameters();
+    QSettings settings;
+    settings.setValue("automatic_filter/cross_sample", QString("%1").arg(param.getFilterCrossSamplePeptideNumber()));
+    settings.setValue("automatic_filter/peptide_number", QString("%1").arg(param.getFilterMinimumPeptidePerMatch()));
+    settings.setValue("automatic_filter/peptide_evalue", QString("%1").arg(param.getFilterPeptideEvalue()));
+    settings.setValue("automatic_filter/protein_evalue", QString("%1").arg(param.getFilterProteinEvalue()));
+    
+    QStringList file_list = _p_load_results_dialog->getFileList();
+    bool is_individual = _p_load_results_dialog->isIndividual();
+    qDebug() << "MainWindow::doAcceptedLoadResultDialog end";
+}
+
 void MainWindow::doProjectReady(ProjectSp project_sp) {
 
     try {
@@ -136,9 +153,6 @@ void MainWindow::doProjectNotReady(QString error) {
     viewError(tr("Error while grouping :\n%1").arg(error));
 }
 void MainWindow::loadResults() {
-    if (_p_load_results_dialog == nullptr) {
-        _p_load_results_dialog = new LoadResultsDialog(this);
-    }
 
     _p_load_results_dialog->show();
     _p_load_results_dialog->raise();
diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h
index a9d97fd3..9bdd170e 100644
--- a/src/gui/mainwindow.h
+++ b/src/gui/mainwindow.h
@@ -78,6 +78,7 @@ public slots:
     void selectXpipFile();
     void doProjectReady(ProjectSp project_sp);
     void doProjectNotReady(QString error);
+    void doAcceptedLoadResultDialog();
     //void peptideEdited(QString peptideStr);
     // void setColor(const QColor &color);
     // void setShape(Shape shape);
diff --git a/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.cpp b/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.cpp
index 783bbc2a..716a5d1a 100644
--- a/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.cpp
+++ b/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.cpp
@@ -26,6 +26,7 @@
 #include "../projectwindow.h"
 #include "ui_automatic_filter_widget.h"
 #include <QDebug>
+#include <cmath>
 
 
 AutomaticFilterWidget::AutomaticFilterWidget(QWidget * parent):
@@ -43,6 +44,11 @@ AutomaticFilterWidget::~AutomaticFilterWidget()
     delete ui;
 }
 
+
+AutomaticFilterParameters AutomaticFilterWidget::getAutomaticFilterParameters() const {
+    return _parameters;
+}
+
 void AutomaticFilterWidget::hideButton() {
     qDebug() << "AutomaticFilterWidget::hideButton begin ";
     ui->set_param_button->setVisible(false);
diff --git a/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.h b/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.h
index b9e66d2d..13109ca5 100644
--- a/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.h
+++ b/src/gui/project_view/automatic_filter_widget/automaticfilterwidget.h
@@ -42,6 +42,7 @@ public:
 
     void setAutomaticFilterParameters(const AutomaticFilterParameters & params);
     void hideButton();
+    AutomaticFilterParameters getAutomaticFilterParameters() const;
 
 public slots:
     void doPeptideEvalue(double evalue);
-- 
GitLab