-rw-r--r-- | noncore/settings/sysinfo/devicesinfo.cpp | 22 | ||||
-rw-r--r-- | noncore/settings/sysinfo/devicesinfo.h | 8 |
2 files changed, 27 insertions, 3 deletions
diff --git a/noncore/settings/sysinfo/devicesinfo.cpp b/noncore/settings/sysinfo/devicesinfo.cpp index 4bce65f..f1efb33 100644 --- a/noncore/settings/sysinfo/devicesinfo.cpp +++ b/noncore/settings/sysinfo/devicesinfo.cpp @@ -52,87 +52,105 @@ DevicesView::DevicesView( QWidget* parent, const char* name, WFlags fl ) :Opie::Ui::OListView( parent, name, fl ) { addColumn( tr( "My Computer" ) ); setAllColumnsShowFocus( true ); setRootIsDecorated( true ); QWhatsThis::add( this, tr( "This is a list of all the devices currently recognized on this device." ) ); DevicesView* root = this; ( new CpuCategory( root ) )->populate(); ( new InputCategory( root ) )->populate(); ( new CardsCategory( root ) )->populate(); ( new UsbCategory( root ) )->populate(); connect( this, SIGNAL(selectionChanged(QListViewItem*)), this, SLOT(selectionChanged(QListViewItem*)) ); } DevicesView::~DevicesView() { } void DevicesView::selectionChanged( QListViewItem* item ) { odebug << "DevicesView::selectionChanged to '" << item->text( 0 ) << "'" << oendl; + QWidget* details = ( static_cast<Device*>( item ) )->detailsWidget(); + ( static_cast<DevicesInfo*>( parent() ) )->setDetailsWidget( details ); } //================================================================================================= DevicesInfo::DevicesInfo( QWidget* parent, const char* name, WFlags fl ) - :QWidget( parent, name, fl ) + :QWidget( parent, name, fl ), details( 0 ) { - OAutoBoxLayout *layout = new OAutoBoxLayout( this ); + layout = new OAutoBoxLayout( this ); layout->setSpacing( 4 ); layout->setMargin( 4 ); view = new DevicesView( this ); layout->addWidget( view ); } + DevicesInfo::~DevicesInfo() { } +void DevicesInfo::setDetailsWidget( QWidget* w ) +{ + if ( details ) delete( details ); + layout->addWidget( w ); + w->show(); +} + + +//================================================================================================= Category::Category( DevicesView* parent, const QString& name ) :OListViewItem( parent, name ) { odebug << "Category '" << name << "' inserted. Scanning for devices..." << oendl; } Category::~Category() { } //================================================================================================= Device::Device( Category* parent, const QString& name ) :OListViewItem( parent, name ) { } Device::~Device() { } +QWidget* Device::detailsWidget() +{ + return new QPushButton( static_cast<QWidget*>( listView()->parent() ), "Press Button to self-destruct" ); +} + + //================================================================================================= CpuCategory::CpuCategory( DevicesView* parent ) :Category( parent, "1. Central Processing Unit" ) { } CpuCategory::~CpuCategory() { } void CpuCategory::populate() { odebug << "CpuCategory::populate()" << oendl; QFile cpuinfofile( "/proc/cpuinfo" ); if ( !cpuinfofile.exists() || !cpuinfofile.open( IO_ReadOnly ) ) { new OListViewItem( this, "ERROR: /proc/cpuinfo not found or unaccessible" ); return; } QTextStream cpuinfo( &cpuinfofile ); int cpucount = 0; while ( !cpuinfo.atEnd() ) { diff --git a/noncore/settings/sysinfo/devicesinfo.h b/noncore/settings/sysinfo/devicesinfo.h index 262af31..b065f40 100644 --- a/noncore/settings/sysinfo/devicesinfo.h +++ b/noncore/settings/sysinfo/devicesinfo.h @@ -10,93 +10,99 @@ _;:, .> :=|. This program is free software; you can - . .-<_> .<> Foundation; version 2 of the License. ._= =} : .%`+i> _;_. .i_,=:_. -<s. 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 application; see the file LICENSE.GPL. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef DEVICESINFO_H #define DEVICESINFO_H /* OPIE */ #include <opie2/olistview.h> +#include <opie2/olayout.h> /* QT */ #include <qwidget.h> //================================================================================================= class DevicesView : public Opie::Ui::OListView { Q_OBJECT public: DevicesView( QWidget* parent = 0, const char* name = 0, WFlags f = 0 ); ~DevicesView(); public slots: void selectionChanged( QListViewItem* item ); }; //================================================================================================= class DevicesInfo : public QWidget { Q_OBJECT public: DevicesInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); ~DevicesInfo(); + void setDetailsWidget( QWidget* w = 0 ); + private: + Opie::Ui::OAutoBoxLayout* layout; Opie::Ui::OListView* view; - + QWidget* details; private slots: }; //================================================================================================= class Category : public Opie::Ui::OListViewItem { public: Category( DevicesView* parent, const QString& name ); virtual ~Category(); virtual void populate() = 0; }; //================================================================================================= class Device : public Opie::Ui::OListViewItem { public: Device( Category* parent, const QString& name ); ~Device(); + + QWidget* detailsWidget(); }; //================================================================================================= class CpuCategory : public Category { public: CpuCategory( DevicesView* parent ); virtual ~CpuCategory(); virtual void populate(); }; //================================================================================================= class InputCategory : public Category { public: InputCategory( DevicesView* parent ); virtual ~InputCategory(); virtual void populate(); }; //================================================================================================= class CardsCategory : public Category |