summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2005-06-25 15:28:21 (UTC)
committer mickeyl <mickeyl>2005-06-25 15:28:21 (UTC)
commit3d434ac35915afe7f7035468ca18656264a91c52 (patch) (unidiff)
treef71edcbb83d4566f098da4de68f77a2f6058062f
parent3ec008c17167a17f89cc096779113c6b8369b257 (diff)
downloadopie-3d434ac35915afe7f7035468ca18656264a91c52.zip
opie-3d434ac35915afe7f7035468ca18656264a91c52.tar.gz
opie-3d434ac35915afe7f7035468ca18656264a91c52.tar.bz2
fix enable/disable logic for menu entries in popup
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/pcmcia/configdialog.cpp10
-rw-r--r--noncore/applets/pcmcia/pcmcia.cpp22
2 files changed, 18 insertions, 14 deletions
diff --git a/noncore/applets/pcmcia/configdialog.cpp b/noncore/applets/pcmcia/configdialog.cpp
index f94edde..3b1b40c 100644
--- a/noncore/applets/pcmcia/configdialog.cpp
+++ b/noncore/applets/pcmcia/configdialog.cpp
@@ -38,33 +38,33 @@ using namespace Opie::Core;
38/* QT */ 38/* QT */
39#include <qcombobox.h> 39#include <qcombobox.h>
40#include <qdir.h> 40#include <qdir.h>
41#include <qfile.h> 41#include <qfile.h>
42#include <qgroupbox.h> 42#include <qgroupbox.h>
43#include <qlabel.h> 43#include <qlabel.h>
44#include <qtextstream.h> 44#include <qtextstream.h>
45 45
46ConfigDialog::ConfigDialog( const OPcmciaSocket* card, QWidget* parent ) 46ConfigDialog::ConfigDialog( const OPcmciaSocket* card, QWidget* parent )
47 :ConfigDialogBase( parent, "pcmcia config dialog", true ) 47 :ConfigDialogBase( parent, "pcmcia config dialog", true )
48{ 48{
49 gbDetails->setTitle( QString( "Details for card in socket #%1" ).arg( card->number() ) ); 49 gbDetails->setTitle( QString( "Details for card in socket #%1" ).arg( card->number() ) );
50 txtCardName->setText( card->productIdentity().join( " " ) ); 50 txtCardName->setText( card->productIdentity() );
51 txtManfid->setText( card->manufacturerIdentity() ); 51 txtManfid->setText( card->manufacturerIdentity() );
52 txtFunction->setText( card->function() ); 52 txtFunction->setText( card->function() );
53 53
54 QString insertAction = preferredAction( card, "insert" ); 54 QString insertAction = preferredAction( card, "insert" );
55 QString resumeAction = preferredAction( card, "resume" ); 55 QString resumeAction = preferredAction( card, "resume" );
56 56
57 odebug << "pcmcia: preferred insertion action for card '" << card->name() << "' seems to be '" << insertAction << "'" << oendl; 57 odebug << "pcmcia: preferred insertion action for card '" << card->productIdentity() << "' seems to be '" << insertAction << "'" << oendl;
58 odebug << "pcmcia: preferred resume action for card '" << card->name() << "' seems to be '" << resumeAction << "'" << oendl; 58 odebug << "pcmcia: preferred resume action for card '" << card->productIdentity() << "' seems to be '" << resumeAction << "'" << oendl;
59 59
60 if ( !insertAction.isEmpty() ) 60 if ( !insertAction.isEmpty() )
61 { 61 {
62 for ( int i; i < cbInsertAction->count(); ++i ) 62 for ( int i; i < cbInsertAction->count(); ++i )
63 if ( cbInsertAction->text( i ) == insertAction ) cbInsertAction->setCurrentItem( i ); 63 if ( cbInsertAction->text( i ) == insertAction ) cbInsertAction->setCurrentItem( i );
64 } 64 }
65 65
66 if ( !resumeAction.isEmpty() ) 66 if ( !resumeAction.isEmpty() )
67 { 67 {
68 for ( int i; i < cbResumeAction->count(); ++i ) 68 for ( int i; i < cbResumeAction->count(); ++i )
69 if ( cbResumeAction->text( i ) == resumeAction ) cbResumeAction->setCurrentItem( i ); 69 if ( cbResumeAction->text( i ) == resumeAction ) cbResumeAction->setCurrentItem( i );
70 } 70 }
@@ -123,47 +123,47 @@ ConfigDialog::ConfigDialog( const OPcmciaSocket* card, QWidget* parent )
123 } 123 }
124} 124}
125 125
126ConfigDialog::~ConfigDialog() 126ConfigDialog::~ConfigDialog()
127{ 127{
128} 128}
129 129
130void ConfigDialog::writeConfigEntry( const OPcmciaSocket* card, const QString& key, const QString& value ) 130void ConfigDialog::writeConfigEntry( const OPcmciaSocket* card, const QString& key, const QString& value )
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 cardName = card->productIdentity();
136 QString action; 136 QString action;
137 137
138 for ( int i = 0; i < nCards; ++i ) 138 for ( int i = 0; i < nCards; ++i )
139 { 139 {
140 QString cardSection = QString( "Card_%1" ).arg( i ); 140 QString cardSection = QString( "Card_%1" ).arg( i );
141 cfg.setGroup( cardSection ); 141 cfg.setGroup( cardSection );
142 QString name = cfg.readEntry( "name" ); 142 QString name = cfg.readEntry( "name" );
143 odebug << "comparing card '" << cardName << "' with known card '" << name << "'" << oendl; 143 odebug << "comparing card '" << cardName << "' with known card '" << name << "'" << oendl;
144 if ( cardName == name ) 144 if ( cardName == name )
145 { 145 {
146 cfg.writeEntry( key, value ); 146 cfg.writeEntry( key, value );
147 break; 147 break;
148 } 148 }
149 } 149 }
150} 150}
151 151
152QString ConfigDialog::readConfigEntry( const OPcmciaSocket* card, const QString& key, const QString& defaultValue ) 152QString ConfigDialog::readConfigEntry( const OPcmciaSocket* card, const QString& key, const QString& defaultValue )
153{ 153{
154 OConfig cfg( "PCMCIA" ); 154 OConfig cfg( "PCMCIA" );
155 cfg.setGroup( "Global" ); 155 cfg.setGroup( "Global" );
156 int nCards = cfg.readNumEntry( "nCards", 0 ); 156 int nCards = cfg.readNumEntry( "nCards", 0 );
157 QString cardName = card->productIdentity().join( " " ).stripWhiteSpace(); 157 QString cardName = card->productIdentity();
158 QString value; 158 QString value;
159 159
160 for ( int i = 0; i < nCards; ++i ) 160 for ( int i = 0; i < nCards; ++i )
161 { 161 {
162 QString cardSection = QString( "Card_%1" ).arg( i ); 162 QString cardSection = QString( "Card_%1" ).arg( i );
163 cfg.setGroup( cardSection ); 163 cfg.setGroup( cardSection );
164 QString name = cfg.readEntry( "name" ); 164 QString name = cfg.readEntry( "name" );
165 odebug << "comparing card '" << cardName << "' with known card '" << name << "'" << oendl; 165 odebug << "comparing card '" << cardName << "' with known card '" << name << "'" << oendl;
166 if ( cardName == name ) 166 if ( cardName == name )
167 { 167 {
168 value = cfg.readEntry( key, defaultValue ); 168 value = cfg.readEntry( key, defaultValue );
169 break; 169 break;
diff --git a/noncore/applets/pcmcia/pcmcia.cpp b/noncore/applets/pcmcia/pcmcia.cpp
index af23f58..c6386cb 100644
--- a/noncore/applets/pcmcia/pcmcia.cpp
+++ b/noncore/applets/pcmcia/pcmcia.cpp
@@ -67,25 +67,25 @@ using namespace Opie::Ui;
67#endif 67#endif
68 68
69PcmciaManager::PcmciaManager( QWidget * parent ) : QWidget( parent ), popupMenu( 0 ) 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,
74 SLOT( cardMessage(const QCString&,const QByteArray&) ) ); 74 SLOT( cardMessage(const QCString&,const QByteArray&) ) );
75 75
76 setFocusPolicy( NoFocus ); 76 setFocusPolicy( NoFocus );
77 setFixedWidth ( AppLnk::smallIconSize() ); 77 setFixedWidth ( AppLnk::smallIconSize() );
78 setFixedHeight ( AppLnk::smallIconSize() ); 78 setFixedHeight ( AppLnk::smallIconSize() );
79 pm = Opie::Core::OResource::loadPixmap( "pcmcia/pcmcia", Opie::Core::OResource::SmallIcon ); 79 pm = Opie::Core::OResource::loadPixmap( "pcmcia", Opie::Core::OResource::SmallIcon );
80 configuring = false; 80 configuring = false;
81 81
82 QCopChannel *channel = new QCopChannel( "QPE/System", this ); 82 QCopChannel *channel = new QCopChannel( "QPE/System", this );
83 connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), 83 connect( channel, SIGNAL(received(const QCString&,const QByteArray&)),
84 this, SLOT(handleSystemChannel(const QCString&,const QByteArray&)) ); 84 this, SLOT(handleSystemChannel(const QCString&,const QByteArray&)) );
85} 85}
86 86
87 87
88PcmciaManager::~PcmciaManager() 88PcmciaManager::~PcmciaManager()
89{ 89{
90} 90}
91 91
@@ -154,29 +154,33 @@ void PcmciaManager::mousePressEvent( QMouseEvent* )
154 154
155 int i = 0; 155 int i = 0;
156 while ( it.current() ) 156 while ( it.current() )
157 { 157 {
158 QPopupMenu* submenu = new QPopupMenu( menu ); 158 QPopupMenu* submenu = new QPopupMenu( menu );
159 submenu->insertItem( "&Eject", EJECT+i*100 ); 159 submenu->insertItem( "&Eject", EJECT+i*100 );
160 submenu->insertItem( "&Insert", INSERT+i*100 ); 160 submenu->insertItem( "&Insert", INSERT+i*100 );
161 submenu->insertItem( "&Suspend", SUSPEND+i*100 ); 161 submenu->insertItem( "&Suspend", SUSPEND+i*100 );
162 submenu->insertItem( "&Resume", RESUME+i*100 ); 162 submenu->insertItem( "&Resume", RESUME+i*100 );
163 submenu->insertItem( "Rese&t", RESET+i*100 ); 163 submenu->insertItem( "Rese&t", RESET+i*100 );
164 submenu->insertItem( "&Configure", CONFIGURE+i*100 ); 164 submenu->insertItem( "&Configure", CONFIGURE+i*100 );
165 165
166 submenu->setItemEnabled( EJECT+i*100, !it.current()->isEmpty() ); 166 bool isSuspended = it.current()->isSuspended();
167 submenu->setItemEnabled( INSERT+i*100, it.current()->isEmpty() ); 167 bool isEmpty = it.current()->isEmpty();
168 submenu->setItemEnabled( SUSPEND+i*100, !it.current()->isEmpty() && it.current()->isSuspended() ); 168
169 submenu->setItemEnabled( RESUME+i*100, !it.current()->isEmpty() && !it.current()->isSuspended() ); 169 submenu->setItemEnabled( EJECT+i*100, !isEmpty );
170 submenu->setItemEnabled( CONFIGURE+i*100, !it.current()->isEmpty() && !configuring ); 170 submenu->setItemEnabled( INSERT+i*100, isEmpty );
171 submenu->setItemEnabled( SUSPEND+i*100, !isEmpty && !isSuspended );
172 submenu->setItemEnabled( RESUME+i*100, !isEmpty && isSuspended );
173 submenu->setItemEnabled( RESET+i*100, !isEmpty && !isSuspended );
174 submenu->setItemEnabled( CONFIGURE+i*100, !isEmpty && !configuring );
171 175
172 connect( submenu, SIGNAL(activated(int)), this, SLOT(userCardAction(int)) ); 176 connect( submenu, SIGNAL(activated(int)), this, SLOT(userCardAction(int)) );
173 menu->insertItem( tr( "%1: %2" ).arg( i++ ).arg( it.current()->identity() ), submenu, 1 ); 177 menu->insertItem( tr( "%1: %2" ).arg( i++ ).arg( it.current()->identity() ), submenu, 1 );
174 ++it; 178 ++it;
175 } 179 }
176 180
177 QPoint p = mapToGlobal( QPoint( 0, 0 ) ); 181 QPoint p = mapToGlobal( QPoint( 0, 0 ) );
178 QSize s = menu->sizeHint(); 182 QSize s = menu->sizeHint();
179 int opt = menu->exec( QPoint( p.x() + ( width() / 2 ) - ( s.width() / 2 ), p.y() - s.height() ), 0 ); 183 int opt = menu->exec( QPoint( p.x() + ( width() / 2 ) - ( s.width() / 2 ), p.y() - s.height() ), 0 );
180 qDebug( "pcmcia: menu result = %d", opt ); 184 qDebug( "pcmcia: menu result = %d", opt );
181 delete menu; 185 delete menu;
182} 186}
@@ -204,46 +208,46 @@ void PcmciaManager::cardMessage( const QCString & msg, const QByteArray & )
204 208
205 while ( it.current() && newCard ) 209 while ( it.current() && newCard )
206 { 210 {
207 if ( it.current()->isEmpty() ) 211 if ( it.current()->isEmpty() )
208 { 212 {
209 odebug << "pcmcia: skipping empty card in socket " << it.current()->number() << oendl; 213 odebug << "pcmcia: skipping empty card in socket " << it.current()->number() << oendl;
210 ++it; 214 ++it;
211 continue; 215 continue;
212 } 216 }
213 else 217 else
214 { 218 {
215 theCard = it.current(); 219 theCard = it.current();
216 QString cardName = theCard->productIdentity().join( " " ).stripWhiteSpace(); 220 QString cardName = theCard->productIdentity();
217 for ( int i = 0; i < nCards; ++i ) 221 for ( int i = 0; i < nCards; ++i )
218 { 222 {
219 QString cardSection = QString( "Card_%1" ).arg( i ); 223 QString cardSection = QString( "Card_%1" ).arg( i );
220 cfg.setGroup( cardSection ); 224 cfg.setGroup( cardSection );
221 QString name = cfg.readEntry( "name" ); 225 QString name = cfg.readEntry( "name" );
222 odebug << "pcmcia: comparing card '" << cardName << "' with known card '" << name << "'" << oendl; 226 odebug << "pcmcia: comparing card '" << cardName << "' with known card '" << name << "'" << oendl;
223 if ( cardName == name ) 227 if ( cardName == name )
224 { 228 {
225 newCard = false; 229 newCard = false;
226 odebug << "pcmcia: we have seen this card before" << oendl; 230 odebug << "pcmcia: we have seen this card before" << oendl;
227 executeAction( theCard, "insert" ); 231 executeAction( theCard, "insert" );
228 break; 232 break;
229 } 233 }
230 } 234 }
231 if ( !newCard ) ++it; else break; 235 if ( !newCard ) ++it; else break;
232 } 236 }
233 } 237 }
234 if ( newCard ) 238 if ( newCard )
235 { 239 {
236 odebug << "pcmcia: unconfigured card detected" << oendl; 240 odebug << "pcmcia: unconfigured card detected" << oendl;
237 QString newCardName = theCard->productIdentity().join( " " ).stripWhiteSpace(); 241 QString newCardName = theCard->productIdentity();
238 int result = QMessageBox::information( qApp->desktop(), 242 int result = QMessageBox::information( qApp->desktop(),
239 tr( "PCMCIA/CF Subsystem" ), 243 tr( "PCMCIA/CF Subsystem" ),
240 tr( "<qt>You have inserted the card<br/><b>%1</b><br/>This card is not yet configured. Do you want to configure it now?</qt>" ).arg( newCardName ), 244 tr( "<qt>You have inserted the card<br/><b>%1</b><br/>This card is not yet configured. Do you want to configure it now?</qt>" ).arg( newCardName ),
241 tr( "Yes" ), tr( "No" ), 0, 0, 1 ); 245 tr( "Yes" ), tr( "No" ), 0, 0, 1 );
242 odebug << "pcmcia: result = " << result << oendl; 246 odebug << "pcmcia: result = " << result << oendl;
243 if ( result == 0 ) 247 if ( result == 0 )
244 { 248 {
245 QString insertAction; QString resumeAction; QString driver; QString conf; 249 QString insertAction; QString resumeAction; QString driver; QString conf;
246 bool configured = configure( theCard, insertAction, resumeAction, driver, conf ); 250 bool configured = configure( theCard, insertAction, resumeAction, driver, conf );
247 251
248 if ( configured ) 252 if ( configured )
249 { 253 {
@@ -252,25 +256,25 @@ void PcmciaManager::cardMessage( const QCString & msg, const QByteArray & )
252 cfg.writeEntry( "name", newCardName ); 256 cfg.writeEntry( "name", newCardName );
253 cfg.writeEntry( "insertAction", insertAction ); 257 cfg.writeEntry( "insertAction", insertAction );
254 cfg.writeEntry( "resumeAction", resumeAction ); 258 cfg.writeEntry( "resumeAction", resumeAction );
255 cfg.setGroup( "Global" ); 259 cfg.setGroup( "Global" );
256 cfg.writeEntry( "nCards", nCards+1 ); 260 cfg.writeEntry( "nCards", nCards+1 );
257 cfg.write(); 261 cfg.write();
258 262
259 QFile confFile( conf ); 263 QFile confFile( conf );
260 if ( confFile.open( IO_ReadWrite | IO_Append ) ) 264 if ( confFile.open( IO_ReadWrite | IO_Append ) )
261 { 265 {
262 QString entryCard = QString( "card \"%1\"" ).arg( newCardName ); 266 QString entryCard = QString( "card \"%1\"" ).arg( newCardName );
263 QString entryVersion( " version " ); 267 QString entryVersion( " version " );
264 for ( QStringList::Iterator it = theCard->productIdentity().begin(); it != theCard->productIdentity().end(); ++it ) 268 for ( QStringList::Iterator it = theCard->productIdentityVector().begin(); it != theCard->productIdentityVector().end(); ++it )
265 { 269 {
266 entryVersion += QString( "\"%1\", " ).arg( *it ); 270 entryVersion += QString( "\"%1\", " ).arg( *it );
267 } 271 }
268 QString entryBind = QString( " bind %1" ).arg( driver ); 272 QString entryBind = QString( " bind %1" ).arg( driver );
269 QString entry = QString( "\n%1\n%2\n%3\n" ).arg( entryCard ).arg( entryVersion ).arg( entryBind ); 273 QString entry = QString( "\n%1\n%2\n%3\n" ).arg( entryCard ).arg( entryVersion ).arg( entryBind );
270 odebug << "pcmcia: writing entry...:" << entry << oendl; 274 odebug << "pcmcia: writing entry...:" << entry << oendl;
271 275
272 confFile.writeBlock( (const char*) entry, entry.length() ); 276 confFile.writeBlock( (const char*) entry, entry.length() );
273 Global::statusMessage( "restarting pcmcia services..." ); 277 Global::statusMessage( "restarting pcmcia services..." );
274 ::system( "/etc/init.d/pcmcia restart" ); 278 ::system( "/etc/init.d/pcmcia restart" );
275 } 279 }
276 else 280 else