You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.3 KiB
68 lines
2.3 KiB
#include "radiosettingspage.h" |
|
#include "ptt_hotkey_manager.h" |
|
#include "../db/db_manager.h" |
|
|
|
#include <QFormLayout> |
|
#include <QLabel> |
|
#include <QKeySequenceEdit> |
|
|
|
RadioSettingsPage::RadioSettingsPage(DbManager* db, QWidget* parent) |
|
: QWidget(parent), m_db(db) { |
|
auto* layout = new QVBoxLayout(this); |
|
|
|
auto* title = new QLabel("Рация (PTT)", this); |
|
title->setStyleSheet("font-weight: bold; font-size: 13px;"); |
|
layout->addWidget(title); |
|
|
|
auto* hint = new QLabel( |
|
"Глобальные хоткеи передачи: удержание любой комбинации активирует PTT " |
|
"из любого приложения (рация канала должна быть включена).", this); |
|
hint->setWordWrap(true); |
|
hint->setStyleSheet("color: gray; font-size: 11px;"); |
|
layout->addWidget(hint); |
|
|
|
if (!PttHotkeyManager::isSupported()) { |
|
auto* warn = new QLabel("Глобальные хоткеи не поддерживаются на этой платформе.", this); |
|
warn->setStyleSheet("color: #e74c3c; font-size: 12px;"); |
|
layout->addWidget(warn); |
|
} |
|
|
|
auto* form = new QFormLayout(); |
|
for (int i = 0; i < 3; i++) { |
|
auto* edit = new QKeySequenceEdit(this); |
|
edit->setStyleSheet( |
|
"QKeySequenceEdit { border: 1px solid palette(mid); border-radius: 4px;" |
|
" padding: 6px 10px; font-size: 13px; background: palette(base); }"); |
|
m_edits.append(edit); |
|
form->addRow(QString("PTT хоткей %1:").arg(i + 1), edit); |
|
} |
|
layout->addLayout(form); |
|
layout->addStretch(1); |
|
|
|
loadFromDb(); |
|
} |
|
|
|
void RadioSettingsPage::loadFromDb() { |
|
QStringList seqs; |
|
if (m_db && m_db->isOpen()) { |
|
const QString raw = m_db->getUiState("radio_ptt_hotkeys"); |
|
if (!raw.isEmpty()) |
|
seqs = raw.split('|', Qt::SkipEmptyParts); |
|
} |
|
for (int i = 0; i < m_edits.size(); i++) |
|
m_edits[i]->setKeySequence(i < seqs.size() ? QKeySequence(seqs[i]) : QKeySequence()); |
|
} |
|
|
|
QStringList RadioSettingsPage::hotkeys() const { |
|
QStringList out; |
|
for (QKeySequenceEdit* e : m_edits) { |
|
const QKeySequence seq = e->keySequence(); |
|
if (!seq.isEmpty()) |
|
out << seq.toString(); |
|
} |
|
return out; |
|
} |
|
|
|
void RadioSettingsPage::apply() { |
|
PttHotkeyManager::instance()->setHotkeys(hotkeys()); |
|
}
|
|
|