summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/cardmon/cardmon.cpp57
-rw-r--r--core/applets/cardmon/cardmon.h8
2 files changed, 38 insertions, 27 deletions
diff --git a/core/applets/cardmon/cardmon.cpp b/core/applets/cardmon/cardmon.cpp
index 43ccce2..fb140fe 100644
--- a/core/applets/cardmon/cardmon.cpp
+++ b/core/applets/cardmon/cardmon.cpp
@@ -103,17 +103,18 @@ void CardMonitor::popUp( QString message, QString icon ) {
103} 103}
104 104
105void CardMonitor::popupTimeout() { 105void CardMonitor::popupTimeout() {
106 popupMenu->hide(); 106 popupMenu->hide();
107} 107}
108 108
109void CardMonitor::mousePressEvent( QMouseEvent * ) { 109void CardMonitor::mousePressEvent( QMouseEvent * ) {
110 QPopupMenu * menu = new QPopupMenu( this ); 110 QPopupMenu * menu = new QPopupMenu( this );
111 QString cmd; 111 QStringList cmd;
112 bool execute = true;
112 113
113 if ( cardInSd ) { 114 if ( cardInSd ) {
114 menu->insertItem( QIconSet( Resource::loadPixmap( "cardmon/ide" ) ), 115 menu->insertItem( QIconSet( Resource::loadPixmap( "cardmon/ide" ) ),
115 tr( "Eject SD/MMC card" ), 0 ); 116 tr( "Eject SD/MMC card" ), 0 );
116 } 117 }
117 118
118 if ( cardInPcmcia0 ) { 119 if ( cardInPcmcia0 ) {
119 menu-> 120 menu->
@@ -130,25 +131,30 @@ void CardMonitor::mousePressEvent( QMouseEvent * ) {
130 } 131 }
131 132
132 QPoint p = mapToGlobal( QPoint( 0, 0 ) ); 133 QPoint p = mapToGlobal( QPoint( 0, 0 ) );
133 QSize s = menu->sizeHint(); 134 QSize s = menu->sizeHint();
134 int opt = menu->exec( QPoint( p.x() + ( width() / 2 ) - ( s.width() / 2 ), 135 int opt = menu->exec( QPoint( p.x() + ( width() / 2 ) - ( s.width() / 2 ),
135 p.y() - s.height() ), 0 ); 136 p.y() - s.height() ), 0 );
136 137
137 if ( opt == 1 ) { 138 if ( opt == 1 ) {
138 m_commandOrig = 1; 139 m_commandOrig = PCMCIA_Socket1;
139 execCommand("/sbin/cardctl eject 0"); 140 cmd << "/sbin/cardctl" << "eject" << "0";
140 } else if ( opt == 0 ) { 141 } else if ( opt == 0 ) {
141 m_commandOrig = 2; 142 m_commandOrig = MMC_Socket;
142 execCommand( QString("umount %1").arg(cardSdName)); 143 cmd << "umount" << cardSdName;
143 } else if ( opt == 2 ) { 144 } else if ( opt == 2 ) {
144 m_commandOrig = 3; 145 m_commandOrig = PCMCIA_Socket2;
145 execCommand( "/sbin/cardctl eject 1" ); 146 cmd << "/sbin/cardctl" << "eject" << "1";
146 } 147 }else
148 execute = false;
149
150 if ( execute )
151 execCommand( cmd );
152
147 delete menu; 153 delete menu;
148} 154}
149 155
150 156
151void CardMonitor::cardMessage( const QCString & msg, const QByteArray & ) { 157void CardMonitor::cardMessage( const QCString & msg, const QByteArray & ) {
152 if ( msg == "stabChanged()" ) { 158 if ( msg == "stabChanged()" ) {
153 // odebug << "Pcmcia: stabchanged" << oendl; 159 // odebug << "Pcmcia: stabchanged" << oendl;
154 getStatusPcmcia(); 160 getStatusPcmcia();
@@ -328,48 +334,47 @@ void CardMonitor::paintEvent( QPaintEvent * ) {
328 hide(); 334 hide();
329 } 335 }
330} 336}
331 337
332int CardMonitor::position() { 338int CardMonitor::position() {
333 return 7; 339 return 7;
334} 340}
335 341
336void CardMonitor::execCommand( const QString &command ) { 342void CardMonitor::execCommand( const QStringList &strList ) {
337 delete m_process; 343 delete m_process;
338 m_process = 0; 344 m_process = 0;
339 345
340 if ( m_process == 0 ) { 346 if ( m_process == 0 ) {
341 m_process = new OProcess(); 347 m_process = new OProcess();
342 QStringList strList = QStringList::split( " ", command );
343 348
344 for ( QStringList::Iterator it = strList.begin(); it != strList.end(); ++it ) {
345 *m_process << *it;
346 }
347 349
348 connect(m_process, SIGNAL( processExited(Opie::Core::OProcess*) ), 350 for ( QStringList::ConstIterator it = strList.begin(); it != strList.end(); ++it ) {
349 this, SLOT( slotExited(Opie::Core::OProcess* ) ) ); 351 *m_process << *it;
352 }
353
354 connect(m_process, SIGNAL(processExited(Opie::Core::OProcess*)),
355 this, SLOT( slotExited(Opie::Core::OProcess*)));
350 356
351 if(!m_process->start(OProcess::NotifyOnExit, OProcess::AllOutput ) ) { 357 if(!m_process->start(OProcess::NotifyOnExit, OProcess::AllOutput ) ) {
352 delete m_process; 358 delete m_process;
353 m_process = 0; 359 m_process = 0;
354 } 360 }
355 } 361 }
356} 362}
357 363
358void CardMonitor::slotExited( OProcess* ) { 364void CardMonitor::slotExited( OProcess* ) {
359 365
360 if( m_process->normalExit() ) { 366 if( m_process->normalExit() ) {
361 int ret = m_process->exitStatus(); 367 int ret = m_process->exitStatus();
362 if( ret != 0 ) { 368 if( ret != 0 ) {
363 if ( m_commandOrig == 1 ) { 369 if ( m_commandOrig == PCMCIA_Socket1 ||
364 popUp( tr( "CF/PCMCIA card eject failed!" ) ); 370 m_commandOrig == PCMCIA_Socket2 ) {
365 } else if ( m_commandOrig == 2 ) { 371 popUp( tr( "CF/PCMCIA card eject failed!" ) );
366 popUp( tr( "SD/MMC card eject failed!" ) ); 372 } else if ( m_commandOrig == MMC_Socket ) {
367 } else if ( m_commandOrig == 3 ) { 373 popUp( tr( "SD/MMC card eject failed!" ) );
368 popUp( tr( "CF/PCMCIA card eject failed!" ) ); 374 }
369 } 375 }
370 } 376 }
371 }
372} 377}
373 378
374EXPORT_OPIE_APPLET_v1( CardMonitor ) 379EXPORT_OPIE_APPLET_v1( CardMonitor )
375 380
diff --git a/core/applets/cardmon/cardmon.h b/core/applets/cardmon/cardmon.h
index b02c8b1..400f5ae 100644
--- a/core/applets/cardmon/cardmon.h
+++ b/core/applets/cardmon/cardmon.h
@@ -27,32 +27,38 @@ namespace Opie {
27 namespace Core { 27 namespace Core {
28 class OProcess; 28 class OProcess;
29 } 29 }
30} 30}
31 31
32class CardMonitor : public QWidget { 32class CardMonitor : public QWidget {
33 Q_OBJECT 33 Q_OBJECT
34public: 34public:
35 enum {
36 PCMCIA_Socket1,
37 PCMCIA_Socket2,
38 MMC_Socket
39 };
40
35 CardMonitor( QWidget *parent = 0 ); 41 CardMonitor( QWidget *parent = 0 );
36 ~CardMonitor(); 42 ~CardMonitor();
37 bool getStatusPcmcia( int showPopUp = FALSE ); 43 bool getStatusPcmcia( int showPopUp = FALSE );
38 bool getStatusSd( int showPopUp = FALSE ); 44 bool getStatusSd( int showPopUp = FALSE );
39 static int position(); 45 static int position();
40private slots: 46private slots:
41 void cardMessage( const QCString &msg, const QByteArray & ); 47 void cardMessage( const QCString &msg, const QByteArray & );
42 void slotExited( Opie::Core::OProcess* proc ); 48 void slotExited( Opie::Core::OProcess* proc );
43 void popupTimeout(); 49 void popupTimeout();
44 50
45protected: 51protected:
46 void paintEvent( QPaintEvent* ); 52 void paintEvent( QPaintEvent* );
47 void mousePressEvent( QMouseEvent * ); 53 void mousePressEvent( QMouseEvent * );
48 54
49private: 55private:
50 void execCommand( const QString &command ); 56 void execCommand( const QStringList &command );
51 int m_commandOrig; 57 int m_commandOrig;
52 QPixmap pm; 58 QPixmap pm;
53 // pcmcia socket 0 59 // pcmcia socket 0
54 bool cardInPcmcia0; 60 bool cardInPcmcia0;
55 QString cardInPcmcia0Name; 61 QString cardInPcmcia0Name;
56 QString cardInPcmcia0Type; 62 QString cardInPcmcia0Type;
57 // pcmcia socket 1 63 // pcmcia socket 1
58 bool cardInPcmcia1; 64 bool cardInPcmcia1;