libodsstream
Library for mass spectrometry
Loading...
Searching...
No Matches
QtableWriter Class Reference

#include <qtablewriter.h>

Public Member Functions

 QtableWriter (CalcWriterInterface *p_writer, const QAbstractProxyModel *p_table_model)
void writeSheet (const QString &sheetName)
 write the entire table in a sheet
void setFormatPercentForColumn (const QString &column_title)
void setFormatPercentForColumn (const QModelIndex &column_index)

Private Attributes

CalcWriterInterfacemp_writer
const QAbstractProxyModel * mp_tableModel
std::map< int, bool > m_percentColumns

Detailed Description

Definition at line 37 of file qtablewriter.h.

Constructor & Destructor Documentation

◆ QtableWriter()

QtableWriter::QtableWriter ( CalcWriterInterface * p_writer,
const QAbstractProxyModel * p_table_model )

Definition at line 34 of file qtablewriter.cpp.

36 : mp_writer(p_writer), mp_tableModel(p_table_model)
37{
38 for(int i = 0; i < mp_tableModel->columnCount(); i++)
39 {
40 m_percentColumns.insert(std::pair<int, bool>(i, false));
41 }
42}
std::map< int, bool > m_percentColumns
const QAbstractProxyModel * mp_tableModel
CalcWriterInterface * mp_writer

References m_percentColumns, mp_tableModel, and mp_writer.

Member Function Documentation

◆ setFormatPercentForColumn() [1/2]

void QtableWriter::setFormatPercentForColumn ( const QModelIndex & column_index)

Definition at line 63 of file qtablewriter.cpp.

64{
65 qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
66 << " col=" << column_index.column();
67 QModelIndex nIndex = mp_tableModel->mapFromSource(column_index);
68
69 qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
70 << " col=" << nIndex.column();
71 m_percentColumns[nIndex.column()] = true;
72}

References m_percentColumns, and mp_tableModel.

◆ setFormatPercentForColumn() [2/2]

void QtableWriter::setFormatPercentForColumn ( const QString & column_title)

Definition at line 45 of file qtablewriter.cpp.

46{
47 int col_number = mp_tableModel->columnCount();
48 for(int j = 0; j < col_number; j++)
49 {
50
51 QVariant head_var =
52 mp_tableModel->headerData(j, Qt::Horizontal, Qt::DisplayRole);
53 if(head_var.toString() == column_title)
54 {
55 m_percentColumns[j] = true;
56 qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__
57 << " col=" << j;
58 }
59 }
60}

References m_percentColumns, and mp_tableModel.

◆ writeSheet()

void QtableWriter::writeSheet ( const QString & sheetName)

write the entire table in a sheet

Parameters
sheetNamethe sheet name

Definition at line 75 of file qtablewriter.cpp.

76{
77 mp_writer->writeSheet(sheetName);
78 OdsTableSettings settings;
79 // settings.setHorizontalWindowSplit(4);
80 settings.setVerticalSplit(1);
81 mp_writer->setCurrentOdsTableSettings(settings);
82
83 int col_number = mp_tableModel->columnCount();
84
85 int line_number = mp_tableModel->rowCount();
86 bool ok = false;
87 for(int j = 0; j < col_number; j++)
88 {
89
90 QVariant head_var =
91 mp_tableModel->headerData(j, Qt::Horizontal, Qt::ToolTipRole);
92
93 if(head_var.isNull())
94 {
95 }
96 else
97 {
98 mp_writer->setCellAnnotation(head_var.toString());
99 }
100 head_var = mp_tableModel->headerData(j, Qt::Horizontal, Qt::DisplayRole);
101 if(head_var.isNull())
102 {
103 mp_writer->writeEmptyCell();
104 }
105 else
106 {
107 mp_writer->writeCell(head_var.toString());
108 }
109 }
110
111 for(int i = 0; i < line_number; i++)
112 {
113 mp_writer->writeLine();
114 for(int j = 0; j < col_number; j++)
115 {
116 QModelIndex index = mp_tableModel->index(i, j);
117 QVariant var = mp_tableModel->data(index, Qt::CheckStateRole);
118 if(var.isNull())
119 {
120 var = mp_tableModel->data(index, Qt::DisplayRole);
121
122 ok = false;
123 if(var.isNull())
124 {
125 mp_writer->writeEmptyCell();
126 }
127 else
128 {
129 double var_float = var.toDouble(&ok);
130 if(ok)
131 {
132 if(m_percentColumns[j])
133 {
134 mp_writer->writeCellPercentage(var_float);
135 }
136 else
137 {
138 mp_writer->writeCell(var_float);
139 }
140 }
141 else
142 {
143 mp_writer->writeCell(var.toString());
144 }
145 }
146 }
147 else
148 {
149 if(var == Qt::Checked)
150 {
151 mp_writer->writeCell(true);
152 }
153 else
154 {
155 mp_writer->writeCell(false);
156 }
157 }
158 }
159 }
160}
void setVerticalSplit(unsigned int position)

References m_percentColumns, mp_tableModel, mp_writer, and OdsTableSettings::setVerticalSplit().

Member Data Documentation

◆ m_percentColumns

std::map<int, bool> QtableWriter::m_percentColumns
private

◆ mp_tableModel

const QAbstractProxyModel* QtableWriter::mp_tableModel
private

◆ mp_writer

CalcWriterInterface* QtableWriter::mp_writer
private

Definition at line 40 of file qtablewriter.h.

Referenced by QtableWriter(), and writeSheet().


The documentation for this class was generated from the following files: