kopia lustrzana https://gitlab.com/eliggett/wfview
Add backup/restore of button config
rodzic
468cd2de0d
commit
0304ac67f6
|
@ -321,14 +321,18 @@ void controllerSetup::removeDevice(USBDEVICE* dev)
|
||||||
for (int i = 0; i < ui->tabWidget->count(); i++) {
|
for (int i = 0; i < ui->tabWidget->count(); i++) {
|
||||||
auto widget = ui->tabWidget->widget(i);
|
auto widget = ui->tabWidget->widget(i);
|
||||||
if (widget->objectName() == dev->path) {
|
if (widget->objectName() == dev->path) {
|
||||||
|
qInfo(logUsbControl()) << "Removing child widgets for" << dev->product;
|
||||||
qDeleteAll(widget->findChildren<QWidget *>("", Qt::FindDirectChildrenOnly));
|
qDeleteAll(widget->findChildren<QWidget *>("", Qt::FindDirectChildrenOnly));
|
||||||
remove = i;
|
remove = i;
|
||||||
|
//break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (remove != -1) {
|
if (remove != -1) {
|
||||||
qInfo(logUsbControl()) << "Removing tab" << dev->product;
|
qInfo(logUsbControl()) << "Removing tab" << dev->product;
|
||||||
|
//auto widget = ui->tabWidget->widget(remove);
|
||||||
ui->tabWidget->removeTab(remove);
|
ui->tabWidget->removeTab(remove);
|
||||||
|
//widget->deleteLater();
|
||||||
}
|
}
|
||||||
if (ui->tabWidget->count() == 0)
|
if (ui->tabWidget->count() == 0)
|
||||||
{
|
{
|
||||||
|
@ -347,6 +351,14 @@ void controllerSetup::newDevice(USBDEVICE* dev, CONTROLLER* cntrl, QVector<BUTTO
|
||||||
|
|
||||||
QMutexLocker locker(mutex);
|
QMutexLocker locker(mutex);
|
||||||
|
|
||||||
|
for (int i=0; i<ui->tabWidget->count();i++) {
|
||||||
|
if (ui->tabWidget->widget(i)->objectName() == dev->path)
|
||||||
|
{
|
||||||
|
qInfo(logUsbControl()) <<"Tab for " << dev->product << "("<< dev->path << ") Already exists!";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
qDebug(logUsbControl()) << "Adding new tab for" << dev->product;
|
qDebug(logUsbControl()) << "Adding new tab for" << dev->product;
|
||||||
noControllersText->hide();
|
noControllersText->hide();
|
||||||
|
|
||||||
|
@ -594,6 +606,8 @@ void controllerSetup::newDevice(USBDEVICE* dev, CONTROLLER* cntrl, QVector<BUTTO
|
||||||
|
|
||||||
numTabs++;
|
numTabs++;
|
||||||
|
|
||||||
|
dev->uiCreated = true;
|
||||||
|
|
||||||
// Finally update the device with the default values
|
// Finally update the device with the default values
|
||||||
emit sendRequest(dev,usbFeatureType::featureSensitivity,cntrl->sensitivity);
|
emit sendRequest(dev,usbFeatureType::featureSensitivity,cntrl->sensitivity);
|
||||||
emit sendRequest(dev,usbFeatureType::featureBrightness,cntrl->brightness);
|
emit sendRequest(dev,usbFeatureType::featureBrightness,cntrl->brightness);
|
||||||
|
@ -739,12 +753,37 @@ void controllerSetup::disableClicked(USBDEVICE* dev, bool clicked, QWidget* widg
|
||||||
|
|
||||||
void controllerSetup::setConnected(USBDEVICE* dev)
|
void controllerSetup::setConnected(USBDEVICE* dev)
|
||||||
{
|
{
|
||||||
if (dev->connected)
|
QMutexLocker locker(mutex);
|
||||||
|
|
||||||
|
|
||||||
|
if (dev->uiCreated)
|
||||||
{
|
{
|
||||||
dev->message->setStyleSheet("QLabel { color : green; }");
|
if (dev->connected)
|
||||||
dev->message->setText("Connected");
|
{
|
||||||
} else {
|
dev->message->setStyleSheet("QLabel { color : green; }");
|
||||||
dev->message->setStyleSheet("QLabel { color : red; }");
|
dev->message->setText("Connected");
|
||||||
dev->message->setText("Not Connected");
|
} else {
|
||||||
|
dev->message->setStyleSheet("QLabel { color : red; }");
|
||||||
|
dev->message->setText("Not Connected");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void controllerSetup::on_backupButton_clicked()
|
||||||
|
{
|
||||||
|
QString file = QFileDialog::getSaveFileName(this,"Select Backup Filename",".","Backup Files (*.ini)");
|
||||||
|
if (!file.isEmpty()) {
|
||||||
|
QFileInfo info = QFileInfo(file);
|
||||||
|
emit backup(file, ui->tabWidget->currentWidget()->objectName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void controllerSetup::on_restoreButton_clicked()
|
||||||
|
{
|
||||||
|
QString file = QFileDialog::getOpenFileName(this,"Select Backup Filename",".","Backup Files (*.ini)");
|
||||||
|
if (!file.isEmpty()) {
|
||||||
|
QFileInfo info = QFileInfo(file);
|
||||||
|
emit restore(file, ui->tabWidget->currentWidget()->objectName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <QScopedPointer>
|
#include <QScopedPointer>
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
@ -69,6 +70,8 @@ signals:
|
||||||
void sendRequest(USBDEVICE* dev, usbFeatureType request, quint8 val=0, QString text="", QImage* img=Q_NULLPTR, QColor* color=Q_NULLPTR);
|
void sendRequest(USBDEVICE* dev, usbFeatureType request, quint8 val=0, QString text="", QImage* img=Q_NULLPTR, QColor* color=Q_NULLPTR);
|
||||||
void programDisable(USBDEVICE* dev, bool disable);
|
void programDisable(USBDEVICE* dev, bool disable);
|
||||||
void programPages(USBDEVICE* dev, int pages);
|
void programPages(USBDEVICE* dev, int pages);
|
||||||
|
void backup(QString file, QString path);
|
||||||
|
void restore(QString file, QString path);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void init();
|
void init();
|
||||||
|
@ -95,7 +98,8 @@ public slots:
|
||||||
void setConnected(USBDEVICE* dev);
|
void setConnected(USBDEVICE* dev);
|
||||||
void hideEvent(QHideEvent *event);
|
void hideEvent(QHideEvent *event);
|
||||||
void on_tabWidget_currentChanged(int index);
|
void on_tabWidget_currentChanged(int index);
|
||||||
|
void on_backupButton_clicked();
|
||||||
|
void on_restoreButton_clicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,26 @@
|
||||||
<string>Controller setup</string>
|
<string>Controller setup</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
|
<property name="tabPosition">
|
||||||
|
<enum>QTabWidget::North</enum>
|
||||||
|
</property>
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="tab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Tab 1</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="tab_2">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Tab 2</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="2" column="0">
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
|
@ -31,6 +51,20 @@
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="backupButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Backup</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="restoreButton">
|
||||||
|
<property name="text">
|
||||||
|
<string>Restore</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer>
|
<spacer>
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
|
@ -60,26 +94,6 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QTabWidget" name="tabWidget">
|
|
||||||
<property name="tabPosition">
|
|
||||||
<enum>QTabWidget::North</enum>
|
|
||||||
</property>
|
|
||||||
<property name="currentIndex">
|
|
||||||
<number>1</number>
|
|
||||||
</property>
|
|
||||||
<widget class="QWidget" name="tab">
|
|
||||||
<attribute name="title">
|
|
||||||
<string>Tab 1</string>
|
|
||||||
</attribute>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="tab_2">
|
|
||||||
<attribute name="title">
|
|
||||||
<string>Tab 2</string>
|
|
||||||
</attribute>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|
|
@ -262,12 +262,13 @@ void usbController::run()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
|
//#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
|
||||||
auto it = usbDevices.begin();
|
auto it = usbDevices.begin();
|
||||||
while (it != usbDevices.end())
|
while (it != usbDevices.end())
|
||||||
{
|
{
|
||||||
if (it.value().remove)
|
if (it.value().remove)
|
||||||
{
|
{
|
||||||
|
qInfo(logUsbControl()) << "Device has been removed, deleting from known devices" << it.value().product;
|
||||||
it = usbDevices.erase(it);
|
it = usbDevices.erase(it);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -275,11 +276,11 @@ void usbController::run()
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
//#else
|
||||||
// Remove any devices from the list that are not connected (doesn't work on QT5!)
|
// Remove any devices from the list that are not connected (doesn't work on QT5!)
|
||||||
usbDevices.erase(std::remove_if(usbDevices.begin(), usbDevices.end(), [](const USBDEVICE& dev)
|
// usbDevices.erase(std::remove_if(usbDevices.begin(), usbDevices.end(), [](const USBDEVICE& dev)
|
||||||
{ if (dev.remove) qInfo(logUsbControl()) << "Removing device" << dev.product; return (dev.remove); }),usbDevices.end());
|
// { if (dev.remove) qInfo(logUsbControl()) << "Removing device" << dev.product; return (dev.remove); }),usbDevices.end());
|
||||||
#endif
|
//#endif
|
||||||
struct hid_device_info* devs;
|
struct hid_device_info* devs;
|
||||||
devs = hid_enumerate(0x0, 0x0);
|
devs = hid_enumerate(0x0, 0x0);
|
||||||
// Step through all currenly connected devices and add any newly discovered ones to usbDevices.
|
// Step through all currenly connected devices and add any newly discovered ones to usbDevices.
|
||||||
|
@ -302,6 +303,7 @@ void usbController::run()
|
||||||
newDev.serial = QString::fromWCharArray(devs->serial_number);
|
newDev.serial = QString::fromWCharArray(devs->serial_number);
|
||||||
newDev.path = QString::fromLocal8Bit(devs->path);
|
newDev.path = QString::fromLocal8Bit(devs->path);
|
||||||
newDev.deviceId = QString("0x%1").arg(newDev.type.productId, 4, 16, QChar('0'));
|
newDev.deviceId = QString("0x%1").arg(newDev.type.productId, 4, 16, QChar('0'));
|
||||||
|
qDebug(logUsbControl()) << "New device detected" << newDev.product;
|
||||||
usbDevices.insert(newDev.path,newDev);
|
usbDevices.insert(newDev.path,newDev);
|
||||||
}
|
}
|
||||||
devs = devs->next;
|
devs = devs->next;
|
||||||
|
@ -385,6 +387,8 @@ void usbController::run()
|
||||||
buttonList->append(BUTTON(*but));
|
buttonList->append(BUTTON(*but));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
qInfo(logUsbControl()) << "Found buttons for this device, loading.";
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need to set the parent device for all buttons belonging to this device!
|
// We need to set the parent device for all buttons belonging to this device!
|
||||||
|
@ -402,7 +406,7 @@ void usbController::run()
|
||||||
if (boff != commands.end())
|
if (boff != commands.end())
|
||||||
but->offCommand = new COMMAND(*boff);
|
but->offCommand = new COMMAND(*boff);
|
||||||
else
|
else
|
||||||
qWarning(logUsbControl()) << "Off Command" << but->on << "not found";
|
qWarning(logUsbControl()) << "Off Command" << but->off << "not found";
|
||||||
|
|
||||||
but->parent = &dev;
|
but->parent = &dev;
|
||||||
}
|
}
|
||||||
|
@ -434,15 +438,14 @@ void usbController::run()
|
||||||
qWarning(logUsbControl()) << "Knob Command" << kb->cmd << "not found";
|
qWarning(logUsbControl()) << "Knob Command" << kb->cmd << "not found";
|
||||||
|
|
||||||
kb->parent = &dev;
|
kb->parent = &dev;
|
||||||
if (dev.currentPage == 1)
|
if (kb->page == 1)
|
||||||
dev.knobValues[kb->num].name = kb->cmd;
|
dev.knobValues[kb->num].name = kb->cmd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Let the UI know we have a new controller
|
// Let the UI know we have a new controller
|
||||||
emit newDevice(&dev, &(*controllers)[dev.path],buttonList, knobList, &commands, mutex);
|
emit newDevice(&dev, &(*controllers)[dev.path],buttonList, knobList, &commands, mutex);
|
||||||
|
|
||||||
dev.uiCreated = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (dev.uiCreated)
|
else if (dev.uiCreated)
|
||||||
|
@ -493,6 +496,7 @@ void usbController::runTimer()
|
||||||
dev.connected = false;
|
dev.connected = false;
|
||||||
dev.remove = true;
|
dev.remove = true;
|
||||||
devicesConnected--;
|
devicesConnected--;
|
||||||
|
QTimer::singleShot(250, this, SLOT(run())); // Cleanup
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1822,4 +1826,185 @@ void usbController::receiveLevel(cmds cmd, unsigned char level)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void usbController::backupController(QString file, QString path)
|
||||||
|
{
|
||||||
|
QSettings settings = QSettings(file, QSettings::Format::IniFormat);
|
||||||
|
|
||||||
|
qInfo(logUsbControl()) << "Backup of" << path << "to" << file;
|
||||||
|
settings.beginGroup("Controller");
|
||||||
|
QMutexLocker locker(mutex);
|
||||||
|
|
||||||
|
CONTROLLER cntrl = (*controllers)[path];
|
||||||
|
settings.setValue("Disabled", cntrl.disabled);
|
||||||
|
settings.setValue("Sensitivity", cntrl.sensitivity);
|
||||||
|
settings.setValue("Brightness", cntrl.brightness);
|
||||||
|
settings.setValue("Orientation", cntrl.orientation);
|
||||||
|
settings.setValue("Speed", cntrl.speed);
|
||||||
|
settings.setValue("Timeout", cntrl.timeout);
|
||||||
|
settings.setValue("Pages", cntrl.pages);
|
||||||
|
settings.setValue("Color", cntrl.color.name(QColor::HexArgb));
|
||||||
|
settings.setValue("LCD", cntrl.lcd);
|
||||||
|
|
||||||
|
int n=0;
|
||||||
|
settings.beginWriteArray("Buttons");
|
||||||
|
for (auto b = buttonList->begin(); b != buttonList->end(); b++)
|
||||||
|
{
|
||||||
|
if (b->path == path)
|
||||||
|
{
|
||||||
|
settings.setArrayIndex(n);
|
||||||
|
settings.setValue("Page", b->page);
|
||||||
|
settings.setValue("Dev", b->dev);
|
||||||
|
settings.setValue("Num", b->num);
|
||||||
|
settings.setValue("Name", b->name);
|
||||||
|
settings.setValue("Left", b->pos.left());
|
||||||
|
settings.setValue("Top", b->pos.top());
|
||||||
|
settings.setValue("Width", b->pos.width());
|
||||||
|
settings.setValue("Height", b->pos.height());
|
||||||
|
settings.setValue("Colour", b->textColour.name(QColor::HexArgb));
|
||||||
|
settings.setValue("BackgroundOn", b->backgroundOn.name(QColor::HexArgb));
|
||||||
|
settings.setValue("BackgroundOff", b->backgroundOff.name(QColor::HexArgb));
|
||||||
|
if (b->icon != Q_NULLPTR) {
|
||||||
|
settings.setValue("Icon", *b->icon);
|
||||||
|
settings.setValue("IconName", b->iconName);
|
||||||
|
}
|
||||||
|
settings.setValue("Toggle", b->toggle);
|
||||||
|
|
||||||
|
if (b->onCommand != Q_NULLPTR)
|
||||||
|
settings.setValue("OnCommand", b->onCommand->text);
|
||||||
|
if (b->offCommand != Q_NULLPTR)
|
||||||
|
settings.setValue("OffCommand", b->offCommand->text);
|
||||||
|
++n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
settings.endArray();
|
||||||
|
|
||||||
|
n = 0;
|
||||||
|
settings.beginWriteArray("Knobs");
|
||||||
|
for (auto k = knobList->begin(); k != knobList->end(); k++)
|
||||||
|
{
|
||||||
|
if (k->path == path)
|
||||||
|
{
|
||||||
|
settings.setArrayIndex(n);
|
||||||
|
settings.setValue("Page", k->page);
|
||||||
|
settings.setValue("Dev", k->dev);
|
||||||
|
settings.setValue("Num", k->num);
|
||||||
|
settings.setValue("Left", k->pos.left());
|
||||||
|
settings.setValue("Top", k->pos.top());
|
||||||
|
settings.setValue("Width", k->pos.width());
|
||||||
|
settings.setValue("Height", k->pos.height());
|
||||||
|
settings.setValue("Colour", k->textColour.name());
|
||||||
|
if (k->command != Q_NULLPTR)
|
||||||
|
settings.setValue("Command", k->command->text);
|
||||||
|
++n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
settings.endArray();
|
||||||
|
settings.endGroup();
|
||||||
|
settings.sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
void usbController::restoreController(QString file, QString path)
|
||||||
|
{
|
||||||
|
CONTROLLER cntrl = (*controllers)[path];
|
||||||
|
USBDEVICE* dev = &usbDevices[path];
|
||||||
|
QSettings settings = QSettings(file, QSettings::Format::IniFormat);
|
||||||
|
|
||||||
|
qInfo(logUsbControl()) << "Restore of" << path << "from" << file;
|
||||||
|
settings.beginGroup("Controller");
|
||||||
|
emit removeDevice(dev);
|
||||||
|
|
||||||
|
QMutexLocker locker(mutex);
|
||||||
|
|
||||||
|
// Remove buttons/knobs
|
||||||
|
buttonList->erase(std::remove_if(buttonList->begin(), buttonList->end(), [path](const BUTTON& b)
|
||||||
|
{ return (b.path == path); }),buttonList->end());
|
||||||
|
|
||||||
|
cntrl.disabled = settings.value("Disabled", false).toBool();
|
||||||
|
cntrl.sensitivity = settings.value("Sensitivity", 1).toInt();
|
||||||
|
cntrl.pages = settings.value("Pages", 1).toInt();
|
||||||
|
cntrl.brightness = (quint8)settings.value("Brightness", 2).toInt();
|
||||||
|
cntrl.orientation = (quint8)settings.value("Orientation", 2).toInt();
|
||||||
|
cntrl.speed = (quint8)settings.value("Speed", 2).toInt();
|
||||||
|
cntrl.timeout = (quint8)settings.value("Timeout", 30).toInt();
|
||||||
|
cntrl.color.setNamedColor(settings.value("Color", QColor(Qt::white).name(QColor::HexArgb)).toString());
|
||||||
|
cntrl.lcd = (cmds)settings.value("LCD",0).toInt();
|
||||||
|
|
||||||
|
int numButtons = settings.beginReadArray("Buttons");
|
||||||
|
if (numButtons == 0) {
|
||||||
|
settings.endArray();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int b = 0; b < numButtons; b++)
|
||||||
|
{
|
||||||
|
settings.setArrayIndex(b);
|
||||||
|
BUTTON but;
|
||||||
|
but.page = settings.value("Page", 1).toInt();
|
||||||
|
but.dev = (usbDeviceType)settings.value("Dev", 0).toInt();
|
||||||
|
but.num = settings.value("Num", 0).toInt();
|
||||||
|
but.name = settings.value("Name", "").toString();
|
||||||
|
but.pos = QRect(settings.value("Left", 0).toInt(),
|
||||||
|
settings.value("Top", 0).toInt(),
|
||||||
|
settings.value("Width", 0).toInt(),
|
||||||
|
settings.value("Height", 0).toInt());
|
||||||
|
but.textColour.setNamedColor(settings.value("Colour", QColor(Qt::white).name(QColor::HexArgb)).toString());
|
||||||
|
but.backgroundOn.setNamedColor(settings.value("BackgroundOn", QColor(Qt::lightGray).name(QColor::HexArgb)).toString());
|
||||||
|
but.backgroundOff.setNamedColor(settings.value("BackgroundOff", QColor(Qt::blue).name(QColor::HexArgb)).toString());
|
||||||
|
but.toggle = settings.value("Toggle", false).toBool();
|
||||||
|
if (settings.value("Icon",NULL) != NULL) {
|
||||||
|
but.icon = new QImage(settings.value("Icon",NULL).value<QImage>());
|
||||||
|
but.iconName = settings.value("IconName", "").toString();
|
||||||
|
}
|
||||||
|
but.on = settings.value("OnCommand", "None").toString();
|
||||||
|
but.off = settings.value("OffCommand", "None").toString();
|
||||||
|
|
||||||
|
but.path = path;
|
||||||
|
buttonList->append(but);
|
||||||
|
}
|
||||||
|
settings.endArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
knobList->erase(std::remove_if(knobList->begin(), knobList->end(), [path](const KNOB& k)
|
||||||
|
{ return (k.path == path); }),knobList->end());
|
||||||
|
|
||||||
|
int numKnobs = settings.beginReadArray("Knobs");
|
||||||
|
if (numKnobs == 0) {
|
||||||
|
settings.endArray();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int k = 0; k < numKnobs; k++)
|
||||||
|
{
|
||||||
|
settings.setArrayIndex(k);
|
||||||
|
KNOB kb;
|
||||||
|
kb.page = settings.value("Page", 1).toInt();
|
||||||
|
kb.dev = (usbDeviceType)settings.value("Dev", 0).toInt();
|
||||||
|
kb.num = settings.value("Num", 0).toInt();
|
||||||
|
kb.name = settings.value("Name", "").toString();
|
||||||
|
kb.pos = QRect(settings.value("Left", 0).toInt(),
|
||||||
|
settings.value("Top", 0).toInt(),
|
||||||
|
settings.value("Width", 0).toInt(),
|
||||||
|
settings.value("Height", 0).toInt());
|
||||||
|
kb.textColour = QColor((settings.value("Colour", "Green").toString()));
|
||||||
|
|
||||||
|
kb.cmd = settings.value("Command", "None").toString();
|
||||||
|
kb.path = path;
|
||||||
|
knobList->append(kb);
|
||||||
|
}
|
||||||
|
settings.endArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
settings.endGroup();
|
||||||
|
settings.sync();
|
||||||
|
|
||||||
|
qInfo(logUsbControl()) << "Disconnecting device" << dev->product;
|
||||||
|
emit removeDevice(dev);
|
||||||
|
hid_close(dev->handle);
|
||||||
|
dev->handle = NULL;
|
||||||
|
dev->connected = false;
|
||||||
|
dev->remove = true;
|
||||||
|
dev->uiCreated = false;
|
||||||
|
devicesConnected--;
|
||||||
|
QTimer::singleShot(250, this, SLOT(run()));
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -22,6 +22,8 @@
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QImageWriter>
|
#include <QImageWriter>
|
||||||
#include <QBuffer>
|
#include <QBuffer>
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
|
|
||||||
#if defined(USB_CONTROLLER) && QT_VERSION < QT_VERSION_CHECK(6,0,0)
|
#if defined(USB_CONTROLLER) && QT_VERSION < QT_VERSION_CHECK(6,0,0)
|
||||||
#include <QGamepad>
|
#include <QGamepad>
|
||||||
|
@ -239,6 +241,8 @@ public slots:
|
||||||
|
|
||||||
void sendRequest(USBDEVICE *dev, usbFeatureType feature, quint8 val=0, QString text="", QImage* img=Q_NULLPTR, QColor* color=Q_NULLPTR);
|
void sendRequest(USBDEVICE *dev, usbFeatureType feature, quint8 val=0, QString text="", QImage* img=Q_NULLPTR, QColor* color=Q_NULLPTR);
|
||||||
void sendToLCD(QImage *img);
|
void sendToLCD(QImage *img);
|
||||||
|
void backupController(QString file, QString path);
|
||||||
|
void restoreController(QString file, QString path);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void jogPlus();
|
void jogPlus();
|
||||||
|
|
|
@ -1721,6 +1721,8 @@ void wfmain::setupUsbControllerDevice()
|
||||||
connect(this, SIGNAL(sendLevel(cmds, unsigned char)), usbControllerDev, SLOT(receiveLevel(cmds, unsigned char)));
|
connect(this, SIGNAL(sendLevel(cmds, unsigned char)), usbControllerDev, SLOT(receiveLevel(cmds, unsigned char)));
|
||||||
connect(this, SIGNAL(initUsbController(QMutex*,usbMap*,QVector<BUTTON>*,QVector<KNOB>*)), usbControllerDev, SLOT(init(QMutex*,usbMap*,QVector<BUTTON>*,QVector<KNOB>*)));
|
connect(this, SIGNAL(initUsbController(QMutex*,usbMap*,QVector<BUTTON>*,QVector<KNOB>*)), usbControllerDev, SLOT(init(QMutex*,usbMap*,QVector<BUTTON>*,QVector<KNOB>*)));
|
||||||
connect(this, SIGNAL(usbHotplug()), usbControllerDev, SLOT(run()));
|
connect(this, SIGNAL(usbHotplug()), usbControllerDev, SLOT(run()));
|
||||||
|
connect(shut, SIGNAL(backup(QString, QString)), usbControllerDev, SLOT(backupController(QString, QString)));
|
||||||
|
connect(shut, SIGNAL(restore(QString, QString)), usbControllerDev, SLOT(restoreController(QString, QString)));
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue