TimerPool fixoutManipulator
git-svn-id: svn://db.shs.com.ru/pip@88 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -13,7 +13,7 @@ PIBaseTransfer::PIBaseTransfer(): crc(standardCRC_16()), diag(false) {
|
|||||||
replies_cnt = send_queue = 0;
|
replies_cnt = send_queue = 0;
|
||||||
timeout_ = 10.;
|
timeout_ = 10.;
|
||||||
diag.setDisconnectTimeout(timeout_);
|
diag.setDisconnectTimeout(timeout_);
|
||||||
CONNECTU(&diag, qualityChanged, this, diagChanged);
|
//CONNECTU(&diag, qualityChanged, this, diagChanged);
|
||||||
packets_count = 32;
|
packets_count = 32;
|
||||||
setPacketSize(4096);
|
setPacketSize(4096);
|
||||||
randomize();
|
randomize();
|
||||||
|
|||||||
@@ -17,6 +17,12 @@ Daemon::Remote::Remote(const PIString & n): PIThread() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Daemon::Remote::~Remote() {
|
||||||
|
ft.stop();
|
||||||
|
waitForFinish(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Daemon::Remote::sendFiles(const PIString & dir, const PIStringList & fl) {
|
void Daemon::Remote::sendFiles(const PIString & dir, const PIStringList & fl) {
|
||||||
_fl = fl;
|
_fl = fl;
|
||||||
piForeach (PIString & s, _fl)
|
piForeach (PIString & s, _fl)
|
||||||
@@ -35,6 +41,7 @@ void Daemon::Remote::run() {
|
|||||||
Daemon::TileFileProgress::TileFileProgress(): PIScreenTile() {
|
Daemon::TileFileProgress::TileFileProgress(): PIScreenTile() {
|
||||||
size_policy = PIScreenTypes::Fixed;
|
size_policy = PIScreenTypes::Fixed;
|
||||||
ft = 0;
|
ft = 0;
|
||||||
|
rec = false;
|
||||||
setMargins(1, 1, 1, 1);
|
setMargins(1, 1, 1, 1);
|
||||||
spacing = 1;
|
spacing = 1;
|
||||||
back_format.color_back = Yellow;
|
back_format.color_back = Yellow;
|
||||||
@@ -73,7 +80,6 @@ void Daemon::TileFileProgress::sizeHint(int & w, int & h) const {
|
|||||||
|
|
||||||
|
|
||||||
void Daemon::TileFileProgress::drawEvent(PIScreenDrawer * d) {
|
void Daemon::TileFileProgress::drawEvent(PIScreenDrawer * d) {
|
||||||
|
|
||||||
if (ft) {
|
if (ft) {
|
||||||
label_file->content[0].first = ft->stateString() + " " + ft->curFile();
|
label_file->content[0].first = ft->stateString() + " " + ft->curFile();
|
||||||
if (!label_file->content[0].first.isEmpty())
|
if (!label_file->content[0].first.isEmpty())
|
||||||
@@ -104,9 +110,10 @@ void Daemon::TileFileProgress::show(PIFileTransfer * f) {
|
|||||||
|
|
||||||
void Daemon::TileFileProgress::close(bool ok) {
|
void Daemon::TileFileProgress::close(bool ok) {
|
||||||
ft = 0;
|
ft = 0;
|
||||||
::screen.setDialogTile(0);
|
|
||||||
if (!ok)
|
if (!ok)
|
||||||
showInfo("Achtung! Alarm!! Error!!!");
|
showInfo("Achtung! Alarm!! Error!!!");
|
||||||
|
else
|
||||||
|
::screen.setDialogTile(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -308,13 +315,21 @@ 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;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case FileManager::Copy:
|
case FileManager::Copy:
|
||||||
|
r = remotes.value(conn_name, 0);
|
||||||
|
if (!r) return;
|
||||||
if (remote_tile) {
|
if (remote_tile) {
|
||||||
|
PIByteArray ba;
|
||||||
|
ba << int(CopyFiles) << fm.selectedRemote();
|
||||||
|
r->ft.setDirectory(fm.localDir());
|
||||||
|
send(conn_name, ba);
|
||||||
|
tile_file_progress->rec = true;
|
||||||
|
tile_file_progress->show(&(r->ft));
|
||||||
} else {
|
} else {
|
||||||
Remote * r = remotes.value(conn_name, 0);
|
|
||||||
if (!r) return;
|
|
||||||
r->sendFiles(fm.localDir() + PIDir::separator, data.toStringList());
|
r->sendFiles(fm.localDir() + PIDir::separator, data.toStringList());
|
||||||
|
tile_file_progress->rec = false;
|
||||||
tile_file_progress->show(&(r->ft));
|
tile_file_progress->show(&(r->ft));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -408,7 +423,17 @@ 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) requestChDir(".");
|
if (ok) {
|
||||||
|
if (tile_file_progress->rec) {
|
||||||
|
fm.remoteTile()->setFocus();
|
||||||
|
fm.clearSelectionRemote();
|
||||||
|
fm.updateLocalDir();
|
||||||
|
} else {
|
||||||
|
fm.localTile()->setFocus();
|
||||||
|
fm.clearSelectionLocal();
|
||||||
|
requestChDir(".");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -457,6 +482,16 @@ void Daemon::dataReceived(const PIString & from, const PIByteArray & data) {
|
|||||||
fm.remoteRestoreDir();
|
fm.remoteRestoreDir();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case CopyFiles:
|
||||||
|
r = remotes.value(from);
|
||||||
|
if (!r) return;
|
||||||
|
{
|
||||||
|
PIStringList files;
|
||||||
|
ba >> files;
|
||||||
|
//piCout << "send" << files << "from" << r->dir_my.absolutePath();
|
||||||
|
r->sendFiles(r->dir_my.absolutePath() + PIDir::separator, files);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case FileTransfer:
|
case FileTransfer:
|
||||||
r = remotes.value(from);
|
r = remotes.value(from);
|
||||||
if (r) r->received(ba);
|
if (r) r->received(ba);
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ private:
|
|||||||
PIOBJECT_SUBCLASS(Remote, PIThread)
|
PIOBJECT_SUBCLASS(Remote, PIThread)
|
||||||
public:
|
public:
|
||||||
Remote(const PIString & n = PIString());
|
Remote(const PIString & n = PIString());
|
||||||
|
~Remote();
|
||||||
void sendFiles(const PIString & dir, const PIStringList & fl);
|
void sendFiles(const PIString & dir, const PIStringList & fl);
|
||||||
EVENT_HANDLER1(void, ftSendRequest, PIByteArray &, data) {PIByteArray h; h << int(FileTransfer); data.insert(0, h); sendRequest(name(), data);}
|
EVENT_HANDLER1(void, ftSendRequest, PIByteArray &, data) {PIByteArray h; h << int(FileTransfer); data.insert(0, h); sendRequest(name(), data);}
|
||||||
EVENT_HANDLER1(void, ftReceived, bool, ok) {receiveFinished(name(), ok);}
|
EVENT_HANDLER1(void, ftReceived, bool, ok) {receiveFinished(name(), ok);}
|
||||||
@@ -98,6 +99,7 @@ private:
|
|||||||
void resizeEvent(int w, int h);
|
void resizeEvent(int w, int h);
|
||||||
void sizeHint(int & w, int & h) const;
|
void sizeHint(int & w, int & h) const;
|
||||||
void drawEvent(PIScreenDrawer * d);
|
void drawEvent(PIScreenDrawer * d);
|
||||||
|
bool rec;
|
||||||
PIString conn_name;
|
PIString conn_name;
|
||||||
EVENT_HANDLER2(void, tileEvent, PIScreenTile *, t, PIScreenTypes::TileEvent, e);
|
EVENT_HANDLER2(void, tileEvent, PIScreenTile *, t, PIScreenTypes::TileEvent, e);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public:
|
|||||||
FileManager(Daemon * d = 0);
|
FileManager(Daemon * d = 0);
|
||||||
|
|
||||||
PIScreenTile * tile() const;
|
PIScreenTile * tile() const;
|
||||||
|
PIScreenTile * localTile() const {return panels[0];}
|
||||||
PIScreenTile * remoteTile() const {return panels[1];}
|
PIScreenTile * remoteTile() const {return panels[1];}
|
||||||
|
|
||||||
enum Action {MkDir, Remove, Copy, Move};
|
enum Action {MkDir, Remove, Copy, Move};
|
||||||
@@ -27,6 +28,9 @@ public:
|
|||||||
void remoteSaveDir();
|
void remoteSaveDir();
|
||||||
void remoteRestoreDir();
|
void remoteRestoreDir();
|
||||||
void readingRemote() const {panels[1]->showReading();}
|
void readingRemote() const {panels[1]->showReading();}
|
||||||
|
void updateLocalDir() {panels[0]->updateDir();}
|
||||||
|
void clearSelectionLocal() {panels[0]->selected.clear();}
|
||||||
|
void clearSelectionRemote() {panels[1]->selected.clear();}
|
||||||
|
|
||||||
EVENT(menuRequest)
|
EVENT(menuRequest)
|
||||||
EVENT3(actionRequest, bool, remote_tile, FileManager::Action, type, PIVariant, data)
|
EVENT3(actionRequest, bool, remote_tile, FileManager::Action, type, PIVariant, data)
|
||||||
|
|||||||
Reference in New Issue
Block a user