git-svn-id: svn://db.shs.com.ru/pip@228 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -35,20 +35,36 @@ void Daemon::Remote::startAction(Daemon::PacketType a, const PIString & dir, con
|
||||
|
||||
|
||||
void Daemon::Remote::run() {
|
||||
PIDir d(dir_my);
|
||||
switch (action) {
|
||||
case CopyFiles: ft.send(_fl); break;
|
||||
case RemoveFiles:
|
||||
{
|
||||
PIDir d(dir_my);
|
||||
::removeFiles(d, _fl);
|
||||
removeFinished(name(), d.absolutePath());
|
||||
}
|
||||
case CopyFiles:
|
||||
ft.send(_fl);
|
||||
break;
|
||||
default: break;
|
||||
case RemoveFiles:
|
||||
::removeFiles(d, _fl);
|
||||
updateDirEntries();
|
||||
removeFinished(name(), d.absolutePath());
|
||||
break;
|
||||
case RequestChangeDir:
|
||||
updateDirEntries();
|
||||
changeDirFinished(name(), d.absolutePath());
|
||||
break;
|
||||
case MkDir:
|
||||
if (!_fl.isEmpty()) PIDir::make(d.absolutePath() + PIDir::separator + _fl.at(0));
|
||||
updateDirEntries();
|
||||
changeDirFinished(name(), d.absolutePath());
|
||||
break;
|
||||
default: break;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
void Daemon::Remote::updateDirEntries() {
|
||||
my_filelist = dir_my.entries();
|
||||
piForeach (PIFile::FileInfo & f, my_filelist) f.path = f.name();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Daemon::TileFileProgress::TileFileProgress(): PIScreenTile() {
|
||||
size_policy = PIScreenTypes::Fixed;
|
||||
@@ -147,11 +163,13 @@ void Daemon::TileFileProgress::show(PIFileTransfer * f) {
|
||||
|
||||
|
||||
void Daemon::TileFileProgress::close(bool ok) {
|
||||
buttons->content[0].first = "Pause";
|
||||
ft = 0;
|
||||
if (!ok)
|
||||
showInfo("Achtung! Alarm!! Error!!!");
|
||||
else
|
||||
::screen.setDialogTile(0);
|
||||
::screen.setDialogTile(0);
|
||||
if (!ok) {
|
||||
piCout << "Achtung! Alarm!! Error!!!";
|
||||
showInfo("Error while files transfer...");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -335,7 +353,6 @@ void Daemon::keyEvent(PIKbdListener::KeyEvent key) {
|
||||
|
||||
|
||||
void Daemon::fmKeyEvent(PIKbdListener::KeyEvent key) {
|
||||
PIByteArray ba;
|
||||
PIMutexLocker ml(remote_mutex);
|
||||
//Remote * r = remotes.value(conn_name);
|
||||
//piCout << key.key << key.modifiers;
|
||||
@@ -449,10 +466,11 @@ void Daemon::peerConnected(const PIString & name) {
|
||||
if (!name.startsWith(pisd_prefix)) return;
|
||||
Remote * r = new Remote(name);
|
||||
CONNECTU(r, sendRequest, this, sendRequest)
|
||||
CONNECTU(r, receiveFinished, this, filesReceived)
|
||||
CONNECTU(r, receiveFinished, this, filesRreceived)
|
||||
CONNECTU(r, receiveFinished, this, closeFileDialog)
|
||||
CONNECTU(r, sendFinished, this, closeFileDialog)
|
||||
CONNECTU(r, removeFinished, this, filesRemoved)
|
||||
CONNECTU(r, changeDirFinished, this, dirChanged)
|
||||
PIMutexLocker ml(remote_mutex);
|
||||
remotes.insert(name, r);
|
||||
}
|
||||
@@ -474,7 +492,19 @@ void Daemon::peerDisconnected(const PIString & name) {
|
||||
|
||||
|
||||
void Daemon::filesReceived(const PIString & name, bool ok) {
|
||||
|
||||
PIMutexLocker ml(remote_mutex);
|
||||
Remote * r = remotes.value(name, 0);
|
||||
if (!r) return;
|
||||
r->updateDir();
|
||||
}
|
||||
|
||||
|
||||
void Daemon::dirChanged(const PIString & name, const PIString & dir) {
|
||||
PIMutexLocker ml(remote_mutex);
|
||||
Remote * r = remotes.value(name, 0);
|
||||
if (!r) return;
|
||||
if (r->dir_my.absolutePath() != dir) return;
|
||||
sendDirToRemote(r);
|
||||
}
|
||||
|
||||
|
||||
@@ -491,7 +521,7 @@ void Daemon::closeFileDialog(const PIString & name, bool ok) {
|
||||
//piCout << "CLOSE" << tile_file_progress->conn_name << name << ok;
|
||||
if (tile_file_progress->conn_name != name) return;
|
||||
tile_file_progress->close(ok);
|
||||
if (ok) {
|
||||
// if (ok) {
|
||||
if (tile_file_progress->rec) {
|
||||
fm.remoteTile()->setFocus();
|
||||
fm.clearSelectionRemote();
|
||||
@@ -501,7 +531,7 @@ void Daemon::closeFileDialog(const PIString & name, bool ok) {
|
||||
fm.clearSelectionLocal();
|
||||
requestChDir(".");
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
@@ -526,7 +556,8 @@ void Daemon::dataReceived(const PIString & from, const PIByteArray & data) {
|
||||
r->ft.setDirectory(r->dir_my);
|
||||
//piCout << "store to" << r->dir_my.absolutePath();
|
||||
//piCout << "cd to" << dir << ", abs =" << r->dir_my.absolutePath();
|
||||
sendDirToRemote(r);
|
||||
r->updateDir();
|
||||
// sendDirToRemote(r);
|
||||
break;
|
||||
case ReplyHostInfo:
|
||||
ba >> info_other;
|
||||
@@ -538,7 +569,7 @@ void Daemon::dataReceived(const PIString & from, const PIByteArray & data) {
|
||||
{
|
||||
PIVector<PIFile::FileInfo> fil;
|
||||
ba >> dir >> fil;
|
||||
r->dir_remote.setDir(dir);
|
||||
// r->dir_remote.setDir(dir);
|
||||
fm.setRemoteDir(dir);
|
||||
fm.setRemoteContent(fil);
|
||||
fm.remoteRestoreDir();
|
||||
@@ -571,8 +602,7 @@ void Daemon::dataReceived(const PIString & from, const PIByteArray & data) {
|
||||
PIString dn;
|
||||
ba >> dn;
|
||||
//piCout << "send" << files << "from" << r->dir_my.absolutePath();
|
||||
PIDir::make(r->dir_my.absolutePath() + PIDir::separator + dn);
|
||||
sendDirToRemote(r);
|
||||
r->makeDir(dn);
|
||||
}
|
||||
break;
|
||||
case FileTransfer:
|
||||
@@ -585,9 +615,7 @@ void Daemon::dataReceived(const PIString & from, const PIByteArray & data) {
|
||||
|
||||
void Daemon::sendDirToRemote(Remote * r) {
|
||||
if (!r) return;
|
||||
PIVector<PIFile::FileInfo> fil = r->dir_my.entries();
|
||||
piForeach (PIFile::FileInfo & f, fil)
|
||||
f.path = f.name();
|
||||
PIVector<PIFile::FileInfo> fil = r->my_filelist;
|
||||
PIByteArray ba;
|
||||
ba << int(ReplyChangeDir) << r->dir_my.absolutePath() << fil;
|
||||
send(r->name(), ba);
|
||||
|
||||
Reference in New Issue
Block a user