summaryrefslogtreecommitdiff
path: root/noncore/settings/sysinfo/modulesinfo.cpp
Side-by-side diff
Diffstat (limited to 'noncore/settings/sysinfo/modulesinfo.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/sysinfo/modulesinfo.cpp71
1 files changed, 41 insertions, 30 deletions
diff --git a/noncore/settings/sysinfo/modulesinfo.cpp b/noncore/settings/sysinfo/modulesinfo.cpp
index a0d26c7..c558fad 100644
--- a/noncore/settings/sysinfo/modulesinfo.cpp
+++ b/noncore/settings/sysinfo/modulesinfo.cpp
@@ -21,10 +21,14 @@
#include <qpe/qpeapplication.h>
+#include <qcombobox.h>
#include <qfile.h>
#include <qheader.h>
#include <qlayout.h>
#include <qlistview.h>
+#include <qmessagebox.h>
+#include <qpushbutton.h>
+#include <qstring.h>
#include <qtimer.h>
#include <qwhatsthis.h>
@@ -33,9 +37,11 @@
ModulesInfo::ModulesInfo( QWidget* parent, const char* name, WFlags fl )
: QWidget( parent, name, fl )
{
- QVBoxLayout *layout = new QVBoxLayout( this, 5 );
+ QGridLayout *layout = new QGridLayout( this );
+ layout->setSpacing( 4 );
+ layout->setMargin( 4 );
- ModulesView = new QListView( this, "ModulesView" );
+ ModulesView = new QListView( this );
int colnum = ModulesView->addColumn( tr( "Module" ) );
colnum = ModulesView->addColumn( tr( "Size" ) );
ModulesView->setColumnAlignment( colnum, Qt::AlignRight );
@@ -43,20 +49,29 @@ ModulesInfo::ModulesInfo( QWidget* parent, const char* name, WFlags fl )
ModulesView->setColumnAlignment( colnum, Qt::AlignRight );
colnum = ModulesView->addColumn( tr( "Used By" ) );
ModulesView->setAllColumnsShowFocus( TRUE );
- QPEApplication::setStylusOperation( ModulesView->viewport(), QPEApplication::RightOnHold );
- connect( ModulesView, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint &, int ) ),
- this, SLOT( viewModules( QListViewItem * ) ) );
- layout->addWidget( ModulesView );
+ layout->addMultiCellWidget( ModulesView, 0, 0, 0, 1 );
QWhatsThis::add( ModulesView, tr( "This is a list of all the kernel modules currently loaded on this handheld device.\n\nClick and hold on a module to see additional information about the module, or to unload it." ) );
+ CommandCB = new QComboBox( FALSE, this );
+ CommandCB->insertItem( "modprobe -r" );
+ CommandCB->insertItem( "rmmod" );
+ // I can't think of other useful commands yet. Anyone?
+ layout->addWidget( CommandCB, 1, 0 );
+ QWhatsThis::add( CommandCB, tr( "Select a command here and then click the Send button to the right to send the command to module selected above." ) );
+
+ QPushButton *btn = new QPushButton( this );
+ btn->setMinimumSize( QSize( 50, 24 ) );
+ btn->setMaximumSize( QSize( 50, 24 ) );
+ btn->setText( tr( "Send" ) );
+ connect( btn, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) );
+ layout->addWidget( btn, 1, 1 );
+ QWhatsThis::add( btn, tr( "Click here to send the selected command to the module selected above." ) );
+
QTimer *t = new QTimer( this );
connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) );
t->start( 5000 );
updateData();
-
- ModulesDtl = new ModulesDetail( 0, 0, 0 );
- ModulesDtl->ModulesView->setTextFormat( PlainText );
}
ModulesInfo::~ModulesInfo()
@@ -93,30 +108,26 @@ void ModulesInfo::updateData()
}
}
-void ModulesInfo::viewModules( QListViewItem *modules )
-{
- QString modname = modules->text( 0 );
- ModulesDtl->setCaption( QString( "Module: " ) + modname );
- ModulesDtl->modname = modname;
- QString command = QString( "/sbin/modinfo " ) + modules->text( 0 );
-
- FILE* modinfo = popen( command, "r" );
-
- if ( modinfo )
+void ModulesInfo::slotSendClicked()
{
- char line[200];
- ModulesDtl->ModulesView->setText( " Details:\n------------\n" );
+ QString capstr = tr( "You really want to execute\n" );
+ capstr.append( CommandCB->currentText() );
+ capstr.append( "\nfor this module?" );
- while( true )
+ if ( QMessageBox::warning( this, caption(), capstr,
+ QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape ) == QMessageBox::Yes )
{
- int success = fscanf( modinfo, "%[^\n]\n", line );
- if ( success == EOF )
- break;
- ModulesDtl->ModulesView->append( line );
- }
-
- pclose( modinfo );
+ QString command = "/sbin/";
+ command.append( CommandCB->currentText() );
+ command.append( " " );
+ command.append( ModulesView->currentItem()->text( 0 ) );
+
+ FILE* stream = popen( command, "r" );
+ if ( stream )
+ pclose( stream );
+ //{
+ // hide();
+ //}
}
- ModulesDtl->showMaximized();
}