mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
		
			
				
	
	
		
			127 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #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;
 | |
| }
 |