| 
									
										
										
										
											2017-05-27 20:04:44 +00:00
										 |  |  | #include "RestrictedSpinBox.hpp"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <algorithm>
 | 
					
						
							|  |  |  | #include <utility>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QString>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | QValidator::State RestrictedSpinBox::validate (QString& input, int& pos) const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   // start by doing the standard QSpinBox validation
 | 
					
						
							|  |  |  |   auto valid = HintedSpinBox::validate (input, pos); | 
					
						
							|  |  |  |   // extra validation
 | 
					
						
							| 
									
										
										
										
											2019-07-03 00:16:39 +01:00
										 |  |  |   if (QValidator::Acceptable == valid | 
					
						
							| 
									
										
										
										
											2017-05-27 20:04:44 +00:00
										 |  |  |       && values ().end () == std::find (values ().begin (), values ().end (), valueFromText (input))) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       valid = QValidator::Intermediate; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   return valid; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-06-25 14:35:58 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | void RestrictedSpinBox::fixup (QString& input) const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   auto iter = std::lower_bound (values ().begin (), values ().end (), valueFromText (input)); | 
					
						
							|  |  |  |   HintedSpinBox::fixup (input); | 
					
						
							|  |  |  |   if (iter != values ().end ()) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       input = textFromValue (*iter); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       input = textFromValue (values ().back ()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |