From b7342213a0d9481539d3088defb8c5c924d5da28 Mon Sep 17 00:00:00 2001
From: Olivier Langella <Olivier.Langella@moulon.inra.fr>
Date: Tue, 30 May 2017 15:56:02 +0200
Subject: [PATCH] ptm table view class

---
 src/CMakeLists.txt                            |  7 +++
 src/gui/protein_list_view/proteintablemodel.h |  3 --
 .../ptmislandlistwindow.cpp                   | 37 +++++++++++++++-
 .../ptmislandlistwindow.h                     | 26 ++---------
 .../ptmislandproxymodel.cpp                   |  5 ++-
 .../ptmislandproxymodel.h                     | 15 ++++++-
 .../ptmislandtablemodel.cpp                   | 44 ++++++++++++++++++-
 .../ptmislandtablemodel.h                     | 19 +++++++-
 8 files changed, 123 insertions(+), 33 deletions(-)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 59eeff83..3539ce0f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -124,6 +124,9 @@ SET(XTPCPP_SRCS
   ./gui/protein_list_view/proteinlistwindow.cpp
   ./gui/protein_list_view/proteintablemodel.cpp
   ./gui/protein_list_view/proteintableproxymodel.cpp
+  ./gui/ptm_island_list_view/ptmislandlistwindow.cpp
+  ./gui/ptm_island_list_view/ptmislandtablemodel.cpp
+  ./gui/ptm_island_list_view/ptmislandproxymodel.cpp
   ./gui/waiting_message_dialog/waitingmessagedialog.cpp
   ./gui/workerthread.cpp
 )
@@ -142,6 +145,7 @@ SET (GUI_UIS
   ./gui/project_view/project_view.ui
   ./gui/protein_list_view/protein_view.ui
   ./gui/protein_view/protein_detail_view.ui
+  ./gui/ptm_island_list_view/ptm_island_list_view.ui
   ./gui/waiting_message_dialog/waiting_message_dialog.ui
 )
 
@@ -165,6 +169,9 @@ SET(XTPCPP_MOC_HDRS
   ./gui/protein_list_view/proteintablemodel.h
   ./gui/protein_list_view/proteintableproxymodel.h
   ./gui/protein_view/proteinwindow.h
+  ./gui/ptm_island_list_view/ptmislandlistwindow.h
+  ./gui/ptm_island_list_view/ptmislandtablemodel.h
+  ./gui/ptm_island_list_view/ptmislandproxymodel.h
   ./gui/waiting_message_dialog/waitingmessagedialog.h
   ./gui/workerthread.h
 )
diff --git a/src/gui/protein_list_view/proteintablemodel.h b/src/gui/protein_list_view/proteintablemodel.h
index 17f3b5d3..cdf1b33e 100644
--- a/src/gui/protein_list_view/proteintablemodel.h
+++ b/src/gui/protein_list_view/proteintablemodel.h
@@ -29,9 +29,6 @@
 
 class ProteinListWindow;
 
-class ProteinTableModel;
-
-
 class ProteinTableModel: public QAbstractTableModel
 {
     Q_OBJECT
diff --git a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
index 14959240..66fceaba 100644
--- a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
@@ -29,12 +29,47 @@
 
 #include "ptmislandlistwindow.h"
 
-PtmIslandListWindow::PtmIslandListWindow(const PtmIslandListWindow& other)
+
+#include "ui_ptm_island_list_view.h"
+#include "../mainwindow.h"
+#include <QSettings>
+
+
+PtmIslandListWindow::PtmIslandListWindow(ProjectWindow *parent):
+    QMainWindow(parent),
+    ui(new Ui::PtmIslandListWindow)
 {
+    _project_window = parent;
+    ui->setupUi(this);
+    /*
+    */
+    _ptm_table_model_p = new PtmIslandTableModel(this);
+
+
+    _ptm_proxy_model_p = new PtmIslandProxyModel(this, _ptm_table_model_p);
+    _ptm_proxy_model_p->setSourceModel(_ptm_table_model_p);
+    _ptm_proxy_model_p->setDynamicSortFilter(true);
+    ui->ptm_island_tableview->setModel( _ptm_proxy_model_p );
+    ui->ptm_island_tableview->setSortingEnabled(true);
 
+
+
+#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
+#endif
 }
 
 PtmIslandListWindow::~PtmIslandListWindow()
 {
 
 }
+
+void PtmIslandListWindow::setIdentificationGroup(IdentificationGroup * p_identification_group) {
+}
diff --git a/src/gui/ptm_island_list_view/ptmislandlistwindow.h b/src/gui/ptm_island_list_view/ptmislandlistwindow.h
index c81890bf..6e30764b 100644
--- a/src/gui/ptm_island_list_view/ptmislandlistwindow.h
+++ b/src/gui/ptm_island_list_view/ptmislandlistwindow.h
@@ -32,6 +32,7 @@
 #include <QMainWindow>
 #include "ptmislandtablemodel.h"
 #include "ptmislandproxymodel.h"
+#include "../../core/identificationgroup.h"
 
 class ProjectWindow;
 
@@ -48,32 +49,13 @@ public:
     ~PtmIslandListWindow();
     void setIdentificationGroup(IdentificationGroup * p_identification_group);
 
-public slots:
-    void doFocusReceived(bool has_focus);
-    void doIdentificationGroupGrouped(IdentificationGroup * p_identification_group);
-
-
-protected slots:
-    void doNotValidHide(bool hide);
-    void doNotCheckedHide(bool hide);
-    void doNotGroupedHide(bool hide);
-    void doProxyLayoutChanged();
-    void showContextMenu(const QPoint &);
-    void updateStatusBar();
-    void onProteinSearchEdit(QString protein_search_string);
-    void doSearchOn(QString search_on);
-
-protected :
-    void askProteinDetailView(ProteinMatch * p_protein_match);
-    void askPeptideListView(ProteinMatch * p_protein_match);
-
 
 
 private:
     IdentificationGroup * _p_identification_group=nullptr;
-    Ui::ProteinView *ui;
-    ProteinTableModel * _protein_table_model_p = nullptr;
-    ProteinTableProxyModel * _p_proxy_model = nullptr;
+    Ui::PtmIslandListWindow *ui;
+    PtmIslandTableModel * _ptm_table_model_p = nullptr;
+    PtmIslandProxyModel * _ptm_proxy_model_p = nullptr;
     ProjectWindow * _project_window;
 
 };
diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
index 98a2a07f..c34250a0 100644
--- a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
@@ -29,9 +29,10 @@
 
 #include "ptmislandproxymodel.h"
 
-PtmIslandProxyModel::PtmIslandProxyModel(const PtmIslandProxyModel& other)
+PtmIslandProxyModel::PtmIslandProxyModel(PtmIslandListWindow * p_ptm_island_list_window, PtmIslandTableModel* ptm_table_model_p)
 {
-
+  _p_ptm_island_list_window = p_ptm_island_list_window;
+  _p_ptm_island_table_model = ptm_table_model_p;
 }
 
 PtmIslandProxyModel::~PtmIslandProxyModel()
diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.h b/src/gui/ptm_island_list_view/ptmislandproxymodel.h
index dd5fe339..bac67e6c 100644
--- a/src/gui/ptm_island_list_view/ptmislandproxymodel.h
+++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.h
@@ -30,11 +30,22 @@
 #ifndef PTMISLANDPROXYMODEL_H
 #define PTMISLANDPROXYMODEL_H
 
-class PtmIslandProxyModel
+#include <QAbstractTableModel>
+#include <QSortFilterProxyModel>
+
+
+class PtmIslandListWindow;
+class PtmIslandTableModel;
+
+class PtmIslandProxyModel: public QSortFilterProxyModel
 {
+    Q_OBJECT
 public:
-    PtmIslandProxyModel(const PtmIslandProxyModel& other);
+    PtmIslandProxyModel(PtmIslandListWindow * p_ptm_island_list_window, PtmIslandTableModel* ptm_table_model_p);
     ~PtmIslandProxyModel();
+private:
+  PtmIslandListWindow * _p_ptm_island_list_window;
+  PtmIslandTableModel * _p_ptm_island_table_model;
 };
 
 #endif // PTMISLANDPROXYMODEL_H
diff --git a/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp b/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp
index 5ea29559..d6026e5f 100644
--- a/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp
@@ -28,8 +28,9 @@
 ******************************************************************************/
 
 #include "ptmislandtablemodel.h"
+#include "ptmislandlistwindow.h"
 
-PtmIslandTableModel::PtmIslandTableModel(const PtmIslandTableModel& other)
+PtmIslandTableModel::PtmIslandTableModel(PtmIslandListWindow * p_ptm_island_list_window)
 {
 
 }
@@ -38,3 +39,44 @@ PtmIslandTableModel::~PtmIslandTableModel()
 {
 
 }
+void PtmIslandTableModel::setPtmGroupingExperiment(PtmGroupingExperiment * p_grp_ptm_experiment) {
+    qDebug() << "PtmIslandTableModel::setPtmGroupingExperiment begin ";
+    beginResetModel();
+    _p_grp_ptm_experiment = p_grp_ptm_experiment;
+
+    //emit headerDataChanged(Qt::Horizontal, 0,11);
+    //refresh();
+    qDebug() << "PtmIslandTableModel::setPtmGroupingExperiment end ";
+    endResetModel();
+}
+
+int PtmIslandTableModel::rowCount(const QModelIndex &parent ) const {
+    //qDebug() << "ProteinTableModel::rowCount begin ";
+    if (_p_grp_ptm_experiment != nullptr) {
+        //qDebug() << "ProteinTableModel::rowCount(const QModelIndex &parent ) " << _p_identification_group->getProteinMatchList().size();
+        return (int) _p_grp_ptm_experiment->getPtmIslandList().size();
+    }
+    return 0;
+}
+int PtmIslandTableModel::columnCount(const QModelIndex &parent ) const {
+    //qDebug() << "ProteinTableModel::columnCount begin ";
+    if (_p_grp_ptm_experiment != nullptr) {
+        return 3;
+    }
+    return 0;
+}
+QVariant PtmIslandTableModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+    if (_p_grp_ptm_experiment == nullptr) return QVariant();
+    if (orientation == Qt::Horizontal)
+    {
+    }
+    return QVariant();
+}
+QVariant PtmIslandTableModel::data(const QModelIndex &index, int role ) const {
+    // generate a log message when this method gets called
+    if (_p_grp_ptm_experiment == nullptr) return QVariant();
+    int row = index.row();
+    int col = index.column();
+    return QVariant();
+}
diff --git a/src/gui/ptm_island_list_view/ptmislandtablemodel.h b/src/gui/ptm_island_list_view/ptmislandtablemodel.h
index 7b933b98..523770d6 100644
--- a/src/gui/ptm_island_list_view/ptmislandtablemodel.h
+++ b/src/gui/ptm_island_list_view/ptmislandtablemodel.h
@@ -30,11 +30,26 @@
 #ifndef PTMISLANDTABLEMODEL_H
 #define PTMISLANDTABLEMODEL_H
 
-class PtmIslandTableModel
+#include <QAbstractTableModel>
+#include "../../grouping/ptm/ptmgroupingexperiment.h"
+
+class PtmIslandListWindow;
+class PtmIslandTableModel: public QAbstractTableModel
 {
+    Q_OBJECT
 public:
-    PtmIslandTableModel(const PtmIslandTableModel& other);
+    PtmIslandTableModel(PtmIslandListWindow * p_ptm_island_list_window);
+
     ~PtmIslandTableModel();
+
+    void setPtmGroupingExperiment(PtmGroupingExperiment * p_grp_ptm_experiment);
+    virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+    virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override;
+    virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
+    virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+
+private :
+    PtmGroupingExperiment * _p_grp_ptm_experiment=nullptr;
 };
 
 #endif // PTMISLANDTABLEMODEL_H
-- 
GitLab