added states for tasks

This commit is contained in:
2020-08-09 21:41:28 +02:00
parent f4726bf08c
commit c2ab7c1c7f
6 changed files with 203 additions and 32 deletions

View File

@ -26,6 +26,8 @@ static int32_t i32SelectedEntry;
static fd_set selectSet;
static struct TUI::MenuState menustate;
/**
* \brief app constructor
* \param void
@ -60,7 +62,6 @@ void reHDD::app_logic(void)
while(1)
{
select(FD_SETSIZE, &selectSet, NULL, NULL, NULL);
if( FD_ISSET(fdSearchDrives[0], &selectSet))
@ -74,9 +75,7 @@ void reHDD::app_logic(void)
//printDrives(&vecDrives);
//TODO update UI
ui->updateTUI(&vecDrives, i32SelectedEntry);
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
}
else if (FD_ISSET(fdWhipe[0], &selectSet))
{
@ -115,27 +114,45 @@ void reHDD::ThreadUserInput()
case TUI::UserInput::DownKey:
//cout << "Down" << endl;
handleArrowKey(TUI::UserInput::DownKey);
ui->updateTUI(&vecDrives, i32SelectedEntry);
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
break;
case TUI::UserInput::UpKey:
//cout << "Up" << endl;
handleArrowKey(TUI::UserInput::UpKey);
ui->updateTUI(&vecDrives, i32SelectedEntry);
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
break;
case TUI::UserInput::Undefined:
//cout << "Undefined" << endl;
break;
case TUI::UserInput::Abort:
//cout << "Abort" << endl;
handleAbort();
break;
case TUI::UserInput::Delete:
//cout << "Delete" << endl;
if(SELECTED_DRIVE.state == Drive::NONE)
{
SELECTED_DRIVE.state = Drive::DELETE_SELECTED;
}
break;
case TUI::UserInput::Shred:
//cout << "Shred" << endl;
if(SELECTED_DRIVE.state == Drive::NONE)
{
SELECTED_DRIVE.state = Drive::SHRED_SELECTED;
}
break;
case TUI::UserInput::Enter:
//cout << "Enter" << endl;
handleEnter();
break;
case TUI::UserInput::ESC:
//cout << "ESC" << endl;
@ -161,13 +178,15 @@ void reHDD::filterNewDrives(vector <Drive>* pvecOldDrives, vector <Drive>* pvecN
{
bOldDriveIsOffline = false;
// cout << "already online drive found: " << itOld->getPath() << endl;
itNew->state = itOld->state;
itNew->setTaskPercentage(itOld->getTaskPercentage());
}
}
if(bOldDriveIsOffline == true)
{
//cout << "offline drive found: " << itOld->getPath() << endl;
//TODO kill wipe thread
//TODO kill task thread if running
}
}
@ -356,4 +375,66 @@ void reHDD::handleArrowKey(TUI::UserInput userInput)
i32SelectedEntry = 0;
break;
}
if(SELECTED_DRIVE.state == Drive::TaskState::SHRED_ACTIVE || SELECTED_DRIVE.state == Drive::TaskState::DELETE_ACTIVE)
{
//task for drive is running --> don´t show more task options
menustate.bAbort = true; //activate abort
menustate.bConfirmAbort = false;
menustate.bDelete = false;
menustate.bShred = false;
menustate.bConfirmDelete = false;
menustate.bConfirmShred = false;
}
else
{
//no task for drive is running --> show more task options
menustate.bAbort = false; //deactivate abort
menustate.bConfirmAbort = false;
menustate.bDelete = true;
menustate.bShred = true;
menustate.bConfirmDelete = false;
menustate.bConfirmShred = false;
}
}
void reHDD::handleEnter()
{
if(SELECTED_DRIVE.state == Drive::TaskState::SHRED_SELECTED)
{
SELECTED_DRIVE.state = Drive::TaskState::SHRED_ACTIVE;
//TODO start shredding
}
if(SELECTED_DRIVE.state == Drive::TaskState::DELETE_SELECTED)
{
SELECTED_DRIVE.state = Drive::TaskState::DELETE_ACTIVE;
//TODO start deleting
}
}
void reHDD::handleESC()
{
if(SELECTED_DRIVE.state == Drive::TaskState::SHRED_SELECTED)
{
SELECTED_DRIVE.state = Drive::TaskState::NONE;
}
if(SELECTED_DRIVE.state == Drive::TaskState::DELETE_SELECTED)
{
SELECTED_DRIVE.state = Drive::TaskState::NONE;
}
}
void reHDD::handleAbort()
{
if(SELECTED_DRIVE.state == Drive::SHRED_ACTIVE || SELECTED_DRIVE.state == Drive::DELETE_ACTIVE )
{
// TODO cancle shred or delete
SELECTED_DRIVE.state = Drive::NONE;
}
}