#ifndef FILE_MANAGER_H #define FILE_MANAGER_H #include "piscreentiles.h" #include "pidir.h" class Daemon; class FileManager: public PIObject { PIOBJECT(FileManager) public: FileManager(Daemon * d = 0); PIScreenTile * tile() const; PIScreenTile * remoteTile() const {return panels[1];} enum Action {MkDir, Remove, Copy, Move}; void setRemote(bool r) {panels[1]->remote = r; panels[0]->remote_mode = panels[1]->remote_mode = true;} void setRemoteDir(const PIString & d); void setRemoteContent(const PIVector & el); PIString remoteDir() const {return panels[1]->dir.absolutePath();} PIString localDir() const {return panels[0]->dir.absolutePath();} PIStringList selectedRemote() const; PIFile::FileInfo currentRemoteEntry() const; PIFile::FileInfo selectedRemoteEntry(int index) const {return panels[1]->entries[index];} void remoteSaveDir(); void remoteRestoreDir(); void readingRemote() const {panels[1]->showReading();} EVENT(menuRequest) EVENT3(actionRequest, bool, remote_tile, FileManager::Action, type, PIVariant, data) private: class TileDir: public TileList { PIOBJECT_SUBCLASS(TileDir, TileList) public: TileDir(); void updateDir(); void buildNames(); bool keyEvent(PIKbdListener::KeyEvent key); void sizeHint(int & w, int & h) const; void resizeEvent(int w, int h); void lock(); void unlock(); void showReading(); void setContent(const PIVector & l); PIStringList selectedNames() const; TileSimple * label_path; PIVector entries; PIDir dir; PIMap > prev_pos; bool resized, remote, remote_mode; void * fm, * key_func; EVENT3(actionRequest, bool, remote_tile, FileManager::Action, type, PIVariant, data) }; EVENT_HANDLER1(void, keyEvent, PIKbdListener::KeyEvent, key); EVENT1(tileKey, PIKbdListener::KeyEvent, key) static void tileKey_s(void * fm, PIKbdListener::KeyEvent key) {((FileManager*)fm)->tileKey(key);} void updateConsole(); bool del_commit; TileDir * panels[2]; Daemon * daemon; PIScreenTile * tile_root; PIStringList selected; typedef PIPair SSPair; }; #endif // FILE_MANAGER_H