mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Move TablePrintModel to Qt-models
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
85d4bb8a70
commit
60dc9f4ab3
6 changed files with 174 additions and 163 deletions
|
@ -257,6 +257,7 @@ set(SUBSURFACE_MODELS_LIB_SRCS
|
||||||
qt-models/weightmodel.cpp
|
qt-models/weightmodel.cpp
|
||||||
qt-models/divecomputermodel.cpp
|
qt-models/divecomputermodel.cpp
|
||||||
qt-models/treemodel.cpp
|
qt-models/treemodel.cpp
|
||||||
|
qt-models/tableprintmodel.cpp
|
||||||
qt-models/yearlystatisticsmodel.cpp
|
qt-models/yearlystatisticsmodel.cpp
|
||||||
qt-models/divetripmodel.cpp
|
qt-models/divetripmodel.cpp
|
||||||
qt-models/divecomputerextradatamodel.cpp
|
qt-models/divecomputerextradatamodel.cpp
|
||||||
|
|
|
@ -58,130 +58,6 @@ const QPixmap &trashIcon()
|
||||||
* #
|
* #
|
||||||
* ################################################################
|
* ################################################################
|
||||||
*/
|
*/
|
||||||
TablePrintModel::TablePrintModel()
|
|
||||||
{
|
|
||||||
columns = 7;
|
|
||||||
rows = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
TablePrintModel::~TablePrintModel()
|
|
||||||
{
|
|
||||||
for (int i = 0; i < list.size(); i++)
|
|
||||||
delete list.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TablePrintModel::insertRow(int index)
|
|
||||||
{
|
|
||||||
struct TablePrintItem *item = new struct TablePrintItem();
|
|
||||||
item->colorBackground = 0xffffffff;
|
|
||||||
if (index == -1) {
|
|
||||||
beginInsertRows(QModelIndex(), rows, rows);
|
|
||||||
list.append(item);
|
|
||||||
} else {
|
|
||||||
beginInsertRows(QModelIndex(), index, index);
|
|
||||||
list.insert(index, item);
|
|
||||||
}
|
|
||||||
endInsertRows();
|
|
||||||
rows++;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TablePrintModel::callReset()
|
|
||||||
{
|
|
||||||
beginResetModel();
|
|
||||||
endResetModel();
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant TablePrintModel::data(const QModelIndex &index, int role) const
|
|
||||||
{
|
|
||||||
if (!index.isValid())
|
|
||||||
return QVariant();
|
|
||||||
if (role == Qt::BackgroundRole)
|
|
||||||
return QColor(list.at(index.row())->colorBackground);
|
|
||||||
if (role == Qt::DisplayRole)
|
|
||||||
switch (index.column()) {
|
|
||||||
case 0:
|
|
||||||
return list.at(index.row())->number;
|
|
||||||
case 1:
|
|
||||||
return list.at(index.row())->date;
|
|
||||||
case 2:
|
|
||||||
return list.at(index.row())->depth;
|
|
||||||
case 3:
|
|
||||||
return list.at(index.row())->duration;
|
|
||||||
case 4:
|
|
||||||
return list.at(index.row())->divemaster;
|
|
||||||
case 5:
|
|
||||||
return list.at(index.row())->buddy;
|
|
||||||
case 6:
|
|
||||||
return list.at(index.row())->location;
|
|
||||||
}
|
|
||||||
if (role == Qt::FontRole) {
|
|
||||||
QFont font;
|
|
||||||
font.setPointSizeF(7.5);
|
|
||||||
if (index.row() == 0 && index.column() == 0) {
|
|
||||||
font.setBold(true);
|
|
||||||
}
|
|
||||||
return QVariant::fromValue(font);
|
|
||||||
}
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TablePrintModel::setData(const QModelIndex &index, const QVariant &value, int role)
|
|
||||||
{
|
|
||||||
if (index.isValid()) {
|
|
||||||
if (role == Qt::DisplayRole) {
|
|
||||||
switch (index.column()) {
|
|
||||||
case 0:
|
|
||||||
list.at(index.row())->number = value.toString();
|
|
||||||
case 1:
|
|
||||||
list.at(index.row())->date = value.toString();
|
|
||||||
case 2:
|
|
||||||
list.at(index.row())->depth = value.toString();
|
|
||||||
case 3:
|
|
||||||
list.at(index.row())->duration = value.toString();
|
|
||||||
case 4:
|
|
||||||
list.at(index.row())->divemaster = value.toString();
|
|
||||||
case 5:
|
|
||||||
list.at(index.row())->buddy = value.toString();
|
|
||||||
case 6: {
|
|
||||||
/* truncate if there are more than N lines of text,
|
|
||||||
* we don't want a row to be larger that a single page! */
|
|
||||||
QString s = value.toString();
|
|
||||||
const int maxLines = 15;
|
|
||||||
int count = 0;
|
|
||||||
for (int i = 0; i < s.length(); i++) {
|
|
||||||
if (s.at(i) != QChar('\n'))
|
|
||||||
continue;
|
|
||||||
count++;
|
|
||||||
if (count > maxLines) {
|
|
||||||
s = s.left(i - 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
list.at(index.row())->location = s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (role == Qt::BackgroundRole) {
|
|
||||||
list.at(index.row())->colorBackground = value.value<unsigned int>();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
int TablePrintModel::rowCount(const QModelIndex &parent) const
|
|
||||||
{
|
|
||||||
Q_UNUSED(parent);
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
int TablePrintModel::columnCount(const QModelIndex &parent) const
|
|
||||||
{
|
|
||||||
Q_UNUSED(parent);
|
|
||||||
return columns;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*#################################################################
|
/*#################################################################
|
||||||
* #
|
* #
|
||||||
* # Profile Print Model
|
* # Profile Print Model
|
||||||
|
|
|
@ -22,45 +22,6 @@
|
||||||
#include "cleanertablemodel.h"
|
#include "cleanertablemodel.h"
|
||||||
#include "treemodel.h"
|
#include "treemodel.h"
|
||||||
|
|
||||||
/* TablePrintModel:
|
|
||||||
* for now we use a blank table model with row items TablePrintItem.
|
|
||||||
* these are pretty much the same as DiveItem, but have color
|
|
||||||
* properties, as well. perhaps later one a more unified model has to be
|
|
||||||
* considered, but the current TablePrintModel idea has to be extended
|
|
||||||
* to support variadic column lists and column list orders that can
|
|
||||||
* be controlled by the user.
|
|
||||||
*/
|
|
||||||
struct TablePrintItem {
|
|
||||||
QString number;
|
|
||||||
QString date;
|
|
||||||
QString depth;
|
|
||||||
QString duration;
|
|
||||||
QString divemaster;
|
|
||||||
QString buddy;
|
|
||||||
QString location;
|
|
||||||
unsigned int colorBackground;
|
|
||||||
};
|
|
||||||
|
|
||||||
class TablePrintModel : public QAbstractTableModel {
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
private:
|
|
||||||
QList<struct TablePrintItem *> list;
|
|
||||||
|
|
||||||
public:
|
|
||||||
~TablePrintModel();
|
|
||||||
TablePrintModel();
|
|
||||||
|
|
||||||
int rows, columns;
|
|
||||||
void insertRow(int index = -1);
|
|
||||||
void callReset();
|
|
||||||
|
|
||||||
QVariant data(const QModelIndex &index, int role) const;
|
|
||||||
bool setData(const QModelIndex &index, const QVariant &value, int role);
|
|
||||||
int rowCount(const QModelIndex &parent) const;
|
|
||||||
int columnCount(const QModelIndex &parent) const;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* ProfilePrintModel:
|
/* ProfilePrintModel:
|
||||||
* this model is used when printing a data table under a profile. it requires
|
* this model is used when printing a data table under a profile. it requires
|
||||||
* some exact usage of setSpan(..) on the target QTableView widget.
|
* some exact usage of setSpan(..) on the target QTableView widget.
|
||||||
|
|
127
qt-models/tableprintmodel.cpp
Normal file
127
qt-models/tableprintmodel.cpp
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
#include "tableprintmodel.h"
|
||||||
|
#include "metrics.h"
|
||||||
|
#include "color.h"
|
||||||
|
|
||||||
|
TablePrintModel::TablePrintModel()
|
||||||
|
{
|
||||||
|
columns = 7;
|
||||||
|
rows = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
TablePrintModel::~TablePrintModel()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < list.size(); i++)
|
||||||
|
delete list.at(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TablePrintModel::insertRow(int index)
|
||||||
|
{
|
||||||
|
struct TablePrintItem *item = new struct TablePrintItem();
|
||||||
|
item->colorBackground = 0xffffffff;
|
||||||
|
if (index == -1) {
|
||||||
|
beginInsertRows(QModelIndex(), rows, rows);
|
||||||
|
list.append(item);
|
||||||
|
} else {
|
||||||
|
beginInsertRows(QModelIndex(), index, index);
|
||||||
|
list.insert(index, item);
|
||||||
|
}
|
||||||
|
endInsertRows();
|
||||||
|
rows++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TablePrintModel::callReset()
|
||||||
|
{
|
||||||
|
beginResetModel();
|
||||||
|
endResetModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant TablePrintModel::data(const QModelIndex &index, int role) const
|
||||||
|
{
|
||||||
|
if (!index.isValid())
|
||||||
|
return QVariant();
|
||||||
|
if (role == Qt::BackgroundRole)
|
||||||
|
return QColor(list.at(index.row())->colorBackground);
|
||||||
|
if (role == Qt::DisplayRole)
|
||||||
|
switch (index.column()) {
|
||||||
|
case 0:
|
||||||
|
return list.at(index.row())->number;
|
||||||
|
case 1:
|
||||||
|
return list.at(index.row())->date;
|
||||||
|
case 2:
|
||||||
|
return list.at(index.row())->depth;
|
||||||
|
case 3:
|
||||||
|
return list.at(index.row())->duration;
|
||||||
|
case 4:
|
||||||
|
return list.at(index.row())->divemaster;
|
||||||
|
case 5:
|
||||||
|
return list.at(index.row())->buddy;
|
||||||
|
case 6:
|
||||||
|
return list.at(index.row())->location;
|
||||||
|
}
|
||||||
|
if (role == Qt::FontRole) {
|
||||||
|
QFont font;
|
||||||
|
font.setPointSizeF(7.5);
|
||||||
|
if (index.row() == 0 && index.column() == 0) {
|
||||||
|
font.setBold(true);
|
||||||
|
}
|
||||||
|
return QVariant::fromValue(font);
|
||||||
|
}
|
||||||
|
return QVariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TablePrintModel::setData(const QModelIndex &index, const QVariant &value, int role)
|
||||||
|
{
|
||||||
|
if (index.isValid()) {
|
||||||
|
if (role == Qt::DisplayRole) {
|
||||||
|
switch (index.column()) {
|
||||||
|
case 0:
|
||||||
|
list.at(index.row())->number = value.toString();
|
||||||
|
case 1:
|
||||||
|
list.at(index.row())->date = value.toString();
|
||||||
|
case 2:
|
||||||
|
list.at(index.row())->depth = value.toString();
|
||||||
|
case 3:
|
||||||
|
list.at(index.row())->duration = value.toString();
|
||||||
|
case 4:
|
||||||
|
list.at(index.row())->divemaster = value.toString();
|
||||||
|
case 5:
|
||||||
|
list.at(index.row())->buddy = value.toString();
|
||||||
|
case 6: {
|
||||||
|
/* truncate if there are more than N lines of text,
|
||||||
|
* we don't want a row to be larger that a single page! */
|
||||||
|
QString s = value.toString();
|
||||||
|
const int maxLines = 15;
|
||||||
|
int count = 0;
|
||||||
|
for (int i = 0; i < s.length(); i++) {
|
||||||
|
if (s.at(i) != QChar('\n'))
|
||||||
|
continue;
|
||||||
|
count++;
|
||||||
|
if (count > maxLines) {
|
||||||
|
s = s.left(i - 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list.at(index.row())->location = s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (role == Qt::BackgroundRole) {
|
||||||
|
list.at(index.row())->colorBackground = value.value<unsigned int>();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TablePrintModel::rowCount(const QModelIndex &parent) const
|
||||||
|
{
|
||||||
|
Q_UNUSED(parent);
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
int TablePrintModel::columnCount(const QModelIndex &parent) const
|
||||||
|
{
|
||||||
|
Q_UNUSED(parent);
|
||||||
|
return columns;
|
||||||
|
}
|
45
qt-models/tableprintmodel.h
Normal file
45
qt-models/tableprintmodel.h
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
#ifndef TABLEPRINTMODEL_H
|
||||||
|
#define TABLEPRINTMODEL_H
|
||||||
|
|
||||||
|
#include <QAbstractTableModel>
|
||||||
|
|
||||||
|
/* TablePrintModel:
|
||||||
|
* for now we use a blank table model with row items TablePrintItem.
|
||||||
|
* these are pretty much the same as DiveItem, but have color
|
||||||
|
* properties, as well. perhaps later one a more unified model has to be
|
||||||
|
* considered, but the current TablePrintModel idea has to be extended
|
||||||
|
* to support variadic column lists and column list orders that can
|
||||||
|
* be controlled by the user.
|
||||||
|
*/
|
||||||
|
struct TablePrintItem {
|
||||||
|
QString number;
|
||||||
|
QString date;
|
||||||
|
QString depth;
|
||||||
|
QString duration;
|
||||||
|
QString divemaster;
|
||||||
|
QString buddy;
|
||||||
|
QString location;
|
||||||
|
unsigned int colorBackground;
|
||||||
|
};
|
||||||
|
|
||||||
|
class TablePrintModel : public QAbstractTableModel {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
private:
|
||||||
|
QList<TablePrintItem *> list;
|
||||||
|
|
||||||
|
public:
|
||||||
|
~TablePrintModel();
|
||||||
|
TablePrintModel();
|
||||||
|
|
||||||
|
int rows, columns;
|
||||||
|
void insertRow(int index = -1);
|
||||||
|
void callReset();
|
||||||
|
|
||||||
|
QVariant data(const QModelIndex &index, int role) const;
|
||||||
|
bool setData(const QModelIndex &index, const QVariant &value, int role);
|
||||||
|
int rowCount(const QModelIndex &parent) const;
|
||||||
|
int columnCount(const QModelIndex &parent) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -12,6 +12,7 @@
|
||||||
#include "models.h"
|
#include "models.h"
|
||||||
#include "profile/profilewidget2.h"
|
#include "profile/profilewidget2.h"
|
||||||
#include "divetripmodel.h"
|
#include "divetripmodel.h"
|
||||||
|
#include "tableprintmodel.h"
|
||||||
|
|
||||||
PrintLayout::PrintLayout(PrintDialog *dialogPtr, QPrinter *printerPtr, struct print_options *optionsPtr)
|
PrintLayout::PrintLayout(PrintDialog *dialogPtr, QPrinter *printerPtr, struct print_options *optionsPtr)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue