165 lines
4.0 KiB
C++
165 lines
4.0 KiB
C++
/**
|
|
* @file tui.cpp
|
|
* @brief display user interface
|
|
* @author hendrik schutter
|
|
* @date 03.08.2020
|
|
*/
|
|
|
|
#include "../../include/reHDD.h"
|
|
|
|
|
|
TUI::TUI(void) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* \brief wipe drive with shred
|
|
* \param pointer of Drive instance
|
|
* \return void
|
|
*/
|
|
|
|
void TUI::initTUI()
|
|
{
|
|
initscr();
|
|
raw();
|
|
keypad(stdscr,TRUE);
|
|
if(has_colors() == TRUE) {
|
|
start_color();
|
|
} else {
|
|
printf("Your terminal does not support color\n");
|
|
exit(1);
|
|
}
|
|
clear();
|
|
curs_set(0);
|
|
init_color(COLOR_GRAY, 173, 170, 173);
|
|
|
|
|
|
init_pair(COLOR_AREA_STDSCR,COLOR_WHITE, COLOR_BLUE);
|
|
wbkgd(stdscr, COLOR_PAIR(COLOR_AREA_STDSCR));
|
|
|
|
int stdscrX, stdscrY;
|
|
getmaxyx(stdscr, stdscrY, stdscrX);
|
|
mvprintw(0, 2, "reHDD - HDD refurbishing tool - Licensed under GPL 3.0 X:%d Y:%d",stdscrX,stdscrY);
|
|
|
|
}
|
|
|
|
void TUI::updateTUI(vector <Drive>* pvecDrives) {
|
|
|
|
|
|
//werase(stdscr);
|
|
|
|
int stdscrX, stdscrY;
|
|
getmaxyx(stdscr, stdscrY, stdscrX);
|
|
|
|
init_pair(COLOR_AREA_STDSCR,COLOR_WHITE, COLOR_BLUE);
|
|
wbkgd(stdscr, COLOR_PAIR(COLOR_AREA_STDSCR));
|
|
|
|
// mvprintw(0, 2, "reHDD - HDD refurbishing tool - Licensed under GPL 3.0 X:%d Y:%d",stdscrX,stdscrY);
|
|
|
|
refresh();
|
|
|
|
overview=createOverViewWindow((int)(stdscrX/3), (stdscrY-15));
|
|
wrefresh(overview);
|
|
|
|
detailview=createDetailViewWindow(((stdscrX)-(int)(stdscrX/3)-7), (stdscrY-3), (int)(stdscrX/3)+5);
|
|
wrefresh(detailview);
|
|
|
|
vWinDriveEntries.clear();
|
|
|
|
|
|
// int i = 0;
|
|
|
|
vector <Drive>::iterator it;
|
|
for (it = pvecDrives->begin(); it != pvecDrives->end(); ++it)
|
|
{
|
|
|
|
string sModelFamily = it->getModelFamily();
|
|
string sModelName = it->getModelName();
|
|
string sCapacity = it->sCapacityToText();
|
|
|
|
WINDOW * tmp = createEntryWindow( ((int)(stdscrX/3) - 2), 5, 3, (5* (it - pvecDrives->begin()) )+3, sModelFamily, sModelName, sCapacity);
|
|
|
|
// WINDOW * tmp = createEntryWindow( ((int)(stdscrX/3) - 2), 5, 3, (5* (i) )+3, sModelFamily, sModelName, sCapacity);
|
|
|
|
// vWinDriveEntries.push_back(tmp);
|
|
wrefresh(tmp);
|
|
|
|
// i++;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
void TUI::centerTitle(WINDOW *pwin, const char * title) {
|
|
int x, maxX, stringSize;
|
|
getmaxyx(pwin, maxX, maxX);
|
|
stringSize = 4 + strlen(title);
|
|
x = (maxX - stringSize)/2;
|
|
mvwaddch(pwin, 0, x, ACS_RTEE);
|
|
waddch(pwin, ' ');
|
|
waddstr(pwin, title);
|
|
waddch(pwin, ' ');
|
|
waddch(pwin, ACS_LTEE);
|
|
}
|
|
|
|
WINDOW* TUI::createOverViewWindow( int iXSize, int iYSize) {
|
|
WINDOW *newWindow;
|
|
newWindow = newwin(iYSize, iXSize, 2, 2);
|
|
init_pair(COLOR_AREA_OVERVIEW, COLOR_BLACK, COLOR_GRAY);
|
|
wbkgd(newWindow, COLOR_PAIR(COLOR_AREA_OVERVIEW));
|
|
box(newWindow, ACS_VLINE, ACS_HLINE);
|
|
|
|
time_t rawtime;
|
|
struct tm * timeinfo;
|
|
char buffer[80];
|
|
|
|
time (&rawtime);
|
|
timeinfo = localtime(&rawtime);
|
|
|
|
strftime(buffer,sizeof(buffer),"%d-%m-%Y %H:%M:%S",timeinfo);
|
|
std::string str(buffer);
|
|
|
|
|
|
centerTitle(newWindow, str.c_str());
|
|
|
|
//mvwaddstr(newWindow, 2, 3, "Drücke eine Taste");
|
|
|
|
//refresh();
|
|
|
|
return newWindow;
|
|
}
|
|
|
|
|
|
WINDOW* TUI::createDetailViewWindow( int iXSize, int iYSize, int iXStart) {
|
|
WINDOW *newWindow;
|
|
newWindow = newwin(iYSize, iXSize, 2, iXStart);
|
|
init_pair(COLOR_AREA_OVERVIEW, COLOR_BLACK, COLOR_GRAY);
|
|
wbkgd(newWindow, COLOR_PAIR(COLOR_AREA_OVERVIEW));
|
|
box(newWindow, ACS_VLINE, ACS_HLINE);
|
|
centerTitle(newWindow, "Selected Drive: xyz");
|
|
|
|
return newWindow;
|
|
}
|
|
|
|
WINDOW* TUI::createEntryWindow(int iXSize, int iYSize, int iXStart, int iYStart, string sModelFamily, string sModelName, string sCapacity) {
|
|
WINDOW *newWindow;
|
|
newWindow = newwin(iYSize, iXSize, iYStart, iXStart);
|
|
init_pair(COLOR_AREA_ENTRY, COLOR_BLACK, COLOR_GRAY);
|
|
wbkgd(newWindow, COLOR_PAIR(COLOR_AREA_ENTRY));
|
|
box(newWindow, ACS_VLINE, ACS_HLINE);
|
|
|
|
attron(COLOR_PAIR(COLOR_AREA_ENTRY));
|
|
|
|
mvwaddstr(newWindow,1, 1, sModelFamily.c_str());
|
|
mvwaddstr(newWindow,2, 1, sModelName.c_str());
|
|
mvwaddstr(newWindow,3, 1, sCapacity.c_str());
|
|
|
|
// refresh();
|
|
|
|
return newWindow;
|
|
}
|