refactor menustatr
This commit is contained in:
parent
cf2bb664d7
commit
dc5e6b968b
|
@ -32,7 +32,6 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#include "drive.h"
|
#include "drive.h"
|
||||||
|
@ -46,7 +45,6 @@ template <typename T, typename I> T* iterator_to_pointer(I i)
|
||||||
return (&(*i));
|
return (&(*i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class reHDD
|
class reHDD
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -36,7 +36,7 @@ public:
|
||||||
|
|
||||||
static void initTUI();
|
static void initTUI();
|
||||||
|
|
||||||
void updateTUI(vector <Drive>* pvecDrives, int32_t i32SelectedEntry, struct MenuState menustate);
|
void updateTUI(vector <Drive>* pvecDrives, int32_t i32SelectedEntry);
|
||||||
|
|
||||||
static enum UserInput readUserInput();
|
static enum UserInput readUserInput();
|
||||||
|
|
||||||
|
@ -45,9 +45,10 @@ private:
|
||||||
static string sRamUsage;
|
static string sRamUsage;
|
||||||
static string sLocalTime;
|
static string sLocalTime;
|
||||||
|
|
||||||
WINDOW* detailview;
|
|
||||||
WINDOW* overview;
|
WINDOW* overview;
|
||||||
WINDOW* systemview;
|
WINDOW* systemview;
|
||||||
|
WINDOW* detailview;
|
||||||
WINDOW* menuview;
|
WINDOW* menuview;
|
||||||
WINDOW* dialog;
|
WINDOW* dialog;
|
||||||
|
|
||||||
|
@ -58,6 +59,8 @@ private:
|
||||||
static WINDOW *createSystemStats(int iXSize, int iYSize, int iYStart);
|
static WINDOW *createSystemStats(int iXSize, int iYSize, int iYStart);
|
||||||
static WINDOW *createMenuView(int iXSize, int iYSize, int iXStart, int iYStart, struct MenuState menustate);
|
static WINDOW *createMenuView(int iXSize, int iYSize, int iXStart, int iYStart, struct MenuState menustate);
|
||||||
static WINDOW *createDialog(int iXSize, int iYSize, int iXStart, int iYStart, string selectedTask, string optionA, string optionB);
|
static WINDOW *createDialog(int iXSize, int iYSize, int iXStart, int iYStart, string selectedTask, string optionA, string optionB);
|
||||||
|
|
||||||
|
void displaySelectedDrive(Drive drive, int stdscrX, int stdscrY);
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif // TUI_H_
|
#endif // TUI_H_
|
|
@ -51,7 +51,7 @@ void TUI::initTUI()
|
||||||
mvprintw(0, 2, "reHDD - HDD refurbishing tool - GPL 3.0 ");
|
mvprintw(0, 2, "reHDD - HDD refurbishing tool - GPL 3.0 ");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TUI::updateTUI(vector <Drive>* pvecDrives, int32_t i32SelectedEntry, struct MenuState menustate)
|
void TUI::updateTUI(vector <Drive>* pvecDrives, int32_t i32SelectedEntry)
|
||||||
{
|
{
|
||||||
int stdscrX, stdscrY;
|
int stdscrX, stdscrY;
|
||||||
getmaxyx(stdscr, stdscrY, stdscrX);
|
getmaxyx(stdscr, stdscrY, stdscrX);
|
||||||
|
@ -67,10 +67,6 @@ void TUI::updateTUI(vector <Drive>* pvecDrives, int32_t i32SelectedEntry, struct
|
||||||
systemview=createSystemStats((int)(stdscrX/3), 10, (stdscrY-11));
|
systemview=createSystemStats((int)(stdscrX/3), 10, (stdscrY-11));
|
||||||
wrefresh(systemview);
|
wrefresh(systemview);
|
||||||
|
|
||||||
menuview=createMenuView(((stdscrX)-(int)(stdscrX/3)-7), 10, (int)(stdscrX/3)+5,(stdscrY-11), menustate);
|
|
||||||
wrefresh(menuview);
|
|
||||||
|
|
||||||
|
|
||||||
vector <Drive>::iterator it;
|
vector <Drive>::iterator it;
|
||||||
for (it = pvecDrives->begin(); it != pvecDrives->end(); ++it)
|
for (it = pvecDrives->begin(); it != pvecDrives->end(); ++it)
|
||||||
{
|
{
|
||||||
|
@ -82,24 +78,8 @@ void TUI::updateTUI(vector <Drive>* pvecDrives, int32_t i32SelectedEntry, struct
|
||||||
|
|
||||||
if(i32SelectedEntry == (it - pvecDrives->begin()))
|
if(i32SelectedEntry == (it - pvecDrives->begin()))
|
||||||
{
|
{
|
||||||
bSelectedEntry = true;
|
bSelectedEntry = true; //mark this drive in entries list
|
||||||
detailview=createDetailViewWindow(((stdscrX)-(int)(stdscrX/3)-7), (stdscrY-15), (int)(stdscrX/3)+5, pvecDrives->at((it - pvecDrives->begin())));
|
displaySelectedDrive(pvecDrives->at(i32SelectedEntry), stdscrX, stdscrY);
|
||||||
wrefresh(detailview);
|
|
||||||
|
|
||||||
if(menustate.bConfirmShred == true)
|
|
||||||
{
|
|
||||||
dialog=createDialog(70, 10, ((stdscrX)-(int)(stdscrX/3)-7)-(int)((stdscrX/3)+5)/2,(int)(stdscrY/2)-5, "Confirm SHRED", "Press ENTER for SHRED" , "Press ESC for cancel");
|
|
||||||
wrefresh(dialog);
|
|
||||||
}
|
|
||||||
else if(menustate.bConfirmDelete == true)
|
|
||||||
{
|
|
||||||
dialog=createDialog(70, 10, ((stdscrX)-(int)(stdscrX/3)-7)-(int)((stdscrX/3)+5)/2,(int)(stdscrY/2)-5, "Confirm DELETE", "Press ENTER for DELETE" , "Press ESC for cancel");
|
|
||||||
wrefresh(dialog);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delwin(dialog);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WINDOW * tmp = createEntryWindow( ((int)(stdscrX/3) - 2), 5, 3, (5* (it - pvecDrives->begin()) )+3, sModelFamily, sModelName, sCapacity, bSelectedEntry);
|
WINDOW * tmp = createEntryWindow( ((int)(stdscrX/3) - 2), 5, 3, (5* (it - pvecDrives->begin()) )+3, sModelFamily, sModelName, sCapacity, bSelectedEntry);
|
||||||
|
@ -333,3 +313,63 @@ WINDOW* TUI::createDialog(int iXSize, int iYSize, int iXStart, int iYStart, stri
|
||||||
keypad(newWindow, TRUE);
|
keypad(newWindow, TRUE);
|
||||||
return newWindow;
|
return newWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TUI::displaySelectedDrive(Drive drive, int stdscrX, int stdscrY)
|
||||||
|
{
|
||||||
|
struct MenuState menustate;
|
||||||
|
menustate.bAbort = false;
|
||||||
|
menustate.bConfirmDelete = false;
|
||||||
|
menustate.bConfirmShred = false;
|
||||||
|
menustate.bDelete = false;
|
||||||
|
menustate.bShred = false;
|
||||||
|
|
||||||
|
// set menustate based on drive state
|
||||||
|
switch (drive.state)
|
||||||
|
{
|
||||||
|
case Drive::NONE: //no task running or selected for this drive
|
||||||
|
menustate.bShred = true;
|
||||||
|
menustate.bDelete = true;
|
||||||
|
break;
|
||||||
|
case Drive::DELETE_ACTIVE : //delete task running for this drive
|
||||||
|
menustate.bAbort = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Drive::SHRED_ACTIVE : //shred task running for this drive
|
||||||
|
menustate.bAbort = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Drive::DELETE_SELECTED : //delete task selected for this drive
|
||||||
|
menustate.bConfirmDelete = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Drive::SHRED_SELECTED : //shred task selected for this drive
|
||||||
|
menustate.bConfirmShred = true;
|
||||||
|
break;
|
||||||
|
case Drive::DELETE_FINISHED : //delete task finished for this drive
|
||||||
|
case Drive::SHRED_FINISHED : //shred task finished for this drive
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
detailview=createDetailViewWindow(((stdscrX)-(int)(stdscrX/3)-7), (stdscrY-15), (int)(stdscrX/3)+5, drive);
|
||||||
|
wrefresh(detailview);
|
||||||
|
|
||||||
|
menuview=createMenuView(((stdscrX)-(int)(stdscrX/3)-7), 10, (int)(stdscrX/3)+5,(stdscrY-11), menustate);
|
||||||
|
wrefresh(menuview);
|
||||||
|
|
||||||
|
if(menustate.bConfirmShred == true)
|
||||||
|
{
|
||||||
|
dialog=createDialog(70, 10, ((stdscrX)-(int)(stdscrX/3)-7)-(int)((stdscrX/3)+5)/2,(int)(stdscrY/2)-5, "Confirm SHRED", "Press ENTER for SHRED", "Press ESC for cancel");
|
||||||
|
wrefresh(dialog);
|
||||||
|
}
|
||||||
|
else if(menustate.bConfirmDelete == true)
|
||||||
|
{
|
||||||
|
dialog=createDialog(70, 10, ((stdscrX)-(int)(stdscrX/3)-7)-(int)((stdscrX/3)+5)/2,(int)(stdscrY/2)-5, "Confirm DELETE", "Press ENTER for DELETE", "Press ESC for cancel");
|
||||||
|
wrefresh(dialog);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
delwin(dialog);
|
||||||
|
}
|
||||||
|
}
|
|
@ -88,7 +88,7 @@ string Drive::sPowerCyclesToText()
|
||||||
|
|
||||||
void Drive::setTaskPercentage(uint8_t u8TaskPercentage)
|
void Drive::setTaskPercentage(uint8_t u8TaskPercentage)
|
||||||
{
|
{
|
||||||
if((u8TaskPercentage >= 0) && (u8TaskPercentage <= 100))
|
if(u8TaskPercentage <= 100)
|
||||||
{
|
{
|
||||||
this->u8TaskPercentage = u8TaskPercentage;
|
this->u8TaskPercentage = u8TaskPercentage;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,6 @@
|
||||||
|
|
||||||
static int fdSearchDrives[2];//File descriptor for pipe that informs if new drives are found
|
static int fdSearchDrives[2];//File descriptor for pipe that informs if new drives are found
|
||||||
|
|
||||||
static int fdUserInput[2];//File descriptor for pipe that informs if a user input occoures
|
|
||||||
|
|
||||||
static int fdWhipe[2];//File descriptor for pipe that informs if a wipe thread signals
|
static int fdWhipe[2];//File descriptor for pipe that informs if a wipe thread signals
|
||||||
|
|
||||||
static std::mutex mxScannDrives;
|
static std::mutex mxScannDrives;
|
||||||
|
@ -26,7 +24,7 @@ static int32_t i32SelectedEntry;
|
||||||
|
|
||||||
static fd_set selectSet;
|
static fd_set selectSet;
|
||||||
|
|
||||||
static struct TUI::MenuState menustate;
|
//static struct TUI::MenuState menustate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief app constructor
|
* \brief app constructor
|
||||||
|
@ -37,8 +35,6 @@ reHDD::reHDD(void)
|
||||||
{
|
{
|
||||||
cout << "created app" << endl;
|
cout << "created app" << endl;
|
||||||
i32SelectedEntry = 0;
|
i32SelectedEntry = 0;
|
||||||
menustate.bDelete = true;
|
|
||||||
menustate.bShred = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -74,10 +70,9 @@ void reHDD::app_logic(void)
|
||||||
|
|
||||||
filterNewDrives(&vecDrives, &vecNewDrives); //filter and copy to app logic vector
|
filterNewDrives(&vecDrives, &vecNewDrives); //filter and copy to app logic vector
|
||||||
mxScannDrives.unlock();
|
mxScannDrives.unlock();
|
||||||
//printDrives(&vecDrives);
|
|
||||||
//TODO update UI
|
//TODO update UI
|
||||||
|
|
||||||
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
|
ui->updateTUI(&vecDrives, i32SelectedEntry);
|
||||||
}
|
}
|
||||||
else if (FD_ISSET(fdWhipe[0], &selectSet))
|
else if (FD_ISSET(fdWhipe[0], &selectSet))
|
||||||
{
|
{
|
||||||
|
@ -116,12 +111,12 @@ void reHDD::ThreadUserInput()
|
||||||
case TUI::UserInput::DownKey:
|
case TUI::UserInput::DownKey:
|
||||||
//cout << "Down" << endl;
|
//cout << "Down" << endl;
|
||||||
handleArrowKey(TUI::UserInput::DownKey);
|
handleArrowKey(TUI::UserInput::DownKey);
|
||||||
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
|
ui->updateTUI(&vecDrives, i32SelectedEntry);
|
||||||
break;
|
break;
|
||||||
case TUI::UserInput::UpKey:
|
case TUI::UserInput::UpKey:
|
||||||
//cout << "Up" << endl;
|
//cout << "Up" << endl;
|
||||||
handleArrowKey(TUI::UserInput::UpKey);
|
handleArrowKey(TUI::UserInput::UpKey);
|
||||||
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
|
ui->updateTUI(&vecDrives, i32SelectedEntry);
|
||||||
break;
|
break;
|
||||||
case TUI::UserInput::Undefined:
|
case TUI::UserInput::Undefined:
|
||||||
//cout << "Undefined" << endl;
|
//cout << "Undefined" << endl;
|
||||||
|
@ -129,43 +124,33 @@ void reHDD::ThreadUserInput()
|
||||||
case TUI::UserInput::Abort:
|
case TUI::UserInput::Abort:
|
||||||
//cout << "Abort" << endl;
|
//cout << "Abort" << endl;
|
||||||
handleAbort();
|
handleAbort();
|
||||||
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
|
ui->updateTUI(&vecDrives, i32SelectedEntry);
|
||||||
break;
|
break;
|
||||||
case TUI::UserInput::Delete:
|
case TUI::UserInput::Delete:
|
||||||
//cout << "Delete" << endl;
|
//cout << "Delete" << endl;
|
||||||
if(SELECTED_DRIVE.state == Drive::NONE)
|
if(SELECTED_DRIVE.state == Drive::NONE)
|
||||||
{
|
{
|
||||||
SELECTED_DRIVE.state = Drive::DELETE_SELECTED;
|
SELECTED_DRIVE.state = Drive::DELETE_SELECTED;
|
||||||
menustate.bAbort = false;
|
|
||||||
menustate.bDelete = false;
|
|
||||||
menustate.bShred = false;
|
|
||||||
menustate.bConfirmDelete = true;
|
|
||||||
menustate.bConfirmShred = false;
|
|
||||||
}
|
}
|
||||||
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
|
ui->updateTUI(&vecDrives, i32SelectedEntry);
|
||||||
break;
|
break;
|
||||||
case TUI::UserInput::Shred:
|
case TUI::UserInput::Shred:
|
||||||
//cout << "Shred" << endl;
|
//cout << "Shred" << endl;
|
||||||
if(SELECTED_DRIVE.state == Drive::NONE)
|
if(SELECTED_DRIVE.state == Drive::NONE)
|
||||||
{
|
{
|
||||||
SELECTED_DRIVE.state = Drive::SHRED_SELECTED;
|
SELECTED_DRIVE.state = Drive::SHRED_SELECTED;
|
||||||
menustate.bAbort = false;
|
|
||||||
menustate.bDelete = false;
|
|
||||||
menustate.bShred = false;
|
|
||||||
menustate.bConfirmDelete = false;
|
|
||||||
menustate.bConfirmShred = true;
|
|
||||||
}
|
}
|
||||||
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
|
ui->updateTUI(&vecDrives, i32SelectedEntry);
|
||||||
break;
|
break;
|
||||||
case TUI::UserInput::Enter:
|
case TUI::UserInput::Enter:
|
||||||
//cout << "Enter" << endl;
|
//cout << "Enter" << endl;
|
||||||
handleEnter();
|
handleEnter();
|
||||||
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
|
ui->updateTUI(&vecDrives, i32SelectedEntry);
|
||||||
break;
|
break;
|
||||||
case TUI::UserInput::ESC:
|
case TUI::UserInput::ESC:
|
||||||
//cout << "ESC" << endl;
|
//cout << "ESC" << endl;
|
||||||
handleESC();
|
handleESC();
|
||||||
ui->updateTUI(&vecDrives, i32SelectedEntry, menustate);
|
ui->updateTUI(&vecDrives, i32SelectedEntry);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -385,27 +370,6 @@ void reHDD::handleArrowKey(TUI::UserInput userInput)
|
||||||
i32SelectedEntry = 0;
|
i32SelectedEntry = 0;
|
||||||
break;
|
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.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.bDelete = true;
|
|
||||||
menustate.bShred = true;
|
|
||||||
menustate.bConfirmDelete = false;
|
|
||||||
menustate.bConfirmShred = false;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void reHDD::handleEnter()
|
void reHDD::handleEnter()
|
||||||
|
@ -414,11 +378,6 @@ void reHDD::handleEnter()
|
||||||
{
|
{
|
||||||
SELECTED_DRIVE.state = Drive::TaskState::SHRED_ACTIVE;
|
SELECTED_DRIVE.state = Drive::TaskState::SHRED_ACTIVE;
|
||||||
//task for drive is running --> don´t show more task options
|
//task for drive is running --> don´t show more task options
|
||||||
menustate.bAbort = true; //activate abort
|
|
||||||
menustate.bDelete = false;
|
|
||||||
menustate.bShred = false;
|
|
||||||
menustate.bConfirmDelete = false;
|
|
||||||
menustate.bConfirmShred = false;
|
|
||||||
//TODO start shredding
|
//TODO start shredding
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,38 +385,22 @@ void reHDD::handleEnter()
|
||||||
{
|
{
|
||||||
SELECTED_DRIVE.state = Drive::TaskState::DELETE_ACTIVE;
|
SELECTED_DRIVE.state = Drive::TaskState::DELETE_ACTIVE;
|
||||||
//task for drive is running --> don´t show more task options
|
//task for drive is running --> don´t show more task options
|
||||||
menustate.bAbort = true; //activate abort
|
|
||||||
menustate.bDelete = false;
|
|
||||||
menustate.bShred = false;
|
|
||||||
menustate.bConfirmDelete = false;
|
|
||||||
menustate.bConfirmShred = false;
|
|
||||||
//TODO start deleting
|
//TODO start deleting
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void reHDD::handleESC()
|
void reHDD::handleESC()
|
||||||
{
|
{
|
||||||
if(SELECTED_DRIVE.state == Drive::TaskState::SHRED_SELECTED)
|
if(SELECTED_DRIVE.state == Drive::TaskState::SHRED_SELECTED)
|
||||||
{
|
{
|
||||||
SELECTED_DRIVE.state = Drive::TaskState::NONE;
|
SELECTED_DRIVE.state = Drive::TaskState::NONE;
|
||||||
//task for drive is selected --> remove selection
|
//task for drive is selected --> remove selection
|
||||||
menustate.bAbort = false; //activate abort
|
|
||||||
menustate.bDelete = true;
|
|
||||||
menustate.bShred = true;
|
|
||||||
menustate.bConfirmDelete = false;
|
|
||||||
menustate.bConfirmShred = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(SELECTED_DRIVE.state == Drive::TaskState::DELETE_SELECTED)
|
if(SELECTED_DRIVE.state == Drive::TaskState::DELETE_SELECTED)
|
||||||
{
|
{
|
||||||
SELECTED_DRIVE.state = Drive::TaskState::NONE;
|
SELECTED_DRIVE.state = Drive::TaskState::NONE;
|
||||||
//task for drive is selected --> remove selection
|
//task for drive is selected --> remove selection
|
||||||
menustate.bAbort = false; //activate abort
|
|
||||||
menustate.bDelete = true;
|
|
||||||
menustate.bShred = true;
|
|
||||||
menustate.bConfirmDelete = false;
|
|
||||||
menustate.bConfirmShred = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -468,10 +411,5 @@ void reHDD::handleAbort()
|
||||||
// TODO cancle shred or delete
|
// TODO cancle shred or delete
|
||||||
SELECTED_DRIVE.state = Drive::NONE;
|
SELECTED_DRIVE.state = Drive::NONE;
|
||||||
//task for drive is running --> remove selection
|
//task for drive is running --> remove selection
|
||||||
menustate.bAbort = false; //activate abort
|
|
||||||
menustate.bDelete = true;
|
|
||||||
menustate.bShred = true;
|
|
||||||
menustate.bConfirmDelete = false;
|
|
||||||
menustate.bConfirmShred = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue