mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Resolution-independent trash icon
Also, generate the corresponding pixmap only once, and distribute it to all models that need it. Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									60702f104c
								
							
						
					
					
						commit
						dfec501e7a
					
				
					 4 changed files with 44 additions and 5 deletions
				
			
		|  | @ -615,7 +615,13 @@ QVariant DivePlannerPointsModel::data(const QModelIndex &index, int role) const | |||
| 		switch (index.column()) { | ||||
| 		case REMOVE: | ||||
| 			if (rowCount() > 1) | ||||
| 				return p.entered ? QIcon(":trash") : QVariant(); | ||||
| 				return p.entered ? trashIcon() : QVariant(); | ||||
| 		} | ||||
| 	} else if (role == Qt::SizeHintRole) { | ||||
| 		switch (index.column()) { | ||||
| 		case REMOVE: | ||||
| 			if (rowCount() > 1) | ||||
| 				return p.entered ? trashIcon().size() : QVariant(); | ||||
| 		} | ||||
| 	} else if (role == Qt::FontRole) { | ||||
| 		if (divepoints.at(index.row()).entered) { | ||||
|  |  | |||
|  | @ -56,16 +56,31 @@ void CleanerTableModel::setHeaderDataStrings(const QStringList &newHeaders) | |||
| 	headers = newHeaders; | ||||
| } | ||||
| 
 | ||||
| static QPixmap *trashIconPixmap; | ||||
| 
 | ||||
| // initialize the trash icon if necessary
 | ||||
| static void initTrashIcon() { | ||||
| 	if (!trashIconPixmap) | ||||
| 		trashIconPixmap = new QPixmap(QIcon(":trash").pixmap(defaultIconMetrics().sz_small)); | ||||
| } | ||||
| 
 | ||||
| const QPixmap &trashIcon() { | ||||
| 	return *trashIconPixmap; | ||||
| } | ||||
| 
 | ||||
| CylindersModel::CylindersModel(QObject *parent) : rows(0) | ||||
| { | ||||
| 	//	enum {REMOVE, TYPE, SIZE, WORKINGPRESS, START, END, O2, HE, DEPTH};
 | ||||
| 	setHeaderDataStrings(QStringList() << "" << tr("Type") << tr("Size") << tr("Work press.") << tr("Start press.") << tr("End press.") << trUtf8("O" UTF8_SUBSCRIPT_2 "%") << tr("He%") | ||||
| 					   << tr("Switch at") | ||||
| 			     ); | ||||
| 
 | ||||
| 	initTrashIcon(); | ||||
| } | ||||
| 
 | ||||
| CylindersModel *CylindersModel::instance() | ||||
| { | ||||
| 
 | ||||
| 	static QScopedPointer<CylindersModel> self(new CylindersModel()); | ||||
| 	return self.data(); | ||||
| } | ||||
|  | @ -158,7 +173,11 @@ QVariant CylindersModel::data(const QModelIndex &index, int role) const | |||
| 		break; | ||||
| 	case Qt::DecorationRole: | ||||
| 		if (index.column() == REMOVE) | ||||
| 			ret = QIcon(":trash"); | ||||
| 			ret = trashIcon(); | ||||
| 		break; | ||||
| 	case Qt::SizeHintRole: | ||||
| 		if (index.column() == REMOVE) | ||||
| 			ret = trashIcon().size(); | ||||
| 		break; | ||||
| 
 | ||||
| 	case Qt::ToolTipRole: | ||||
|  | @ -394,6 +413,8 @@ WeightModel::WeightModel(QObject *parent) : CleanerTableModel(parent), rows(0) | |||
| { | ||||
| 	//enum Column {REMOVE, TYPE, WEIGHT};
 | ||||
| 	setHeaderDataStrings(QStringList() << tr("") << tr("Type") << tr("Weight")); | ||||
| 
 | ||||
| 	initTrashIcon(); | ||||
| } | ||||
| 
 | ||||
| weightsystem_t *WeightModel::weightSystemAt(const QModelIndex &index) | ||||
|  | @ -449,7 +470,11 @@ QVariant WeightModel::data(const QModelIndex &index, int role) const | |||
| 		break; | ||||
| 	case Qt::DecorationRole: | ||||
| 		if (index.column() == REMOVE) | ||||
| 			ret = QIcon(":trash"); | ||||
| 			ret = trashIcon(); | ||||
| 		break; | ||||
| 	case Qt::SizeHintRole: | ||||
| 		if (index.column() == REMOVE) | ||||
| 			ret = trashIcon().size(); | ||||
| 		break; | ||||
| 	case Qt::ToolTipRole: | ||||
| 		if (index.column() == REMOVE) | ||||
|  | @ -1466,6 +1491,8 @@ DiveComputerModel::DiveComputerModel(QMultiMap<QString, DiveComputerNode> &dcMap | |||
| 	setHeaderDataStrings(QStringList() << "" << tr("Model") << tr("Device ID") << tr("Nickname")); | ||||
| 	dcWorkingMap = dcMap; | ||||
| 	numRows = 0; | ||||
| 
 | ||||
| 	initTrashIcon(); | ||||
| } | ||||
| 
 | ||||
| QVariant DiveComputerModel::data(const QModelIndex &index, int role) const | ||||
|  | @ -1491,7 +1518,10 @@ QVariant DiveComputerModel::data(const QModelIndex &index, int role) const | |||
| 	if (index.column() == REMOVE) { | ||||
| 		switch (role) { | ||||
| 		case Qt::DecorationRole: | ||||
| 			ret = QIcon(":trash"); | ||||
| 			ret = trashIcon(); | ||||
| 			break; | ||||
| 		case Qt::SizeHintRole: | ||||
| 			ret = trashIcon().size(); | ||||
| 			break; | ||||
| 		case Qt::ToolTipRole: | ||||
| 			ret = tr("Clicking here will remove this dive computer."); | ||||
|  |  | |||
|  | @ -89,6 +89,9 @@ private: | |||
| 	QString biggerEntry; | ||||
| }; | ||||
| 
 | ||||
| /* Retrieve the trash icon pixmap, common to most table models */ | ||||
| const QPixmap &trashIcon(); | ||||
| 
 | ||||
| /* Encapsulation of the Cylinder Model, that presents the
 | ||||
|  * Current cylinders that are used on a dive. */ | ||||
| class CylindersModel : public CleanerTableModel { | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ TableView::TableView(QWidget *parent) : QGroupBox(parent) | |||
| 	metrics.icon = &defaultIconMetrics(); | ||||
| 
 | ||||
| 	metrics.col_width = 7*text_em; | ||||
| 	metrics.rm_col_width = 3*text_em; | ||||
| 	metrics.rm_col_width = metrics.icon->sz_small + 2*metrics.icon->spacing; | ||||
| 	metrics.header_ht = text_ht + 10; // TODO DPI
 | ||||
| 
 | ||||
| 	/* There`s mostly a need for a Mac fix here too. */ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue