summaryrefslogtreecommitdiff
authoralwin <alwin>2005-03-12 02:17:12 (UTC)
committer alwin <alwin>2005-03-12 02:17:12 (UTC)
commitc30ae1086dfe8bebe1790161ba7df6c5472ded9f (patch) (unidiff)
tree2d98b84fd3fd3aa0e78eec5eb039bbd9088008da
parentf6fa2808753f84a66037d8ca4f62f7ce412a386b (diff)
downloadopie-c30ae1086dfe8bebe1790161ba7df6c5472ded9f.zip
opie-c30ae1086dfe8bebe1790161ba7df6c5472ded9f.tar.gz
opie-c30ae1086dfe8bebe1790161ba7df6c5472ded9f.tar.bz2
if there are new mails the taskbar icon stays 'cause not all
machines have a (working) mail-LED and users wonders why them don't get a notification. Inserted a block for SIGPIPE - that would let opie crash otherwise if happen.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/taskbarapplet/mailapplet.cpp16
-rw-r--r--noncore/net/mail/taskbarapplet/mailapplet.h3
2 files changed, 11 insertions, 8 deletions
diff --git a/noncore/net/mail/taskbarapplet/mailapplet.cpp b/noncore/net/mail/taskbarapplet/mailapplet.cpp
index 9c0d32f..ce1e7ac 100644
--- a/noncore/net/mail/taskbarapplet/mailapplet.cpp
+++ b/noncore/net/mail/taskbarapplet/mailapplet.cpp
@@ -1,160 +1,162 @@
1#include <qpainter.h> 1#include <qpainter.h>
2#include <qtimer.h> 2#include <qtimer.h>
3 3
4#include <qpe/qcopenvelope_qws.h> 4#include <qpe/qcopenvelope_qws.h>
5#include <qpe/resource.h> 5#include <qpe/resource.h>
6#include <qpe/config.h> 6#include <qpe/config.h>
7#include <qpe/applnk.h> 7#include <qpe/applnk.h>
8#include <opie2/odebug.h> 8#include <opie2/odebug.h>
9#include <opie2/odevice.h> 9#include <opie2/odevice.h>
10 10
11#include <libmailwrapper/settings.h> 11#include <libmailwrapper/settings.h>
12 12
13#include "mailapplet.h" 13#include "mailapplet.h"
14 14
15/* UNIX */ 15/* UNIX */
16#include <signal.h> 16#include <signal.h>
17 17
18using namespace Opie::Core; 18using namespace Opie::Core;
19 19
20MailApplet::MailApplet( QWidget *parent ) 20MailApplet::MailApplet( QWidget *parent )
21: QWidget( parent ) { 21: QLabel( parent ) {
22 22
23 m_config = new Config( "mail" ); 23 m_config = new Config( "mail" );
24 m_config->setGroup( "Applet" ); 24 m_config->setGroup( "Applet" );
25 25
26 setFixedWidth( AppLnk::smallIconSize() ); 26 //setFixedWidth( AppLnk::smallIconSize() );
27 setFixedHeight( AppLnk::smallIconSize() ); 27 setFixedHeight( AppLnk::smallIconSize() );
28 28
29 hide(); 29 hide();
30 30
31 m_newMails = 0; 31 m_newMails = 0;
32 m_statusMail = 0l; 32 m_statusMail = 0l;
33 33
34 /* for networking we must block SIGPIPE and Co. */ 34 /* for networking we must block SIGPIPE and Co. */
35 struct sigaction blocking_action,temp_action; 35 struct sigaction blocking_action,temp_action;
36 blocking_action.sa_handler = SIG_IGN; 36 blocking_action.sa_handler = SIG_IGN;
37 sigemptyset(&(blocking_action.sa_mask)); 37 sigemptyset(&(blocking_action.sa_mask));
38 blocking_action.sa_flags = 0; 38 blocking_action.sa_flags = 0;
39 sigaction(SIGPIPE,&blocking_action,&temp_action); 39 sigaction(SIGPIPE,&blocking_action,&temp_action);
40 40
41 if ( !m_config->readBoolEntry( "Disabled", false ) ) { 41 if ( !m_config->readBoolEntry( "Disabled", false ) ) {
42 // delay 5 sec until the whole mail backend gets started .-) 42 // delay 5 sec until the whole mail backend gets started .-)
43 QTimer::singleShot( 5000, this, SLOT( startup() ) ); 43 QTimer::singleShot( 5000, this, SLOT( startup() ) );
44 } 44 }
45 repaint( true ); 45 repaint( true );
46} 46}
47 47
48 48
49MailApplet::~MailApplet() { 49MailApplet::~MailApplet() {
50 if ( m_statusMail ) 50 if ( m_statusMail )
51 delete m_statusMail; 51 delete m_statusMail;
52 if ( m_config ) 52 if ( m_config )
53 delete m_config; 53 delete m_config;
54} 54}
55 55
56void MailApplet::paintEvent( QPaintEvent* ) { 56void MailApplet::paintEvent( QPaintEvent*ev )
57{
57 QPainter p( this ); 58 QPainter p( this );
58 p.drawPixmap( 0, 0, Resource::loadPixmap( "mail/inbox" ) ); 59 p.drawPixmap( 0, 0, Resource::loadPixmap( "mail/inbox" ) );
60 QLabel::paintEvent(ev);
61#if 0
59 QFont f( "vera", AppLnk::smallIconSize() ); 62 QFont f( "vera", AppLnk::smallIconSize() );
60 QFontMetrics fm( f ); 63 QFontMetrics fm( f );
61 p.setFont( f ); 64 p.setFont( f );
62 p.setPen( Qt::blue ); 65 p.setPen( Qt::blue );
63 p.drawText( AppLnk::smallIconSize()/3, AppLnk::smallIconSize() - 2, QString::number( m_newMails ) ); 66 p.drawText( AppLnk::smallIconSize()/3, AppLnk::smallIconSize() - 2, QString::number( m_newMails ) );
67#endif
64 return; 68 return;
65
66} 69}
67 70
68void MailApplet::mouseReleaseEvent( QMouseEvent* e ) { 71void MailApplet::mouseReleaseEvent( QMouseEvent* e ) {
69 slotClicked(); 72 slotClicked();
70} 73}
71 74
72void MailApplet::slotClicked() { 75void MailApplet::slotClicked() {
73 QCopEnvelope e( "QPE/System", "execute(QString)" ); 76 QCopEnvelope e( "QPE/System", "execute(QString)" );
74 e << QString( "opiemail" ); 77 e << QString( "opiemail" );
75 78
76 ODevice *device = ODevice::inst(); 79 ODevice *device = ODevice::inst();
77 if ( !device-> ledList().isEmpty() ) { 80 if ( !device-> ledList().isEmpty() ) {
78 OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0]; 81 OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0];
79 82
80 device->setLedState( led, Led_Off ); 83 device->setLedState( led, Led_Off );
81 } 84 }
82 if (m_statusMail) 85 if (m_statusMail)
83 m_statusMail->reset_status(); 86 m_statusMail->reset_status();
84 hide(); 87 hide();
85} 88}
86 89
87void MailApplet::startup() 90void MailApplet::startup()
88{ 91{
89 Settings *settings = new Settings(); 92 Settings *settings = new Settings();
90 QList<Account> ma = settings->getAccounts(); 93 QList<Account> ma = settings->getAccounts();
91 m_statusMail = new StatusMail( ma ); 94 m_statusMail = new StatusMail( ma );
92 delete settings; 95 delete settings;
93 96
94 //m_intervalMs = m_config->readNumEntry( "CheckEvery", 5 ) * 60000; 97 //m_intervalMs = m_config->readNumEntry( "CheckEvery", 5 ) * 60000;
95 m_intervalMs = 100; 98 m_intervalMs = 100;
96 m_intervalTimer = new QTimer(); 99 m_intervalTimer = new QTimer();
97 m_intervalTimer->start( m_intervalMs ); 100 m_intervalTimer->start( m_intervalMs );
98 connect( m_intervalTimer, SIGNAL( timeout() ), this, SLOT( slotCheck() ) ); 101 connect( m_intervalTimer, SIGNAL( timeout() ), this, SLOT( slotCheck() ) );
99} 102}
100 103
101void MailApplet::slotCheck() { 104void MailApplet::slotCheck() {
102 // Check wether the check interval has been changed. 105 // Check wether the check interval has been changed.
103 odebug << "MailApplet::slotCheck()" << oendl; 106 odebug << "MailApplet::slotCheck()" << oendl;
104 int newIntervalMs = m_config->readNumEntry( "CheckEvery", 5 ) * 60000; 107 int newIntervalMs = m_config->readNumEntry( "CheckEvery", 5 ) * 60000;
105 if ( newIntervalMs != m_intervalMs ) { 108 if ( newIntervalMs != m_intervalMs ) {
106 m_intervalTimer->changeInterval( newIntervalMs ); 109 m_intervalTimer->changeInterval( newIntervalMs );
107 m_intervalMs = newIntervalMs; 110 m_intervalMs = newIntervalMs;
108 } 111 }
109 112
110 if (m_statusMail == 0) { 113 if (m_statusMail == 0) {
111 return; 114 return;
112 } 115 }
113 116
114 folderStat stat; 117 folderStat stat;
115 m_statusMail->check_current_stat( stat ); 118 m_statusMail->check_current_stat( stat );
116 int newMailsOld = m_newMails; 119 int newMailsOld = m_newMails;
117 m_newMails = stat.message_unseen; 120 m_newMails = stat.message_unseen;
118 odebug << QString( "test %1" ).arg( m_newMails ) << oendl; 121 odebug << QString( "test %1" ).arg( m_newMails ) << oendl;
119 if ( m_newMails > 0) { 122 if ( m_newMails > 0) {
120 if (isHidden()) 123 if (isHidden())
121 show(); 124 show();
122 if (newMailsOld != m_newMails) { 125 if (newMailsOld != m_newMails) {
123 ODevice *device = ODevice::inst(); 126 ODevice *device = ODevice::inst();
124 if ( m_config->readBoolEntry( "BlinkLed", true ) ) { 127 if ( m_config->readBoolEntry( "BlinkLed", true ) ) {
125 if ( !device->ledList().isEmpty() ) { 128 if ( !device->ledList().isEmpty() ) {
126 OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0]; 129 OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0];
127 device->setLedState( led, device->ledStateList( led ).contains( Led_BlinkSlow ) ? Led_BlinkSlow : Led_On ); 130 device->setLedState( led, device->ledStateList( led ).contains( Led_BlinkSlow ) ? Led_BlinkSlow : Led_On );
128 } 131 }
129 } 132 }
130 if ( m_config->readBoolEntry( "PlaySound", false ) ) 133 if ( m_config->readBoolEntry( "PlaySound", false ) )
131 device->playAlarmSound(); 134 device->playAlarmSound();
132 } 135 }
133 Config cfg( "mail" ); 136 Config cfg( "mail" );
134 cfg.setGroup( "Status" ); 137 cfg.setGroup( "Status" );
135 cfg.writeEntry( "newMails", m_newMails ); 138 cfg.writeEntry( "newMails", m_newMails );
136 { 139 {
137 odebug << "QCop abschicken" << oendl;
138 QCopEnvelope env( "QPE/Pim", "newMails(int)" ); 140 QCopEnvelope env( "QPE/Pim", "newMails(int)" );
139 env << m_newMails; 141 env << m_newMails;
140 } 142 }
141 odebug << "QCop abschicken done" << oendl; 143 setText(QString::number( m_newMails ));
142 repaint( true ); 144// repaint( true );
143 } else { 145 } else {
144 ODevice *device = ODevice::inst(); 146 ODevice *device = ODevice::inst();
145 if ( !isHidden() ) 147 if ( !isHidden() )
146 hide(); 148 hide();
147 if ( !device->ledList().isEmpty() ) { 149 if ( !device->ledList().isEmpty() ) {
148 OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0]; 150 OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0];
149 device->setLedState( led, Led_Off ); 151 device->setLedState( led, Led_Off );
150 } 152 }
151 153
152 if ( newMailsOld != m_newMails ) { 154 if ( newMailsOld != m_newMails ) {
153 Config cfg( "mail" ); 155 Config cfg( "mail" );
154 cfg.setGroup( "Status" ); 156 cfg.setGroup( "Status" );
155 cfg.writeEntry( "newMails", m_newMails ); 157 cfg.writeEntry( "newMails", m_newMails );
156 QCopEnvelope env( "QPE/Pim", "newMails(int)" ); 158 QCopEnvelope env( "QPE/Pim", "newMails(int)" );
157 env << m_newMails; 159 env << m_newMails;
158 } 160 }
159 } 161 }
160} 162}
diff --git a/noncore/net/mail/taskbarapplet/mailapplet.h b/noncore/net/mail/taskbarapplet/mailapplet.h
index b4d3742..f28f274 100644
--- a/noncore/net/mail/taskbarapplet/mailapplet.h
+++ b/noncore/net/mail/taskbarapplet/mailapplet.h
@@ -1,38 +1,39 @@
1#ifndef MAILAPPLET_H 1#ifndef MAILAPPLET_H
2#define MAILAPPLET_H 2#define MAILAPPLET_H
3 3
4#include <qbutton.h> 4#include <qbutton.h>
5#include <qlabel.h>
5 6
6#include <libmailwrapper/statusmail.h> 7#include <libmailwrapper/statusmail.h>
7 8
8class Config; 9class Config;
9class QTimer; 10class QTimer;
10 11
11class MailApplet : public QWidget { 12class MailApplet : public QLabel {
12 13
13 Q_OBJECT 14 Q_OBJECT
14 15
15public: 16public:
16 MailApplet( QWidget *parent = 0 ); 17 MailApplet( QWidget *parent = 0 );
17 ~MailApplet(); 18 ~MailApplet();
18 19
19protected: 20protected:
20 void gotNewMail(); 21 void gotNewMail();
21 void mouseReleaseEvent( QMouseEvent* ); 22 void mouseReleaseEvent( QMouseEvent* );
22 void paintEvent( QPaintEvent* ); 23 void paintEvent( QPaintEvent* );
23 24
24protected slots: 25protected slots:
25 void startup(); 26 void startup();
26 void slotCheck(); 27 void slotCheck();
27 void slotClicked(); 28 void slotClicked();
28private: 29private:
29 Config *m_config; 30 Config *m_config;
30 QTimer *m_intervalTimer; 31 QTimer *m_intervalTimer;
31 int m_intervalMs; 32 int m_intervalMs;
32 StatusMail* m_statusMail; 33 StatusMail* m_statusMail;
33 int m_newMails; 34 int m_newMails;
34 35
35}; 36};
36 37
37#endif 38#endif
38 39