diff options
| author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-12-06 12:36:58 -0600 | 
|---|---|---|
| committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-12-06 12:36:58 -0600 | 
| commit | d08a0ede1d2cb15bb14b0ff75eacf5c682b1fa0a (patch) | |
| tree | e5ce4701bac540038a279b4e208c86390a24ba11 /src/logviewerdialog.cpp | |
| download | kvpnc-d08a0ede1d2cb15bb14b0ff75eacf5c682b1fa0a.tar.gz kvpnc-d08a0ede1d2cb15bb14b0ff75eacf5c682b1fa0a.zip | |
Initial import of year-and-a-half-old upstream version 0.9.6a
Diffstat (limited to 'src/logviewerdialog.cpp')
| -rw-r--r-- | src/logviewerdialog.cpp | 275 | 
1 files changed, 275 insertions, 0 deletions
| diff --git a/src/logviewerdialog.cpp b/src/logviewerdialog.cpp new file mode 100644 index 0000000..dbedf89 --- /dev/null +++ b/src/logviewerdialog.cpp @@ -0,0 +1,275 @@ +/*************************************************************************** + *   Copyright (C) 2004 by Christoph Thielecke                             * + *   crissi99@gmx.de                                                       * + *                                                                         * + *   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.,                                       * + *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * + ***************************************************************************/ +#include "logviewerdialog.h" +#include <klocale.h> +#include <klistview.h> +#include <qpixmap.h> +#include <kglobal.h> +#include <qstring.h> +#include <qcursor.h> +#include <kiconloader.h> +#include <kstddirs.h> +#include <ktextbrowser.h> +#include <knuminput.h> +#include <kpushbutton.h> +#include <klineedit.h> +#include <kprogress.h> +#include <iostream> +#include <kvpnc.h> +#include <qfile.h> +#include <qtextstream.h> +#include <kmessagebox.h> + +LogViewerDialog::LogViewerDialog(QWidget *parent, QApplication *app, KVpncConfig *GlobalConfig,const QString& caption, int count) : KDialogBase( parent, "Show_log", false, caption, +KDialogBase::Ok|KDialogBase::Cancel,KDialogBase::Ok, true ) +{ +	main = new LogViewerDialogBase (this); +	setMainWidget(main); +	//	main->setMinimumSize(main->sizeHint()); +	main->setMinimumSize(750,500); +	main->LineCountIntSpinBox->setValue(count); + +	this->GlobalConfig = GlobalConfig; +	this->app = app; + +	// 	QPixmap info_icon = KGlobal::iconLoader()->loadIcon( "button_ok", KIcon::NoGroup, 16 ); +	// 	QPixmap debug_icon = KGlobal::iconLoader()->loadIcon( "button_cancel", KIcon::NoGroup, 16 ); +	// 	QPixmap error_icon = KGlobal::iconLoader()->loadIcon( "button_ok", KIcon::NoGroup, 16 ); +	// 	QPixmap debug_icon = KGlobal::iconLoader()->loadIcon( "button_cancel", KIcon::NoGroup, 16 ); + +	//	InfoListView->setSorting(1); + +	connect (main->LineCountApplyPushButton,SIGNAL(clicked()),this, SLOT(updateLineCountClicked())); +	connect (main->FindPushButton,SIGNAL(clicked()),this, SLOT(findLogEntryClicked())); + +	QApplication::setOverrideCursor( QCursor(Qt::WaitCursor) ); +	parseLog(); +	QApplication::restoreOverrideCursor(); + +	showLogPart(count*-1,count); + } +LogViewerDialog::~LogViewerDialog() +{} + +void LogViewerDialog::accept() +{ +	QDialog::accept(); +} + + +void LogViewerDialog::parseLog() +{ + +	KStandardDirs *dirs = KGlobal::dirs(); +	QString logfileName = dirs->saveLocation( "data" ); +	logfileName += "/kvpnc/kvpnc.log"; +	QFile logfile; +	int linecount=0; +	//std::cout << "file exists: " << logfile.exists() << std::endl; +	logfile.setName( logfileName ); + +	if (logfile.open(IO_ReadOnly )) +	{ +		char *tmpbuf= new char[500]; +		int localcount=0; +		while (logfile.readLine(tmpbuf, 500) > -1) +		{ +			linecount++; +			localcount++; +			if (localcount == 50) +			{ +				localcount=0; +				app->processEvents(); +			} +		} +		logfile.close(); +		delete tmpbuf; +	} + +// 	std::cout << "count: " << linecount << std::endl; + +	KProgressDialog *ProgressDlg = new KProgressDialog (0, "loadprogress", i18n("Load progress"), i18n("Loading log..."), true); +	ProgressDlg->progressBar()->setTotalSteps(linecount); +	ProgressDlg->show(); +	ProgressDlg->resize(ProgressDlg->width()+100,ProgressDlg->height()); + +	if (logfile.open(IO_ReadOnly )) +	{ +		QTextStream stream( &logfile ); +		QString line; +		QString lines; +		QString prefix; +		QString postfix; +// 		int type=0; +		int i=0; +		int localcount=0; +		while ( !stream.atEnd() ) +		{ +			line = stream.readLine(); // line of text excluding '\n' +			LogList.append(line); +			i++; +			localcount++; +			ProgressDlg->progressBar()->setValue(i); +			if (localcount == 100) +			{ +				localcount=0; +				app->processEvents(); +			} +		} +		logfile.close(); +		main->LineCountIntSpinBox->setMaxValue(i); +	} +	ProgressDlg->close(); + +} + +void LogViewerDialog::updateLineCountClicked() +{ +	int count = main->LineCountIntSpinBox->value(); +	main->LogTextBrowser->clear(); +	showLogPart(count*-1,count); +} + +/** + *  + * @param start  + * @param count  + */ +void LogViewerDialog::showLogPart(int start,int count, bool parseLogType) +{ +	int startval=0; +	if (start < 0) +	{ +		// startval entries from end + +	if (int(LogList.count()+start-1) < 0) +		startval = 0; +	else +		startval= LogList.count()-1+start; +	if (count+start > 0) +		count = LogList.count()-1; +		 +	} +	else if (start > 0) +	{ + + + +	} + + +// 	QString msg = QString("start: "); +// 	msg+=QString().setNum(startval); +// 	msg+=QString(", count: "); +// 	msg+=QString().setNum(count); +// 	msg+=QString(", loglist.count: "); +// 	msg+=QString().setNum(LogList.count()); +// 	KMessageBox::information(0,msg,"aaa"); +	 + +	for ( int index = startval;index <= startval+count;index++) +	{ +		QString prefix=""; +		QString postfix=""; +		int type=KVpncConfig::info; +		QString line = LogList[index]; +		if (!line.isEmpty()) +		{ +			if (parseLogType) +			{ +				if (line.find(i18n("Info:"),0, FALSE) > -1 ) +				{ +					type = KVpncConfig::info; +				} +				else if (line.find(i18n("Debug:"),0, FALSE) > -1 ) +				{ +					type = KVpncConfig::debug; +				} +				// 			else +				// 			if (line.find("remote",0, FALSE) > -1 ) +				// 			{ +				// 				type = KVpncConfig::remote; +				// 			} +				else +					if (line.find(i18n("Error:"),0, FALSE) > -1 ) +					{ +						type = KVpncConfig::error; +					} +				// 			else +				// 			if (line.find("success",0, FALSE) > -1 ) +				// 			{ +				// 				type = KVpncConfig::success; +				// 			} + + +				prefix+="<font color=\""; + +				switch ( type ) +				{ +						case KVpncConfig::info: +						prefix+=GlobalConfig->InfoLogColor.name(); +						prefix+="\">"; +	// 					prefix+=i18n("info")+": "; +						break; +						case KVpncConfig::remote: +						prefix+=GlobalConfig->RemoteLogColor.name(); +						prefix+="\">"; +	// 					prefix+=i18n("remote")+": "; +						break; +						case KVpncConfig::error: +						prefix+=GlobalConfig->ErrorLogColor.name(); +						prefix+="\">"; +	// 					prefix+=i18n("error")+": "; +						break; +						case KVpncConfig::success: +						prefix+=GlobalConfig->SuccessLogColor.name(); +						prefix+="\">"; +	// 					prefix+=i18n("success")+": "; +						break; +						case KVpncConfig::debug: +						prefix+=GlobalConfig->DebugLogColor.name(); +						prefix+="\">"; +	// 					prefix+=i18n("debug")+": "; +						break; +				} + +				postfix+="</font>"; +				main->LogTextBrowser->append( QString().setNum(index)+" "+prefix+line+postfix) ; +			} +			else +			{ +				main->LogTextBrowser->append( QString().setNum(index)+" "+line) ; +			} +		} +	} +} + +void LogViewerDialog::find(QString what) +{ +	bool casesense=false; +	bool whooleword=false; +	main->LogTextBrowser->find(what,casesense,whooleword); +} + +void LogViewerDialog::findLogEntryClicked() +{ +	find(main->SearchLineEdit->text()); +} + | 
