summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings/interfaceinformationimp.cpp
blob: e37e0f80ccf5779c30cf17034c50228c6d71397d (plain)
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "interfaceinformationimp.h"
#include "interfaceadvanced.h"

#include <qpushbutton.h>
#include <qlabel.h>
#include <assert.h>

/**
 * Constructor for the InterfaceInformationImp class.  This class pretty much
 * just display's information about the interface that is passed to it.
 */ 
InterfaceInformationImp::InterfaceInformationImp(QWidget *parent, const char *name, Interface *i, WFlags f):InterfaceInformation(parent, name, f){
  assert(i);
  
  interface = i;
  updateInterface();
  connect(startButton, SIGNAL(clicked()), this, SLOT(start()));
  connect(stopButton, SIGNAL(clicked()), this, SLOT(stop()));
  connect(restartButton, SIGNAL(clicked()), this, SLOT(restart()));
  connect(refreshButton, SIGNAL(clicked()), this, SLOT(refresh()));
  connect(advancedButton, SIGNAL(clicked()), this, SLOT(advanced()));
  
}

void InterfaceInformationImp::updateInterface(){
  if(interface->getStatus()){
    startButton->setEnabled(false);
    stopButton->setEnabled(true);
    restartButton->setEnabled(true);
  }
  else{
    startButton->setEnabled(true);
    stopButton->setEnabled(false);
    restartButton->setEnabled(false);
  }
  macAddressLabel->setText(interface->getMacAddress());
  ipAddressLabel->setText(interface->getIp());
  subnetMaskLabel->setText(interface->getSubnetMask());
  broadcastLabel->setText(interface->getBroadcast());
}

/**
 * Start the interface. Update the information if successfull
 */ 
void InterfaceInformationImp::start(){
  if(interface->start()){
    updateInterface();
  }
}

/**
 * Stop the interface.
 */ 
void InterfaceInformationImp::stop(){
  if(interface->stop()){
    updateInterface();
  }
}

/***
 * Tell the interface to refresh its information.
 **/
void InterfaceInformationImp::refresh(){
  if(interface->refresh())
    updateInterface();
}

void InterfaceInformationImp::restart(){
  if(interface->restart()){
     updateInterface();
  }
}


/**
 * Create the advanced widget. Fill it with the current interface's information.
 * Display it.
 */ 
void InterfaceInformationImp::advanced(){
  InterfaceAdvanced *a = new InterfaceAdvanced(0, "InterfaceAdvanced");
  a->interfaceName->setText(interface->getInterfaceName());
  a->macAddressLabel->setText(interface->getMacAddress());
  a->ipAddressLabel->setText(interface->getIp());
  a->subnetMaskLabel->setText(interface->getSubnetMask());
  a->broadcastLabel->setText(interface->getBroadcast());
  a->dhcpServerLabel->setText(interface->getDhcpServerIp());
  a->leaseObtainedLabel->setText(interface->getLeaseObtained());
  a->leaseExpiresLabel->setText(interface->getLeaseExpires());
  a->showMaximized();
  a->show();
}

// infoimp.cpp