blob: 148a7fd1c2a46b8d8f7d580c0e99d6a6e55c9977 (
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);
CheckBox1->Checked = (!stricmp((*config)["General"]["PassiveFTP"].c_str(), "true"));
checkDisabled();
}
void TRemoteMntForm::checkDisabled() {
bool enabled = ListBox1->Items->Count;
NameEdit->Enabled = enabled;
MachineEdit->Enabled = enabled;
DirEdit->Enabled = enabled;
}
//---------------------------------------------------------------------------
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;
checkDisabled();
ListBox1Click(0);
}
//---------------------------------------------------------------------------
void __fastcall TRemoteMntForm::SpeedButton1Click(TObject *Sender)
{
TRemoteSource *rs = new TRemoteSource("[New Remote Site]|ftp.domain.org|/pub/sword/raw/");
ListBox1->ItemIndex = ListBox1->Items->AddObject(rs->name.c_str(), rs);
checkDisabled();
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)["General"]["PassiveFTP"] = (CheckBox1->Checked) ? "true" : "false";
config->Save();
ModalResult = mrOk;
}
//---------------------------------------------------------------------------
|