summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/sysinfo/sysinfo.cpp9
-rw-r--r--noncore/settings/sysinfo/sysinfo.pro4
-rw-r--r--noncore/settings/sysinfo/sysloginfo.cpp116
-rw-r--r--noncore/settings/sysinfo/sysloginfo.h42
4 files changed, 166 insertions, 5 deletions
diff --git a/noncore/settings/sysinfo/sysinfo.cpp b/noncore/settings/sysinfo/sysinfo.cpp
index 4c58999..7000175 100644
--- a/noncore/settings/sysinfo/sysinfo.cpp
+++ b/noncore/settings/sysinfo/sysinfo.cpp
@@ -27,19 +27,21 @@
#include "storage.h"
#include "processinfo.h"
#include "modulesinfo.h"
#include "benchmarkinfo.h"
+#include "sysloginfo.h"
#include "versioninfo.h"
#include "sysinfo.h"
+/* OPIE */
#include <opie2/otabwidget.h>
-
+using namespace Opie::Ui;
#include <qpe/config.h>
#include <qpe/resource.h>
+/* QT */
#include <qlayout.h>
-using namespace Opie::Ui;
SystemInfo::SystemInfo( QWidget *parent, const char *name, WFlags )
: QWidget( parent, name, WStyle_ContextHelp )
{
setIcon( Resource::loadPixmap( "system_icon" ) );
@@ -64,11 +66,10 @@ SystemInfo::SystemInfo( QWidget *parent, const char *name, WFlags )
{
tab->addTab( new ProcessInfo( tab ), "sysinfo/processtabicon", tr("Process") );
tab->addTab( new ModulesInfo( tab ), "sysinfo/moduletabicon", tr("Modules") );
}
+ tab->addTab( new SyslogInfo( tab ), "sysinfo/syslogtabicon", tr( "Syslog" ) );
tab->addTab( new BenchmarkInfo( tab ), "sysinfo/benchmarktabicon", tr( "Benchmark" ) );
tab->addTab( new VersionInfo( tab ), "sysinfo/versiontabicon", tr("Version") );
tab->setCurrentTab( tr( "Memory" ) );
}
-
-
diff --git a/noncore/settings/sysinfo/sysinfo.pro b/noncore/settings/sysinfo/sysinfo.pro
index dd35563..e92d725 100644
--- a/noncore/settings/sysinfo/sysinfo.pro
+++ b/noncore/settings/sysinfo/sysinfo.pro
@@ -8,8 +8,9 @@ HEADERS = \
modulesinfo.h \
detail.h \
contrib/dhry.h \
benchmarkinfo.h \
+ sysloginfo.h \
versioninfo.h \
sysinfo.h
SOURCES = main.cpp \
memory.cpp \
@@ -20,15 +21,16 @@ SOURCES = main.cpp \
modulesinfo.cpp \
detail.cpp \
contrib/dhry.c contrib/fft.c \
benchmarkinfo.cpp \
+ sysloginfo.cpp \
versioninfo.cpp \
sysinfo.cpp
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/include
LIBS += -lqpe -lopiecore2 -lopieui2
DEFINES += UNIX
TARGET = sysinfo
-VERSION = 1.1.1
+VERSION = 1.2.0
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/settings/sysinfo/sysloginfo.cpp b/noncore/settings/sysinfo/sysloginfo.cpp
new file mode 100644
index 0000000..89c04e0
--- a/dev/null
+++ b/noncore/settings/sysinfo/sysloginfo.cpp
@@ -0,0 +1,116 @@
+/**********************************************************************
+** SyslogInfo
+**
+** Display Syslog information
+**
+** Copyright (C) 2004, Michael Lauer
+** mickey@tm.informatik.uni-frankfurt.de
+** http://www.Vanille.de
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#include "sysloginfo.h"
+#include "detail.h"
+
+/* OPIE */
+#include <opie2/olistview.h>
+#include <qpe/qpeapplication.h>
+using namespace Opie::Ui;
+
+/* QT */
+#include <qcombobox.h>
+#include <qfile.h>
+#include <qlayout.h>
+#include <qmessagebox.h>
+#include <qpushbutton.h>
+#include <qsocketnotifier.h>
+#include <qtextbrowser.h>
+#include <qtimer.h>
+#include <qwhatsthis.h>
+#include <qtextview.h>
+
+/* STD */
+#include <sys/klog.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <assert.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+
+#define SYSLOG_READ 2
+#define SYSLOG_READ_ALL 3
+#define SYSLOG_READ_ALL_CLEAR 4
+#define SYSLOG_UNREAD 9
+
+#undef APPEND
+
+const unsigned int bufsize = 16384;
+char buf[bufsize];
+
+SyslogInfo::SyslogInfo( QWidget* parent, const char* name, WFlags fl )
+ : QWidget( parent, name, fl )
+{
+ QGridLayout *layout = new QGridLayout( this );
+ layout->setSpacing( 4 );
+ layout->setMargin( 4 );
+
+ syslogview = new QTextView( this );
+ syslogview->setTextFormat( PlainText );
+ syslogview->setFont( QFont( "Fixed" ) );
+ layout->addWidget( syslogview, 0, 0 );
+ syslogview->setText( "..." );
+
+ memset( buf, 0, bufsize );
+ ::klogctl( SYSLOG_READ_ALL, buf, bufsize );
+ syslogview->setText( buf );
+
+#ifdef APPEND
+ fd = ::open( "/proc/kmsg", O_RDONLY|O_SYNC );
+ if ( fd == -1 )
+ {
+ syslogview->setText( "Couldn't open /proc/kmsg: " + QString( strerror( errno ) ) );
+ return;
+ }
+ QSocketNotifier *sn = new QSocketNotifier( fd, QSocketNotifier::Read, this );
+ QObject::connect( sn, SIGNAL(activated(int)), this, SLOT(updateData()) );
+#else
+ QPushButton* pb = new QPushButton( "&Refresh", this );
+ layout->addWidget( pb, 1, 0 );
+ QObject::connect( pb, SIGNAL(clicked()), this, SLOT(updateData()) );
+#endif
+}
+
+SyslogInfo::~SyslogInfo()
+{
+ if ( fd != -1 ) ::close( fd );
+}
+
+void SyslogInfo::updateData()
+{
+ qDebug( "SyslogInfo: updateData" );
+#ifdef APPEND
+ memset( buf, 0, bufsize );
+ int num = ::read( fd, buf, bufsize );
+ if ( num ) // -1 = error (permission denied)
+ {
+ syslogview->append( "\n" );
+ syslogview->append( buf );
+ qDebug( "SyslogInfo: adding '%s'", buf );
+ }
+#else
+ memset( buf, 0, bufsize );
+ ::klogctl( SYSLOG_READ_ALL, buf, bufsize );
+ syslogview->setText( buf );
+ syslogview->ensureVisible( 0, syslogview->contentsHeight() );
+#endif
+}
diff --git a/noncore/settings/sysinfo/sysloginfo.h b/noncore/settings/sysinfo/sysloginfo.h
new file mode 100644
index 0000000..7bf8d17
--- a/dev/null
+++ b/noncore/settings/sysinfo/sysloginfo.h
@@ -0,0 +1,42 @@
+/**********************************************************************
+** SyslogInfo
+**
+** Display Syslog information
+**
+** Copyright (C) 2004, Michael Lauer
+** mickey@tm.informatik.uni-frankfurt.de
+** http://www.Vanille.de
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#ifndef SYSLOGINFO_H
+#define SYSLOGINFO_H
+
+#include <qwidget.h>
+
+class QTextView;
+
+class SyslogInfo : public QWidget
+{
+ Q_OBJECT
+public:
+ SyslogInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
+ ~SyslogInfo();
+
+private:
+ QTextView* syslogview;
+ int fd;
+
+private slots:
+ void updateData();
+};
+
+#endif