PISD - mkdir, remove, copy to/from remote
git-svn-id: svn://db.shs.com.ru/pip@89 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -294,7 +294,7 @@ PIVector<PIFile::FileInfo> PIDir::allEntries() {
|
|||||||
if (de.name() == "." || de.name() == "..") continue;
|
if (de.name() == "." || de.name() == "..") continue;
|
||||||
if (de.isSymbolicLink()) continue; /// TODO: resolve symlinks
|
if (de.isSymbolicLink()) continue; /// TODO: resolve symlinks
|
||||||
if (de.isDir()) {
|
if (de.isDir()) {
|
||||||
dirs.push_front(de);
|
dirs << de;
|
||||||
ndirs << de.path;
|
ndirs << de.path;
|
||||||
} else ret << de;
|
} else ret << de;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -297,7 +297,7 @@ void Daemon::keyEvent(PIKbdListener::KeyEvent key) {
|
|||||||
void Daemon::fmKeyEvent(PIKbdListener::KeyEvent key) {
|
void Daemon::fmKeyEvent(PIKbdListener::KeyEvent key) {
|
||||||
PIByteArray ba;
|
PIByteArray ba;
|
||||||
//Remote * r = remotes.value(conn_name);
|
//Remote * r = remotes.value(conn_name);
|
||||||
piCout << key.key << key.modifiers;
|
//piCout << key.key << key.modifiers;
|
||||||
switch (key.key) {
|
switch (key.key) {
|
||||||
case PIKbdListener::Return:
|
case PIKbdListener::Return:
|
||||||
{
|
{
|
||||||
@@ -316,10 +316,10 @@ void Daemon::fmKeyEvent(PIKbdListener::KeyEvent key) {
|
|||||||
|
|
||||||
void Daemon::fmActionRequest(bool remote_tile, FileManager::Action type, PIVariant data) {
|
void Daemon::fmActionRequest(bool remote_tile, FileManager::Action type, PIVariant data) {
|
||||||
Remote * r = 0;
|
Remote * r = 0;
|
||||||
switch (type) {
|
|
||||||
case FileManager::Copy:
|
|
||||||
r = remotes.value(conn_name, 0);
|
r = remotes.value(conn_name, 0);
|
||||||
if (!r) return;
|
if (!r) return;
|
||||||
|
switch (type) {
|
||||||
|
case FileManager::Copy:
|
||||||
if (remote_tile) {
|
if (remote_tile) {
|
||||||
PIByteArray ba;
|
PIByteArray ba;
|
||||||
ba << int(CopyFiles) << fm.selectedRemote();
|
ba << int(CopyFiles) << fm.selectedRemote();
|
||||||
@@ -333,9 +333,23 @@ void Daemon::fmActionRequest(bool remote_tile, FileManager::Action type, PIVaria
|
|||||||
tile_file_progress->show(&(r->ft));
|
tile_file_progress->show(&(r->ft));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case FileManager::Remove:
|
||||||
|
if (remote_tile) {
|
||||||
|
PIByteArray ba;
|
||||||
|
ba << int(RemoveFiles) << fm.selectedRemote();
|
||||||
|
send(conn_name, ba);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case FileManager::MkDir:
|
||||||
|
if (remote_tile) {
|
||||||
|
PIByteArray ba;
|
||||||
|
ba << int(MkDir) << data.toString();
|
||||||
|
send(conn_name, ba);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default: break;
|
default: break;
|
||||||
};
|
};
|
||||||
piCout << remote_tile << type << data;
|
//piCout << remote_tile << type << data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -420,7 +434,7 @@ void Daemon::filesReceived(const PIString & name, bool ok) {
|
|||||||
|
|
||||||
|
|
||||||
void Daemon::closeFileDialog(const PIString & name, bool ok) {
|
void Daemon::closeFileDialog(const PIString & name, bool ok) {
|
||||||
piCout << "CLOSE" << tile_file_progress->conn_name << name << ok;
|
//piCout << "CLOSE" << tile_file_progress->conn_name << name << ok;
|
||||||
if (tile_file_progress->conn_name != name) return;
|
if (tile_file_progress->conn_name != name) return;
|
||||||
tile_file_progress->close(ok);
|
tile_file_progress->close(ok);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
@@ -444,6 +458,7 @@ void Daemon::dataReceived(const PIString & from, const PIByteArray & data) {
|
|||||||
Remote * r(0);
|
Remote * r(0);
|
||||||
PIString dir;
|
PIString dir;
|
||||||
int type; ba >> type;
|
int type; ba >> type;
|
||||||
|
bool answer_dirs = false;
|
||||||
//piCout << "rec from " << from << type;
|
//piCout << "rec from " << from << type;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case RequestHostInfo:
|
case RequestHostInfo:
|
||||||
@@ -457,13 +472,8 @@ void Daemon::dataReceived(const PIString & from, const PIByteArray & data) {
|
|||||||
r->dir_my.cd(dir);
|
r->dir_my.cd(dir);
|
||||||
r->ft.setDirectory(r->dir_my);
|
r->ft.setDirectory(r->dir_my);
|
||||||
piCout << "store to" << r->dir_my.absolutePath();
|
piCout << "store to" << r->dir_my.absolutePath();
|
||||||
{
|
answer_dirs = true;
|
||||||
PIVector<PIFile::FileInfo> fil = r->dir_my.entries();
|
|
||||||
piForeach (PIFile::FileInfo & f, fil)
|
|
||||||
f.path = f.name();
|
|
||||||
rba << int(ReplyChangeDir) << r->dir_my.absolutePath() << fil;
|
|
||||||
piCout << "cd to" << dir << ", abs =" << r->dir_my.absolutePath();
|
piCout << "cd to" << dir << ", abs =" << r->dir_my.absolutePath();
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case ReplyHostInfo:
|
case ReplyHostInfo:
|
||||||
ba >> info_other;
|
ba >> info_other;
|
||||||
@@ -492,11 +502,39 @@ void Daemon::dataReceived(const PIString & from, const PIByteArray & data) {
|
|||||||
r->sendFiles(r->dir_my.absolutePath() + PIDir::separator, files);
|
r->sendFiles(r->dir_my.absolutePath() + PIDir::separator, files);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RemoveFiles:
|
||||||
|
r = remotes.value(from);
|
||||||
|
if (!r) return;
|
||||||
|
{
|
||||||
|
PIStringList files;
|
||||||
|
ba >> files;
|
||||||
|
//piCout << "send" << files << "from" << r->dir_my.absolutePath();
|
||||||
|
removeFiles(r->dir_my, files);
|
||||||
|
answer_dirs = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MkDir:
|
||||||
|
r = remotes.value(from);
|
||||||
|
if (!r) return;
|
||||||
|
{
|
||||||
|
PIString dn;
|
||||||
|
ba >> dn;
|
||||||
|
//piCout << "send" << files << "from" << r->dir_my.absolutePath();
|
||||||
|
PIDir::make(r->dir_my.absolutePath() + PIDir::separator + dn);
|
||||||
|
answer_dirs = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case FileTransfer:
|
case FileTransfer:
|
||||||
r = remotes.value(from);
|
r = remotes.value(from);
|
||||||
if (r) r->received(ba);
|
if (r) r->received(ba);
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
if (answer_dirs) {
|
||||||
|
PIVector<PIFile::FileInfo> fil = r->dir_my.entries();
|
||||||
|
piForeach (PIFile::FileInfo & f, fil)
|
||||||
|
f.path = f.name();
|
||||||
|
rba << int(ReplyChangeDir) << r->dir_my.absolutePath() << fil;
|
||||||
|
}
|
||||||
if (!rba.isEmpty()) send(from, rba);
|
if (!rba.isEmpty()) send(from, rba);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ private:
|
|||||||
ReplyHostInfo = 20,
|
ReplyHostInfo = 20,
|
||||||
ReplyChangeDir,
|
ReplyChangeDir,
|
||||||
CopyFiles,
|
CopyFiles,
|
||||||
|
RemoveFiles,
|
||||||
|
MkDir,
|
||||||
|
|
||||||
FileTransfer = 30
|
FileTransfer = 30
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ PIStringList FileManager::TileDir::selectedNames() const {
|
|||||||
PIVector<int> sind = selected.toVector();
|
PIVector<int> sind = selected.toVector();
|
||||||
piForeachC (int i, sind)
|
piForeachC (int i, sind)
|
||||||
ret << entries[i].name();
|
ret << entries[i].name();
|
||||||
|
ret.removeOne("..");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +57,9 @@ bool FileManager::TileDir::keyEvent(PIKbdListener::KeyEvent key) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
setFocus();
|
setFocus();
|
||||||
if (!remote) {
|
if (remote) {
|
||||||
|
actionRequest(remote, Remove, selectedNames());
|
||||||
|
} else {
|
||||||
removeFiles(dir, selectedNames());
|
removeFiles(dir, selectedNames());
|
||||||
selected.clear();
|
selected.clear();
|
||||||
updateDir();
|
updateDir();
|
||||||
|
|||||||
Reference in New Issue
Block a user