mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-20 12:35:43 +08:00
Ref T491, prevent standard message tab from closing, search tabs from right to left
This commit is contained in:
committed by
Mat Sutcliffe
parent
7a6a822432
commit
ea7694248e
@@ -152,6 +152,13 @@ namespace BlackGui
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CTextMessageComponent::isCloseableTab(const QWidget *tabWidget) const
|
||||||
|
{
|
||||||
|
if (!tabWidget) { return false; }
|
||||||
|
return (tabWidget != ui->tb_TextMessagesAll && tabWidget != ui->tb_TextMessagesCOM1 &&
|
||||||
|
tabWidget != ui->tb_TextMessagesCOM2 && tabWidget != ui->tb_TextMessagesUnicom);
|
||||||
|
}
|
||||||
|
|
||||||
void CTextMessageComponent::displayTextMessage(const CTextMessageList &messages)
|
void CTextMessageComponent::displayTextMessage(const CTextMessageList &messages)
|
||||||
{
|
{
|
||||||
if (messages.isEmpty()) { return; }
|
if (messages.isEmpty()) { return; }
|
||||||
@@ -303,7 +310,7 @@ namespace BlackGui
|
|||||||
// private message
|
// private message
|
||||||
const CCallsign cs = textMessage.getSenderCallsign();
|
const CCallsign cs = textMessage.getSenderCallsign();
|
||||||
if (cs.isEmpty()) { return false; }
|
if (cs.isEmpty()) { return false; }
|
||||||
const QWidget *tab = this->findTextMessageTabByName(cs.getStringAsSet());
|
const QWidget *tab = this->findTextMessageTabByCallsign(cs, false);
|
||||||
if (!tab) { return false; }
|
if (!tab) { return false; }
|
||||||
return ui->tw_TextMessages->currentWidget() == tab;
|
return ui->tw_TextMessages->currentWidget() == tab;
|
||||||
}
|
}
|
||||||
@@ -345,8 +352,8 @@ namespace BlackGui
|
|||||||
f2Stations = sGui->getIContextNetwork()->getOnlineStationsForFrequency(freq2, spacing);
|
f2Stations = sGui->getIContextNetwork()->getOnlineStationsForFrequency(freq2, spacing);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString f1n = QString::asprintf("%03.3f", freq1.valueRounded(CFrequencyUnit::MHz(), 3));
|
const QString f1n = QString::asprintf("%03.3f", freq1.valueRounded(CFrequencyUnit::MHz(), 3));
|
||||||
QString f2n = QString::asprintf("%03.3f", freq2.valueRounded(CFrequencyUnit::MHz(), 3));
|
const QString f2n = QString::asprintf("%03.3f", freq2.valueRounded(CFrequencyUnit::MHz(), 3));
|
||||||
QString f1 = QStringLiteral("COM1: %1").arg(f1n);
|
QString f1 = QStringLiteral("COM1: %1").arg(f1n);
|
||||||
QString f2 = QStringLiteral("COM2: %1").arg(f2n);
|
QString f2 = QStringLiteral("COM2: %1").arg(f2n);
|
||||||
if (f1Stations.size() == 1)
|
if (f1Stations.size() == 1)
|
||||||
@@ -395,6 +402,8 @@ namespace BlackGui
|
|||||||
ui->tw_TextMessages->setCurrentIndex(index);
|
ui->tw_TextMessages->setCurrentIndex(index);
|
||||||
closeButton->setProperty("tabName", tabName);
|
closeButton->setProperty("tabName", tabName);
|
||||||
closeButtonInTab->setProperty("tabName", tabName);
|
closeButtonInTab->setProperty("tabName", tabName);
|
||||||
|
// closeButton->setProperty("index", index);
|
||||||
|
// closeButtonInTab->setProperty("index", index);
|
||||||
|
|
||||||
connect(closeButton, &QPushButton::released, this, &CTextMessageComponent::closeTextMessageTab);
|
connect(closeButton, &QPushButton::released, this, &CTextMessageComponent::closeTextMessageTab);
|
||||||
connect(closeButtonInTab, &QPushButton::released, this, &CTextMessageComponent::closeTextMessageTab);
|
connect(closeButtonInTab, &QPushButton::released, this, &CTextMessageComponent::closeTextMessageTab);
|
||||||
@@ -461,10 +470,12 @@ namespace BlackGui
|
|||||||
{
|
{
|
||||||
if (name.isEmpty()) { return nullptr; }
|
if (name.isEmpty()) { return nullptr; }
|
||||||
const QString n = name.trimmed();
|
const QString n = name.trimmed();
|
||||||
for (int index = 0; index < ui->tw_TextMessages->count(); index++)
|
|
||||||
|
// search the private message tabs first
|
||||||
|
for (int index = ui->tw_TextMessages->count() - 1; index >= 0; index--)
|
||||||
{
|
{
|
||||||
QString tabName = ui->tw_TextMessages->tabText(index);
|
const QString tabName = ui->tw_TextMessages->tabText(index);
|
||||||
if (tabName.indexOf(n, 0, Qt::CaseInsensitive) < 0) { continue; }
|
if (!tabName.startsWith(name, Qt::CaseInsensitive)) { continue; }
|
||||||
QWidget *tab = ui->tw_TextMessages->widget(index);
|
QWidget *tab = ui->tw_TextMessages->widget(index);
|
||||||
return tab;
|
return tab;
|
||||||
}
|
}
|
||||||
@@ -473,15 +484,12 @@ namespace BlackGui
|
|||||||
|
|
||||||
void CTextMessageComponent::closeTextMessageTab()
|
void CTextMessageComponent::closeTextMessageTab()
|
||||||
{
|
{
|
||||||
QObject *sender = QObject::sender();
|
int index = -1;
|
||||||
QWidget *parentWidget = qobject_cast<QWidget *>(sender->parent());
|
const QObject *sender = QObject::sender(); // the button
|
||||||
int index = ui->tw_TextMessages->indexOf(parentWidget);
|
const QString tabName = sender->property("tabName").toString();
|
||||||
if (index < 0)
|
QWidget *tw = this->findTextMessageTabByName(tabName);
|
||||||
{
|
if (!this->isCloseableTab(tw)) { return; }
|
||||||
const QString tabName = sender->property("tabName").toString();
|
if (tw) { index = ui->tw_TextMessages->indexOf(tw); }
|
||||||
QWidget *tw = this->findTextMessageTabByName(tabName);
|
|
||||||
if (tw) { index = ui->tw_TextMessages->indexOf(tw); }
|
|
||||||
}
|
|
||||||
if (index >= 0) { ui->tw_TextMessages->removeTab(index); }
|
if (index >= 0) { ui->tw_TextMessages->removeTab(index); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,9 @@ namespace BlackGui
|
|||||||
//! Select given tab
|
//! Select given tab
|
||||||
void selectTabWidget(TextMessageTab tab);
|
void selectTabWidget(TextMessageTab tab);
|
||||||
|
|
||||||
|
//! Is that a closeable tab (one the user can close)
|
||||||
|
bool isCloseableTab(const QWidget *tabWidget) const;
|
||||||
|
|
||||||
//! New message tab for given callsign
|
//! New message tab for given callsign
|
||||||
QWidget *addNewTextMessageTab(const BlackMisc::Aviation::CCallsign &callsign);
|
QWidget *addNewTextMessageTab(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user