void NetworkWindow::MessageReceived(BMessage *message)
{
	switch (message->what) {
		case kRestart_Networking_M: {
			RestartWindow *restartWindow = new RestartWindow();
			restartWindow->Show();
					
			BMessenger messenger("application/x-vnd.Be-NETS");
			if (messenger.IsValid() == true)
				messenger.SendMessage(B_QUIT_REQUESTED);
							
			const char **arg_v;
			int32 argc;
			thread_id thread;
			status_t return_value;
			
			argc  = 1;
			arg_v = (const char **)malloc(sizeof(char *) * (argc + 1));
			
			arg_v[0] = strdup("/boot/beos/system/servers/net_server");
			arg_v[1] = NULL;
			
			thread = load_image(argc,arg_v,(const char **)environ); 
			
			while (--argc >= 0)
				free((void *)arg_v[argc]);
			free (arg_v);
			
			return_value = resume_thread(thread);			
			
			restartWindow->Quit();			
			break;				
		}
		case kRevert_M: {
			LoadSettings();
			fRevert->SetEnabled(false);
			fSave->SetEnabled(false);			
			break;
		}
		case kSave_M: {
			SaveBackup(NULL,fData);
			fRevert->SetEnabled(false);
			fSave->SetEnabled(false);			
			break;
		}
		case kSettings_M: {
			BRect r(Frame());
			r.right = r.left + 325;
			r.bottom = r.top + 225;
			
			NetListItem *selection = dynamic_cast <NetListItem *> (fInterfacesList->ItemAt(fInterfacesList->CurrentSelection()));
			if(!selection)
				break;
			
			InterfaceWin *win = new InterfaceWin(r,selection->fData);
			r=win->Frame();
			win->MoveBy((Frame().Width()-r.Width())/2,
						(Frame().Height()-r.Height())/2);
			
			win->fParentWindow = dynamic_cast <NetworkWindow *> (fView->Window());
			
			if (selection->fData.fEnabled)
				win->fEnabled->SetValue(1);
			
			if (selection->fData.fDHCP)
				win->fDHCP->SetValue(1);
			else
				win->fManual->SetValue(1);		
			
			win->fName->SetText(selection->fData.fPrettyName.String());		
			win->fIPAddress->SetText(selection->fData.fIPAddress.String());
			win->fNetMask->SetText(selection->fData.fNetMask.String());
			
			win->fChanged = false;
			
			win->fIPAddress->SetTarget(win);
			win->fNetMask->SetTarget(win);
			win->fGateway->SetTarget(win); 
			
			win->Show();
			break;
		}
		case kClear_M: {
			break;
		}
		case kCustom_M: {
			break;
		}
		case kLogin_Info_M: {
			LoginInfo *login_info_pop = new LoginInfo();
			login_info_pop->fParentWindow = dynamic_cast <NetworkWindow *> (fView->Window());
			login_info_pop->fName->SetText(fusername.String());
			login_info_pop->fName->MakeFocus();
			login_info_pop->Show();
			break;
		}
		case kBackup_M: {
			BRect r(Frame());
			r.right = r.left + 260;
			r.bottom = r.top + 77;
			r.OffsetBy( (Frame().Width()-260)/2, (Frame().Height()-77)/2);
			BackupWin *backup_pop = new BackupWin(r);
			backup_pop->fParentWindow = dynamic_cast <NetworkWindow *> (fView->Window());
			backup_pop->Show();
			break;
		}
		case kRestore_M: {
			BStringItem *string_item = dynamic_cast <BStringItem *> (fConfigurationsList->ItemAt(fConfigurationsList->CurrentSelection()));
			LoadSettings(string_item->Text());
			PostMessage(kSOMETHING_HAS_CHANGED_M);
			break;
		}
		case kDelete_M: {
			DeleteConfigFile();
			LoadConfigEntries();
			fConfigurationsList->SelectionChanged();
			break;
		}	
		case kSOMETHING_HAS_CHANGED_M: {
			fRevert->SetEnabled(true);
			fSave->SetEnabled(true);	
			break;	
		}
	}
}
Example #2
0
//===================================
DirMonitor::~DirMonitor () {
    ASSERT(m_handle == INVALID_HANDLE_VALUE);
    for_each(m_files.begin(), m_files.end(), DeleteConfigFile());
    m_files.clear();
    --s_dirCount;
}