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, and mp_tableModel.

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);
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 {
104 }
105 else
106 {
107 mp_writer->writeCell(head_var.toString());
108 }
109 }
110
111 for(int i = 0; i < line_number; i++)
112 {
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 {
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}
virtual void writeEmptyCell()=0
write an empty cell
virtual void writeCell(const char *cell_text)=0
write a text cell
virtual void setCellAnnotation(const QString &annotation)=0
set annotation to write in the next cell
virtual void writeCellPercentage(double value)=0
write a double as a percentage
virtual void writeSheet(const QString &sheetName)=0
open a new sheet
virtual void setCurrentOdsTableSettings(const OdsTableSettings &settings)
set ODS table settings of the current sheet (table)
virtual void writeLine()=0
open a new line
void setVerticalSplit(unsigned int position)

References m_percentColumns, mp_tableModel, mp_writer, CalcWriterInterface::setCellAnnotation(), CalcWriterInterface::setCurrentOdsTableSettings(), OdsTableSettings::setVerticalSplit(), CalcWriterInterface::writeCell(), CalcWriterInterface::writeCellPercentage(), CalcWriterInterface::writeEmptyCell(), CalcWriterInterface::writeLine(), and CalcWriterInterface::writeSheet().

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 writeSheet().


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