mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	More flexibility for QDateTime round/truncate routine
This commit is contained in:
		
							parent
							
								
									09dc647c12
								
							
						
					
					
						commit
						0ba5d7e1bf
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -9,6 +9,7 @@ jnq* | |||||||
| *.mod | *.mod | ||||||
| *.pro.user | *.pro.user | ||||||
| *.txt | *.txt | ||||||
|  | !**/CMakeLists.txt | ||||||
| cmake-build-debug | cmake-build-debug | ||||||
| cmake-build-release | cmake-build-release | ||||||
| CMakeFiles | CMakeFiles | ||||||
|  | |||||||
| @ -926,7 +926,9 @@ endif () | |||||||
| if (WSJT_GENERATE_DOCS) | if (WSJT_GENERATE_DOCS) | ||||||
|   add_subdirectory (doc) |   add_subdirectory (doc) | ||||||
| endif (WSJT_GENERATE_DOCS) | endif (WSJT_GENERATE_DOCS) | ||||||
| 
 | if (EXISTS ${CMAKE_SOURCE_DIR}/tests AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/tests) | ||||||
|  |   add_subdirectory (tests) | ||||||
|  | endif () | ||||||
| 
 | 
 | ||||||
| # | # | ||||||
| # Library building setup | # Library building setup | ||||||
|  | |||||||
| @ -37,14 +37,14 @@ void update_dynamic_property (QWidget * widget, char const * property, QVariant | |||||||
|   widget->update (); |   widget->update (); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| QDateTime qt_round_date_time_to (QDateTime dt, int seconds) | QDateTime qt_round_date_time_to (QDateTime dt, int milliseconds) | ||||||
| { | { | ||||||
|   dt.setSecsSinceEpoch (dt.addSecs (seconds - 1).toSecsSinceEpoch () / seconds * seconds); |   dt.setMSecsSinceEpoch (dt.addMSecs (milliseconds / 2).toMSecsSinceEpoch () / milliseconds * milliseconds); | ||||||
|   return dt; |   return dt; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| QDateTime qt_truncate_date_time_to (QDateTime dt, int seconds) | QDateTime qt_truncate_date_time_to (QDateTime dt, int milliseconds) | ||||||
| { | { | ||||||
|   dt.setSecsSinceEpoch (dt.toSecsSinceEpoch () / seconds * seconds); |   dt.setMSecsSinceEpoch (dt.toMSecsSinceEpoch () / milliseconds * milliseconds); | ||||||
|   return dt; |   return dt; | ||||||
| } | } | ||||||
|  | |||||||
| @ -69,11 +69,11 @@ QString font_as_stylesheet (QFont const&); | |||||||
| // conditional style sheet updates
 | // conditional style sheet updates
 | ||||||
| void update_dynamic_property (QWidget *, char const * property, QVariant const& value); | void update_dynamic_property (QWidget *, char const * property, QVariant const& value); | ||||||
| 
 | 
 | ||||||
| // round a QDateTime instance to an interval
 | // round a QDateTime instance to an integral interval of milliseconds
 | ||||||
| QDateTime qt_round_date_time_to (QDateTime dt, int seconds); | QDateTime qt_round_date_time_to (QDateTime dt, int milliseconds); | ||||||
| 
 | 
 | ||||||
| // truncate a QDateTime to an interval
 | // truncate a QDateTime to an integral interval of milliseconds
 | ||||||
| QDateTime qt_truncate_date_time_to (QDateTime dt, int seconds); | QDateTime qt_truncate_date_time_to (QDateTime dt, int milliseconds); | ||||||
| 
 | 
 | ||||||
| template <class T> | template <class T> | ||||||
| class VPtr | class VPtr | ||||||
|  | |||||||
							
								
								
									
										23
									
								
								tests/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								tests/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | |||||||
|  | find_package (Qt5Test 5 REQUIRED) | ||||||
|  | 
 | ||||||
|  | # | ||||||
|  | # Compiler options | ||||||
|  | # | ||||||
|  | set (CMAKE_CXX_STANDARD 11) | ||||||
|  | add_compile_options ("$<$<COMPILE_LANGUAGE:Fortran>:-Wall;-Wno-conversion;-fno-second-underscore;-fno-f2c>") | ||||||
|  | add_compile_options ("$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CONFIG:Debug>>:-fbounds-check>") | ||||||
|  | add_compile_options ("$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<NOT:$<CONFIG:Debug>>>:-funroll-all-loops>") | ||||||
|  | add_compile_options ("$<$<AND:$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>,$<OR:$<C_COMPILER_ID:GNU>,$<C_COMPILER_ID:Clang>,$<C_COMPILER_ID:AppleClang>>>:-Wall;-Wextra>") | ||||||
|  | add_compile_options ("$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CXX_COMPILER_ID:GNU>>:-Wno-pragmas>") | ||||||
|  | add_compile_options ("$<$<AND:$<OR:$<C_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:GNU>>,$<NOT:$<CONFIG:Debug>>>:-fdata-sections;-ffunction-sections>") | ||||||
|  | if (${OPENMP_FOUND} OR APPLE) | ||||||
|  |   add_compile_options ("$<$<AND:$<OR:$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>,$<C_COMPILER_ID:GNU>>:${OpenMP_C_FLAGS}>") | ||||||
|  | endif () | ||||||
|  | 
 | ||||||
|  | # Tell CMake to run moc when necessary | ||||||
|  | set (CMAKE_AUTOMOC ON) | ||||||
|  | include_directories (${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}) | ||||||
|  | 
 | ||||||
|  | add_executable (test_qt_helpers test_qt_helpers.cpp) | ||||||
|  | target_link_libraries (test_qt_helpers wsjt_qt Qt5::Test) | ||||||
|  | add_test (test_qt_helpers test_qt_helpers) | ||||||
							
								
								
									
										138
									
								
								tests/test_qt_helpers.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								tests/test_qt_helpers.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,138 @@ | |||||||
|  | #include <QtTest> | ||||||
|  | #include <QDateTime> | ||||||
|  | #include <QDebug> | ||||||
|  | 
 | ||||||
|  | #include "qt_helpers.hpp" | ||||||
|  | 
 | ||||||
|  | class TestQtHelpers | ||||||
|  |   : public QObject | ||||||
|  | { | ||||||
|  |   Q_OBJECT | ||||||
|  | 
 | ||||||
|  | public: | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  |   Q_SLOT void round_15s_date_time_up () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}}; | ||||||
|  |     QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 30))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void truncate_15s_date_time_up () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}}; | ||||||
|  |     QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void round_15s_date_time_down () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}}; | ||||||
|  |     QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void truncate_15s_date_time_down () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}}; | ||||||
|  |     QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void round_15s_date_time_on () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15}}; | ||||||
|  |     QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void truncate_15s_date_time_on () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15}}; | ||||||
|  |     QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void round_15s_date_time_under () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 14, 999}}; | ||||||
|  |     QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void truncate_15s_date_time_under () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 14, 999}}; | ||||||
|  |     QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void round_15s_date_time_over () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15, 1}}; | ||||||
|  |     QCOMPARE (qt_round_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void truncate_15s_date_time_over () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 15, 1}}; | ||||||
|  |     QCOMPARE (qt_truncate_date_time_to (dt, 15000), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void round_7p5s_date_time_up () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 250}}; | ||||||
|  |     QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 30))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void truncate_7p5s_date_time_up () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 250}}; | ||||||
|  |     QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void round_7p5s_date_time_down () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 249}}; | ||||||
|  |     QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void truncate_7p5s_date_time_down () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 26, 249}}; | ||||||
|  |     QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void round_7p5s_date_time_on () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}}; | ||||||
|  |     QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void truncate_7p5s_date_time_on () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 500}}; | ||||||
|  |     QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void round_7p5s_date_time_under () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}}; | ||||||
|  |     QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void truncate_7p5s_date_time_under () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 499}}; | ||||||
|  |     QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 15))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void round_7p5s_date_time_over () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 501}}; | ||||||
|  |     QCOMPARE (qt_round_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Q_SLOT void truncate_7p5s_date_time_over () | ||||||
|  |   { | ||||||
|  |     QDateTime dt {QDate {2020, 8, 6}, QTime {14, 15, 22, 501}}; | ||||||
|  |     QCOMPARE (qt_truncate_date_time_to (dt, 7500), QDateTime (QDate (2020, 8, 6), QTime (14, 15, 22, 500))); | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | QTEST_MAIN (TestQtHelpers); | ||||||
|  | 
 | ||||||
|  | #include "test_qt_helpers.moc" | ||||||
| @ -8017,8 +8017,8 @@ void MainWindow::p1ReadFromStdout()                        //p1readFromStdout | |||||||
| 
 | 
 | ||||||
| QString MainWindow::beacon_start_time (int n) | QString MainWindow::beacon_start_time (int n) | ||||||
| { | { | ||||||
|   auto bt = qt_truncate_date_time_to (QDateTime::currentDateTimeUtc ().addSecs (n), m_TRperiod); |   auto bt = qt_truncate_date_time_to (QDateTime::currentDateTimeUtc ().addSecs (n), m_TRperiod * 1.e3); | ||||||
|   if (m_TRperiod < 60) |   if (m_TRperiod < 60.) | ||||||
|     { |     { | ||||||
|       return bt.toString ("HHmmss"); |       return bt.toString ("HHmmss"); | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user