From 565c031b28901f8beb68312f1b32acadc6d94297 Mon Sep 17 00:00:00 2001 From: Jordan Sherer Date: Mon, 19 Nov 2018 22:36:28 -0500 Subject: [PATCH] Added add/remove group from callsign list and it propagate to the settings --- Configuration.cpp | 14 ++++++++++++++ Configuration.hpp | 2 ++ mainwindow.cpp | 39 +++++++++++++++++++++++++++++---------- 3 files changed, 45 insertions(+), 10 deletions(-) diff --git a/Configuration.cpp b/Configuration.cpp index de4aefd..f13f293 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -945,6 +945,20 @@ QSet Configuration::my_groups() const { return QSet::fromList(m_->my_groups_); } +void Configuration::addGroup(QString const &group){ + QSet groups = my_groups(); + groups.insert(group.trimmed()); + m_->my_groups_ = groups.toList(); + m_->write_settings(); +} + +void Configuration::removeGroup(QString const &group){ + QSet groups = my_groups(); + groups.remove(group.trimmed()); + m_->my_groups_ = groups.toList(); + m_->write_settings(); +} + QString Configuration::my_qth() const { return m_->my_qth_.trimmed(); diff --git a/Configuration.hpp b/Configuration.hpp index d66c2cf..a8279d3 100644 --- a/Configuration.hpp +++ b/Configuration.hpp @@ -99,6 +99,8 @@ public: QString my_grid () const; QString my_station () const; QSet my_groups() const; + void addGroup(QString const &group); + void removeGroup(QString const &group); int activity_aging() const; int callsign_aging() const; QString my_qth () const; diff --git a/mainwindow.cpp b/mainwindow.cpp index b43128f..7977a3f 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1294,29 +1294,41 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, auto clearAction4 = new QAction(QString("Clear"), ui->tableWidgetCalls); connect(clearAction4, &QAction::triggered, this, [this](){ this->on_clearAction_triggered(ui->tableWidgetCalls); }); - auto addStation = new QAction(QString("Add New Station.."), ui->tableWidgetCalls); + auto addStation = new QAction(QString("Add New Station or Group..."), ui->tableWidgetCalls); connect(addStation, &QAction::triggered, this, [this](){ bool ok = false; - QString callsign = QInputDialog::getText(this, tr("Add New Station..."), - tr("Station Callsign:"), QLineEdit::Normal, + QString callsign = QInputDialog::getText(this, tr("Add New Station or Group..."), + tr("Station or Group Callsign:"), QLineEdit::Normal, "", &ok).toUpper().trimmed(); - if(!ok || callsign.isEmpty()){ + if(!ok || callsign.trimmed().isEmpty()){ return; } - CallDetail cd = {}; - cd.call = callsign; - m_callActivity[callsign] = cd; + if(callsign.startsWith("@")){ + m_config.addGroup(callsign); + } else { + CallDetail cd = {}; + cd.call = callsign; + m_callActivity[callsign] = cd; + } + displayActivity(true); }); auto removeStation = new QAction(QString("Remove Station"), ui->tableWidgetCalls); connect(removeStation, &QAction::triggered, this, [this](){ QString selectedCall = callsignSelected(); - if(!selectedCall.isEmpty() && m_callActivity.contains(selectedCall)){ - m_callActivity.remove(selectedCall); - displayActivity(true); + if(selectedCall.isEmpty()){ + return; } + + if (selectedCall.startsWith("@")){ + m_config.removeGroup(selectedCall); + } else if(m_callActivity.contains(selectedCall)){ + m_callActivity.remove(selectedCall); + } + + displayActivity(true); }); @@ -1369,6 +1381,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, menu->addAction(addStation); removeStation->setDisabled(missingCallsign || isAllCall); + removeStation->setText(selectedCall.startsWith("@") ? "Remove Group" : "Remove Station"); menu->addAction(removeStation); menu->addSeparator(); @@ -5213,6 +5226,9 @@ void MainWindow::createAllcallTableRows(QTableWidget *table, QString const &sele table->insertRow(table->rowCount()); foreach(auto cd, m_callActivity.values()){ + if (cd.call.trimmed().isEmpty()){ + continue; + } if (callsignAging && cd.utcTimestamp.secsTo(now) / 60 >= callsignAging) { continue; } @@ -9764,6 +9780,9 @@ void MainWindow::displayCallActivity() { } CallDetail d = m_callActivity[call]; + if(d.call.trimmed().isEmpty()){ + continue; + } bool isCallSelected = (call == selectedCall);