You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ksystemlog/ksystemlog/src/reader.cpp

160 lines
4.5 KiB

/***************************************************************************
* 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 <tqpixmap.h>
#include <tdelocale.h>
#include <kiconloader.h>
#include <tdemessagebox.h>
#include <kdebug.h>
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"