summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2005-06-24 12:10:13 (UTC)
committer mickeyl <mickeyl>2005-06-24 12:10:13 (UTC)
commit886b3a77a64d5808d2fe68d0e7e6b712cf642753 (patch) (unidiff)
tree60121b38e6100ff10a6e01293b7e478489f09bba
parent4775588885d60ea208c667a5863244a847a69f94 (diff)
downloadopie-886b3a77a64d5808d2fe68d0e7e6b712cf642753.zip
opie-886b3a77a64d5808d2fe68d0e7e6b712cf642753.tar.gz
opie-886b3a77a64d5808d2fe68d0e7e6b712cf642753.tar.bz2
- fix configdialog checking for productIdentity, not for cardmgr's idea of that
- perform insert action and perform suspend action Except for "prompt for" and some polishing, this applet should now be fairly complete
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/pcmcia/configdialog.cpp10
-rw-r--r--noncore/applets/pcmcia/pcmcia.cpp98
-rw-r--r--noncore/applets/pcmcia/pcmcia.h5
3 files changed, 60 insertions, 53 deletions
diff --git a/noncore/applets/pcmcia/configdialog.cpp b/noncore/applets/pcmcia/configdialog.cpp
index f5812ba..f94edde 100644
--- a/noncore/applets/pcmcia/configdialog.cpp
+++ b/noncore/applets/pcmcia/configdialog.cpp
@@ -131,17 +131,18 @@ void ConfigDialog::writeConfigEntry( const OPcmciaSocket* card, const QString& k
131{ 131{
132 OConfig cfg( "PCMCIA" ); 132 OConfig cfg( "PCMCIA" );
133 cfg.setGroup( "Global" ); 133 cfg.setGroup( "Global" );
134 int nCards = cfg.readNumEntry( "nCards", 0 ); 134 int nCards = cfg.readNumEntry( "nCards", 0 );
135 QString cardName = card->productIdentity().join( " " ).stripWhiteSpace();
135 QString action; 136 QString action;
136 137
137 for ( int i = 0; i < nCards; ++i ) 138 for ( int i = 0; i < nCards; ++i )
138 { 139 {
139 QString cardSection = QString( "Card_%1" ).arg( i ); 140 QString cardSection = QString( "Card_%1" ).arg( i );
140 cfg.setGroup( cardSection ); 141 cfg.setGroup( cardSection );
141 QString name = cfg.readEntry( "name" ); 142 QString name = cfg.readEntry( "name" );
142 odebug << "comparing card '" << card->name() << "' with known card '" << name << "'" << oendl; 143 odebug << "comparing card '" << cardName << "' with known card '" << name << "'" << oendl;
143 if ( card->name() == name ) 144 if ( cardName == name )
144 { 145 {
145 cfg.writeEntry( key, value ); 146 cfg.writeEntry( key, value );
146 break; 147 break;
147 } 148 }
@@ -152,17 +153,18 @@ QString ConfigDialog::readConfigEntry( const OPcmciaSocket* card, const QString&
152{ 153{
153 OConfig cfg( "PCMCIA" ); 154 OConfig cfg( "PCMCIA" );
154 cfg.setGroup( "Global" ); 155 cfg.setGroup( "Global" );
155 int nCards = cfg.readNumEntry( "nCards", 0 ); 156 int nCards = cfg.readNumEntry( "nCards", 0 );
157 QString cardName = card->productIdentity().join( " " ).stripWhiteSpace();
156 QString value; 158 QString value;
157 159
158 for ( int i = 0; i < nCards; ++i ) 160 for ( int i = 0; i < nCards; ++i )
159 { 161 {
160 QString cardSection = QString( "Card_%1" ).arg( i ); 162 QString cardSection = QString( "Card_%1" ).arg( i );
161 cfg.setGroup( cardSection ); 163 cfg.setGroup( cardSection );
162 QString name = cfg.readEntry( "name" ); 164 QString name = cfg.readEntry( "name" );
163 odebug << "comparing card '" << card->name() << "' with known card '" << name << "'" << oendl; 165 odebug << "comparing card '" << cardName << "' with known card '" << name << "'" << oendl;
164 if ( card->name() == name ) 166 if ( cardName == name )
165 { 167 {
166 value = cfg.readEntry( key, defaultValue ); 168 value = cfg.readEntry( key, defaultValue );
167 break; 169 break;
168 } 170 }
diff --git a/noncore/applets/pcmcia/pcmcia.cpp b/noncore/applets/pcmcia/pcmcia.cpp
index e435f61..af23f58 100644
--- a/noncore/applets/pcmcia/pcmcia.cpp
+++ b/noncore/applets/pcmcia/pcmcia.cpp
@@ -65,9 +65,9 @@ using namespace Opie::Ui;
65#include <sys/vfs.h> 65#include <sys/vfs.h>
66#include <mntent.h> 66#include <mntent.h>
67#endif 67#endif
68 68
69PcmciaManager::PcmciaManager( QWidget * parent ) : QWidget( parent ) 69PcmciaManager::PcmciaManager( QWidget * parent ) : QWidget( parent ), popupMenu( 0 )
70{ 70{
71 QCopChannel * pcmciaChannel = new QCopChannel( "QPE/Card", this ); 71 QCopChannel * pcmciaChannel = new QCopChannel( "QPE/Card", this );
72 connect( pcmciaChannel, 72 connect( pcmciaChannel,
73 SIGNAL( received(const QCString&,const QByteArray&) ), this, 73 SIGNAL( received(const QCString&,const QByteArray&) ), this,
@@ -95,28 +95,29 @@ void PcmciaManager::handleSystemChannel( const QCString&msg, const QByteArray& )
95 { 95 {
96 if ( !OPcmciaSystem::instance()->cardCount() ) return; 96 if ( !OPcmciaSystem::instance()->cardCount() ) return;
97 OPcmciaSystem* sys = OPcmciaSystem::instance(); 97 OPcmciaSystem* sys = OPcmciaSystem::instance();
98 OPcmciaSystem::CardIterator it = sys->iterator(); 98 OPcmciaSystem::CardIterator it = sys->iterator();
99 OPcmciaSocket* theCard = 0;
100 99
101 while ( it.current() ) 100 while ( it.current() )
102 { 101 {
103 if ( it.current()->isEmpty() ) 102 if ( !it.current()->isEmpty() )
104 { 103 {
105 executeResumeAction( theCard ); 104 executeAction( it.current(), "resume" );
106 } 105 }
107 ++it; 106 ++it;
108 } 107 }
109 } 108 }
110} 109}
111 110
112void PcmciaManager::popUp( QString message, QString icon ) 111void PcmciaManager::popUp( QString message, QString icon )
113{ 112{
114 if ( !popupMenu ) { 113 if ( !popupMenu)
114 {
115 popupMenu = new QPopupMenu( this ); 115 popupMenu = new QPopupMenu( this );
116 popupMenu->setFocusPolicy( QWidget::NoFocus );
116 } 117 }
117
118 popupMenu->clear(); 118 popupMenu->clear();
119
119 if ( icon.isEmpty() ) { 120 if ( icon.isEmpty() ) {
120 popupMenu->insertItem( message, 0 ); 121 popupMenu->insertItem( message, 0 );
121 } else { 122 } else {
122 popupMenu->insertItem( QIconSet( Opie::Core::OResource::loadPixmap( icon, Opie::Core::OResource::SmallIcon ) ), 123 popupMenu->insertItem( QIconSet( Opie::Core::OResource::loadPixmap( icon, Opie::Core::OResource::SmallIcon ) ),
@@ -137,16 +138,18 @@ void PcmciaManager::popupTimeout()
137 popupMenu->hide(); 138 popupMenu->hide();
138} 139}
139 140
140enum { EJECT, INSERT, SUSPEND, RESUME, RESET, CONFIGURE }; 141enum { EJECT, INSERT, SUSPEND, RESUME, RESET, CONFIGURE };
142static const char* actionText[] = { "eject", "insert", "suspend", "resum", "resett", "configur" };
141 143
142void PcmciaManager::mousePressEvent( QMouseEvent* ) 144void PcmciaManager::mousePressEvent( QMouseEvent* )
143{ 145{
144 QPopupMenu* menu = new QPopupMenu( this ); 146 QPopupMenu* menu = new QPopupMenu( this );
145 QStringList cmd; 147 QStringList cmd;
146 bool execute = true; 148 bool execute = true;
147 149
148 OPcmciaSystem* sys = OPcmciaSystem::instance(); 150 OPcmciaSystem* sys = OPcmciaSystem::instance();
151 sys->synchronize();
149 OPcmciaSystem::CardIterator it = sys->iterator(); 152 OPcmciaSystem::CardIterator it = sys->iterator();
150 if ( !sys->count() ) return; 153 if ( !sys->count() ) return;
151 154
152 int i = 0; 155 int i = 0;
@@ -209,9 +212,9 @@ void PcmciaManager::cardMessage( const QCString & msg, const QByteArray & )
209 } 212 }
210 else 213 else
211 { 214 {
212 theCard = it.current(); 215 theCard = it.current();
213 QString cardName = theCard->productIdentity().join( " " ); 216 QString cardName = theCard->productIdentity().join( " " ).stripWhiteSpace();
214 for ( int i = 0; i < nCards; ++i ) 217 for ( int i = 0; i < nCards; ++i )
215 { 218 {
216 QString cardSection = QString( "Card_%1" ).arg( i ); 219 QString cardSection = QString( "Card_%1" ).arg( i );
217 cfg.setGroup( cardSection ); 220 cfg.setGroup( cardSection );
@@ -220,9 +223,9 @@ void PcmciaManager::cardMessage( const QCString & msg, const QByteArray & )
220 if ( cardName == name ) 223 if ( cardName == name )
221 { 224 {
222 newCard = false; 225 newCard = false;
223 odebug << "pcmcia: we have seen this card before" << oendl; 226 odebug << "pcmcia: we have seen this card before" << oendl;
224 executeInsertAction( theCard ); 227 executeAction( theCard, "insert" );
225 break; 228 break;
226 } 229 }
227 } 230 }
228 if ( !newCard ) ++it; else break; 231 if ( !newCard ) ++it; else break;
@@ -252,9 +255,9 @@ void PcmciaManager::cardMessage( const QCString & msg, const QByteArray & )
252 cfg.setGroup( "Global" ); 255 cfg.setGroup( "Global" );
253 cfg.writeEntry( "nCards", nCards+1 ); 256 cfg.writeEntry( "nCards", nCards+1 );
254 cfg.write(); 257 cfg.write();
255 258
256 QFile confFile( QString( "/etc/pcmcia/%1" ).arg( conf ) ); 259 QFile confFile( conf );
257 if ( confFile.open( IO_ReadWrite | IO_Append ) ) 260 if ( confFile.open( IO_ReadWrite | IO_Append ) )
258 { 261 {
259 QString entryCard = QString( "card \"%1\"" ).arg( newCardName ); 262 QString entryCard = QString( "card \"%1\"" ).arg( newCardName );
260 QString entryVersion( " version " ); 263 QString entryVersion( " version " );
@@ -271,9 +274,9 @@ void PcmciaManager::cardMessage( const QCString & msg, const QByteArray & )
271 ::system( "/etc/init.d/pcmcia restart" ); 274 ::system( "/etc/init.d/pcmcia restart" );
272 } 275 }
273 else 276 else
274 { 277 {
275 owarn << "pcmcia: couldn't write binding to '" << conf << "'." << oendl; 278 owarn << "pcmcia: couldn't write binding to '" << conf << "' ( " << strerror( errno ) << " )." << oendl;
276 } 279 }
277 } 280 }
278 else 281 else
279 { 282 {
@@ -286,30 +289,16 @@ void PcmciaManager::cardMessage( const QCString & msg, const QByteArray & )
286 } 289 }
287 } 290 }
288 else // it's an already configured card 291 else // it's an already configured card
289 { 292 {
290 QString insertAction = ConfigDialog::preferredAction( theCard, "insert" ); 293 odebug << "pcmcia: doing nothing... why do we come here?" << oendl;
291 odebug << "pcmcia: card has been previously configured" << oendl;
292 odebug << "pcmcia: TODO: need to perform action'" << insertAction << "' now... sorry, not yet implemented..." << oendl;
293 } 294 }
294 repaint( true );
295} 295}
296 296
297
298void PcmciaManager::paintEvent( QPaintEvent * ) 297void PcmciaManager::paintEvent( QPaintEvent * )
299{ 298{
300 QPainter p( this ); 299 QPainter p( this );
301 odebug << "sockets = " << OPcmciaSystem::instance()->count() << ", cards = " << OPcmciaSystem::instance()->cardCount() << oendl; 300 p.drawPixmap( 0, 0, pm );
302
303 if ( OPcmciaSystem::instance()->cardCount() )
304 {
305 p.drawPixmap( 0, 0, pm );
306 show();
307 }
308 else
309 {
310 hide();
311 }
312} 301}
313 302
314int PcmciaManager::position() 303int PcmciaManager::position()
315{ 304{
@@ -332,25 +321,32 @@ void PcmciaManager::userCardAction( int action )
332 { 321 {
333 case CONFIGURE: 322 case CONFIGURE:
334 { 323 {
335 QString insertAction; QString resumeAction; QString driver; QString conf; 324 QString insertAction; QString resumeAction; QString driver; QString conf;
336 bool result = configure( OPcmciaSystem::instance()->socket( socket ), insertAction, resumeAction, driver, conf ); 325 configure( OPcmciaSystem::instance()->socket( socket ), insertAction, resumeAction, driver, conf );
337 success = true; 326 return;
338 break;
339 } 327 }
340 case EJECT: success = OPcmciaSystem::instance()->socket( socket )->eject(); break; 328 case EJECT: success = OPcmciaSystem::instance()->socket( socket )->eject();
341 case INSERT: success = OPcmciaSystem::instance()->socket( socket )->insert(); break; 329 break;
342 case SUSPEND: success = OPcmciaSystem::instance()->socket( socket )->suspend(); break; 330 case INSERT: success = OPcmciaSystem::instance()->socket( socket )->insert();
343 case RESUME: success = OPcmciaSystem::instance()->socket( socket )->resume(); break; 331 break;
344 case RESET: success = OPcmciaSystem::instance()->socket( socket )->reset(); break; 332 case SUSPEND: success = OPcmciaSystem::instance()->socket( socket )->suspend();
345 default: odebug << "pcmcia: not yet implemented" << oendl; 333 break;
334 case RESUME: success = OPcmciaSystem::instance()->socket( socket )->resume();
335 break;
336 case RESET: success = OPcmciaSystem::instance()->socket( socket )->reset();
337 break;
338 default: odebug << "pcmcia: not yet implemented" << oendl;
346 } 339 }
347 340
348 if ( !success ) 341 if ( success )
349 { 342 {
350 owarn << "pcmcia: couldn't perform user action (" << strerror( errno ) << ")" << oendl; 343 popUp( tr( "Successfully %1ed card in socket #%2" ).arg( actionText[action] ).arg( socket ) );
344 }
345 else
346 {
347 popUp( tr( "Error while %1ing card in socket #%2" ).arg( actionText[action] ).arg( socket ) );
351 } 348 }
352
353} 349}
354 350
355bool PcmciaManager::configure( OPcmciaSocket* card, QString& insertAction, QString& resumeAction, QString& driver, QString& conf ) 351bool PcmciaManager::configure( OPcmciaSocket* card, QString& insertAction, QString& resumeAction, QString& driver, QString& conf )
356{ 352{
@@ -368,17 +364,27 @@ bool PcmciaManager::configure( OPcmciaSocket* card, QString& insertAction, QStri
368 } 364 }
369 return configresult; 365 return configresult;
370} 366}
371 367
372void PcmciaManager::executeInsertAction( Opie::Core::OPcmciaSocket* card ) 368void PcmciaManager::executeAction( Opie::Core::OPcmciaSocket* card, const QString& type )
373{
374 odebug << "pcmcia: execute insert action" << oendl;
375}
376
377void PcmciaManager::executeResumeAction( Opie::Core::OPcmciaSocket* card )
378{ 369{
379 odebug << "pcmcia: execute resume action" << oendl; 370 odebug << "pcmcia: performing " << type << " action ..." << oendl;
371 QString theAction = ConfigDialog::preferredAction( card, type );
372 int intAction = card->number() * 100;
373 if ( theAction == "activate" ) ;
374 else if ( theAction == "eject" ) intAction += EJECT;
375 else if ( theAction == "suspend" ) intAction += SUSPEND;
376 else if ( theAction == "prompt for" )
377 {
378 odebug << "pcmcia: sorry, not 'prompt for' is not yet implemented!" << oendl;
379 return;
380 }
381 else
382 {
383 owarn << "pcmcia: action '" << theAction << "' not known. Huh?" << oendl;
384 return;
385 }
386 userCardAction( intAction );
380} 387}
381 388
382
383EXPORT_OPIE_APPLET_v1( PcmciaManager ) 389EXPORT_OPIE_APPLET_v1( PcmciaManager )
384 390
diff --git a/noncore/applets/pcmcia/pcmcia.h b/noncore/applets/pcmcia/pcmcia.h
index 6567cd7..de7d6bf 100644
--- a/noncore/applets/pcmcia/pcmcia.h
+++ b/noncore/applets/pcmcia/pcmcia.h
@@ -56,11 +56,10 @@ class PcmciaManager : public QWidget
56 56
57 private: 57 private:
58 bool configure( Opie::Core::OPcmciaSocket*, QString&, QString&, QString&, QString& ); 58 bool configure( Opie::Core::OPcmciaSocket*, QString&, QString&, QString&, QString& );
59 void execCommand( const QStringList &command ); 59 void execCommand( const QStringList &command );
60 void executeInsertAction( Opie::Core::OPcmciaSocket* ); 60 void executeAction( Opie::Core::OPcmciaSocket*, const QString& );
61 void executeResumeAction( Opie::Core::OPcmciaSocket* ); 61 void popUp( QString message, QString icon = QString::null );
62 void popUp(QString message, QString icon = QString::null );
63 62
64 private: 63 private:
65 bool configuring; 64 bool configuring;
66 int commandOrig; 65 int commandOrig;