/
separateterminal.cpp
77 lines (53 loc) · 1.68 KB
/
separateterminal.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "separateterminal.h"
#include <QHBoxLayout>
#include <QTabWidget>
#include "console.h"
#include "Device.h"
SeparateTerminal::SeparateTerminal(QWidget *parent) :
QWidget(parent),
mTabWidget(new QTabWidget())
{
setAttribute(Qt::WA_QuitOnClose, false);
mTabWidget->setTabsClosable(true);
connect(mTabWidget, SIGNAL(tabCloseRequested(int)), SLOT(closeTab(int)));
QHBoxLayout *layout = new QHBoxLayout();
layout->setMargin(0);
layout->addWidget(mTabWidget);
setLayout(layout);
}
void SeparateTerminal::setConsole(const QString &id)
{
const int tabCount = mTabWidget->count();
for (int i=0; i<tabCount; ++i) {
Console *console = qobject_cast<Console*>(mTabWidget->widget(i));
if (console->device()->GetDeviceID() == id) {
mTabWidget->setCurrentIndex(i);
return;
}
}
Console *console = new Console();
console->setMinimumWidth (640);
console->setMinimumHeight(360);
connect(console, SIGNAL(disconnectCommand(Console*)), SLOT(exitHandler(Console*)));
mTabWidget->setCurrentIndex(mTabWidget->addTab(console, tr("Device %1").arg(id)));
console->cmdConnect(id);
}
void SeparateTerminal::closeTab(int index)
{
QWidget *console = mTabWidget->widget(index);
mTabWidget->removeTab(index);
console->deleteLater();
if (!mTabWidget->count())
close();
}
void SeparateTerminal::exitHandler(Console *console)
{
const int tabCount = mTabWidget->count();
for (int i=0; i<tabCount; ++i) {
Console *consoleTab = qobject_cast<Console*>(mTabWidget->widget(i));
if (console==consoleTab) {
closeTab(i);
return;
}
}
}