2011-06-19 22:57:34 +04:00
/*
* Bittorrent Client using Qt4 and libtorrent .
* Copyright ( C ) 2011 Christophe Dumez
*
* 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 2
* 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 , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 , USA .
*
* In addition , as a special exception , the copyright holders give permission to
* link this program with the OpenSSL project ' s " OpenSSL " library ( or with
* modified versions of it that use the same license as the " OpenSSL " library ) ,
* and distribute the linked executables . You must obey the GNU General Public
* License in all respects for all of the code used other than " OpenSSL " . If you
* modify file ( s ) , you may extend this exception to your version of the file ( s ) ,
* but you are not obligated to do so . If you do not wish to do so , delete this
* exception statement from your version .
*
* Contact : chris @ qbittorrent . org
*/
2011-06-20 23:28:55 +04:00
# include <QListWidgetItem>
# include <QLabel>
2015-01-06 02:25:56 +03:00
# include <QDateTime>
# include <QColor>
# include <QPalette>
2010-12-20 21:07:36 +03:00
# include "executionlog.h"
# include "ui_executionlog.h"
2015-04-19 18:17:47 +03:00
# include "guiiconprovider.h"
2011-09-24 16:39:27 +04:00
# include "loglistwidget.h"
2010-12-20 21:07:36 +03:00
2016-03-14 15:39:13 +03:00
ExecutionLog : : ExecutionLog ( QWidget * parent , const Log : : MsgTypes & types )
2015-01-06 02:48:24 +03:00
: QWidget ( parent )
, ui ( new Ui : : ExecutionLog )
, m_peerList ( new LogListWidget ( MAX_LOG_MESSAGES ) )
2010-12-20 21:07:36 +03:00
{
ui - > setupUi ( this ) ;
2011-09-24 16:39:27 +04:00
2016-03-14 15:39:13 +03:00
m_msgList = new LogListWidget ( MAX_LOG_MESSAGES , Log : : MsgTypes ( types ) ) ;
2016-01-24 22:38:45 +03:00
2015-04-19 18:17:47 +03:00
ui - > tabConsole - > setTabIcon ( 0 , GuiIconProvider : : instance ( ) - > getIcon ( " view-calendar-journal " ) ) ;
ui - > tabConsole - > setTabIcon ( 1 , GuiIconProvider : : instance ( ) - > getIcon ( " view-filter " ) ) ;
2015-01-06 02:25:56 +03:00
ui - > tabGeneral - > layout ( ) - > addWidget ( m_msgList ) ;
ui - > tabBan - > layout ( ) - > addWidget ( m_peerList ) ;
2011-09-24 16:39:27 +04:00
2015-01-06 02:25:56 +03:00
const Logger * const logger = Logger : : instance ( ) ;
foreach ( const Log : : Msg & msg , logger - > getMessages ( ) )
2015-01-06 02:48:24 +03:00
addLogMessage ( msg ) ;
2015-01-06 02:25:56 +03:00
foreach ( const Log : : Peer & peer , logger - > getPeers ( ) )
2015-01-06 02:48:24 +03:00
addPeerMessage ( peer ) ;
connect ( logger , SIGNAL ( newLogMessage ( const Log : : Msg & ) ) , SLOT ( addLogMessage ( const Log : : Msg & ) ) ) ;
2015-01-06 02:25:56 +03:00
connect ( logger , SIGNAL ( newLogPeer ( const Log : : Peer & ) ) , SLOT ( addPeerMessage ( const Log : : Peer & ) ) ) ;
2010-12-20 21:07:36 +03:00
}
ExecutionLog : : ~ ExecutionLog ( )
{
2015-01-06 02:48:24 +03:00
delete m_msgList ;
delete m_peerList ;
delete ui ;
2010-12-20 21:07:36 +03:00
}
2016-01-24 22:38:45 +03:00
void ExecutionLog : : showMsgTypes ( const Log : : MsgTypes & types )
{
m_msgList - > showMsgTypes ( types ) ;
}
2015-01-06 02:25:56 +03:00
void ExecutionLog : : addLogMessage ( const Log : : Msg & msg )
2010-12-20 21:07:36 +03:00
{
2015-01-06 02:48:24 +03:00
QString text ;
QDateTime time = QDateTime : : fromMSecsSinceEpoch ( msg . timestamp ) ;
QColor color ;
2015-01-06 02:25:56 +03:00
2015-01-06 02:48:24 +03:00
switch ( msg . type ) {
case Log : : INFO :
color . setNamedColor ( " blue " ) ;
break ;
case Log : : WARNING :
color . setNamedColor ( " orange " ) ;
break ;
case Log : : CRITICAL :
color . setNamedColor ( " red " ) ;
break ;
default :
color = QApplication : : palette ( ) . color ( QPalette : : WindowText ) ;
}
2015-01-06 02:25:56 +03:00
2015-02-08 16:43:14 +03:00
text = " <font color='grey'> " + time . toString ( Qt : : SystemLocaleShortDate ) + " </font> - <font color=' " + color . name ( ) + " '> " + msg . message + " </font> " ;
2016-01-24 22:38:45 +03:00
m_msgList - > appendLine ( text , msg . type ) ;
2010-12-20 21:07:36 +03:00
}
2015-01-06 02:25:56 +03:00
void ExecutionLog : : addPeerMessage ( const Log : : Peer & peer )
2010-12-20 21:07:36 +03:00
{
2015-01-06 02:48:24 +03:00
QString text ;
QDateTime time = QDateTime : : fromMSecsSinceEpoch ( peer . timestamp ) ;
2015-01-06 02:25:56 +03:00
2015-01-06 02:48:24 +03:00
if ( peer . blocked )
2015-02-08 16:43:14 +03:00
text = " <font color='grey'> " + time . toString ( Qt : : SystemLocaleShortDate ) + " </font> - " + tr ( " <font color='red'>%1</font> was blocked %2 " , " x.y.z.w was blocked " ) . arg ( peer . ip ) . arg ( peer . reason ) ;
2015-01-06 02:48:24 +03:00
else
2015-02-08 16:43:14 +03:00
text = " <font color='grey'> " + time . toString ( Qt : : SystemLocaleShortDate ) + " </font> - " + tr ( " <font color='red'>%1</font> was banned " , " x.y.z.w was banned " ) . arg ( peer . ip ) ;
2015-01-06 02:25:56 +03:00
2016-01-24 22:38:45 +03:00
m_peerList - > appendLine ( text , Log : : NORMAL ) ;
2010-12-20 21:07:36 +03:00
}