#ifndef FILE_MANAGER_H #define FILE_MANAGER_H #include "piscreentiles.h" #include "pidir.h" class FileManager: public PIObject { PIOBJECT(FileManager) public: FileManager(); PIScreenTile * tile() const; PIScreenTile * localTile() const {return panels[0];} PIScreenTile * remoteTile() const {return panels[1];} enum Action {MkDir, Remove, Copy, Move, LocalCopy, Crypt, LocalCrypt}; void setLocal(); void setRemote(); 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();} int selectedPanel() const; 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();} void updateLocalDir() {panels[0]->updateDir();} void updateRemoteDir() {panels[1]->updateDir();} void clearSelectionLocal() {panels[0]->selected.clear();} void clearSelectionRemote() {panels[1]->selected.clear();} 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; mutable PIMutex e_mutex; bool resized, is_right, remote_mode; void * fm, * key_func; EVENT3(actionRequest, bool, remote_tile, FileManager::Action, type, PIVariant, data) }; EVENT1(tileKey, PIKbdListener::KeyEvent, key) static void tileKey_s(void * fm, PIKbdListener::KeyEvent key) {((FileManager*)fm)->tileKey(key);} TileDir * panels[2]; PIScreenTile * tile_root; typedef PIPair SSPair; }; #endif // FILE_MANAGER_H