From 8604acfe7de76cb8396cb97ecca5fc98a6a26162 Mon Sep 17 00:00:00 2001
From: Olivier Langella <Olivier.Langella@moulon.inra.fr>
Date: Mon, 27 Mar 2017 23:07:27 +0200
Subject: [PATCH] problem to hide column

---
 src/gui/protein_list_view/protein_view.ui     | 12 +++++++++-
 .../protein_list_view/proteinlistwindow.cpp   | 24 +++++++++++++++++--
 src/gui/protein_list_view/proteinlistwindow.h |  8 +++++++
 .../protein_list_view/proteintablemodel.cpp   |  6 ++---
 src/gui/protein_list_view/proteintablemodel.h |  6 ++---
 5 files changed, 47 insertions(+), 9 deletions(-)

diff --git a/src/gui/protein_list_view/protein_view.ui b/src/gui/protein_list_view/protein_view.ui
index e3bdbe0d..dedeb0a9 100644
--- a/src/gui/protein_list_view/protein_view.ui
+++ b/src/gui/protein_list_view/protein_view.ui
@@ -10,10 +10,16 @@
     <height>404</height>
    </rect>
   </property>
+  <property name="contextMenuPolicy">
+   <enum>Qt::CustomContextMenu</enum>
+  </property>
   <property name="windowTitle">
    <string>Protein list</string>
   </property>
   <widget class="QWidget" name="centralwidget">
+   <property name="contextMenuPolicy">
+    <enum>Qt::CustomContextMenu</enum>
+   </property>
    <layout class="QVBoxLayout" name="verticalLayout">
     <item>
      <layout class="QHBoxLayout" name="horizontalLayout">
@@ -48,7 +54,11 @@
      </layout>
     </item>
     <item>
-     <widget class="QTableView" name="tableView"/>
+     <widget class="QTableView" name="tableView">
+      <property name="contextMenuPolicy">
+       <enum>Qt::DefaultContextMenu</enum>
+      </property>
+     </widget>
     </item>
     <item>
      <widget class="QLineEdit" name="proteinSearchEdit"/>
diff --git a/src/gui/protein_list_view/proteinlistwindow.cpp b/src/gui/protein_list_view/proteinlistwindow.cpp
index cd7b08ed..9b368bd6 100644
--- a/src/gui/protein_list_view/proteinlistwindow.cpp
+++ b/src/gui/protein_list_view/proteinlistwindow.cpp
@@ -39,7 +39,7 @@ ProteinListWindow::ProteinListWindow(ProjectWindow *parent):
     _protein_table_model_p = new ProteinTableModel(this);
 
 
-    _p_proxy_model = new ProteinTableProxyModel(_protein_table_model_p);
+    _p_proxy_model = new ProteinTableProxyModel(this, _protein_table_model_p);
     _p_proxy_model->setSourceModel(_protein_table_model_p);
     _p_proxy_model->setDynamicSortFilter(true);
     ui->tableView->setModel( _p_proxy_model );
@@ -78,11 +78,17 @@ ProteinListWindow::ProteinListWindow(ProjectWindow *parent):
 
 
     connect( this, SIGNAL( focusReceived(bool) ),this, SLOT(doFocusReceived(bool)) );
+    connect(ui->centralwidget, SIGNAL(customContextMenuRequested(const QPoint &)),
+            this, SLOT(showContextMenu(const QPoint &)));
     //connect(_protein_table_model_p, SIGNAL(layoutChanged()), this, SLOT(updateStatusBar()));
 #endif
-
 }
 
+void ProteinListWindow::showEvalueColumn(bool show) {
+    _display_evalue = show;
+
+    ui->tableView->setColumnHidden(4,!show);
+}
 void ProteinListWindow::doubleclickOnproteinMatch(ProteinMatch * p_protein_match) {
     emit proteinMatchClicked(p_protein_match);
     //updateStatusBar();
@@ -93,6 +99,20 @@ void ProteinListWindow::doFocusReceived(bool has_focus) {
     }
 }
 
+
+void ProteinListWindow::showContextMenu(const QPoint & pos) {
+    QMenu contextMenu(tr("Context menu"), this);
+
+    QAction evalue_action("Evalue", this);
+    evalue_action.setCheckable(true);
+    evalue_action.setChecked(_display_evalue);
+    connect(&evalue_action, SIGNAL(toggled(bool)), this, SLOT(showEvalueColumn(bool)));
+    contextMenu.addAction(&evalue_action);
+
+    contextMenu.exec(mapToGlobal(pos));
+}
+
+
 ProteinListWindow::~ProteinListWindow()
 {
     //if (_p_ms_data_file != nullptr) delete _p_ms_data_file;
diff --git a/src/gui/protein_list_view/proteinlistwindow.h b/src/gui/protein_list_view/proteinlistwindow.h
index cae8a57c..ce6314f1 100644
--- a/src/gui/protein_list_view/proteinlistwindow.h
+++ b/src/gui/protein_list_view/proteinlistwindow.h
@@ -58,18 +58,26 @@ signals:
     void proteinMatchClicked(ProteinMatch * p_protein_match);
     void identificationGroupEdited(IdentificationGroup * p_identification_group);
 
+
 protected slots:
     void doNotValidHide(bool hide);
     void doNotCheckedHide(bool hide);
     void doNotGroupedHide(bool hide);
+    void showContextMenu(const QPoint &);
 protected : 
     void updateStatusBar();
+    
+private :
+        
+    void showEvalueColumn(bool show);
+
 private:
     IdentificationGroup * _p_identification_group;
     Ui::ProteinView *ui;
     ProteinTableModel * _protein_table_model_p = nullptr;
     ProteinTableProxyModel * _p_proxy_model = nullptr;
     ProjectWindow * _project_window;
+    bool _display_evalue = true;
 
 };
 
diff --git a/src/gui/protein_list_view/proteintablemodel.cpp b/src/gui/protein_list_view/proteintablemodel.cpp
index 1ed92c2f..932391ea 100644
--- a/src/gui/protein_list_view/proteintablemodel.cpp
+++ b/src/gui/protein_list_view/proteintablemodel.cpp
@@ -28,17 +28,17 @@
 #include <QDebug>
 
 
-ProteinTableProxyModel::ProteinTableProxyModel(ProteinTableModel* protein_table_model_p): QSortFilterProxyModel(protein_table_model_p),
-    m_minGravity(0.0), m_minDensity(0.0)
+ProteinTableProxyModel::ProteinTableProxyModel(ProteinListWindow * p_protein_list_window, ProteinTableModel* protein_table_model_p): QSortFilterProxyModel(protein_table_model_p)
 {
     _protein_table_model_p = protein_table_model_p;
+    _p_protein_list_window = p_protein_list_window;
 }
-
 bool ProteinTableProxyModel::filterAcceptsRow(int source_row,
         const QModelIndex &source_parent) const {
     return _protein_table_model_p->acceptRow(source_row);
     //return true;
 }
+
 void ProteinTableProxyModel::onTableClicked(const QModelIndex &index)
 {
     qDebug() << "ProteinTableProxyModel::onTableClicked begin " << index.row();
diff --git a/src/gui/protein_list_view/proteintablemodel.h b/src/gui/protein_list_view/proteintablemodel.h
index 3cbb134d..452de6c4 100644
--- a/src/gui/protein_list_view/proteintablemodel.h
+++ b/src/gui/protein_list_view/proteintablemodel.h
@@ -35,9 +35,10 @@ class ProteinTableProxyModel : public QSortFilterProxyModel
 {
     Q_OBJECT
 public:
-    ProteinTableProxyModel(ProteinTableModel* protein_table_model_p);
+    ProteinTableProxyModel(ProteinListWindow * p_protein_list_window, ProteinTableModel* protein_table_model_p);
     bool filterAcceptsRow(int source_row,
                           const QModelIndex &source_parent) const override;
+                          
     QVariant headerData(int section, Qt::Orientation orientation,
                         int role) const override;
     bool lessThan(const QModelIndex & left, const QModelIndex & right) const override;
@@ -46,9 +47,8 @@ public slots:
     void onTableClicked(const QModelIndex &index);
     void onTableDoubleClicked(const QModelIndex &index);
 private:
-    double m_minGravity;
-    double m_minDensity;
     ProteinTableModel* _protein_table_model_p;
+    ProteinListWindow * _p_protein_list_window;
 };
 
 class ProteinTableModel: public QAbstractTableModel
-- 
GitLab