| 
									
										
										
										
											2018-10-17 00:26:04 +01:00
										 |  |  | #include "DecodeHighlightingListView.hpp"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QAction>
 | 
					
						
							|  |  |  | #include <QColorDialog>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-07 17:49:45 +00:00
										 |  |  | #include "models/DecodeHighlightingModel.hpp"
 | 
					
						
							| 
									
										
										
										
											2018-10-17 00:26:04 +01:00
										 |  |  | #include "MessageBox.hpp"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-06 12:56:25 +01:00
										 |  |  | #include "moc_DecodeHighlightingListView.cpp"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-17 00:26:04 +01:00
										 |  |  | DecodeHighlightingListView::DecodeHighlightingListView (QWidget * parent) | 
					
						
							|  |  |  |   : QListView {parent} | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2018-11-29 01:03:44 +00:00
										 |  |  |   auto * fg_colour_action = new QAction {tr ("&Foreground color ..."), this}; | 
					
						
							|  |  |  |   addAction (fg_colour_action); | 
					
						
							|  |  |  |   connect (fg_colour_action, &QAction::triggered, [this] (bool /*checked*/) { | 
					
						
							| 
									
										
										
										
											2018-10-17 00:26:04 +01:00
										 |  |  |       auto const& index = currentIndex (); | 
					
						
							|  |  |  |       auto colour = QColorDialog::getColor (model ()->data (index, Qt::ForegroundRole).value<QBrush> ().color () | 
					
						
							|  |  |  |                                             , this | 
					
						
							|  |  |  |                                             , tr ("Choose %1 Foreground Color") | 
					
						
							|  |  |  |                                                 .arg (model ()->data (index).toString ())); | 
					
						
							|  |  |  |       if (colour.isValid ()) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2018-11-29 01:03:44 +00:00
										 |  |  |           model ()->setData (index, QBrush {colour}, Qt::ForegroundRole); | 
					
						
							| 
									
										
										
										
											2018-10-17 00:26:04 +01:00
										 |  |  |         } | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2018-11-29 01:03:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   auto * unset_fg_colour_action = new QAction {tr ("&Unset foreground color"), this}; | 
					
						
							|  |  |  |   addAction (unset_fg_colour_action); | 
					
						
							|  |  |  |   connect (unset_fg_colour_action, &QAction::triggered, [this] (bool /*checked*/) { | 
					
						
							|  |  |  |       model ()->setData (currentIndex (), QBrush {}, Qt::ForegroundRole); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   auto * bg_colour_action = new QAction {tr ("&Background color ..."), this}; | 
					
						
							|  |  |  |   addAction (bg_colour_action); | 
					
						
							|  |  |  |   connect (bg_colour_action, &QAction::triggered, [this] (bool /*checked*/) { | 
					
						
							| 
									
										
										
										
											2018-10-17 00:26:04 +01:00
										 |  |  |       auto const& index = currentIndex (); | 
					
						
							|  |  |  |       auto colour = QColorDialog::getColor (model ()->data (index, Qt::BackgroundRole).value<QBrush> ().color () | 
					
						
							|  |  |  |                                             , this | 
					
						
							|  |  |  |                                             , tr ("Choose %1 Background Color") | 
					
						
							|  |  |  |                                                 .arg (model ()->data (index).toString ())); | 
					
						
							|  |  |  |       if (colour.isValid ()) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2018-11-29 01:03:44 +00:00
										 |  |  |           model ()->setData (index, QBrush {colour}, Qt::BackgroundRole); | 
					
						
							| 
									
										
										
										
											2018-10-17 00:26:04 +01:00
										 |  |  |         } | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2018-11-29 01:03:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   auto * unset_bg_colour_action = new QAction {tr ("U&nset background color"), this}; | 
					
						
							|  |  |  |   addAction (unset_bg_colour_action); | 
					
						
							|  |  |  |   connect (unset_bg_colour_action, &QAction::triggered, [this] (bool /*checked*/) { | 
					
						
							|  |  |  |       model ()->setData (currentIndex (), QBrush {}, Qt::BackgroundRole); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   auto * defaults_action = new QAction {tr ("&Reset this item to defaults"), this}; | 
					
						
							|  |  |  |   addAction (defaults_action); | 
					
						
							|  |  |  |   connect (defaults_action, &QAction::triggered, [this] (bool /*checked*/) { | 
					
						
							| 
									
										
										
										
											2018-10-17 00:26:04 +01:00
										 |  |  |       auto const& index = currentIndex (); | 
					
						
							|  |  |  |       model ()->setData (index, model ()->data (index, DecodeHighlightingModel::EnabledDefaultRole).toBool () ? Qt::Checked : Qt::Unchecked, Qt::CheckStateRole); | 
					
						
							|  |  |  |       model ()->setData (index, model ()->data (index, DecodeHighlightingModel::ForegroundDefaultRole), Qt::ForegroundRole); | 
					
						
							|  |  |  |       model ()->setData (index, model ()->data (index, DecodeHighlightingModel::BackgroundDefaultRole), Qt::BackgroundRole); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | QSize DecodeHighlightingListView::sizeHint () const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   auto item_height = sizeHintForRow (0); | 
					
						
							|  |  |  |   if (item_height >= 0) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       // set the height hint to exactly the space required for all the
 | 
					
						
							|  |  |  |       // items
 | 
					
						
							|  |  |  |       return {width (), (model ()->rowCount () * (item_height + 2 * spacing ())) + 2 * frameWidth ()}; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   return QListView::sizeHint (); | 
					
						
							|  |  |  | } |