summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2014-01-24 13:26:24 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2014-01-24 13:26:24 -0800
commit6f4e494e067ba8778c2a4064d218639743cf715a (patch)
treea253ebfcf645495dc63f8328416988fe7fedd69f
parenteb554a504d8dc4d71ef61a1198cdb641a0c46b03 (diff)
downloadinfinitytier-6f4e494e067ba8778c2a4064d218639743cf715a.tar.gz
infinitytier-6f4e494e067ba8778c2a4064d218639743cf715a.zip
Bunch of UI style improvements.
-rw-r--r--ZeroTierUI/ZeroTierUI.pro3
-rw-r--r--ZeroTierUI/main.cpp16
-rw-r--r--ZeroTierUI/mainwindow.ui76
-rw-r--r--ZeroTierUI/networkwidget.cpp8
-rw-r--r--ZeroTierUI/networkwidget.h2
-rw-r--r--ZeroTierUI/networkwidget.ui253
-rw-r--r--ZeroTierUI/resources.qrc3
-rw-r--r--ZeroTierUI/stylesheet.css90
8 files changed, 237 insertions, 214 deletions
diff --git a/ZeroTierUI/ZeroTierUI.pro b/ZeroTierUI/ZeroTierUI.pro
index cb3912ff..dd31f27f 100644
--- a/ZeroTierUI/ZeroTierUI.pro
+++ b/ZeroTierUI/ZeroTierUI.pro
@@ -109,3 +109,6 @@ RESOURCES += \
mac:OBJECTIVE_SOURCES += \
mac_doprivileged.mm
+
+OTHER_FILES += \
+ stylesheet.css
diff --git a/ZeroTierUI/main.cpp b/ZeroTierUI/main.cpp
index 58571c63..3255ec9f 100644
--- a/ZeroTierUI/main.cpp
+++ b/ZeroTierUI/main.cpp
@@ -39,6 +39,13 @@ int main(int argc, char *argv[])
{
QApplication a(argc, argv);
+ {
+ QFile qss(":css/stylesheet.css");
+ qss.open(QFile::ReadOnly);
+ QString style(qss.readAll());
+ a.setStyleSheet(style);
+ }
+
#ifdef __APPLE__
// If service isn't installed, download and install it
if (!QFile::exists("/Library/Application Support/ZeroTier/One/zerotier-one")) {
@@ -51,15 +58,18 @@ int main(int argc, char *argv[])
#endif
#ifdef __APPLE__
- QString zt1AppSupport(QDir::homePath() + "/Library/Application Support/ZeroTier/One");
- QDir::root().mkpath(zt1AppSupport);
- settings = new QSettings(zt1AppSupport + "/ui.ini",QSettings::IniFormat);
+ {
+ QString zt1AppSupport(QDir::homePath() + "/Library/Application Support/ZeroTier/One");
+ QDir::root().mkpath(zt1AppSupport);
+ settings = new QSettings(zt1AppSupport + "/ui.ini",QSettings::IniFormat);
+ }
#else
settings = new QSettings("ZeroTier Networks","ZeroTier One");
#endif
if (!settings->value("acceptedLicenseV1",false).toBool()) {
LicenseDialog ld;
+ ld.setStyleSheet(a.styleSheet());
ld.exec();
}
diff --git a/ZeroTierUI/mainwindow.ui b/ZeroTierUI/mainwindow.ui
index 91479bb3..ad71f034 100644
--- a/ZeroTierUI/mainwindow.ui
+++ b/ZeroTierUI/mainwindow.ui
@@ -106,16 +106,6 @@
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
- <property name="styleSheet">
- <string notr="true">QListWidget#networkListWidget {
- background-color: transparent;
-}
-
-QListWidget#networkListWidget::Item {
- background-color: palette(base);
- border: 0;
-}</string>
- </property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
@@ -135,7 +125,7 @@ QListWidget#networkListWidget::Item {
<enum>QAbstractItemView::ScrollPerPixel</enum>
</property>
<property name="spacing">
- <number>2</number>
+ <number>0</number>
</property>
<property name="uniformItemSizes">
<bool>true</bool>
@@ -161,7 +151,7 @@ QListWidget#networkListWidget::Item {
<number>0</number>
</property>
<item>
- <widget class="QPushButton" name="addressButton">
+ <widget class="QToolButton" name="addressButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -179,33 +169,14 @@ QListWidget#networkListWidget::Item {
<property name="statusTip">
<string>Your 10-digit ZeroTier address; click to copy to clipboard.</string>
</property>
- <property name="styleSheet">
- <string notr="true">QPushButton {
- border: 0;
- text-align: left;
- padding: 0 5px 0 5px;
- margin: 0;
- background-color: transparent;
-}
-
-QPushButton:focus {
- background-color: rgba(0,0,0,15);
-}
-
-QPushButton:hover {
- background-color: rgba(0,0,0,15);
-}
-
-QPushButton:pressed {
- background-color: rgba(0,0,0,75);
-}
-s</string>
- </property>
<property name="text">
- <string/>
+ <string notr="true">----------</string>
</property>
- <property name="flat">
- <bool>true</bool>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextOnly</enum>
+ </property>
+ <property name="class" stdset="0">
+ <string notr="true">clickToCopy</string>
</property>
</widget>
</item>
@@ -225,11 +196,6 @@ s</string>
<property name="statusTip">
<string>Your network connection status.</string>
</property>
- <property name="styleSheet">
- <string notr="true">padding: 0 0.75em 0 0.75em;
-margin: 0 4px 0 0;
-</string>
- </property>
<property name="text">
<string/>
</property>
@@ -267,7 +233,7 @@ margin: 0 4px 0 0;
</widget>
</item>
<item>
- <widget class="QPushButton" name="joinNetworkButton">
+ <widget class="QToolButton" name="joinNetworkButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -285,33 +251,9 @@ margin: 0 4px 0 0;
<property name="statusTip">
<string>Join this network.</string>
</property>
- <property name="styleSheet">
- <string notr="true">QPushButton {
- padding: 0 0.8em 0 0.8em;
- margin: 0;
- border: 0;
- background-color: rgba(0,0,0,25);
-}
-
-QPushButton:focus {
- background-color: rgba(0,0,0,33);
-}
-
-QPushButton:hover {
- background-color: rgba(0,0,0,33);
-}
-
-QPushButton:pressed {
- background-color: rgba(0,0,0,75);
-}
-</string>
- </property>
<property name="text">
<string notr="true">+</string>
</property>
- <property name="flat">
- <bool>true</bool>
- </property>
</widget>
</item>
</layout>
diff --git a/ZeroTierUI/networkwidget.cpp b/ZeroTierUI/networkwidget.cpp
index 112d9ac6..8b0ec0a7 100644
--- a/ZeroTierUI/networkwidget.cpp
+++ b/ZeroTierUI/networkwidget.cpp
@@ -43,7 +43,7 @@ NetworkWidget::NetworkWidget(QWidget *parent,const std::string &nwid) :
networkIdStr(nwid)
{
ui->setupUi(this);
- ui->networkIdPushButton->setText(QString(nwid.c_str()));
+ ui->networkIdButton->setText(QString(nwid.c_str()));
QFontMetrics fm(ui->ipListWidget->font());
int lineHeight = ui->ipListWidget->spacing() + fm.height();
@@ -64,7 +64,7 @@ void NetworkWidget::setStatus(const std::string &status,const std::string &age)
{
ui->statusLabel->setText(QString(status.c_str()));
if (status == "OK")
- ui->ageLabel->setText(QString("(configuration is ") + age.c_str() + " seconds old)");
+ ui->ageLabel->setText(QString("[") + age.c_str() + "s ago]");
else ui->ageLabel->setText(QString());
}
@@ -138,9 +138,9 @@ void NetworkWidget::on_leaveNetworkButton_clicked()
}
}
-void NetworkWidget::on_networkIdPushButton_clicked()
+void NetworkWidget::on_networkIdButton_clicked()
{
- QApplication::clipboard()->setText(ui->networkIdPushButton->text());
+ QApplication::clipboard()->setText(ui->networkIdButton->text());
}
void NetworkWidget::on_ipListWidget_itemActivated(QListWidgetItem *item)
diff --git a/ZeroTierUI/networkwidget.h b/ZeroTierUI/networkwidget.h
index 29f88d3b..f46dff20 100644
--- a/ZeroTierUI/networkwidget.h
+++ b/ZeroTierUI/networkwidget.h
@@ -55,7 +55,7 @@ public:
private slots:
void on_leaveNetworkButton_clicked();
- void on_networkIdPushButton_clicked();
+ void on_networkIdButton_clicked();
void on_ipListWidget_itemActivated(QListWidgetItem *item);
private:
diff --git a/ZeroTierUI/networkwidget.ui b/ZeroTierUI/networkwidget.ui
index a23f25b4..c4bf9734 100644
--- a/ZeroTierUI/networkwidget.ui
+++ b/ZeroTierUI/networkwidget.ui
@@ -20,7 +20,7 @@
<string>Network</string>
</property>
<property name="class" stdset="0">
- <string>NetworkWidget</string>
+ <string notr="true">networkListItem</string>
</property>
<layout class="QHBoxLayout">
<property name="spacing">
@@ -57,35 +57,74 @@
<number>0</number>
</property>
<item>
- <widget class="QLabel" name="nameLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="font">
- <font>
- <pointsize>16</pointsize>
- <weight>75</weight>
- <bold>true</bold>
- </font>
- </property>
- <property name="statusTip">
- <string>This network's short name.</string>
- </property>
- <property name="text">
- <string>networkname</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- <property name="alignment">
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
- </property>
- <property name="textInteractionFlags">
- <set>Qt::NoTextInteraction</set>
- </property>
+ <widget class="QWidget" name="widget" native="true">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>4</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QToolButton" name="networkIdButton">
+ <property name="font">
+ <font>
+ <family>Courier</family>
+ <pointsize>13</pointsize>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="statusTip">
+ <string>Hexadecimal network ID; click to copy to clipboard.</string>
+ </property>
+ <property name="text">
+ <string notr="true">----------------</string>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextOnly</enum>
+ </property>
+ <property name="class" stdset="0">
+ <string notr="true">clickToCopy</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="nameLabel">
+ <property name="font">
+ <font>
+ <pointsize>13</pointsize>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="statusTip">
+ <string>This network's short name.</string>
+ </property>
+ <property name="text">
+ <string>networkname</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ <property name="textInteractionFlags">
+ <set>Qt::NoTextInteraction</set>
+ </property>
+ <property name="class" stdset="0">
+ <string notr="true">networkName</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
<item>
@@ -100,6 +139,9 @@
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
+ <property name="rowWrapPolicy">
+ <enum>QFormLayout::DontWrapRows</enum>
+ </property>
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
@@ -107,27 +149,32 @@
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<property name="horizontalSpacing">
- <number>6</number>
+ <number>4</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<property name="leftMargin">
- <number>0</number>
+ <number>4</number>
</property>
<property name="topMargin">
- <number>0</number>
+ <number>4</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
- <number>0</number>
+ <number>4</number>
</property>
<item row="2" column="0">
- <widget class="QLabel" name="label_2">
+ <widget class="QLabel" name="label_5">
+ <property name="font">
+ <font>
+ <pointsize>12</pointsize>
+ </font>
+ </property>
<property name="text">
- <string>Network ID:</string>
+ <string>Type:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
@@ -135,78 +182,34 @@
</widget>
</item>
<item row="2" column="1">
- <widget class="QPushButton" name="networkIdPushButton">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
+ <widget class="QLabel" name="networkTypeLabel">
<property name="font">
<font>
- <family>Courier</family>
- <pointsize>14</pointsize>
+ <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="statusTip">
- <string>Hexadecimal network ID; click to copy to clipboard.</string>
- </property>
- <property name="styleSheet">
- <string notr="true">QPushButton {
- border: 0;
- padding: 0;
- margin: 0;
- text-align: left;
- vertical-align: middle;
- background-color: transparent;
-}
-
-QPushButton:focus {
- background-color: rgba(0,0,0,15);
-}
-
-QPushButton:hover {
- background-color: rgba(0,0,0,15);
-}
-
-QPushButton:pressed {
- background-color: rgba(0,0,0,75);
-}
-</string>
- </property>
- <property name="text">
- <string>0000000000000000</string>
- </property>
- <property name="flat">
- <bool>true</bool>
+ <string>What kind of network? Public or private?</string>
</property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QLabel" name="label_5">
<property name="text">
- <string>Type:</string>
+ <string>?</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
- <item row="3" column="1">
- <widget class="QLabel" name="networkTypeLabel">
+ <item row="3" column="0">
+ <widget class="QLabel" name="label">
<property name="font">
<font>
- <weight>75</weight>
- <bold>true</bold>
+ <pointsize>12</pointsize>
</font>
</property>
- <property name="statusTip">
- <string>What kind of network? Public or private?</string>
- </property>
<property name="text">
- <string>?</string>
+ <string>Status:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
@@ -214,16 +217,21 @@ QPushButton:pressed {
</widget>
</item>
<item row="4" column="0">
- <widget class="QLabel" name="label">
+ <widget class="QLabel" name="label_4">
+ <property name="font">
+ <font>
+ <pointsize>12</pointsize>
+ </font>
+ </property>
<property name="text">
- <string>Status:</string>
+ <string>Device:</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
- <item row="4" column="1">
+ <item row="3" column="1">
<widget class="QWidget" name="widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
@@ -257,6 +265,7 @@ QPushButton:pressed {
</property>
<property name="font">
<font>
+ <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
@@ -282,18 +291,21 @@ QPushButton:pressed {
</property>
<property name="font">
<font>
- <pointsize>8</pointsize>
+ <pointsize>10</pointsize>
</font>
</property>
<property name="statusTip">
<string>How recently did this network refresh its settings?</string>
</property>
<property name="text">
- <string>(configuration is 0 seconds old)</string>
+ <string>[0s ago]</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
+ <property name="textInteractionFlags">
+ <set>Qt::NoTextInteraction</set>
+ </property>
</widget>
</item>
<item>
@@ -312,20 +324,11 @@ QPushButton:pressed {
</layout>
</widget>
</item>
- <item row="5" column="0">
- <widget class="QLabel" name="label_4">
- <property name="text">
- <string>Device:</string>
- </property>
- <property name="textFormat">
- <enum>Qt::PlainText</enum>
- </property>
- </widget>
- </item>
- <item row="5" column="1">
+ <item row="4" column="1">
<widget class="QLabel" name="deviceLabel">
<property name="font">
<font>
+ <pointsize>12</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
@@ -388,7 +391,7 @@ QPushButton:pressed {
<string notr="true">padding: 0.1em 0 0.1em 0;</string>
</property>
<property name="text">
- <string>IP Address Assignments</string>
+ <string>IP Addresses</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
@@ -418,16 +421,6 @@ QPushButton:pressed {
<property name="statusTip">
<string>Double-click an IP to copy it to the clipboard.</string>
</property>
- <property name="styleSheet">
- <string notr="true">QListWidget {
- background-color: rgba(0,0,0,10);
-}
-
-QListWidget:hover {
- background-color: rgba(0,0,0,15);
-}
-</string>
- </property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
@@ -446,6 +439,9 @@ QListWidget:hover {
<property name="sortingEnabled">
<bool>true</bool>
</property>
+ <property name="class" stdset="0">
+ <string notr="true">ipAddressList</string>
+ </property>
</widget>
</item>
<item>
@@ -480,7 +476,7 @@ QListWidget:hover {
</spacer>
</item>
<item>
- <widget class="QPushButton" name="leaveNetworkButton">
+ <widget class="QToolButton" name="leaveNetworkButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
@@ -490,32 +486,11 @@ QListWidget:hover {
<property name="statusTip">
<string>Leave this network.</string>
</property>
- <property name="styleSheet">
- <string notr="true">QPushButton {
- padding: 0.25em;
- border: 0;
- margin: 2px 0 2px 0;
- background-color: rgba(0,0,0,25);
-}
-
-QPushButton:focus {
- background-color: rgba(0,0,0,33);
-}
-
-QPushButton:hover {
- background-color: rgba(0,0,0,33);
-}
-
-QPushButton:pressed {
- background-color: rgba(0,0,0,75);
-}
-</string>
- </property>
<property name="text">
<string>Leave Network</string>
</property>
- <property name="flat">
- <bool>true</bool>
+ <property name="class" stdset="0">
+ <string notr="true">leaveNetworkButton</string>
</property>
</widget>
</item>
diff --git a/ZeroTierUI/resources.qrc b/ZeroTierUI/resources.qrc
index a788ae7f..517b7944 100644
--- a/ZeroTierUI/resources.qrc
+++ b/ZeroTierUI/resources.qrc
@@ -2,4 +2,7 @@
<qresource prefix="/img">
<file>zt1icon.png</file>
</qresource>
+ <qresource prefix="/css">
+ <file>stylesheet.css</file>
+ </qresource>
</RCC>
diff --git a/ZeroTierUI/stylesheet.css b/ZeroTierUI/stylesheet.css
new file mode 100644
index 00000000..706da1fa
--- /dev/null
+++ b/ZeroTierUI/stylesheet.css
@@ -0,0 +1,90 @@
+QToolButton {
+ margin: 0;
+ padding: 2px;
+ text-align: center;
+ background: palette(button);
+ color: palette(button-text);
+ border: 1px solid transparent;
+}
+QToolButton:focus {
+ border: 1px solid #000000;
+}
+QToolButton:hover {
+ background: palette(highlight);
+}
+QToolButton:pressed {
+ border: 1px solid #000000;
+}
+
+QToolButton.clickToCopy {
+ padding: 0;
+ margin: 0;
+ border: 0;
+ background: transparent;
+ color: palette(link);
+}
+QToolButton.clickToCopy:focus {
+ text-decoration: underline;
+}
+QToolButton.clickToCopy:hover {
+ text-decoration: underline;
+}
+QToolButton.clickToCopy:pressed {
+ background: transparent;
+}
+
+QToolButton.leaveNetworkButton {
+ margin: 0 4px 3px 0;
+}
+
+QMainWindow {
+ background: palette(dark);
+}
+
+QListWidget {
+ background: transparent;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+QListWidget::item {
+ background: palette(base);
+ margin: 1px 0 1px 0;
+}
+
+QListWidget.ipAddressList {
+ background: palette(button);
+ margin: 0 4px 4px 0;
+}
+QListWidget.ipAddressList::item {
+ background: transparent;
+ color: palette(link);
+ border-bottom: 1px solid transparent;
+}
+QListWidget.ipAddressList::item:selected {
+ background: transparent;
+ border-bottom: 1px solid transparent;
+}
+QListWidget.ipAddressList::item:hover {
+ border-bottom: 1px solid palette(link);
+}
+
+QLabel.networkName {
+ padding: 0 0.8em 0.1em 0;
+ margin: 0;
+ text-align: right;
+}
+
+#joinNetworkButton {
+ margin: 1px;
+ padding: 0;
+}
+
+#networkListWidget {
+ background: palette(dark);
+ margin: 0 0 2px 0;
+}
+
+#bottomContainerWidget {
+ background: palette(base);
+}