Browse Source

Network list update works in UI.

Adam Ierymenko 11 years ago
parent
commit
e3b0197e57
4 changed files with 337 additions and 371 deletions
  1. 33 32
      ZeroTierUI/mainwindow.cpp
  2. 18 31
      ZeroTierUI/mainwindow.ui
  3. 4 0
      ZeroTierUI/network.cpp
  4. 282 308
      ZeroTierUI/network.ui

+ 33 - 32
ZeroTierUI/mainwindow.cpp

@@ -8,6 +8,7 @@
 #include <set>
 #include <set>
 #include <vector>
 #include <vector>
 #include <stdexcept>
 #include <stdexcept>
+#include <utility>
 
 
 #include <QClipboard>
 #include <QClipboard>
 #include <QMutex>
 #include <QMutex>
@@ -130,48 +131,48 @@ void MainWindow::customEvent(QEvent *event)
 		if (hdr.size() >= 5)
 		if (hdr.size() >= 5)
 			this->myVersion = hdr[4].c_str();
 			this->myVersion = hdr[4].c_str();
 	} else if (hdr[1] == "listnetworks") {
 	} else if (hdr[1] == "listnetworks") {
-		std::set<std::string> networkIds;
-
-		// Add/update network widgets in scroll area
+		std::map< std::string,std::vector<std::string> > byNwid;
 		for(unsigned long i=1;i<m->ztMessage.size();++i) {
 		for(unsigned long i=1;i<m->ztMessage.size();++i) {
 			std::vector<std::string> l(ZeroTier::Node::LocalClient::splitLine(m->ztMessage[i]));
 			std::vector<std::string> l(ZeroTier::Node::LocalClient::splitLine(m->ztMessage[i]));
 			// 200 listnetworks <nwid> <name> <status> <type> <dev> <ips>
 			// 200 listnetworks <nwid> <name> <status> <type> <dev> <ips>
-			if ((l.size() == 8)&&(l[2].length() == 16)) {
-				networkIds.insert(l[2]);
-				Network *nw = (Network *)0;
-				for(QObjectList::const_iterator n(ui->networksScrollAreaContentWidget->children().begin());n!=ui->networksScrollAreaContentWidget->children().end();++n) {
-					Network *n2 = (Network *)*n;
-					if ((n2)&&(n2->networkId() == l[2])) {
-						nw = n2;
-						break;
-					}
-				}
-				if (!nw) {
-					nw = new Network(ui->networksScrollAreaContentWidget,l[2]);
-				}
+			if ((l.size() == 8)&&(l[2].length() == 16))
+				byNwid[l[2]] = l;
+		}
+
+		std::map< std::string,std::pair<int,Network *> > existingByNwid;
+		for(int r=0;r<ui->networkListWidget->count();++r) {
+			Network *nw = (Network *)ui->networkListWidget->itemWidget(ui->networkListWidget->item(r));
+			existingByNwid[nw->networkId()] = std::make_pair(r,nw);
+		}
+
+		for(std::map< std::string,std::pair<int,Network *> >::iterator i(existingByNwid.begin());i!=existingByNwid.end();++i) {
+			if (byNwid.count(i->first)) {
+				std::vector<std::string> &l = byNwid[i->first];
+				i->second.second->setNetworkName(l[3]);
+				i->second.second->setStatus(l[4]);
+				i->second.second->setNetworkType(l[5]);
+				i->second.second->setNetworkDeviceName(l[6]);
+				i->second.second->setIps(l[7]);
+			} else {
+				delete ui->networkListWidget->takeItem(i->second.first);
+			}
+		}
+
+		for(std::map< std::string,std::vector<std::string> >::iterator i(byNwid.begin());i!=byNwid.end();++i) {
+			if (!existingByNwid.count(i->first)) {
+				std::vector<std::string> &l = i->second;
+				Network *nw = new Network((QWidget *)0,i->first);
 				nw->setNetworkName(l[3]);
 				nw->setNetworkName(l[3]);
 				nw->setStatus(l[4]);
 				nw->setStatus(l[4]);
 				nw->setNetworkType(l[5]);
 				nw->setNetworkType(l[5]);
 				nw->setNetworkDeviceName(l[6]);
 				nw->setNetworkDeviceName(l[6]);
 				nw->setIps(l[7]);
 				nw->setIps(l[7]);
+				QListWidgetItem *item = new QListWidgetItem();
+				item->setSizeHint(nw->sizeHint());
+				ui->networkListWidget->addItem(item);
+				ui->networkListWidget->setItemWidget(item,nw);
 			}
 			}
 		}
 		}
-
-		// Remove widgets for networks no longer in the list
-		for(QObjectList::const_iterator n(ui->networksScrollAreaContentWidget->children().begin());n!=ui->networksScrollAreaContentWidget->children().end();++n) {
-			Network *n2 = (Network *)*n;
-			if ((n2)&&(!networkIds.count(n2->networkId())))
-				n2->deleteLater();
-		}
-
-		// Update layout
-		QVBoxLayout *layout = new QVBoxLayout();
-		layout->setSpacing(0);
-		layout->setMargin(0);
-		for(QObjectList::const_iterator n(ui->networksScrollAreaContentWidget->children().begin());n!=ui->networksScrollAreaContentWidget->children().end();++n)
-			layout->addWidget((QWidget *)*n);
-		delete ui->networksScrollAreaContentWidget->layout();
-		ui->networksScrollAreaContentWidget->setLayout(layout);
 	} else if (hdr[1] == "listpeers") {
 	} else if (hdr[1] == "listpeers") {
 		this->numPeers = 0;
 		this->numPeers = 0;
 		for(unsigned long i=1;i<m->ztMessage.size();++i) {
 		for(unsigned long i=1;i<m->ztMessage.size();++i) {

+ 18 - 31
ZeroTierUI/mainwindow.ui

@@ -35,44 +35,31 @@
      <number>6</number>
      <number>6</number>
     </property>
     </property>
     <item>
     <item>
-     <widget class="QScrollArea" name="networksScrollArea">
-      <property name="sizePolicy">
-       <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-        <horstretch>0</horstretch>
-        <verstretch>0</verstretch>
-       </sizepolicy>
-      </property>
-      <property name="toolTip">
-       <string/>
-      </property>
-      <property name="frameShape">
-       <enum>QFrame::NoFrame</enum>
+     <widget class="QListWidget" name="networkListWidget">
+      <property name="focusPolicy">
+       <enum>Qt::NoFocus</enum>
       </property>
       </property>
       <property name="horizontalScrollBarPolicy">
       <property name="horizontalScrollBarPolicy">
        <enum>Qt::ScrollBarAlwaysOff</enum>
        <enum>Qt::ScrollBarAlwaysOff</enum>
       </property>
       </property>
-      <property name="widgetResizable">
+      <property name="autoScroll">
+       <bool>false</bool>
+      </property>
+      <property name="editTriggers">
+       <set>QAbstractItemView::NoEditTriggers</set>
+      </property>
+      <property name="alternatingRowColors">
        <bool>true</bool>
        <bool>true</bool>
       </property>
       </property>
-      <property name="alignment">
-       <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+      <property name="selectionMode">
+       <enum>QAbstractItemView::NoSelection</enum>
+      </property>
+      <property name="selectionBehavior">
+       <enum>QAbstractItemView::SelectRows</enum>
+      </property>
+      <property name="verticalScrollMode">
+       <enum>QAbstractItemView::ScrollPerPixel</enum>
       </property>
       </property>
-      <widget class="QWidget" name="networksScrollAreaContentWidget">
-       <property name="geometry">
-        <rect>
-         <x>0</x>
-         <y>0</y>
-         <width>656</width>
-         <height>238</height>
-        </rect>
-       </property>
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-      </widget>
      </widget>
      </widget>
     </item>
     </item>
     <item>
     <item>

+ 4 - 0
ZeroTierUI/network.cpp

@@ -17,6 +17,10 @@ Network::Network(QWidget *parent,const std::string &nwid) :
 {
 {
 	ui->setupUi(this);
 	ui->setupUi(this);
 	ui->networkIdPushButton->setText(QString(nwid.c_str()));
 	ui->networkIdPushButton->setText(QString(nwid.c_str()));
+	QFontMetrics fm(ui->ipListWidget->font());
+	int lineHeight = ui->ipListWidget->spacing() + fm.height();
+	ui->ipListWidget->setMinimumHeight(lineHeight * 3);
+	ui->ipListWidget->setMaximumHeight(lineHeight * 3);
 }
 }
 
 
 Network::~Network()
 Network::~Network()

+ 282 - 308
ZeroTierUI/network.ui

@@ -7,11 +7,11 @@
     <x>0</x>
     <x>0</x>
     <y>0</y>
     <y>0</y>
     <width>580</width>
     <width>580</width>
-    <height>267</height>
+    <height>253</height>
    </rect>
    </rect>
   </property>
   </property>
   <property name="sizePolicy">
   <property name="sizePolicy">
-   <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+   <sizepolicy hsizetype="Expanding" vsizetype="Maximum">
     <horstretch>0</horstretch>
     <horstretch>0</horstretch>
     <verstretch>0</verstretch>
     <verstretch>0</verstretch>
    </sizepolicy>
    </sizepolicy>
@@ -22,249 +22,308 @@
   <property name="styleSheet">
   <property name="styleSheet">
    <string notr="true"/>
    <string notr="true"/>
   </property>
   </property>
-  <layout class="QHBoxLayout" name="horizontalLayout_3">
+  <layout class="QHBoxLayout" name="horizontalLayout">
    <property name="spacing">
    <property name="spacing">
-    <number>0</number>
+    <number>6</number>
    </property>
    </property>
    <property name="leftMargin">
    <property name="leftMargin">
-    <number>0</number>
+    <number>6</number>
    </property>
    </property>
    <property name="topMargin">
    <property name="topMargin">
-    <number>3</number>
+    <number>6</number>
    </property>
    </property>
    <property name="rightMargin">
    <property name="rightMargin">
-    <number>0</number>
+    <number>6</number>
    </property>
    </property>
    <property name="bottomMargin">
    <property name="bottomMargin">
-    <number>3</number>
+    <number>6</number>
    </property>
    </property>
    <item>
    <item>
-    <widget class="QFrame" name="frame">
-     <property name="frameShape">
-      <enum>QFrame::StyledPanel</enum>
+    <widget class="QWidget" name="leftWidget" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
      </property>
      </property>
-     <property name="frameShadow">
-      <enum>QFrame::Raised</enum>
+     <layout class="QFormLayout" name="formLayout">
+      <property name="fieldGrowthPolicy">
+       <enum>QFormLayout::ExpandingFieldsGrow</enum>
+      </property>
+      <property name="labelAlignment">
+       <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+      </property>
+      <property name="formAlignment">
+       <set>Qt::AlignHCenter|Qt::AlignTop</set>
+      </property>
+      <property name="horizontalSpacing">
+       <number>6</number>
+      </property>
+      <property name="verticalSpacing">
+       <number>2</number>
+      </property>
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item row="2" column="0">
+       <widget class="QLabel" name="label_2">
+        <property name="text">
+         <string>Network ID:</string>
+        </property>
+        <property name="textFormat">
+         <enum>Qt::PlainText</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1">
+       <widget class="QPushButton" name="networkIdPushButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="toolTip">
+         <string>Click to Copy to Clipboard</string>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">border: 0; padding: 0; margin: 0; text-align: left;</string>
+        </property>
+        <property name="text">
+         <string>0000000000000000</string>
+        </property>
+        <property name="flat">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0">
+       <widget class="QLabel" name="label_3">
+        <property name="text">
+         <string>Name:</string>
+        </property>
+        <property name="textFormat">
+         <enum>Qt::PlainText</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1">
+       <widget class="QLabel" name="nameLabel">
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>?</string>
+        </property>
+        <property name="textFormat">
+         <enum>Qt::PlainText</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0">
+       <widget class="QLabel" name="label_5">
+        <property name="text">
+         <string>Type:</string>
+        </property>
+        <property name="textFormat">
+         <enum>Qt::PlainText</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="1">
+       <widget class="QLabel" name="networkTypeLabel">
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>?</string>
+        </property>
+        <property name="textFormat">
+         <enum>Qt::PlainText</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Status:</string>
+        </property>
+        <property name="textFormat">
+         <enum>Qt::PlainText</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="1">
+       <widget class="QLabel" name="statusLabel">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>?</string>
+        </property>
+        <property name="textFormat">
+         <enum>Qt::PlainText</enum>
+        </property>
+       </widget>
+      </item>
+      <item row="6" 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="6" column="1">
+       <widget class="QLabel" name="deviceLabel">
+        <property name="font">
+         <font>
+          <weight>75</weight>
+          <bold>true</bold>
+         </font>
+        </property>
+        <property name="text">
+         <string>?</string>
+        </property>
+        <property name="textFormat">
+         <enum>Qt::PlainText</enum>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="rightWidget" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
      </property>
      </property>
-     <layout class="QHBoxLayout" name="horizontalLayout">
+     <layout class="QVBoxLayout" name="verticalLayout">
       <property name="spacing">
       <property name="spacing">
-       <number>6</number>
+       <number>3</number>
+      </property>
+      <property name="sizeConstraint">
+       <enum>QLayout::SetNoConstraint</enum>
       </property>
       </property>
       <property name="leftMargin">
       <property name="leftMargin">
-       <number>6</number>
+       <number>0</number>
       </property>
       </property>
       <property name="topMargin">
       <property name="topMargin">
-       <number>6</number>
+       <number>0</number>
       </property>
       </property>
       <property name="rightMargin">
       <property name="rightMargin">
-       <number>6</number>
+       <number>0</number>
       </property>
       </property>
       <property name="bottomMargin">
       <property name="bottomMargin">
-       <number>6</number>
+       <number>0</number>
       </property>
       </property>
       <item>
       <item>
-       <widget class="QWidget" name="leftWidget" native="true">
+       <widget class="QLabel" name="label_6">
+        <property name="font">
+         <font>
+          <underline>false</underline>
+         </font>
+        </property>
+        <property name="text">
+         <string>IP Address Assignments</string>
+        </property>
+        <property name="textFormat">
+         <enum>Qt::PlainText</enum>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QListWidget" name="ipListWidget">
         <property name="sizePolicy">
         <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+         <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
           <horstretch>0</horstretch>
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
          </sizepolicy>
         </property>
         </property>
-        <layout class="QFormLayout" name="formLayout">
-         <property name="fieldGrowthPolicy">
-          <enum>QFormLayout::ExpandingFieldsGrow</enum>
-         </property>
-         <property name="labelAlignment">
-          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-         </property>
-         <property name="formAlignment">
-          <set>Qt::AlignHCenter|Qt::AlignTop</set>
-         </property>
-         <property name="horizontalSpacing">
-          <number>6</number>
-         </property>
-         <property name="verticalSpacing">
-          <number>2</number>
-         </property>
-         <property name="leftMargin">
-          <number>0</number>
-         </property>
-         <property name="topMargin">
-          <number>0</number>
-         </property>
-         <property name="rightMargin">
-          <number>0</number>
-         </property>
-         <property name="bottomMargin">
-          <number>0</number>
-         </property>
-         <item row="2" column="0">
-          <widget class="QLabel" name="label_2">
-           <property name="text">
-            <string>Network ID:</string>
-           </property>
-           <property name="textFormat">
-            <enum>Qt::PlainText</enum>
-           </property>
-          </widget>
-         </item>
-         <item row="2" column="1">
-          <widget class="QPushButton" name="networkIdPushButton">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-           <property name="font">
-            <font>
-             <family>Courier</family>
-             <pointsize>13</pointsize>
-             <weight>75</weight>
-             <bold>true</bold>
-            </font>
-           </property>
-           <property name="toolTip">
-            <string>Click to Copy to Clipboard</string>
-           </property>
-           <property name="styleSheet">
-            <string notr="true">border: 0;
-padding: 0;
-margin: 0;
-text-align: left;</string>
-           </property>
-           <property name="text">
-            <string>0000000000000000</string>
-           </property>
-           <property name="flat">
-            <bool>true</bool>
-           </property>
-          </widget>
-         </item>
-         <item row="3" column="0">
-          <widget class="QLabel" name="label_3">
-           <property name="text">
-            <string>Name:</string>
-           </property>
-           <property name="textFormat">
-            <enum>Qt::PlainText</enum>
-           </property>
-          </widget>
-         </item>
-         <item row="3" column="1">
-          <widget class="QLabel" name="nameLabel">
-           <property name="font">
-            <font>
-             <weight>75</weight>
-             <bold>true</bold>
-            </font>
-           </property>
-           <property name="text">
-            <string>(name)</string>
-           </property>
-           <property name="textFormat">
-            <enum>Qt::PlainText</enum>
-           </property>
-          </widget>
-         </item>
-         <item row="4" column="0">
-          <widget class="QLabel" name="label_5">
-           <property name="text">
-            <string>Type:</string>
-           </property>
-           <property name="textFormat">
-            <enum>Qt::PlainText</enum>
-           </property>
-          </widget>
-         </item>
-         <item row="4" column="1">
-          <widget class="QLabel" name="networkTypeLabel">
-           <property name="font">
-            <font>
-             <weight>75</weight>
-             <bold>true</bold>
-            </font>
-           </property>
-           <property name="text">
-            <string>public</string>
-           </property>
-           <property name="textFormat">
-            <enum>Qt::PlainText</enum>
-           </property>
-          </widget>
-         </item>
-         <item row="5" column="0">
-          <widget class="QLabel" name="label">
-           <property name="text">
-            <string>Status:</string>
-           </property>
-           <property name="textFormat">
-            <enum>Qt::PlainText</enum>
-           </property>
-          </widget>
-         </item>
-         <item row="5" column="1">
-          <widget class="QLabel" name="statusLabel">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-           <property name="font">
-            <font>
-             <weight>75</weight>
-             <bold>true</bold>
-            </font>
-           </property>
-           <property name="text">
-            <string>OK</string>
-           </property>
-           <property name="textFormat">
-            <enum>Qt::PlainText</enum>
-           </property>
-          </widget>
-         </item>
-         <item row="6" 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="6" column="1">
-          <widget class="QLabel" name="deviceLabel">
-           <property name="font">
-            <font>
-             <weight>75</weight>
-             <bold>true</bold>
-            </font>
-           </property>
-           <property name="text">
-            <string>zt0</string>
-           </property>
-           <property name="textFormat">
-            <enum>Qt::PlainText</enum>
-           </property>
-          </widget>
-         </item>
-        </layout>
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="font">
+         <font>
+          <family>Courier</family>
+          <pointsize>12</pointsize>
+         </font>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::NoFocus</enum>
+        </property>
+        <property name="editTriggers">
+         <set>QAbstractItemView::NoEditTriggers</set>
+        </property>
+        <property name="showDropIndicator" stdset="0">
+         <bool>false</bool>
+        </property>
+        <property name="selectionMode">
+         <enum>QAbstractItemView::SingleSelection</enum>
+        </property>
+        <property name="horizontalScrollMode">
+         <enum>QAbstractItemView::ScrollPerPixel</enum>
+        </property>
+        <property name="sortingEnabled">
+         <bool>true</bool>
+        </property>
        </widget>
        </widget>
       </item>
       </item>
       <item>
       <item>
-       <widget class="QWidget" name="rightWidget" native="true">
+       <widget class="QWidget" name="leaveNetworkButtonContainerWidget" native="true">
         <property name="sizePolicy">
         <property name="sizePolicy">
-         <sizepolicy hsizetype="Maximum" vsizetype="Maximum">
+         <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
           <horstretch>0</horstretch>
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
          </sizepolicy>
         </property>
         </property>
-        <layout class="QVBoxLayout" name="verticalLayout">
+        <property name="minimumSize">
+         <size>
+          <width>100</width>
+          <height>0</height>
+         </size>
+        </property>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
          <property name="spacing">
          <property name="spacing">
-          <number>6</number>
+          <number>0</number>
          </property>
          </property>
          <property name="leftMargin">
          <property name="leftMargin">
           <number>0</number>
           <number>0</number>
@@ -279,117 +338,32 @@ text-align: left;</string>
           <number>0</number>
           <number>0</number>
          </property>
          </property>
          <item>
          <item>
-          <widget class="QLabel" name="label_6">
-           <property name="font">
-            <font>
-             <underline>false</underline>
-            </font>
-           </property>
-           <property name="text">
-            <string>IP Addresses</string>
-           </property>
-           <property name="textFormat">
-            <enum>Qt::PlainText</enum>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QListWidget" name="ipListWidget">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
            </property>
            </property>
-           <property name="minimumSize">
+           <property name="sizeHint" stdset="0">
             <size>
             <size>
-             <width>0</width>
-             <height>0</height>
+             <width>40</width>
+             <height>20</height>
             </size>
             </size>
            </property>
            </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QToolButton" name="leaveNetworkButton">
            <property name="font">
            <property name="font">
             <font>
             <font>
-             <family>Courier</family>
-             <pointsize>12</pointsize>
+             <pointsize>10</pointsize>
+             <underline>false</underline>
             </font>
             </font>
            </property>
            </property>
-           <property name="editTriggers">
-            <set>QAbstractItemView::NoEditTriggers</set>
-           </property>
-           <property name="showDropIndicator" stdset="0">
-            <bool>false</bool>
-           </property>
-           <property name="selectionMode">
-            <enum>QAbstractItemView::SingleSelection</enum>
-           </property>
-           <property name="resizeMode">
-            <enum>QListView::Fixed</enum>
-           </property>
-           <property name="sortingEnabled">
-            <bool>true</bool>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QWidget" name="leaveNetworkButtonContainerWidget" native="true">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
+           <property name="styleSheet">
+            <string notr="true">padding: 0.1em; margin:0;</string>
            </property>
            </property>
-           <property name="minimumSize">
-            <size>
-             <width>100</width>
-             <height>0</height>
-            </size>
+           <property name="text">
+            <string>Leave Network</string>
            </property>
            </property>
-           <layout class="QHBoxLayout" name="horizontalLayout_2">
-            <property name="spacing">
-             <number>0</number>
-            </property>
-            <property name="leftMargin">
-             <number>0</number>
-            </property>
-            <property name="topMargin">
-             <number>0</number>
-            </property>
-            <property name="rightMargin">
-             <number>0</number>
-            </property>
-            <property name="bottomMargin">
-             <number>0</number>
-            </property>
-            <item>
-             <spacer name="horizontalSpacer">
-              <property name="orientation">
-               <enum>Qt::Horizontal</enum>
-              </property>
-              <property name="sizeHint" stdset="0">
-               <size>
-                <width>40</width>
-                <height>20</height>
-               </size>
-              </property>
-             </spacer>
-            </item>
-            <item>
-             <widget class="QToolButton" name="leaveNetworkButton">
-              <property name="font">
-               <font>
-                <pointsize>10</pointsize>
-                <underline>false</underline>
-               </font>
-              </property>
-              <property name="styleSheet">
-               <string notr="true">padding: 0.1em; margin:0;</string>
-              </property>
-              <property name="text">
-               <string>Leave Network</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
           </widget>
           </widget>
          </item>
          </item>
         </layout>
         </layout>