mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	
		
			
	
	
		
			128 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			128 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; | ||
|  | } |