From 22c9ef4cb5ac755638d903ea8d7d2e66015fd0a0 Mon Sep 17 00:00:00 2001
From: Olivier Langella <Olivier.Langella@moulon.inra.fr>
Date: Fri, 7 Jul 2017 22:55:45 +0200
Subject: [PATCH] working context menu

---
 .../protein_list_view/proteinlistwindow.cpp   | 42 +++++++++++++++----
 src/gui/protein_list_view/proteinlistwindow.h |  6 +++
 .../proteintableproxymodel.cpp                |  9 ++++
 .../proteintableproxymodel.h                  |  4 ++
 4 files changed, 54 insertions(+), 7 deletions(-)

diff --git a/src/gui/protein_list_view/proteinlistwindow.cpp b/src/gui/protein_list_view/proteinlistwindow.cpp
index 690cd77c..f5026242 100644
--- a/src/gui/protein_list_view/proteinlistwindow.cpp
+++ b/src/gui/protein_list_view/proteinlistwindow.cpp
@@ -28,21 +28,42 @@
 #include <QSettings>
 
 ProteinListQactionColumn::ProteinListQactionColumn(ProteinListWindow * parent, ProteinListColumn column):QAction(parent) {
-    
+
     this->setText(ProteinTableModel::getTitle(column));
-    
-        this->setCheckable(true);
-        //evalue_action.setChecked(_display_evalue);
-        //connect(p_action, SIGNAL(toggled(bool)), this, SLOT(showEvalueColumn(bool)));
-        _column = column;
-        _p_protein_list_window = parent;
+
+    this->setCheckable(true);
+    this->setChecked(parent->getProteinListColumnDisplay(column));
+    //evalue_action.setChecked(_display_evalue);
+    //connect(p_action, SIGNAL(toggled(bool)), this, SLOT(showEvalueColumn(bool)));
+    _column = column;
+    _p_protein_list_window = parent;
+
+#if QT_VERSION >= 0x050000
+    // Qt5 code
+    /*
+    connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);
+    connect(this, &PtSpectrumViewer::operateMsDataFile, worker, &PwizLoaderThread::doMsDataFileLoad);
+    connect(worker, &PwizLoaderThread::msDataReady, this, &PtSpectrumViewer::handleMsDataFile);
+    */
+#else
+// Qt4 code
+    connect (this, SIGNAL(toggled(bool)), this,SLOT(doToggled(bool)));
+#endif
 }
 
 ProteinListQactionColumn::~ProteinListQactionColumn()
 {
     //if (_p_ms_data_file != nullptr) delete _p_ms_data_file;
+    qDebug() << "ProteinListQactionColumn::~ProteinListQactionColumn begin ";
 
 }
+void ProteinListQactionColumn::doToggled(bool toggled) {
+    qDebug() << "ProteinListQactionColumn::doToggled begin " << toggled;
+    setChecked(toggled);
+    _p_protein_list_window->setProteinListColumnDisplay(_column, toggled);
+    
+    qDebug() << "ProteinListQactionColumn::doToggled end";
+}
 
 ProteinListWindow::ProteinListWindow(ProjectWindow *parent):
     QMainWindow(parent),
@@ -261,3 +282,10 @@ void ProteinListWindow::updateStatusBar() {
     }
 }
 
+
+void ProteinListWindow::setProteinListColumnDisplay(ProteinListColumn column, bool toggled) {
+    _p_proxy_model->setProteinListColumnDisplay(column, toggled);
+}
+bool ProteinListWindow::getProteinListColumnDisplay(ProteinListColumn column) const {
+    return _p_proxy_model->getProteinListColumnDisplay(column);
+}
diff --git a/src/gui/protein_list_view/proteinlistwindow.h b/src/gui/protein_list_view/proteinlistwindow.h
index ddc6360b..3ea05763 100644
--- a/src/gui/protein_list_view/proteinlistwindow.h
+++ b/src/gui/protein_list_view/proteinlistwindow.h
@@ -44,6 +44,10 @@ public:
 
     explicit ProteinListQactionColumn(ProteinListWindow * parent, ProteinListColumn column);
     ~ProteinListQactionColumn();
+    
+public slots:
+    void doToggled(bool toggled);
+
 private:
     ProteinListWindow * _p_protein_list_window;
     ProteinListColumn _column;
@@ -59,6 +63,8 @@ public:
     explicit ProteinListWindow(ProjectWindow * parent = 0);
     ~ProteinListWindow();
     void setIdentificationGroup(IdentificationGroup * p_identification_group);
+    void setProteinListColumnDisplay(ProteinListColumn column, bool toggled);
+    bool getProteinListColumnDisplay(ProteinListColumn column) const;
 
     void edited();
 
diff --git a/src/gui/protein_list_view/proteintableproxymodel.cpp b/src/gui/protein_list_view/proteintableproxymodel.cpp
index e01a39cf..3f5b2bb7 100644
--- a/src/gui/protein_list_view/proteintableproxymodel.cpp
+++ b/src/gui/protein_list_view/proteintableproxymodel.cpp
@@ -207,3 +207,12 @@ void ProteinTableProxyModel::setSearchOn(QString search_on) {
 void ProteinTableProxyModel::setProteinSearchString(QString protein_search_string) {
     _protein_search_string = protein_search_string;
 }
+void ProteinTableProxyModel::setProteinListColumnDisplay(ProteinListColumn column, bool toggled) {
+    qDebug() << "ProteinTableProxyModel::setProteinListColumnDisplay begin " << toggled;
+    beginResetModel();
+    _column_display[(std::int8_t) column] = toggled;
+    endResetModel();
+}
+bool ProteinTableProxyModel::getProteinListColumnDisplay(ProteinListColumn column) const {
+    return _column_display[(std::int8_t) column];
+}
diff --git a/src/gui/protein_list_view/proteintableproxymodel.h b/src/gui/protein_list_view/proteintableproxymodel.h
index 3ff75b58..082c2d06 100644
--- a/src/gui/protein_list_view/proteintableproxymodel.h
+++ b/src/gui/protein_list_view/proteintableproxymodel.h
@@ -27,10 +27,12 @@
 #include <QAbstractTableModel>
 #include <QSortFilterProxyModel>
 #include "../../core/project.h"
+#include "proteintablemodel.h"
 
 class ProteinListWindow;
 
 class ProteinTableModel;
+
 class ProteinTableProxyModel : public QSortFilterProxyModel
 {
     Q_OBJECT
@@ -49,6 +51,8 @@ public:
     void hideNotGrouped(bool hide);
     void setProteinSearchString(QString protein_search_string);
     void setSearchOn(QString search_on);
+    void setProteinListColumnDisplay(ProteinListColumn column, bool toggled);
+    bool getProteinListColumnDisplay(ProteinListColumn column) const;
 
 public slots:
     void onTableClicked(const QModelIndex &index);
-- 
GitLab