2015-01-31 18:12:20 +00:00
/*************************************************************************
* Copyright ( C ) 2015 by Andrius Š tikonas < andrius @ stikonas . eu > *
* *
* This program is free software ; you can redistribute it and / or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation ; either version 3 of the License , or *
* ( at your option ) any later version . *
* *
* This program is distributed in the hope that it will be useful , *
* but WITHOUT ANY WARRANTY ; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the *
* GNU General Public License for more details . *
* *
* You should have received a copy of the GNU General Public License *
* along with this program . If not , see < http : //www.gnu.org/licenses/>.*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include <iostream>
# include "consolereader.h"
2015-02-01 01:42:45 +00:00
ConsoleReader : : ConsoleReader ( std : : vector < Socket * > * sockets_vector )
2015-01-31 18:12:20 +00:00
{
sockets = sockets_vector ;
2015-02-01 01:42:45 +00:00
start ( ) ;
2015-01-31 18:12:20 +00:00
}
2015-02-03 01:24:47 +00:00
ConsoleReader : : ~ ConsoleReader ( )
{
delete discoveryTimer ;
}
2015-01-31 18:12:20 +00:00
void ConsoleReader : : run ( )
{
2015-02-03 01:24:47 +00:00
QThread : : sleep ( 1 ) ; // wait until sockets are discovered
for ( unsigned i = 0 ; i < sockets - > size ( ) ; + + i )
{
connect ( ( * sockets ) [ i ] , & Socket : : stateChanged , this , & ConsoleReader : : listSockets ) ;
}
listSockets ( ) ;
std : : string command ;
2015-01-31 18:12:20 +00:00
unsigned int number = 0 ;
bool cont = true ;
2015-02-01 01:42:45 +00:00
while ( cont )
2015-01-31 18:12:20 +00:00
{
std : : cin > > command ;
2015-02-03 01:24:47 +00:00
switch ( command [ 0 ] )
2015-01-31 18:12:20 +00:00
{
2015-02-01 01:42:45 +00:00
case ' d ' :
2015-02-03 01:24:47 +00:00
( * sockets ) [ number ] - > tableData ( ) ;
2015-02-01 01:42:45 +00:00
break ;
case ' n ' :
2015-02-03 01:24:47 +00:00
{
command . erase ( 0 , 1 ) ;
( * sockets ) [ number ] - > changeSocketName ( QString : : fromStdString ( command ) ) ;
2015-02-01 01:42:45 +00:00
break ;
2015-02-03 01:24:47 +00:00
}
2015-02-01 01:42:45 +00:00
case ' p ' :
2015-02-03 01:24:47 +00:00
( * sockets ) [ number ] - > toggle ( ) ;
2015-02-01 01:42:45 +00:00
break ;
case ' q ' :
cont = false ;
emit ( QCoreApplication : : quit ( ) ) ;
break ;
case ' s ' :
std : : cin > > number ;
- - number ; // count from 0
listSockets ( ) ;
break ;
default :
std : : cout < < " Invalid command: try again " < < std : : endl ;
2015-01-31 18:12:20 +00:00
}
}
}
void ConsoleReader : : listSockets ( )
{
2015-02-01 01:42:45 +00:00
for ( std : : vector < Socket * > : : const_iterator i = sockets - > begin ( ) ; i ! = sockets - > end ( ) ; + + i )
2015-01-31 18:12:20 +00:00
{
std : : cout < < " ___________________________________________________________________________ \n " < < std : : endl ;
2015-02-01 01:42:45 +00:00
std : : cout < < " IP Address: " < < ( * i ) - > ip . toString ( ) . toStdString ( ) < < " \t MAC Address: " < < ( * i ) - > mac . toHex ( ) . toStdString ( ) < < " \t Power: " < < ( ( * i ) - > powered ? " On " : " Off " ) < < std : : endl ;
std : : cout < < " Socket Name: " < < ( * i ) - > name . toStdString ( ) < < " \t Remote Password: " < < ( * i ) - > remotePassword . toStdString ( ) < < std : : endl ;
2015-01-31 18:12:20 +00:00
}
std : : cout < < " ___________________________________________________________________________ \n " < < std : : endl ;
2015-02-03 01:24:47 +00:00
std : : cout < < " d - update table data \n nName - change socket name to Name (max 16 characters) \n s - pick another socket (default is 1) \n p - toggle power state \n q - quit " < < std : : endl ;
2015-01-31 18:12:20 +00:00
}