Add context menu
parent
0ad9c9915b
commit
41f4d4de4f
|
@ -49,6 +49,7 @@ list(APPEND PB_LINK_DIRECTORIES "${TOOLCHAIN_PATH}/usr/arm-obreey-linux-gnueabi/
|
|||
list(APPEND PB_INCLUDE_DIRECTORIES "${TOOLCHAIN_PATH}/usr/arm-obreey-linux-gnueabi/sysroot/usr/include")
|
||||
|
||||
set(SOURCES ${CMAKE_SOURCE_DIR}/src/main.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/handler/contextMenu.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/handler/eventHandler.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/handler/mainMenu.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/util/nextcloud.cpp
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
//------------------------------------------------------------------
|
||||
// contextMenu.cpp
|
||||
//
|
||||
// Author: JuanJakobo
|
||||
// Date: 14.06.2020
|
||||
//
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
#include "inkview.h"
|
||||
#include "contextMenu.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
using std::string;
|
||||
|
||||
ContextMenu::ContextMenu()
|
||||
{
|
||||
}
|
||||
|
||||
ContextMenu::~ContextMenu()
|
||||
{
|
||||
free(_menu);
|
||||
free(_open);
|
||||
free(_sync);
|
||||
free(_remove);
|
||||
}
|
||||
|
||||
int ContextMenu::createMenu(int y, FileState itemstate, iv_menuhandler handler)
|
||||
{
|
||||
imenu contextMenu[] =
|
||||
{
|
||||
{ITEM_HEADER, 0, _menu, NULL},
|
||||
{(itemstate != FileState::ICLOUD) ? (short)ITEM_ACTIVE : (short)ITEM_HIDDEN, 101, _open, NULL},
|
||||
{ITEM_ACTIVE, 102, _sync, NULL},
|
||||
{(itemstate != FileState::ICLOUD) ? (short)ITEM_ACTIVE : (short)ITEM_HIDDEN, 103, _remove, NULL},
|
||||
{0, 0, NULL, NULL}};
|
||||
|
||||
OpenMenu(contextMenu, 0, ScreenWidth(),y, handler);
|
||||
|
||||
return 1;
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
//------------------------------------------------------------------
|
||||
// contextMenu.h
|
||||
//
|
||||
// Author: JuanJakobo
|
||||
// Date: 14.06.2020
|
||||
// Description: Handles the menubar and the menu
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
#ifndef CONTEXT_MENU
|
||||
#define CONTEXT_MENU
|
||||
|
||||
#include "inkview.h"
|
||||
#include "item.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
class ContextMenu
|
||||
{
|
||||
public:
|
||||
ContextMenu();
|
||||
|
||||
~ContextMenu();
|
||||
|
||||
/**
|
||||
* Shows the menu on the screen, lets the user choose menu options and then redirects the handler to the caller
|
||||
*
|
||||
* @param y y-coordinate of the item
|
||||
* @param FileState status of the item for that the menu is created
|
||||
* @param handler which action does the menu buttons start
|
||||
* @return int returns if the event was handled
|
||||
*/
|
||||
int createMenu(int y, FileState itemstate, iv_menuhandler handler);
|
||||
|
||||
private:
|
||||
char *_menu = strdup("Menu");
|
||||
char *_open = strdup("Open");
|
||||
char *_sync = strdup("Sync");
|
||||
char *_remove = strdup("Remove");
|
||||
};
|
||||
#endif
|
|
@ -130,6 +130,63 @@ void EventHandler::mainMenuHandler(const int index)
|
|||
}
|
||||
}
|
||||
|
||||
void EventHandler::contextMenuHandlerStatic(const int index)
|
||||
{
|
||||
_eventHandlerStatic->contextMenuHandler(index);
|
||||
}
|
||||
std::unique_ptr<ContextMenu> _contextMenu;
|
||||
|
||||
void EventHandler::contextMenuHandler(const int index)
|
||||
{
|
||||
//invert color
|
||||
switch (index)
|
||||
{
|
||||
//Open
|
||||
case 101:
|
||||
{
|
||||
if (_nextcloud.getItems().at(tempItemID).getType() == Itemtype::IFOLDER)
|
||||
{
|
||||
openFolder();
|
||||
}
|
||||
else
|
||||
{
|
||||
openItem();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
//Sync
|
||||
case 102:
|
||||
{
|
||||
startDownload();
|
||||
break;
|
||||
}
|
||||
//remove
|
||||
case 103:
|
||||
{
|
||||
OpenProgressbar(1, "Removing...", "Removing Files.", 0, EventHandler::DialogHandlerStatic);
|
||||
if (_nextcloud.removeItem(tempItemID))
|
||||
{
|
||||
_listView->drawEntry(tempItemID);
|
||||
Util::updatePBLibrary();
|
||||
}
|
||||
else
|
||||
{
|
||||
Message(ICON_WARNING, "Warning", "Could not delete the file, please try again.", 1200);
|
||||
}
|
||||
CloseProgressbar();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
_listView->invertEntryColor(tempItemID);
|
||||
break;
|
||||
}
|
||||
|
||||
_contextMenu.reset();
|
||||
}
|
||||
}
|
||||
|
||||
int EventHandler::pointerHandler(const int type, const int par1, const int par2)
|
||||
{
|
||||
if (type == EVT_POINTERDOWN)
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#ifndef EVENT_HANDLER
|
||||
#define EVENT_HANDLER
|
||||
|
||||
#include "contextMenu.h"
|
||||
#include "mainMenu.h"
|
||||
#include "nextcloud.h"
|
||||
#include "listView.h"
|
||||
|
@ -40,6 +41,7 @@ private:
|
|||
static std::unique_ptr<EventHandler> _eventHandlerStatic;
|
||||
std::unique_ptr<ListView> _listView;
|
||||
std::unique_ptr<LoginView> _loginView;
|
||||
std::unique_ptr<ContextMenu> _contextMenu;
|
||||
MainMenu _menu = MainMenu("Nextcloud");
|
||||
Nextcloud _nextcloud = Nextcloud();
|
||||
std::string _tempPath;
|
||||
|
|
Loading…
Reference in New Issue