summaryrefslogtreecommitdiff
path: root/core
authordavipt <davipt>2002-06-20 19:10:03 (UTC)
committer davipt <davipt>2002-06-20 19:10:03 (UTC)
commit8c55fec6394ca27aebf49692c643d71db32b7ebf (patch) (unidiff)
tree652f92eb31431ddae39fa6e7cb58e8f1e8b9d5af /core
parente3b199e4b3ad71cb8d046e33e792402250a8faec (diff)
downloadopie-8c55fec6394ca27aebf49692c643d71db32b7ebf.zip
opie-8c55fec6394ca27aebf49692c643d71db32b7ebf.tar.gz
opie-8c55fec6394ca27aebf49692c643d71db32b7ebf.tar.bz2
Fix cardmon applet visibility (now visible is some card is plugged) and added
popup on succesfull ejection or insertion of a card.
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/cardmon/cardmon.cpp84
-rw-r--r--core/applets/cardmon/cardmon.h5
-rw-r--r--core/applets/cardmon/cardmon.pro28
3 files changed, 73 insertions, 44 deletions
diff --git a/core/applets/cardmon/cardmon.cpp b/core/applets/cardmon/cardmon.cpp
index 9522b88..ac2aea2 100644
--- a/core/applets/cardmon/cardmon.cpp
+++ b/core/applets/cardmon/cardmon.cpp
@@ -50,10 +50,10 @@ CardMonitor::CardMonitor( QWidget *parent ) : QWidget( parent ),
50 connect( sdChannel, SIGNAL(received(const QCString &, const QByteArray &)), 50 connect( sdChannel, SIGNAL(received(const QCString &, const QByteArray &)),
51 this, SLOT(cardMessage( const QCString &, const QByteArray &)) ); 51 this, SLOT(cardMessage( const QCString &, const QByteArray &)) );
52 52
53
54 setFixedSize( pm.size() ); 53 setFixedSize( pm.size() );
55 hide(); 54 getStatusPcmcia(TRUE);
56 getStatusPcmcia(); 55 getStatusSd(TRUE);
56 repaint(FALSE);
57} 57}
58 58
59CardMonitor::~CardMonitor() { 59CardMonitor::~CardMonitor() {
@@ -65,20 +65,24 @@ void CardMonitor::mousePressEvent( QMouseEvent * ) {
65 int err=0; 65 int err=0;
66 66
67 if ( cardInSd ) { 67 if ( cardInSd ) {
68 menu->insertItem( tr("Eject SD/ MMC card"), 0 ); 68 menu->insertItem( tr("Eject SD/MMC card"), 0 );
69 } 69 }
70 70
71 if ( cardInPcmcia0 ) { 71 if ( cardInPcmcia0 ) {
72 menu->insertItem( tr("Eject card (0) %1").arg(cardInPcmcia0Name), 1 ); 72 menu->insertItem( tr("Eject card 0: %1").arg(cardInPcmcia0Name), 1 );
73 } 73 }
74 74
75 if ( cardInPcmcia1 ) { 75 if ( cardInPcmcia1 ) {
76 menu->insertItem( tr("Eject card (1) %1").arg(cardInPcmcia1Name), 2 ); 76 menu->insertItem( tr("Eject card 1: %1").arg(cardInPcmcia1Name), 2 );
77 } 77 }
78 78
79 QPoint p = mapToGlobal( QPoint(1, -menu->sizeHint().height()-1) ); 79 QPoint p = mapToGlobal ( QPoint ( 0, 0 ));
80 QSize s = menu->sizeHint ( );
81 int opt = menu->exec( QPoint (
82 p. x ( ) + ( width ( ) / 2 ) - ( s. width ( ) / 2 ),
83 p. y ( ) - s. height ( ) ), 0);
80 84
81 if ( menu->exec( p, 1 ) == 1 ) { 85 if ( opt == 1 ) {
82 86
83 cmd = "/sbin/cardctl eject 0"; 87 cmd = "/sbin/cardctl eject 0";
84 err = system( (const char *) cmd ); 88 err = system( (const char *) cmd );
@@ -86,23 +90,23 @@ void CardMonitor::mousePressEvent( QMouseEvent * ) {
86 qDebug("Could not execute `/sbin/cardctl eject 0'! err=%d", err); 90 qDebug("Could not execute `/sbin/cardctl eject 0'! err=%d", err);
87 QMessageBox::warning( this, tr("CardMonitor"), tr("CF/PCMCIA card eject failed!"), 91 QMessageBox::warning( this, tr("CardMonitor"), tr("CF/PCMCIA card eject failed!"),
88 tr("&OK") ); 92 tr("&OK") );
89 } 93 }
90 } else if ( menu->exec( p, 1 ) == 0 ) { 94 } else if ( opt == 0 ) {
91 cmd = "/etc/sdcontrol compeject"; 95 cmd = "/etc/sdcontrol compeject";
92 err = system( (const char *) cmd ); 96 err = system( (const char *) cmd );
93 if ( ( err != 0 ) ) { 97 if ( ( err != 0 ) ) {
94 qDebug("Could not execute `/etc/sdcontrol comeject'! err=%d", err); 98 qDebug("Could not execute `/etc/sdcontrol comeject'! err=%d", err);
95 QMessageBox::warning( this, tr("CardMonitor"), tr("SD/MMC card eject failed!"), 99 QMessageBox::warning( this, tr("CardMonitor"), tr("SD/MMC card eject failed!"),
96 tr("&OK") ); 100 tr("&OK") );
97 } 101 }
98 } else if ( menu->exec( p, 1 ) == 2 ) { 102 } else if ( opt == 2 ) {
99 cmd = "/sbin/cardctl eject 1"; 103 cmd = "/sbin/cardctl eject 1";
100 err = system( (const char *) cmd ); 104 err = system( (const char *) cmd );
101 if ( ( err == 127 ) || ( err < 0 ) ) { 105 if ( ( err == 127 ) || ( err < 0 ) ) {
102 qDebug("Could not execute `/sbin/cardctl eject 1'! err=%d", err); 106 qDebug("Could not execute `/sbin/cardctl eject 1'! err=%d", err);
103 QMessageBox::warning( this, tr("CardMonitor"), tr("CF/PCMCIA card eject failed!"), 107 QMessageBox::warning( this, tr("CardMonitor"), tr("CF/PCMCIA card eject failed!"),
104 tr("&OK") ); 108 tr("&OK") );
105 } 109 }
106 } 110 }
107 111
108 delete menu; 112 delete menu;
@@ -111,17 +115,19 @@ void CardMonitor::mousePressEvent( QMouseEvent * ) {
111 115
112void CardMonitor::cardMessage( const QCString &msg, const QByteArray & ) { 116void CardMonitor::cardMessage( const QCString &msg, const QByteArray & ) {
113 if ( msg == "stabChanged()" ) { 117 if ( msg == "stabChanged()" ) {
118 // qDebug("Pcmcia: stabchanged");
114 if ( getStatusPcmcia() ) { 119 if ( getStatusPcmcia() ) {
115 repaint(FALSE); 120 repaint(FALSE);
116 } 121 }
117 } else if ( msg == "mtabChanged()" ) { 122 } else if ( msg == "mtabChanged()" ) {
123 // qDebug("Pcmcia: mtabchanged");
118 if ( getStatusSd() ) { 124 if ( getStatusSd() ) {
119 repaint(FALSE); 125 repaint(FALSE);
120 } 126 }
121 } 127 }
122} 128}
123 129
124bool CardMonitor::getStatusPcmcia( void ) { 130bool CardMonitor::getStatusPcmcia( int showPopUp = FALSE ) {
125 131
126 bool cardWas0 = cardInPcmcia0; // remember last state 132 bool cardWas0 = cardInPcmcia0; // remember last state
127 bool cardWas1 = cardInPcmcia1; 133 bool cardWas1 = cardInPcmcia1;
@@ -147,12 +153,11 @@ bool CardMonitor::getStatusPcmcia( void ) {
147 list = QStringList::split("\n", streamIn); 153 list = QStringList::split("\n", streamIn);
148 for(QStringList::Iterator line=list.begin(); line!=list.end(); line++) { 154 for(QStringList::Iterator line=list.begin(); line!=list.end(); line++) {
149 if( (*line).startsWith("Socket 0:") ){ 155 if( (*line).startsWith("Socket 0:") ){
150 // extendable, maybe read out card name
151 if( (*line).startsWith("Socket 0: empty") && cardInPcmcia0 ){ 156 if( (*line).startsWith("Socket 0: empty") && cardInPcmcia0 ){
152 cardInPcmcia0 = FALSE; 157 cardInPcmcia0 = FALSE;
153 hide();
154 } else if ( !(*line).startsWith("Socket 0: empty") && !cardInPcmcia0 ){ 158 } else if ( !(*line).startsWith("Socket 0: empty") && !cardInPcmcia0 ){
155 cardInPcmcia0Name = (*line).mid(((*line).find(':')+1), (*line).length()-9 ); 159 cardInPcmcia0Name = (*line).mid(((*line).find(':')+1), (*line).length()-9 );
160 cardInPcmcia0Name.stripWhiteSpace();
156 cardInPcmcia0 = TRUE; 161 cardInPcmcia0 = TRUE;
157 show(); 162 show();
158 } 163 }
@@ -160,9 +165,9 @@ bool CardMonitor::getStatusPcmcia( void ) {
160 if( (*line).startsWith("Socket 1:") ){ 165 if( (*line).startsWith("Socket 1:") ){
161 if( (*line).startsWith("Socket 1: empty") && cardInPcmcia1 ){ 166 if( (*line).startsWith("Socket 1: empty") && cardInPcmcia1 ){
162 cardInPcmcia1 = FALSE; 167 cardInPcmcia1 = FALSE;
163 hide();
164 } else if ( !(*line).startsWith("Socket 1: empty") && !cardInPcmcia1 ){ 168 } else if ( !(*line).startsWith("Socket 1: empty") && !cardInPcmcia1 ){
165 cardInPcmcia1Name = (*line).mid(((*line).find(':')+1), (*line).length()-9 ); 169 cardInPcmcia1Name = (*line).mid(((*line).find(':')+1), (*line).length()-9 );
170 cardInPcmcia1Name.stripWhiteSpace();
166 cardInPcmcia1 = TRUE; 171 cardInPcmcia1 = TRUE;
167 show(); 172 show();
168 } 173 }
@@ -173,18 +178,40 @@ bool CardMonitor::getStatusPcmcia( void ) {
173 qDebug("no file found"); 178 qDebug("no file found");
174 cardInPcmcia0 = FALSE; 179 cardInPcmcia0 = FALSE;
175 cardInPcmcia1 = FALSE; 180 cardInPcmcia1 = FALSE;
176 hide();
177 return FALSE; 181 return FALSE;
178 182
179 } 183 }
180 184
185 if(!cardInPcmcia0 && !cardInPcmcia1) {
186 qDebug("Pcmcia: no cards");
187 }
188
189 if( !showPopUp && (cardWas0 != cardInPcmcia0 || cardWas1 != cardInPcmcia1)) {
190 QString text = "";
191 if(cardWas0 != cardInPcmcia0) {
192 if(cardInPcmcia0) { text += tr("New card: "); }
193 else { text += tr("Ejected: "); }
194 text += cardInPcmcia0Name;
195 }
196 if(cardWas0 != cardInPcmcia0 && cardWas1 != cardInPcmcia1) {
197 text += "\n";
198 }
199 if(cardWas1 != cardInPcmcia1) {
200 if(cardInPcmcia1) { text += tr("New card: "); }
201 else { text += tr("Ejected: "); }
202 text += cardInPcmcia1Name;
203 }
204 QMessageBox::warning( this, tr("CardMonitor"), text,
205 tr("&OK") );
206 }
207
181 f.close(); 208 f.close();
182 209
183 return ((cardWas0 == cardInPcmcia0 || cardWas1 == cardInPcmcia1) ? FALSE : TRUE); 210 return ((cardWas0 == cardInPcmcia0 || cardWas1 == cardInPcmcia1) ? FALSE : TRUE);
184} 211}
185 212
186 213
187bool CardMonitor::getStatusSd( void ) { 214bool CardMonitor::getStatusSd( int showPopUp = FALSE ) {
188 215
189 bool cardWas=cardInSd; // remember last state 216 bool cardWas=cardInSd; // remember last state
190 cardInSd=false; 217 cardInSd=false;
@@ -201,16 +228,15 @@ bool CardMonitor::getStatusSd( void ) {
201 } 228 }
202 } 229 }
203 endmntent( mntfp ); 230 endmntent( mntfp );
204 if (cardInSd!=cardWas) {
205 if (cardInSd) {
206 show();
207 } else {
208 hide();
209 }
210 }
211 } else {
212 hide();
213 } 231 }
232 if(!showPopUp && cardWas != cardInSd) {
233 QString text = "";
234 if(cardInSd) { text += "SD Inserted"; }
235 else { text += "SD Removed"; }
236 QMessageBox::warning( this, tr("CardMonitor"), text,
237 tr("&OK") );
238 }
239
214#else 240#else
215#error "Not on Linux" 241#error "Not on Linux"
216#endif 242#endif
@@ -222,8 +248,10 @@ void CardMonitor::paintEvent( QPaintEvent * ) {
222 248
223 if ( cardInPcmcia0 || cardInPcmcia1 || cardInSd ) { 249 if ( cardInPcmcia0 || cardInPcmcia1 || cardInSd ) {
224 p.drawPixmap( 0, 0, pm ); 250 p.drawPixmap( 0, 0, pm );
251 show();
225 } else { 252 } else {
226 p.eraseRect( rect() ); 253 p.eraseRect( rect() );
254 hide();
227 } 255 }
228} 256}
229 257
diff --git a/core/applets/cardmon/cardmon.h b/core/applets/cardmon/cardmon.h
index 2a90c90..f9e3819 100644
--- a/core/applets/cardmon/cardmon.h
+++ b/core/applets/cardmon/cardmon.h
@@ -27,8 +27,8 @@ class CardMonitor : public QWidget {
27public: 27public:
28 CardMonitor( QWidget *parent = 0 ); 28 CardMonitor( QWidget *parent = 0 );
29 ~CardMonitor(); 29 ~CardMonitor();
30 bool getStatusPcmcia( void ); 30 bool getStatusPcmcia( int showPopUp = FALSE );
31 bool getStatusSd( void ); 31 bool getStatusSd( int showPopUp = FALSE );
32 32
33private slots: 33private slots:
34 void cardMessage( const QCString &msg, const QByteArray & ); 34 void cardMessage( const QCString &msg, const QByteArray & );
@@ -45,6 +45,7 @@ private:
45 bool cardInPcmcia1; 45 bool cardInPcmcia1;
46 QString cardInPcmcia1Name; 46 QString cardInPcmcia1Name;
47 bool cardInSd; 47 bool cardInSd;
48 void iconShow();
48 49
49}; 50};
50 51
diff --git a/core/applets/cardmon/cardmon.pro b/core/applets/cardmon/cardmon.pro
index ff3463c..e79e91a 100644
--- a/core/applets/cardmon/cardmon.pro
+++ b/core/applets/cardmon/cardmon.pro
@@ -9,17 +9,17 @@ DEPENDPATH += $(OPIEDIR)/include ../launcher
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12TRANSLATIONS = ../i18n/de/libcardmonapplet.ts 12TRANSLATIONS = ../../i18n/de/libcardmonapplet.ts
13TRANSLATIONS += ../i18n/es/libcardmonapplet.ts 13TRANSLATIONS += ../../i18n/es/libcardmonapplet.ts
14TRANSLATIONS += ../i18n/pt/libcardmonapplet.ts 14TRANSLATIONS += ../../i18n/pt/libcardmonapplet.ts
15TRANSLATIONS += ../i18n/pt_BR/libcardmonapplet.ts 15TRANSLATIONS += ../../i18n/pt_BR/libcardmonapplet.ts
16TRANSLATIONS += ../i18n/en/libcardmonapplet.ts 16TRANSLATIONS += ../../i18n/en/libcardmonapplet.ts
17TRANSLATIONS += ../i18n/hu/libcardmonapplet.ts 17TRANSLATIONS += ../../i18n/hu/libcardmonapplet.ts
18TRANSLATIONS += ../i18n/sl/libcardmonapplet.ts 18TRANSLATIONS += ../../i18n/sl/libcardmonapplet.ts
19TRANSLATIONS += ../i18n/pl/libcardmonapplet.ts 19TRANSLATIONS += ../../i18n/pl/libcardmonapplet.ts
20TRANSLATIONS += ../i18n/ja/libcardmonapplet.ts 20TRANSLATIONS += ../../i18n/ja/libcardmonapplet.ts
21TRANSLATIONS += ../i18n/fr/libcardmonapplet.ts 21TRANSLATIONS += ../../i18n/fr/libcardmonapplet.ts
22TRANSLATIONS += ../i18n/ko/libcardmonapplet.ts 22TRANSLATIONS += ../../i18n/ko/libcardmonapplet.ts
23TRANSLATIONS += ../i18n/no/libcardmonapplet.ts 23TRANSLATIONS += ../../i18n/no/libcardmonapplet.ts
24TRANSLATIONS += ../i18n/zh_CN/libcardmonapplet.ts 24TRANSLATIONS += ../../i18n/zh_CN/libcardmonapplet.ts
25TRANSLATIONS += ../i18n/zh_TW/libcardmonapplet.ts 25TRANSLATIONS += ../../i18n/zh_TW/libcardmonapplet.ts