aboutsummaryrefslogblamecommitdiffstats
path: root/apps/X11/InstallMgr/src/RemoteMntFrm.cpp
blob: a6b04b336a5dd34c8ac4f1f1b4a07a390b77abd8 (plain) (tree)
















































































































































                                                                                                                    
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "RemoteMntFrm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TRemoteMntForm *RemoteMntForm;


class TRemoteSource : public TObject {
public:
	string name;
	string machine;
	string dir;
	TRemoteSource(const char *confEnt) {
		char *buf = new char [ strlen(confEnt) + 1 ];
	
		strcpy(buf, confEnt);

		name = strtok(buf, "|");
		machine = strtok(0, "|");
		dir = strtok(0, "|");
		delete [] buf;
	}
	string getConfEnt() {
		return name +"|" + machine + "|" + dir;
	}
};


//---------------------------------------------------------------------------
__fastcall TRemoteMntForm::TRemoteMntForm(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TRemoteMntForm::FormShow(TObject *Sender)
{
	ConfigEntMap::iterator loop, end;
	config = new SWConfig("./InstallMgr.conf");	
	ListBox1->Clear();
	loop = config->Sections["Sources"].lower_bound("FTPSource");
	end = config->Sections["Sources"].upper_bound("FTPSource");
	while (loop != end) {
		TRemoteSource *rs = new TRemoteSource(loop->second.c_str());
		ListBox1->Items->AddObject(rs->name.c_str(), rs);
		loop++;
	}
	ListBox1->ItemIndex = 0;
	ListBox1Click(0);
}
//---------------------------------------------------------------------------
void __fastcall TRemoteMntForm::FormClose(TObject *Sender,
	 TCloseAction &Action)
{
	delete config;	
}


void __fastcall TRemoteMntForm::SpeedButton4Click(TObject *Sender)
{
	ModalResult = mrCancel;	
}


void __fastcall TRemoteMntForm::ListBox1Click(TObject *Sender)
{
	if (ListBox1->ItemIndex >= 0) {
		TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex];

		NameEdit->Text = rs->name.c_str();
		MachineEdit->Text = rs->machine.c_str();
		DirEdit->Text = rs->dir.c_str();
	}
	else {
		NameEdit->Text = "";
		MachineEdit->Text = "";
		DirEdit->Text = "";
	}
}


void __fastcall TRemoteMntForm::NameEditChange(TObject *Sender)
{
	if (ListBox1->ItemIndex < 0)
		return;
	TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex];
	rs->name = NameEdit->Text.c_str();
	ListBox1->Items->Strings[ListBox1->ItemIndex] = rs->name.c_str();
}


void __fastcall TRemoteMntForm::MachineEditChange(TObject *Sender)
{
	if (ListBox1->ItemIndex < 0)
		return;
	TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex];
	rs->machine = MachineEdit->Text.c_str();
}


void __fastcall TRemoteMntForm::DirEditChange(TObject *Sender)
{
	if (ListBox1->ItemIndex < 0)
		return;
	TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex];
	rs->dir = DirEdit->Text.c_str();
}

void __fastcall TRemoteMntForm::SpeedButton2Click(TObject *Sender)
{
	if (ListBox1->ItemIndex < 0)
		return;
	int delItem = ListBox1->ItemIndex;
	ListBox1->Items->Delete(delItem);
	ListBox1->ItemIndex = (delItem < ListBox1->Items->Count) ? delItem : delItem - 1;
	ListBox1Click(0);
}
//---------------------------------------------------------------------------

void __fastcall TRemoteMntForm::SpeedButton1Click(TObject *Sender)
{
	TRemoteSource *rs = new TRemoteSource("[New Remote Site]|ftp.domain.org|/pub/sword/");
	ListBox1->ItemIndex = ListBox1->Items->AddObject(rs->name.c_str(), rs);
	
	ListBox1Click(0);
}
//---------------------------------------------------------------------------

void __fastcall TRemoteMntForm::SpeedButton3Click(TObject *Sender)
{
	TRemoteSource *rs;
	config->Sections["Sources"].erase("FTPSource");
	for (int i = 0; i < ListBox1->Items->Count; i++) {
		rs = (TRemoteSource *)ListBox1->Items->Objects[i];
		config->Sections["Sources"].insert(ConfigEntMap::value_type("FTPSource", rs->getConfEnt().c_str()));
	}
	config->Save();
	ModalResult = mrOk;
}
//---------------------------------------------------------------------------