contentsWidget = new QListWidget;
contentsWidget->setViewMode(QListView::IconMode);
contentsWidget->setIconSize(QSize(50, 50));
contentsWidget->setMovement(QListView::Static);
contentsWidget->setFixedSize(80,250);
contentsWidget->setSpacing(10);
#include <QtGui>
#include <QSettings>
#include "ConnectDialog.h"
#include "ConnectPanelUSB.h"
#include "ConnectPanelEthernet.h"
#include "ConnectPanelServer.h"
ConnectDialog::ConnectDialog(QWidget * parent): QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint)
{
setModal(true);
setWindowIcon(QPixmap("Icons\\plug.png"));
setFixedSize(350,357);
contentsWidget = new QListWidget;
contentsWidget->setViewMode(QListView::IconMode);
contentsWidget->setIconSize(QSize(50, 50));
contentsWidget->setMovement(QListView::Static);
contentsWidget->setFixedSize(80,250);
contentsWidget->setSpacing(10);
pagesWidget = new QStackedWidget;
pagesWidget->addWidget(new ConnectPanelUSB);
pagesWidget->addWidget(new ConnectPanelEthernet);
pagesWidget->addWidget(new ConnectPanelServer);
m_statusLabel = new QLabel;
m_statusIcon = new QLabel;
connect(pagesWidget->widget(0), SIGNAL(errorValidate(QString)),this, SLOT(onErrorValidate(QString)));
connect(pagesWidget->widget(1), SIGNAL(errorValidate(QString)),this, SLOT(onErrorValidate(QString)));
connect(pagesWidget->widget(2), SIGNAL(errorValidate(QString)),this, SLOT(onErrorValidate(QString)));
QPushButton *buttonCancel = new QPushButton(tr("Cancel"));
QPushButton *buttonOK = new QPushButton(tr("OK"));
buttonOK->setDefault(true);
createIcons();
contentsWidget->setCurrentRow(0);
connect(buttonCancel, SIGNAL(clicked()), this, SLOT(close()));
connect(pagesWidget->widget(0), SIGNAL(validateOK()), this, SLOT(close()));
connect(pagesWidget->widget(1), SIGNAL(validateOK()), this, SLOT(close()));
connect(pagesWidget->widget(2), SIGNAL(validateOK()), this, SLOT(close()));
connect(buttonOK, SIGNAL(clicked()), pagesWidget->widget(0), SLOT(onOK()));
connect(buttonOK, SIGNAL(clicked()), pagesWidget->widget(1), SLOT(onOK()));
connect(buttonOK, SIGNAL(clicked()), pagesWidget->widget(2), SLOT(onOK()));
QHBoxLayout *horizontalLayout = new QHBoxLayout;
horizontalLayout->addWidget(contentsWidget);
horizontalLayout->addWidget(pagesWidget, 1);
horizontalLayout->addStretch(1);
QHBoxLayout *statusLayout = new QHBoxLayout;
statusLayout->setAlignment(Qt::AlignLeft);
statusLayout->addWidget(m_statusIcon);
statusLayout->addWidget(m_statusLabel);
QFrame * lineSeparator = new QFrame;
lineSeparator->setFrameStyle(QFrame::HLine|QFrame::Sunken);
QHBoxLayout *buttonsLayout = new QHBoxLayout;
buttonsLayout->addStretch(1);
buttonsLayout->addWidget(buttonOK);
buttonsLayout->addWidget(buttonCancel);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(horizontalLayout);
mainLayout->addStretch(1);
mainLayout->addSpacing(12);
mainLayout->addLayout(statusLayout);
mainLayout->addWidget(lineSeparator);
mainLayout->addLayout(buttonsLayout);
setLayout(mainLayout);
connect(pagesWidget->widget(0), SIGNAL(changeField()), this, SLOT(onChangeField()));
connect(pagesWidget->widget(1), SIGNAL(changeField()), this, SLOT(onChangeField()));
connect(pagesWidget->widget(2), SIGNAL(changeField()), this, SLOT(onChangeField()));
setWindowTitle(tr("Connection"));
readSettings();
}
void ConnectDialog::createIcons()
{
QListWidgetItem *usb = new QListWidgetItem(contentsWidget);
usb->setIcon(QPixmap("Icons\\usb.png"));
usb->setText(tr("USB"));
usb->setToolTip(tr("Connect to station via USB"));
usb->setTextAlignment(Qt::AlignHCenter);
usb->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
QListWidgetItem *ethernet = new QListWidgetItem(contentsWidget);
ethernet->setIcon(QPixmap("Icons\\ethernet.png"));
ethernet->setText(tr("Ethernet"));
ethernet->setToolTip(tr("Connect to station via Ethernet"));
ethernet->setTextAlignment(Qt::AlignHCenter);
ethernet->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
QListWidgetItem *server = new QListWidgetItem(contentsWidget);
server->setIcon(QPixmap("Icons\\server.png"));
server->setText(tr("Server"));
server->setToolTip(tr("Connect to station via Server"));
server->setTextAlignment(Qt::AlignHCenter);
server->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
connect(contentsWidget, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this, SLOT(changePage(QListWidgetItem*,QListWidgetItem*)));
}
void ConnectDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous)
{
if (!current)
current = previous;
pagesWidget->setCurrentIndex(contentsWidget->row(current));
}
void ConnectDialog::onErrorValidate(QString text)
{
m_statusIcon->setPixmap(QPixmap("Icons\\warning.png"));
m_statusLabel->setText(text);
}
void ConnectDialog::onChangeField()
{
m_statusIcon->clear();
m_statusLabel->clear();
}
void ConnectDialog::writeSettings()
{
QSettings settings("Stalenergo", "ASSC-D");
settings.setValue("ActivePanel",pagesWidget->currentIndex());
}
void ConnectDialog::readSettings()
{
QSettings settings("Stalenergo", "ASSC-D");
pagesWidget->setCurrentIndex(settings.value("ActivePanel").toInt());
contentsWidget->setCurrentRow(settings.value("ActivePanel").toInt());
}
void ConnectDialog::closeEvent(QCloseEvent * event)
{
writeSettings();
}