summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/applets/pcmcia/pcmcia.cpp35
-rw-r--r--noncore/applets/pcmcia/pcmcia.h5
2 files changed, 39 insertions, 1 deletions
diff --git a/noncore/applets/pcmcia/pcmcia.cpp b/noncore/applets/pcmcia/pcmcia.cpp
index 186dfea..0787c3c 100644
--- a/noncore/applets/pcmcia/pcmcia.cpp
+++ b/noncore/applets/pcmcia/pcmcia.cpp
@@ -65,39 +65,62 @@ using namespace Opie::Ui;
#include <sys/vfs.h>
#include <mntent.h>
#endif
PcmciaManager::PcmciaManager( QWidget * parent ) : QWidget( parent )
{
QCopChannel * pcmciaChannel = new QCopChannel( "QPE/Card", this );
connect( pcmciaChannel,
SIGNAL( received(const QCString&,const QByteArray&) ), this,
SLOT( cardMessage(const QCString&,const QByteArray&) ) );
setFocusPolicy( NoFocus );
setFixedWidth ( AppLnk::smallIconSize() );
setFixedHeight ( AppLnk::smallIconSize() );
pm = Opie::Core::OResource::loadPixmap( "cardmon/pcmcia", Opie::Core::OResource::SmallIcon );
configuring = false;
+
+ QCopChannel *channel = new QCopChannel( "QPE/System", this );
+ connect( channel, SIGNAL(received(const QCString&,const QByteArray&)),
+ this, SLOT(handleSystemChannel(const QCString&,const QByteArray&)) );
}
PcmciaManager::~PcmciaManager()
{
}
+void PcmciaManager::handleSystemChannel( const QCString&msg, const QByteArray& )
+{
+ if ( msg == "returnFromSuspend()" )
+ {
+ if ( !OPcmciaSystem::instance()->cardCount() ) return;
+ OPcmciaSystem* sys = OPcmciaSystem::instance();
+ OPcmciaSystem::CardIterator it = sys->iterator();
+ OPcmciaSocket* theCard = 0;
+
+ while ( it.current() )
+ {
+ if ( it.current()->isEmpty() )
+ {
+ executeResumeAction( theCard );
+ }
+ ++it;
+ }
+ }
+}
void PcmciaManager::popUp( QString message, QString icon )
{
if ( !popupMenu ) {
popupMenu = new QPopupMenu( this );
}
popupMenu->clear();
if ( icon.isEmpty() ) {
popupMenu->insertItem( message, 0 );
} else {
popupMenu->insertItem( QIconSet( Opie::Core::OResource::loadPixmap( icon, Opie::Core::OResource::SmallIcon ) ),
message, 0 );
}
QPoint p = mapToGlobal( QPoint( 0, 0 ) );
@@ -184,32 +207,34 @@ void PcmciaManager::cardMessage( const QCString & msg, const QByteArray & )
++it;
continue;
}
else
{
theCard = it.current();
QString cardName = theCard->productIdentity().join( " " );
for ( int i = 0; i < nCards; ++i )
{
QString cardSection = QString( "Card_%1" ).arg( i );
cfg.setGroup( cardSection );
QString name = cfg.readEntry( "name" );
odebug << "pcmcia: comparing card '" << cardName << "' with known card '" << name << "'" << oendl;
if ( cardName == name )
{
newCard = false;
+ odebug << "pcmcia: we have seen this card before" << oendl;
+ executeInsertAction( theCard );
break;
}
}
if ( !newCard ) ++it; else break;
}
}
if ( newCard )
{
odebug << "pcmcia: unconfigured card detected" << oendl;
QString newCardName = theCard->productIdentity().join( " " ).stripWhiteSpace();
int result = QMessageBox::information( qApp->desktop(),
tr( "PCMCIA/CF Subsystem" ),
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 ),
tr( "Yes" ), tr( "No" ), 0, 0, 1 );
odebug << "pcmcia: result = " << result << oendl;
if ( result == 0 )
@@ -331,19 +356,29 @@ bool PcmciaManager::configure( OPcmciaSocket* card, QString& insertAction, QStri
{
configuring = true;
ConfigDialog dialog( card, qApp->desktop() );
int configresult = QPEApplication::execDialog( &dialog, false );
configuring = false;
odebug << "pcmcia: configresult = " << configresult << oendl;
if ( configresult )
{
insertAction = dialog.cbInsertAction->currentText();
resumeAction = dialog.cbResumeAction->currentText();
driver = dialog.cbBindTo->currentText();
conf = dialog.bindEntries[driver];
}
return configresult;
}
+void PcmciaManager::executeInsertAction( Opie::Core::OPcmciaSocket* card )
+{
+ odebug << "pcmcia: execute insert action" << oendl;
+}
+
+void PcmciaManager::executeResumeAction( Opie::Core::OPcmciaSocket* card )
+{
+ odebug << "pcmcia: execute resume action" << oendl;
+}
+
EXPORT_OPIE_APPLET_v1( PcmciaManager )
diff --git a/noncore/applets/pcmcia/pcmcia.h b/noncore/applets/pcmcia/pcmcia.h
index 94203d3..6567cd7 100644
--- a/noncore/applets/pcmcia/pcmcia.h
+++ b/noncore/applets/pcmcia/pcmcia.h
@@ -32,39 +32,42 @@
#include <qwidget.h>
#include <qpixmap.h>
#include <qpopupmenu.h>
namespace Opie { namespace Core { class OPcmciaSocket; } };
class PcmciaManager : public QWidget
{
Q_OBJECT
public:
PcmciaManager( QWidget *parent = 0 );
~PcmciaManager();
static int position();
private slots:
- void cardMessage( const QCString& msg, const QByteArray& );
+ void handleSystemChannel( const QCString&, const QByteArray& );
+ void cardMessage( const QCString&, const QByteArray& );
void userCardAction( int action );
void popupTimeout();
protected:
void paintEvent( QPaintEvent* );
void mousePressEvent( QMouseEvent * );
private:
bool configure( Opie::Core::OPcmciaSocket*, QString&, QString&, QString&, QString& );
void execCommand( const QStringList &command );
+ void executeInsertAction( Opie::Core::OPcmciaSocket* );
+ void executeResumeAction( Opie::Core::OPcmciaSocket* );
void popUp(QString message, QString icon = QString::null );
private:
bool configuring;
int commandOrig;
QPixmap pm;
QPopupMenu *popupMenu;
};
#endif