3 * Copyright 2014-2015 Roy Marples <roy@marples.name>
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 #include <QHBoxLayout>
30 #include <QRadioButton>
37 #include "dhcpcd-qt.h"
38 #include "dhcpcd-ssidmenuwidget.h"
42 DhcpcdSsidMenuWidget::DhcpcdSsidMenuWidget(QWidget *parent,
43 DhcpcdWi *wi, DHCPCD_WI_SCAN *scan)
50 QHBoxLayout *layout = new QHBoxLayout(this);
51 layout->setContentsMargins(1, 1, 1, 1);
52 selicon = new QLabel(this);
53 selicon->setMinimumSize(ICON_SIZE, ICON_SIZE);
54 layout->addWidget(selicon);
56 ssid = new QLabel(this);
57 ssid->setSizePolicy(QSizePolicy::MinimumExpanding,
58 QSizePolicy::MinimumExpanding);
59 layout->addWidget(ssid);
61 encicon = new QLabel(this);
62 layout->addWidget(encicon);
63 layout->setAlignment(encicon, Qt::AlignRight);
65 stricon = new QLabel(this);
66 layout->addWidget(stricon);
67 layout->setAlignment(stricon, Qt::AlignRight);
70 installEventFilter(this);
72 setStyleSheet("QFrame { border-radius: 4px; } "
74 "color:palette(highlighted-text);"
75 "background-color:palette(highlight);"
79 DHCPCD_WI_SCAN *DhcpcdSsidMenuWidget::getScan()
85 bool DhcpcdSsidMenuWidget::isAssociated()
91 void DhcpcdSsidMenuWidget::setScan(DHCPCD_WI_SCAN *scan)
100 i = dhcpcd_wpa_if(wpa);
101 associated = dhcpcd_wi_associated(i, scan);
104 * Icons are rescaled because they are not always the size requested
105 * due to a bug in Qt-4.8.
106 * https://qt.gitorious.org/qt/qt/merge_requests/2566
110 icon = DhcpcdQt::getIcon("actions", "dialog-ok-apply");
111 picon = icon.pixmap(ICON_SIZE);
112 if (picon.height() != ICON_SIZE)
113 picon = picon.scaledToHeight(ICON_SIZE,
114 Qt::SmoothTransformation);
115 selicon->setPixmap(picon);
116 ssid->setStyleSheet("font:bold;");
118 selicon->setPixmap(NULL);
119 ssid->setStyleSheet(NULL);
121 ssid->setText(scan->ssid);
122 if (scan->flags & WSF_SECURE)
123 icon = DhcpcdQt::getIcon("status",
124 "network-wireless-encrypted");
126 icon = DhcpcdQt::getIcon("status", "dialog-warning");
127 picon = icon.pixmap(ICON_SIZE);
128 if (picon.height() != ICON_SIZE)
129 picon = picon.scaledToHeight(ICON_SIZE, Qt::SmoothTransformation);
130 encicon->setPixmap(picon);
132 icon = DhcpcdQt::getIcon("status",
133 DhcpcdQt::signalStrengthIcon(scan));
134 picon = icon.pixmap(ICON_SIZE);
135 if (picon.height() != ICON_SIZE)
136 picon = picon.scaledToHeight(ICON_SIZE, Qt::SmoothTransformation);
137 stricon->setPixmap(picon);
140 bool DhcpcdSsidMenuWidget::eventFilter(QObject *, QEvent *event)
143 if (event->type() == QEvent::MouseButtonPress)
148 void DhcpcdSsidMenuWidget::enterEvent(QEvent *)
152 ssid->setStyleSheet("color:palette(highlighted-text); font:bold;");
154 ssid->setStyleSheet("color:palette(highlighted-text);");
158 void DhcpcdSsidMenuWidget::leaveEvent(QEvent *)
162 ssid->setStyleSheet("color:palette(text); font:bold;");
164 ssid->setStyleSheet("color:palette(text);");