/*************************************************************************** * Copyright (C) 2005 by Nicolas Ternisien * * nicolas.ternisien@gmail.com * * * * 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. * ***************************************************************************/ #include "reader.h" #include "view.h" #include #include #include #include #include Reader::Reader(TQObject *parent, const char *name) : TQObject(parent, name), logManager(NULL) { watch=new KDirWatch(); kdDebug() << watch->internalMethod() << endl; connect(watch, TQ_SIGNAL(dirty(const TQString&)), this, TQ_SLOT(logChanged(const TQString&))); } Reader::~Reader() { /** * Remove the watching on the monitored files */ LogFiles& files=logManager->getLogFiles(); LogFiles::iterator it; for(it=files.begin(); it!=files.end(); ++it) { LogFile* file=*it; kdDebug() << "Remove the monitoring on file : " << file->url.path() << endl; watch->removeFile(file->url.path()); } //Delete the watching object delete watch; } void Reader::setLogManager(LogManager* manager) { logManager=manager; } void Reader::watchLogFiles() { LogFiles& files=logManager->getLogFiles(); LogFiles::iterator it; for(it=files.begin(); it!=files.end(); ++it) { LogFile* file=*it; watchLogFile(file); } } void Reader::watchLogFile(LogFile* file) { kdDebug() << "Monitoring file : " << file->url.path() << endl; watch->addFile(file->url.path()); } void Reader::logChanged(LogFile* file) { kdDebug() << "Reader: " << file->url.path() << " has changed !" << endl; } void Reader::relaunchLogChanged() { kdDebug() << "Relaunch log changed" << endl; LogFiles& files=logManager->getLogFiles(); LogFiles::iterator it; for(it=files.begin(); it!=files.end(); ++it) { LogFile* file=*it; logChanged(file); } } void Reader::logChanged(const TQString& name) { if (!logManager->isParsingPaused()) { LogFiles& files=logManager->getLogFiles(); LogFiles::iterator it; for(it=files.begin(); it!=files.end(); ++it) { LogFile* file=*it; if (file->url.path() == name) { logChanged(file); } } } } void Reader::closeFile(TQFile* file) { file->close(); delete file; } TQFile* Reader::openFile(TQString name) { TQString message; KURL testURL(name); if (testURL.isValid()==false) { message=i18n("This file is not valid. Please adjust it in the settings of KSystemLog."); KMessageBox::error(logManager->getView(), message, i18n("The File Does Not Exist"), KMessageBox::Notify); emit statusbarChanged(message); return(NULL); } TQString path=testURL.path(); TQFile* file=new TQFile(path); //If the file does not exist if(! file->exists()) { message=i18n("The file '%1' does not exist.").arg(name); KMessageBox::error(logManager->getView(), message, i18n("The File Does Not Exist"), KMessageBox::Notify); emit statusbarChanged(message); return(NULL); } //If we can open the file if( !file->open( IO_ReadOnly ) ) { //It could not be opened message=i18n("You do not have sufficient permissions to read '%1'.").arg(name); KMessageBox::error(logManager->getView(), message, i18n("Insufficient Permissions"), KMessageBox::Notify); emit statusbarChanged(message); return(NULL); } return(file); } #include "reader.moc"