From 856a9ed02092f2912bf764723a1717f2fa83481c Mon Sep 17 00:00:00 2001
From: Olivier Langella <Olivier.Langella@moulon.inra.fr>
Date: Mon, 27 Mar 2017 10:21:47 +0200
Subject: [PATCH] trying to get focus in protein list

---
 src/core/identificationgroup.cpp               |  3 +++
 src/core/identificationgroup.h                 |  2 ++
 src/gui/project_view/project_view.ui           |  3 +++
 src/gui/project_view/projectwindow.cpp         | 10 ++++++++--
 src/gui/project_view/projectwindow.h           |  1 +
 .../protein_list_view/proteinlistwindow.cpp    | 18 ++++++++++++++----
 src/gui/protein_list_view/proteinlistwindow.h  |  3 ++-
 7 files changed, 33 insertions(+), 7 deletions(-)

diff --git a/src/core/identificationgroup.cpp b/src/core/identificationgroup.cpp
index c3ed6253..c4717b3e 100644
--- a/src/core/identificationgroup.cpp
+++ b/src/core/identificationgroup.cpp
@@ -54,6 +54,9 @@ void IdentificationGroup::addProteinMatch(ProteinMatch * protein_match) {
 void IdentificationGroup::addMsRunIdSp(pappso::MsRunIdSp ms_run_sp) {
     _ms_run_list.push_back(ms_run_sp);
 }
+const std::vector<pappso::MsRunIdSp> & IdentificationGroup::getMsRunIdSpList() const {
+  return _ms_run_list;
+}
 std::vector<ProteinMatch *> & IdentificationGroup::getProteinMatchList() {
     return _protein_match_list;
 }
diff --git a/src/core/identificationgroup.h b/src/core/identificationgroup.h
index 563489bc..4199d051 100644
--- a/src/core/identificationgroup.h
+++ b/src/core/identificationgroup.h
@@ -61,6 +61,8 @@ public:
     void updateAutomaticFilters(const AutomaticFilterParameters & automatic_filter_parameters);
     
     void startGrouping (const GroupingType & grouping_type);
+    
+    const std::vector<pappso::MsRunIdSp> & getMsRunIdSpList() const; 
 private :
     GroupingExperiment * _p_grp_experiment= nullptr;
 
diff --git a/src/gui/project_view/project_view.ui b/src/gui/project_view/project_view.ui
index 616fdc88..fd1ecee5 100644
--- a/src/gui/project_view/project_view.ui
+++ b/src/gui/project_view/project_view.ui
@@ -32,6 +32,9 @@
          <layout class="QFormLayout" name="formLayout_2">
           <item row="0" column="0">
            <widget class="QPushButton" name="viewProteinListButton">
+            <property name="toolTip">
+             <string>press ctrl to open a new window</string>
+            </property>
             <property name="text">
              <string>View protein list</string>
             </property>
diff --git a/src/gui/project_view/projectwindow.cpp b/src/gui/project_view/projectwindow.cpp
index a1b17f8c..f8245bed 100644
--- a/src/gui/project_view/projectwindow.cpp
+++ b/src/gui/project_view/projectwindow.cpp
@@ -52,7 +52,7 @@ ProjectWindow::ProjectWindow(MainWindow *parent):
 #endif
     /*
     */
-    
+
     this->setDisabled(true);
 
 }
@@ -63,6 +63,10 @@ ProjectWindow::~ProjectWindow()
     delete ui;
 
 }
+void ProjectWindow::setDefaultProteinListWindow(ProteinListWindow* p_protein_list_window) {
+    _p_current_protein_list_window = p_protein_list_window;
+}
+
 void ProjectWindow::connectNewProteinListWindow() {
     qDebug() << "ProjectWindow::connectNewProteinListWindow begin";
     _p_current_protein_list_window = new ProteinListWindow(this);
@@ -82,7 +86,7 @@ void ProjectWindow::connectNewProteinListWindow() {
 #endif
 
     qDebug() << "ProjectWindow::connectNewProteinListWindow end";
-    
+
 }
 
 void ProjectWindow::doProteinMatchClicked(ProteinMatch * protein_match) {
@@ -112,6 +116,8 @@ void ProjectWindow::doViewProteinList(IdentificationGroup* p_identification_grou
 
 void ProjectWindow::setProjectSp(ProjectSp project_sp) {
     _project_sp = project_sp;
+    vector< MsRunIdSp > ms_run_list = _project_sp.get()->getCurrentIdentificationGroupP()->getMsRunIdSpList();
+    ui->sample_number_display->setText(QString("%1").arg(ms_run_list.size()));
     //_protein_list_window->setIdentificationGroup(_project_sp.get()->getCurrentIdentificationGroupP());
     //_protein_list_window->show();
     this->setEnabled(true);
diff --git a/src/gui/project_view/projectwindow.h b/src/gui/project_view/projectwindow.h
index 996e4f99..87eb657f 100644
--- a/src/gui/project_view/projectwindow.h
+++ b/src/gui/project_view/projectwindow.h
@@ -47,6 +47,7 @@ public:
 public slots:
     void doViewProteinList(IdentificationGroup* p_identification_group =nullptr);
     void doProteinMatchClicked(ProteinMatch * protein_match);
+    void setDefaultProteinListWindow(ProteinListWindow* p_protein_list_window);
     // void setColor(const QColor &color);
     // void setShape(Shape shape);
 signals:
diff --git a/src/gui/protein_list_view/proteinlistwindow.cpp b/src/gui/protein_list_view/proteinlistwindow.cpp
index 3eba8a1e..b4eec221 100644
--- a/src/gui/protein_list_view/proteinlistwindow.cpp
+++ b/src/gui/protein_list_view/proteinlistwindow.cpp
@@ -59,6 +59,9 @@ ProteinListWindow::ProteinListWindow(ProjectWindow *parent):
     connect(ui->tableView, SIGNAL(clicked(const QModelIndex &)), _p_proxy_model, SLOT(onTableClicked(const QModelIndex &)));
     connect(ui->tableView, SIGNAL(doubleClicked(const QModelIndex &)), _p_proxy_model, SLOT(onTableDoubleClicked(const QModelIndex &)));
     connect(ui->proteinSearchEdit, SIGNAL(textChanged(QString)), _protein_table_model_p, SLOT(onProteinSearchEdit(QString)));
+
+
+    connect( this, SIGNAL( focusReceived(bool) ),this, SLOT(doFocusReceived(bool)) );
     //connect(_protein_table_model_p, SIGNAL(layoutChanged()), this, SLOT(updateStatusBar()));
 #endif
 
@@ -68,6 +71,11 @@ void ProteinListWindow::doubleclickOnproteinMatch(ProteinMatch * p_protein_match
     emit proteinMatchClicked(p_protein_match);
     //updateStatusBar();
 }
+void ProteinListWindow::doFocusReceived(bool has_focus) {
+    if (has_focus ) {
+        _project_window->setDefaultProteinListWindow(this);
+    }
+}
 
 ProteinListWindow::~ProteinListWindow()
 {
@@ -78,10 +86,12 @@ ProteinListWindow::~ProteinListWindow()
 
 
 void ProteinListWindow::setIdentificationGroup(IdentificationGroup * p_identification_group) {
-    _p_identification_group = p_identification_group;
-    _protein_table_model_p->setIdentificationGroup(p_identification_group);
-    _p_proxy_model->setSourceModel(_protein_table_model_p);
-    updateStatusBar();
+    if (_p_identification_group != p_identification_group) {
+        _p_identification_group = p_identification_group;
+        _protein_table_model_p->setIdentificationGroup(p_identification_group);
+        _p_proxy_model->setSourceModel(_protein_table_model_p);
+        updateStatusBar();
+    }
 
 }
 void ProteinListWindow::updateStatusBar() {
diff --git a/src/gui/protein_list_view/proteinlistwindow.h b/src/gui/protein_list_view/proteinlistwindow.h
index e757a434..6bf3f442 100644
--- a/src/gui/protein_list_view/proteinlistwindow.h
+++ b/src/gui/protein_list_view/proteinlistwindow.h
@@ -47,12 +47,13 @@ public:
     void updateStatusBar();
 
 public slots:
+    void doFocusReceived(bool has_focus);
     //void peptideEdited(QString peptideStr);
     // void setColor(const QColor &color);
     // void setShape(Shape shape);
 signals:
     void proteinMatchClicked(ProteinMatch * p_protein_match);
-    
+
 private:
     IdentificationGroup * _p_identification_group;
     Ui::ProteinView *ui;
-- 
GitLab