xref: /OK3568_Linux_fs/app/forlinx/flapp/src/plugins/network/qipaddressedit.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "qipaddressedit.h"
2 #include "qipaddressedititem.h"
3 
4 #include <QtGui>
5 #include <QStringList>
6 #include <QHBoxLayout>
7 #include <QLabel>
8 #include "KeyboardGlobal.h"
9 
QIpAddressEdit(QWidget * parent)10 QIpAddressEdit::QIpAddressEdit(QWidget *parent)
11     : QWidget(parent)
12 {
13     readOnly = false;
14     item1 = new QIpAddressEditItem(this);
15     item2 = new QIpAddressEditItem(this);
16     item3 = new QIpAddressEditItem(this);
17     item4 = new QIpAddressEditItem(this);
18     item1->setMaximumSize(100, 30);
19     item2->setMaximumSize(100, 30);
20     item3->setMaximumSize(100, 30);
21     item4->setMaximumSize(100, 30);
22     item1->setNextItem(item2);
23     item2->setNextItem(item3);
24     item3->setNextItem(item4);
25     item4->setPreviousItem(item3);
26     item3->setPreviousItem(item2);
27     item2->setPreviousItem(item1);
28 
29     QHBoxLayout * mainLayout = new QHBoxLayout(this);
30     mainLayout->addWidget(item1);
31     mainLayout->addWidget(new QLabel(".", this));
32     mainLayout->addWidget(item2);
33     mainLayout->addWidget(new QLabel(".", this));
34     mainLayout->addWidget(item3);
35     mainLayout->addWidget(new QLabel(".", this));
36     mainLayout->addWidget(item4);
37 
38     GlobalInit();
39     item1->installEventFilter(this);
40     item2->installEventFilter(this);
41     item3->installEventFilter(this);
42     item4->installEventFilter(this);
43 
44     this->setLayout(mainLayout);
45 }
46 
~QIpAddressEdit()47 QIpAddressEdit::~QIpAddressEdit()
48 {
49     delete item1;
50     delete item2;
51     delete item3;
52     delete item4;
53 }
54 
eventFilter(QObject * watched,QEvent * event)55 bool QIpAddressEdit::eventFilter(QObject *watched, QEvent *event)
56 {
57     static bool mFocusIn = false;
58     if (event->type()==QEvent::FocusIn)
59     {
60 	mFocusIn = true;
61     }
62     else if (event->type()==QEvent::FocusOut)
63     {
64 	PlatformInputContextBase->FocusOut(watched);
65 	mFocusIn = false;
66     }
67 
68     if (mFocusIn && event->type() == QEvent::MouseButtonPress) {
69    	QMouseEvent *e = (QMouseEvent *)event;
70 	PlatformInputContextBase->FocusIn(watched, e->globalPos());
71     }
72 
73     return QWidget::eventFilter(watched,event);
74 }
75 
setText(const QString & ip)76 void QIpAddressEdit::setText(const QString &ip)
77 {
78     QStringList itemsText = ip.split(".");
79     if(itemsText.size() == 4)
80     {
81         item1->setText(itemsText[0]);
82         item2->setText(itemsText[1]);
83         item3->setText(itemsText[2]);
84         item4->setText(itemsText[3]);
85 
86         emit textChanged(ip);
87         emit textEdited(ip);
88     }
89 }
90 
text() const91 QString QIpAddressEdit::text() const
92 {
93     return QString("%1.%2.%3.%4")
94         .arg(item1->text())
95         .arg(item2->text())
96         .arg(item3->text())
97         .arg(item4->text());
98 }
99 
setStyleSheet(const QString & styleSheet)100 void QIpAddressEdit::setStyleSheet(const QString &styleSheet)
101 {
102     item1->setStyleSheet(styleSheet);
103     item2->setStyleSheet(styleSheet);
104     item3->setStyleSheet(styleSheet);
105     item4->setStyleSheet(styleSheet);
106 }
107 
ipChanged(const QString &)108 void QIpAddressEdit::ipChanged(const QString &)
109 {
110     emit textChanged(text());
111 }
112 
ipEdited(const QString &)113 void QIpAddressEdit::ipEdited(const QString &)
114 {
115     emit textEdited(text());
116 }
117 
setReadOnly(bool model)118 void QIpAddressEdit::setReadOnly(bool model)
119 {
120     readOnly = model;
121     item1->setReadOnly(model);
122     item2->setReadOnly(model);
123     item3->setReadOnly(model);
124     item4->setReadOnly(model);
125 }
126 
clear()127 void QIpAddressEdit::clear()
128 {
129     item1->clear();
130     item2->clear();
131     item3->clear();
132     item4->clear();
133 }
134