mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Desktop/remember DCs: move non-UI-specific code into the core layer
This way we can use the same functionality from the mobile UI as well. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
4eb8ed1b29
commit
413b05ab89
3 changed files with 60 additions and 57 deletions
|
@ -24,6 +24,42 @@ static QString str_error(const char *fmt, ...)
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void updateRememberedDCs()
|
||||||
|
{
|
||||||
|
QString current = qPrefDiveComputer::vendor() + " - " + qPrefDiveComputer::product();
|
||||||
|
QStringList dcs = {
|
||||||
|
qPrefDiveComputer::vendor1() + " - " + qPrefDiveComputer::product1(),
|
||||||
|
qPrefDiveComputer::vendor2() + " - " + qPrefDiveComputer::product2(),
|
||||||
|
qPrefDiveComputer::vendor3() + " - " + qPrefDiveComputer::product3(),
|
||||||
|
qPrefDiveComputer::vendor4() + " - " + qPrefDiveComputer::product4()
|
||||||
|
};
|
||||||
|
if (dcs.contains(current))
|
||||||
|
// already in the list
|
||||||
|
return;
|
||||||
|
// add the current one as the first remembered one and drop the 4th one
|
||||||
|
// don't get confused by 0-based and 1-based indices!
|
||||||
|
if (dcs[2] != " - ") {
|
||||||
|
qPrefDiveComputer::set_vendor4(qPrefDiveComputer::vendor3());
|
||||||
|
qPrefDiveComputer::set_product4(qPrefDiveComputer::product3());
|
||||||
|
qPrefDiveComputer::set_device4(qPrefDiveComputer::device3());
|
||||||
|
}
|
||||||
|
if (dcs[1] != " - ") {
|
||||||
|
qPrefDiveComputer::set_vendor3(qPrefDiveComputer::vendor2());
|
||||||
|
qPrefDiveComputer::set_product3(qPrefDiveComputer::product2());
|
||||||
|
qPrefDiveComputer::set_device3(qPrefDiveComputer::device2());
|
||||||
|
}
|
||||||
|
if (dcs[0] != " - ") {
|
||||||
|
qPrefDiveComputer::set_vendor2(qPrefDiveComputer::vendor1());
|
||||||
|
qPrefDiveComputer::set_product2(qPrefDiveComputer::product1());
|
||||||
|
qPrefDiveComputer::set_device2(qPrefDiveComputer::device1());
|
||||||
|
}
|
||||||
|
qPrefDiveComputer::set_vendor1(qPrefDiveComputer::vendor());
|
||||||
|
qPrefDiveComputer::set_product1(qPrefDiveComputer::product());
|
||||||
|
qPrefDiveComputer::set_device1(qPrefDiveComputer::device());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
DownloadThread::DownloadThread()
|
DownloadThread::DownloadThread()
|
||||||
{
|
{
|
||||||
m_data = DCDeviceData::instance();
|
m_data = DCDeviceData::instance();
|
||||||
|
@ -61,6 +97,8 @@ void DownloadThread::run()
|
||||||
qPrefDiveComputer::set_product(internalData->product);
|
qPrefDiveComputer::set_product(internalData->product);
|
||||||
qPrefDiveComputer::set_device(internalData->devname);
|
qPrefDiveComputer::set_device(internalData->devname);
|
||||||
qPrefDiveComputer::set_device_name(m_data->devBluetoothName());
|
qPrefDiveComputer::set_device_name(m_data->devBluetoothName());
|
||||||
|
|
||||||
|
updateRememberedDCs();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fill_supported_mobile_list()
|
static void fill_supported_mobile_list()
|
||||||
|
|
|
@ -79,18 +79,7 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget *parent, Qt::WindowFlags f) :
|
||||||
}
|
}
|
||||||
|
|
||||||
// now lets set the four shortcuts for previously used dive computers
|
// now lets set the four shortcuts for previously used dive computers
|
||||||
#define SETUPDC(num) \
|
showRememberedDCs();
|
||||||
if (!qPrefDiveComputer::vendor##num().isEmpty()) { \
|
|
||||||
ui.DC##num->setVisible(true); \
|
|
||||||
ui.DC##num->setText(qPrefDiveComputer::vendor##num() + " - " + qPrefDiveComputer::product##num()); \
|
|
||||||
connect(ui.DC##num, &QPushButton::clicked, this, &DownloadFromDCWidget::DC##num##Clicked); \
|
|
||||||
} else { \
|
|
||||||
ui.DC##num->setVisible(false); \
|
|
||||||
}
|
|
||||||
SETUPDC(1)
|
|
||||||
SETUPDC(2)
|
|
||||||
SETUPDC(3)
|
|
||||||
SETUPDC(4)
|
|
||||||
|
|
||||||
updateState(INITIAL);
|
updateState(INITIAL);
|
||||||
ui.ok->setEnabled(false);
|
ui.ok->setEnabled(false);
|
||||||
|
@ -115,6 +104,23 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget *parent, Qt::WindowFlags f) :
|
||||||
ui.device->setEditText(deviceText);
|
ui.device->setEditText(deviceText);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SETUPDC(num) \
|
||||||
|
if (!qPrefDiveComputer::vendor##num().isEmpty()) { \
|
||||||
|
ui.DC##num->setVisible(true); \
|
||||||
|
ui.DC##num->setText(qPrefDiveComputer::vendor##num() + " - " + qPrefDiveComputer::product##num()); \
|
||||||
|
connect(ui.DC##num, &QPushButton::clicked, this, &DownloadFromDCWidget::DC##num##Clicked, Qt::UniqueConnection); \
|
||||||
|
} else { \
|
||||||
|
ui.DC##num->setVisible(false); \
|
||||||
|
}
|
||||||
|
|
||||||
|
void DownloadFromDCWidget::showRememberedDCs()
|
||||||
|
{
|
||||||
|
SETUPDC(1)
|
||||||
|
SETUPDC(2)
|
||||||
|
SETUPDC(3)
|
||||||
|
SETUPDC(4)
|
||||||
|
}
|
||||||
|
|
||||||
// DC button slots
|
// DC button slots
|
||||||
#define DCBUTTON(num) \
|
#define DCBUTTON(num) \
|
||||||
void DownloadFromDCWidget::DC##num##Clicked() \
|
void DownloadFromDCWidget::DC##num##Clicked() \
|
||||||
|
@ -354,8 +360,6 @@ void DownloadFromDCWidget::on_downloadCancelRetryButton_clicked()
|
||||||
qPrefDiveComputer::set_product(data->product());
|
qPrefDiveComputer::set_product(data->product());
|
||||||
qPrefDiveComputer::set_device(data->devName());
|
qPrefDiveComputer::set_device(data->devName());
|
||||||
|
|
||||||
updateRememberedDCs();
|
|
||||||
|
|
||||||
#if defined(BT_SUPPORT)
|
#if defined(BT_SUPPORT)
|
||||||
qPrefDiveComputer::set_download_mode(ui.bluetoothMode->isChecked() ? DC_TRANSPORT_BLUETOOTH : DC_TRANSPORT_SERIAL);
|
qPrefDiveComputer::set_download_mode(ui.bluetoothMode->isChecked() ? DC_TRANSPORT_BLUETOOTH : DC_TRANSPORT_SERIAL);
|
||||||
#endif
|
#endif
|
||||||
|
@ -378,48 +382,6 @@ void DownloadFromDCWidget::on_downloadCancelRetryButton_clicked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DownloadFromDCWidget::updateRememberedDCs()
|
|
||||||
{
|
|
||||||
QString current = qPrefDiveComputer::vendor() + " - " + qPrefDiveComputer::product();
|
|
||||||
QStringList dcs = {
|
|
||||||
qPrefDiveComputer::vendor1() + " - " + qPrefDiveComputer::product1(),
|
|
||||||
qPrefDiveComputer::vendor2() + " - " + qPrefDiveComputer::product2(),
|
|
||||||
qPrefDiveComputer::vendor3() + " - " + qPrefDiveComputer::product3(),
|
|
||||||
qPrefDiveComputer::vendor4() + " - " + qPrefDiveComputer::product4()
|
|
||||||
};
|
|
||||||
if (dcs.contains(current))
|
|
||||||
// already in the list
|
|
||||||
return;
|
|
||||||
// add the current one as the first remembered one and drop the 4th one
|
|
||||||
// don't get confused by 0-based and 1-based indices!
|
|
||||||
if (dcs[2] != " - ") {
|
|
||||||
qPrefDiveComputer::set_vendor4(qPrefDiveComputer::vendor3());
|
|
||||||
qPrefDiveComputer::set_product4(qPrefDiveComputer::product3());
|
|
||||||
qPrefDiveComputer::set_device4(qPrefDiveComputer::device3());
|
|
||||||
ui.DC4->setText(dcs[2]);
|
|
||||||
ui.DC4->setVisible(true);
|
|
||||||
}
|
|
||||||
if (dcs[1] != " - ") {
|
|
||||||
qPrefDiveComputer::set_vendor3(qPrefDiveComputer::vendor2());
|
|
||||||
qPrefDiveComputer::set_product3(qPrefDiveComputer::product2());
|
|
||||||
qPrefDiveComputer::set_device3(qPrefDiveComputer::device2());
|
|
||||||
ui.DC3->setText(dcs[1]);
|
|
||||||
ui.DC3->setVisible(true);
|
|
||||||
}
|
|
||||||
if (dcs[0] != " - ") {
|
|
||||||
qPrefDiveComputer::set_vendor2(qPrefDiveComputer::vendor1());
|
|
||||||
qPrefDiveComputer::set_product2(qPrefDiveComputer::product1());
|
|
||||||
qPrefDiveComputer::set_device2(qPrefDiveComputer::device1());
|
|
||||||
ui.DC2->setText(dcs[0]);
|
|
||||||
ui.DC2->setVisible(true);
|
|
||||||
}
|
|
||||||
qPrefDiveComputer::set_vendor1(qPrefDiveComputer::vendor());
|
|
||||||
qPrefDiveComputer::set_product1(qPrefDiveComputer::product());
|
|
||||||
qPrefDiveComputer::set_device1(qPrefDiveComputer::device());
|
|
||||||
ui.DC1->setText(current);
|
|
||||||
ui.DC1->setVisible(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool DownloadFromDCWidget::preferDownloaded()
|
bool DownloadFromDCWidget::preferDownloaded()
|
||||||
{
|
{
|
||||||
return ui.preferDownloaded->isChecked();
|
return ui.preferDownloaded->isChecked();
|
||||||
|
@ -483,6 +445,9 @@ void DownloadFromDCWidget::reject()
|
||||||
|
|
||||||
void DownloadFromDCWidget::onDownloadThreadFinished()
|
void DownloadFromDCWidget::onDownloadThreadFinished()
|
||||||
{
|
{
|
||||||
|
// let's update the remembered DCs
|
||||||
|
showRememberedDCs();
|
||||||
|
|
||||||
if (currentState == DOWNLOADING) {
|
if (currentState == DOWNLOADING) {
|
||||||
if (thread.error.isEmpty())
|
if (thread.error.isEmpty())
|
||||||
updateState(DONE);
|
updateState(DONE);
|
||||||
|
|
|
@ -64,7 +64,7 @@ private:
|
||||||
void markChildrenAsDisabled();
|
void markChildrenAsDisabled();
|
||||||
void markChildrenAsEnabled();
|
void markChildrenAsEnabled();
|
||||||
void updateDeviceEnabled();
|
void updateDeviceEnabled();
|
||||||
void updateRememberedDCs();
|
void showRememberedDCs();
|
||||||
|
|
||||||
QStringListModel vendorModel;
|
QStringListModel vendorModel;
|
||||||
QStringListModel productModel;
|
QStringListModel productModel;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue