git-svn-id: svn://db.shs.com.ru/pip@249 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2016-09-01 15:03:56 +00:00
parent bae0456042
commit 5d296fa5a5
14 changed files with 352 additions and 99 deletions

View File

@@ -7,6 +7,8 @@
#include "pidatatransfer.h"
#include "pifiletransfer.h"
#include "file_manager.h"
#include "terminal_tile.h"
#include "piterminal.h"
extern PISystemMonitor sys_mon;
@@ -42,7 +44,7 @@ public:
void showMainList() {showTile(list_daemons, "Select daemon");}
void showActionList() {showTile(list_actions, "Select action");}
void showLocalFilemanager() {mode = 3; showTile(tile_fm, "File manager");}
void showLocalFilemanager() {mode = rmFileManager; showTile(tile_fm, "File manager");}
PIStringList availableDaemons();
void connectToDaemon(const PIString & dn);
@@ -73,9 +75,23 @@ private:
MkDir,
CryptFiles,
FileTransfer = 30
FileTransfer = 30,
ShellOpen = 40,
ShellClose,
ShellContent,
ShellResizeRequest,
ShellKeyEvent
};
enum RemoteMode {
rmNone,
rmSelectMode,
rmInformation,
rmFileManager,
rmShell
};
class Remote: public PIThread {
PIOBJECT_SUBCLASS(Remote, PIThread)
@@ -87,6 +103,10 @@ private:
void updateDir() {startAction(Daemon::RequestChangeDir, PIString(), PIStringList());}
void makeDir(const PIString & dir) {startAction(Daemon::MkDir, dir, PIStringList() << "");}
void cryptFiles(const PIStringList & fl) {startAction(Daemon::CryptFiles, PIString(), fl);}
void shellOpen();
void shellClose();
void shellResize(int w, int h);
void shellKeySend(PIKbdListener::KeyEvent k);
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, ftSended, bool, ok) {sendFinished(name(), ok);}
@@ -96,6 +116,7 @@ private:
EVENT2(sendFinished, const PIString & , p_name, bool, ok)
EVENT2(changeDirFinished, const PIString & , p_name, const PIString & , dir)
EVENT_HANDLER1(void, received, PIByteArray & , data) {ft.received(data);}
EVENT_HANDLER(void, termTimerTick);
void startAction(PacketType a, const PIString & dir, const PIStringList & fl);
void run();
@@ -105,6 +126,8 @@ private:
PIFileTransfer ft;
PIStringList _fl;
PacketType action;
PITimer term_timer;
PITerminal * term;
private:
void updateDirEntries();
@@ -134,11 +157,16 @@ private:
EVENT_HANDLER2(void, sendRequest, const PIString &, p_name, const PIByteArray &, data) {send(p_name, data);}
EVENT_HANDLER1(void, fmKeyEvent, PIKbdListener::KeyEvent, key);
EVENT_HANDLER3(void, fmActionRequest, bool, remote_tile, FileManager::Action, type, PIVariant, data);
EVENT_HANDLER (void, shResizeRequest);
EVENT_HANDLER1(void, shKeyEvent, PIKbdListener::KeyEvent, k);
EVENT_HANDLER2(void, timerEvent, void * , _d, int, delim);
EVENT_HANDLER2(void, filesReceived, const PIString & , p_name, bool, ok);
EVENT_HANDLER2(void, dirChanged, const PIString & , p_name, const PIString & , dir);
EVENT_HANDLER2(void, closeFileDialog, const PIString & , p_name, bool, ok);
EVENT_HANDLER2(void, localSend, const PIString & , p_name, const PIByteArray &, data);
EVENT_HANDLER (void, escPressed);
EVENT_HANDLER (void, requestOpenShell);
EVENT_HANDLER (void, requestCloseShell);
EVENT(menuRequest)
void hideAll();
void showTile(PIScreenTile * t, const PIString & header = PIString());
@@ -163,9 +191,11 @@ private:
TileSimple * tile_info, * tile_header;
TileList * list_daemons, * list_actions;
TileFileProgress * tile_file_progress;
TileTerminal * tile_shell;
PIFileTransfer localft;
Remote * _self;
int mode, offset, cur, height;
RemoteMode mode;
int offset, cur, height;
bool inited__;
};