diff --git a/src/api/fileBrowser.cpp b/src/api/fileBrowser.cpp index 9d1aca0..b78ed6d 100644 --- a/src/api/fileBrowser.cpp +++ b/src/api/fileBrowser.cpp @@ -67,7 +67,6 @@ std::vector FileBrowser::getFileStructure(const std::string &path) } else if (_includeFiles) { - //TODO test for files FileItem temp; temp.path = fullFileName; temp.name = fullFileName.substr(fullFileName.find_last_of("/") + 1, fullFileName.length()); diff --git a/src/api/sqliteConnector.cpp b/src/api/sqliteConnector.cpp index 9297224..e2da06a 100644 --- a/src/api/sqliteConnector.cpp +++ b/src/api/sqliteConnector.cpp @@ -71,9 +71,9 @@ FileState SqliteConnector::getState(const string &path) int rs; sqlite3_stmt *stmt = 0; - std::vector items; FileState state = FileState::ICLOUD; + rs = sqlite3_prepare_v2(_db, "SELECT state FROM 'metadata' WHERE path = ? LIMIT 1;", -1, &stmt, 0); rs = sqlite3_bind_text(stmt, 1, path.c_str(), path.length(), NULL); diff --git a/src/handler/eventHandler.cpp b/src/handler/eventHandler.cpp index 69a242b..cf9168c 100644 --- a/src/handler/eventHandler.cpp +++ b/src/handler/eventHandler.cpp @@ -32,9 +32,6 @@ EventHandler::EventHandler() //create an copy of the eventhandler to handle methods that require static functions _eventHandlerStatic = std::unique_ptr(this); - _loginView = nullptr; - _webDAVView = nullptr; - _menu = std::unique_ptr(new MainMenu("Nextcloud")); if (iv_access(CONFIG_PATH.c_str(), W_OK) == 0) { @@ -180,7 +177,7 @@ void EventHandler::mainMenuHandler(const int index) _webDAV.logout(); break; } - _webDAVView.release(); + _webDAVView.reset(); _loginView = std::unique_ptr(new LoginView(_menu->getContentRect())); break; } @@ -202,6 +199,7 @@ void EventHandler::mainMenuHandler(const int index) } else { + _fileView.reset(); updateItems(currentWebDAVItems); drawWebDAVItems(currentWebDAVItems); } @@ -227,7 +225,6 @@ void EventHandler::contextMenuHandlerStatic(const int index) { _eventHandlerStatic->contextMenuHandler(index); } -std::unique_ptr _contextMenu; void EventHandler::contextMenuHandler(const int index) { @@ -311,8 +308,7 @@ int EventHandler::pointerHandler(const int type, const int par1, const int par2) _webDAVView->invertCurrentEntryColor(); if (_webDAVView->getCurrentEntry().title.compare("...") != 0) { - _contextMenu = std::unique_ptr(new ContextMenu()); - _contextMenu->createMenu(par2, _webDAVView->getCurrentEntry().state, EventHandler::contextMenuHandlerStatic); + _contextMenu.createMenu(par2, _webDAVView->getCurrentEntry().state, EventHandler::contextMenuHandlerStatic); } } } @@ -397,9 +393,7 @@ int EventHandler::pointerHandler(const int type, const int par1, const int par2) _currentPath = _fileView->getCurrentEntry().path; vector currentFolder = fileBrowser.getFileStructure(_currentPath); - //TODO use other method - _fileView.reset(); - _fileView = std::unique_ptr(new FileView(_menu->getContentRect(), currentFolder,1)); + _fileView.reset(new FileView(_menu->getContentRect(), currentFolder,1)); } } @@ -443,14 +437,18 @@ void EventHandler::openFolder() std::vector currentWebDAVItems; - switch (_sqllite.getState(_webDAVView->getCurrentEntry().path)) + switch ((_webDAVView->getCurrentEntry().state == FileState::ILOCAL) ? FileState::ILOCAL : _sqllite.getState(_webDAVView->getCurrentEntry().path)) { case FileState::ILOCAL: { Message(ICON_ERROR, "Error", "Not implemented to look at local folder.", 2000); _webDAVView->invertCurrentEntryColor(); //TODO use FileBrowser - break; } + //_webDAVView.reset(); + //FileBrowser fB = FileBrowser(true); + //_fileView.reset(new FileView(_menu->getContentRect(),fB.getFileStructure(_webDAVView->getCurrentEntry().path),1)); + break; + } case FileState::IOUTSYNCED: case FileState::ICLOUD: currentWebDAVItems = _webDAV.getDataStructure(_webDAVView->getCurrentEntry().path); @@ -704,8 +702,7 @@ void EventHandler::updateItems(vector &items) void EventHandler::drawWebDAVItems(vector &items) { - _webDAVView.release(); _currentPath = items.at(0).path; getLocalFileStructure(items); - _webDAVView = std::unique_ptr(new WebDAVView(_menu->getContentRect(), items,1)); + _webDAVView.reset(new WebDAVView(_menu->getContentRect(), items,1)); } diff --git a/src/handler/eventHandler.h b/src/handler/eventHandler.h index 45f809a..3370606 100644 --- a/src/handler/eventHandler.h +++ b/src/handler/eventHandler.h @@ -46,9 +46,9 @@ private: std::unique_ptr _webDAVView; std::unique_ptr _loginView; std::unique_ptr _fileView; - std::unique_ptr _contextMenu; std::unique_ptr _menu; + ContextMenu _contextMenu = ContextMenu(); WebDAV _webDAV = WebDAV(); SqliteConnector _sqllite = SqliteConnector(DB_PATH); std::string _currentPath;