mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04:00 
			
		
		
		
	Merge branch 'develop' into feat-ft2
This commit is contained in:
		
						commit
						d862449dc8
					
				| @ -1015,6 +1015,9 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network | ||||
|     }); | ||||
|   lotw_users_.set_local_file_path (writeable_data_dir_.absoluteFilePath ("lotw-user-activity.csv")); | ||||
| 
 | ||||
|   // load the dictionary if it exists
 | ||||
|   lotw_users_.load (ui_->LotW_CSV_URL_line_edit->text (), false); | ||||
| 
 | ||||
|   //
 | ||||
|   // validation
 | ||||
|   ui_->callsign_line_edit->setValidator (new CallsignValidator {this}); | ||||
| @ -1073,6 +1076,7 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network | ||||
|   //
 | ||||
|   fill_port_combo_box (ui_->PTT_port_combo_box); | ||||
|   ui_->PTT_port_combo_box->addItem ("CAT"); | ||||
|   ui_->PTT_port_combo_box->setItemData (ui_->PTT_port_combo_box->count () - 1, "Delegate to proxy CAT service", Qt::ToolTipRole); | ||||
| 
 | ||||
|   //
 | ||||
|   // setup hooks to keep audio channels aligned with devices
 | ||||
| @ -2163,7 +2167,7 @@ void Configuration::impl::on_rescan_log_push_button_clicked (bool /*clicked*/) | ||||
| 
 | ||||
| void Configuration::impl::on_LotW_CSV_fetch_push_button_clicked (bool /*checked*/) | ||||
| { | ||||
|   lotw_users_.load (ui_->LotW_CSV_URL_line_edit->text (), true); | ||||
|   lotw_users_.load (ui_->LotW_CSV_URL_line_edit->text (), true, true); | ||||
|   ui_->LotW_CSV_fetch_push_button->setEnabled (false); | ||||
| } | ||||
| 
 | ||||
| @ -2927,9 +2931,15 @@ void Configuration::impl::fill_port_combo_box (QComboBox * cb) | ||||
|           // remove possibly confusing Windows device path (OK because
 | ||||
|           // it gets added back by Hamlib)
 | ||||
|           cb->addItem (p.systemLocation ().remove (QRegularExpression {R"(^\\\\\.\\)"})); | ||||
|           auto tip = QString {"%1 %2 %3"}.arg (p.manufacturer ()).arg (p.serialNumber ()).arg (p.description ()).trimmed (); | ||||
|           if (tip.size ()) | ||||
|             { | ||||
|               cb->setItemData (cb->count () - 1, tip, Qt::ToolTipRole); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|   cb->addItem("USB"); | ||||
|   cb->addItem ("USB"); | ||||
|   cb->setItemData (cb->count () - 1, "Custom USB device", Qt::ToolTipRole); | ||||
|   cb->setEditText (current_text); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -42,11 +42,12 @@ public: | ||||
|   { | ||||
|   } | ||||
| 
 | ||||
|   void load (QString const& url, bool forced_fetch) | ||||
|   void load (QString const& url, bool fetch, bool forced_fetch) | ||||
|   { | ||||
|     auto csv_file_name = csv_file_.fileName (); | ||||
|     abort ();                   // abort any active download
 | ||||
|     if (!QFileInfo::exists (csv_file_name) || forced_fetch) | ||||
|     auto csv_file_name = csv_file_.fileName (); | ||||
|     auto exists = QFileInfo::exists (csv_file_name); | ||||
|     if (fetch && (!exists || forced_fetch)) | ||||
|       { | ||||
|         current_url_.setUrl (url); | ||||
|         if (current_url_.isValid () && !QSslSocket::supportsSsl ()) | ||||
| @ -58,8 +59,11 @@ public: | ||||
|       } | ||||
|     else | ||||
|       { | ||||
|         // load the database asynchronously
 | ||||
|         future_load_ = std::async (std::launch::async, &LotWUsers::impl::load_dictionary, this, csv_file_name); | ||||
|         if (exists) | ||||
|           { | ||||
|             // load the database asynchronously
 | ||||
|             future_load_ = std::async (std::launch::async, &LotWUsers::impl::load_dictionary, this, csv_file_name); | ||||
|           } | ||||
|       } | ||||
|   } | ||||
| 
 | ||||
| @ -254,9 +258,9 @@ void LotWUsers::set_local_file_path (QString const& path) | ||||
|   m_->csv_file_.setFileName (path); | ||||
| } | ||||
| 
 | ||||
| void LotWUsers::load (QString const& url, bool force_download) | ||||
| void LotWUsers::load (QString const& url, bool fetch, bool force_download) | ||||
| { | ||||
|   m_->load (url, force_download); | ||||
|   m_->load (url, fetch, force_download); | ||||
| } | ||||
| 
 | ||||
| void LotWUsers::set_age_constraint (qint64 uploaded_since_days) | ||||
|  | ||||
| @ -23,7 +23,7 @@ public: | ||||
| 
 | ||||
|   void set_local_file_path (QString const&); | ||||
| 
 | ||||
|   Q_SLOT void load (QString const& url, bool force_download = false); | ||||
|   Q_SLOT void load (QString const& url, bool fetch = true, bool force_download = false); | ||||
|   Q_SLOT void set_age_constraint (qint64 uploaded_since_days); | ||||
| 
 | ||||
|   // returns true if the specified call sign 'call' has uploaded their
 | ||||
|  | ||||
| @ -3,6 +3,8 @@ | ||||
| #include <stdexcept> | ||||
| 
 | ||||
| #include <QDebug> | ||||
| #include <QMutex> | ||||
| #include <QMutexLocker> | ||||
| #include <QString> | ||||
| #include <QFile> | ||||
| #include <QTextStream> | ||||
| @ -28,10 +30,11 @@ private: | ||||
|   QTextStream * original_stream_; | ||||
|   QtMessageHandler original_handler_; | ||||
|   static QTextStream * current_stream_; | ||||
|   static QMutex mutex_; | ||||
| }; | ||||
| 
 | ||||
| QTextStream * TraceFile::impl::current_stream_; | ||||
| 
 | ||||
| QMutex TraceFile::impl::mutex_; | ||||
| 
 | ||||
| // delegate to implementation class
 | ||||
| TraceFile::TraceFile (QString const& trace_file_path) | ||||
| @ -73,7 +76,10 @@ TraceFile::impl::~impl () | ||||
| void TraceFile::impl::message_handler (QtMsgType type, QMessageLogContext const& context, QString const& msg) | ||||
| { | ||||
|   Q_ASSERT_X (current_stream_, "TraceFile:message_handler", "no stream to write to"); | ||||
|   *current_stream_ << qFormatLogMessage (type, context, msg) << endl; | ||||
|   { | ||||
|     QMutexLocker lock {&mutex_}; // thread safety - serialize writes to the trace file
 | ||||
|     *current_stream_ << qFormatLogMessage (type, context, msg) << endl; | ||||
|   } | ||||
| 
 | ||||
|   if (QtFatalMsg == type) | ||||
|     { | ||||
|  | ||||
| @ -91,7 +91,7 @@ d). Edit lines as needed. Keeping them in alphabetic order help see dupes. | ||||
| :sourceforge-jtsdk: https://sourceforge.net/projects/jtsdk[SourceForge JTSDK] | ||||
| :ubuntu_sdk: https://launchpad.net/~ubuntu-sdk-team/+archive/ppa[Ubuntu SDK Notice] | ||||
| :win_openssl_packages: https://slproweb.com/products/Win32OpenSSL.html[Windows OpenSSL Packages] | ||||
| :win32_openssl: https://slproweb.com/download/Win32OpenSSL_Light-1_0_2q.exe[Win32 OpenSSL Lite Package] | ||||
| :win32_openssl: https://slproweb.com/download/Win32OpenSSL_Light-1_0_2r.exe[Win32 OpenSSL Lite Package] | ||||
| :writelog: https://writelog.com/[Writelog] | ||||
| :wsjt_yahoo_group: https://groups.yahoo.com/neo/groups/wsjtgroup/info[WSJT Group] | ||||
| :wsjtx: http://physics.princeton.edu/pulsar/K1JT/wsjtx.html[WSJT-X] | ||||
|  | ||||
| @ -95,3 +95,19 @@ QT_QPA_PLATFORMTHEME set to empty (the space after the '=' character | ||||
| is necessary): | ||||
| 
 | ||||
|  QT_QPA_PLATFORMTHEME= wsjtx | ||||
| 
 | ||||
| I am running _WSJT-X_ on Linux using a KDE desktop. Why does *Menu->Configurations* misbehave?:: | ||||
| 
 | ||||
| The  KDE  development  team  have  added code  to  Qt  that  tries  to | ||||
| automatically add  shortcut accelerator keys to  all buttons including | ||||
| pop up menu buttons, this interferes with operation of the application | ||||
| (many other Qt applications have  similar issues with KDE). Until this | ||||
| is fixed  by the KDE team  you must disable this  misfeature. Edit the | ||||
| file ~/.config/kdeglobals and add a section containing the following: | ||||
| 
 | ||||
|  [Development] | ||||
|  AutoCheckAccelerators=false | ||||
| 
 | ||||
| + | ||||
| See https://stackoverflow.com/a/32711483 and | ||||
| https://bugs.kde.org/show_bug.cgi?id=337491 for more details. | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user