#include "logviewer.h" #include "logger.h" #include #include #include #include #include #include #include #include #include //#include // ### soundkonverter 0.4: make sub items for the output LogViewerItem::LogViewerItem( KListView* tqparent, LogViewerItem* after, TQString label1 ) : KListViewItem( tqparent, after, label1 ) { converting = false; } LogViewerItem::LogViewerItem( LogViewerItem* tqparent, LogViewerItem* after, TQString label1 ) : KListViewItem( tqparent, after, label1 ) { converting = false; } LogViewerItem::~LogViewerItem() {} void LogViewerItem::paintCell( TQPainter *p, const TQColorGroup &cg, int column, int width, int tqalignment ) { // NOTE calculate the red color TQColorGroup _cg( cg ); TQColor c; if( isSelected() && converting ) { _cg.setColor( TQColorGroup::Highlight, TQColor( 215, 62, 62 ) ); TQListViewItem::paintCell( p, _cg, column, width, tqalignment ); return; } else if( converting && column != listView()->sortColumn() ) { _cg.setColor( TQColorGroup::Base, TQColor( 255, 234, 234 ) ); TQListViewItem::paintCell( p, _cg, column, width, tqalignment ); return; } else if( converting && column == listView()->sortColumn() ) { _cg.setColor( TQColorGroup::Base, TQColor( 247, 227, 227 ) ); TQListViewItem::paintCell( p, _cg, column, width, tqalignment ); return; } KListViewItem::paintCell( p, _cg, column, width, tqalignment ); } LogViewerList::LogViewerList( TQWidget* tqparent, const char* name ) : KListView( tqparent, name ) {} LogViewerList::~LogViewerList() {} LogViewer::LogViewer( Logger* _logger, TQWidget *tqparent, const char *name, bool modal, WFlags f ) : KDialog( tqparent, name, modal, f ) { logger = _logger; connect( logger, TQT_SIGNAL(removedProcess(int)), this, TQT_SLOT(processRemoved(int)) ); connect( logger, TQT_SIGNAL(updateProcess(int)), this, TQT_SLOT(updateProcess(int)) ); // create an icon loader object for loading icons KIconLoader* iconLoader = new KIconLoader(); setCaption( i18n("Log Viewer") ); resize( 600, 400 ); setIcon( iconLoader->loadIcon("view_text",KIcon::Small) ); TQGridLayout *grid = new TQGridLayout( this, 4, 1, 11, 6 ); lLogs = new LogViewerList( this, "lLogs" ); lLogs->addColumn( i18n("Job/File") ); //lLogs->setSelectionMode( TQListView::Extended ); //lLogs->setAllColumnsShowFocus( true ); lLogs->setResizeMode( TQListView::LastColumn ); lLogs->setSorting( -1 ); lLogs->setRootIsDecorated( true ); lLogs->header()->setClickEnabled( false ); grid->addWidget( lLogs, 0, 0 ); TQHBoxLayout *buttonBox = new TQHBoxLayout(); grid->addLayout( buttonBox, 3, 0 ); pReload = new KPushButton(iconLoader->loadIcon("reload",KIcon::Small), i18n("Reload"), this, "pReload" ); buttonBox->addWidget( pReload ); connect( pReload, TQT_SIGNAL(clicked()), this, TQT_SLOT(refillLogs()) ); buttonBox->addStretch(); pOk = new KPushButton(iconLoader->loadIcon("exit",KIcon::Small), i18n("Close"), this, "pOk" ); pOk->setFocus(); buttonBox->addWidget( pOk ); connect( pOk, TQT_SIGNAL(clicked()), this, TQT_SLOT(accept()) ); // delete the icon loader object delete iconLoader; refillLogs(); } LogViewer::~LogViewer() {} void LogViewer::refillLogs() { LogViewerItem *tqparent = 0, *last = 0; lLogs->clear(); TQValueList logs = logger->getLogs(); for( TQValueList::Iterator a = logs.begin(); a != logs.end(); ++a ) { tqparent = new LogViewerItem( lLogs, tqparent, KURL::decode_string((*a)->filename).replace("%2f","/").replace("%%","%") + " - " + TQString::number((*a)->id) ); tqparent->converting = !(*a)->completed; //tqparent->setOpen( true ); last = 0; for( TQStringList::Iterator b = (*a)->data.begin(); b != (*a)->data.end(); ++b ) { last = new LogViewerItem( tqparent, last, *b ); last->setMultiLinesEnabled( true ); last->converting = !(*a)->completed; } } } void LogViewer::processRemoved( int id ) { LoggerItem* item = logger->getLog( id ); // this is ok, because the item still exists. // it will be deleted after is function is completed TQListViewItem* it = lLogs->firstChild(); while( it != 0 ) { if( it->text(0) == KURL::decode_string(item->filename).replace("%2f","/").replace("%%","%") + " - " + TQString::number(item->id) ) { delete it; return; } it = it->nextSibling(); } } void LogViewer::updateProcess( int id ) { LoggerItem* item = logger->getLog( id ); LogViewerItem* it = lLogs->firstChild(); LogViewerItem *lastItem = 0, *oldItem = 0; while( it != 0 ) { if( it->text(0) == KURL::decode_string(item->filename).replace("%2f","/").replace("%%","%") + " - " + TQString::number(item->id) ) { LogViewerItem *a = it->firstChild(), *b; while( a != 0 ) { b = a->nextSibling(); delete a; a = b; } it->converting = !item->completed; LogViewerItem* last = 0; for( TQStringList::Iterator b = item->data.begin(); b != item->data.end(); ++b ) { last = new LogViewerItem( (LogViewerItem*)it, last, *b ); last->setMultiLinesEnabled( true ); } return; } it = it->nextSibling(); } LogViewerItem *tqparent = 0; // get the last list view item for( TQListViewItem* it = lLogs->firstChild(); it != 0; it = it->nextSibling() ) { lastItem = (LogViewerItem*)it; } tqparent = new LogViewerItem( lLogs, lastItem, KURL::decode_string(item->filename).replace("%2f","/").replace("%%","%") + " - " + TQString::number(item->id) ); tqparent->converting = !item->completed; LogViewerItem* last = 0; for( TQStringList::Iterator b = item->data.begin(); b != item->data.end(); ++b ) { last = new LogViewerItem( tqparent, last, *b ); last->setMultiLinesEnabled( true ); } }