author | alwin <alwin> | 2005-03-12 02:17:12 (UTC) |
---|---|---|
committer | alwin <alwin> | 2005-03-12 02:17:12 (UTC) |
commit | c30ae1086dfe8bebe1790161ba7df6c5472ded9f (patch) (unidiff) | |
tree | 2d98b84fd3fd3aa0e78eec5eb039bbd9088008da | |
parent | f6fa2808753f84a66037d8ca4f62f7ce412a386b (diff) | |
download | opie-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.
-rw-r--r-- | noncore/net/mail/taskbarapplet/mailapplet.cpp | 16 | ||||
-rw-r--r-- | noncore/net/mail/taskbarapplet/mailapplet.h | 3 |
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 | ||
18 | using namespace Opie::Core; | 18 | using namespace Opie::Core; |
19 | 19 | ||
20 | MailApplet::MailApplet( QWidget *parent ) | 20 | MailApplet::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 | ||
49 | MailApplet::~MailApplet() { | 49 | MailApplet::~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 | ||
56 | void MailApplet::paintEvent( QPaintEvent* ) { | 56 | void 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 | ||
68 | void MailApplet::mouseReleaseEvent( QMouseEvent* e ) { | 71 | void MailApplet::mouseReleaseEvent( QMouseEvent* e ) { |
69 | slotClicked(); | 72 | slotClicked(); |
70 | } | 73 | } |
71 | 74 | ||
72 | void MailApplet::slotClicked() { | 75 | void 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 | ||
87 | void MailApplet::startup() | 90 | void 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 | ||
101 | void MailApplet::slotCheck() { | 104 | void 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 | ||
8 | class Config; | 9 | class Config; |
9 | class QTimer; | 10 | class QTimer; |
10 | 11 | ||
11 | class MailApplet : public QWidget { | 12 | class MailApplet : public QLabel { |
12 | 13 | ||
13 | Q_OBJECT | 14 | Q_OBJECT |
14 | 15 | ||
15 | public: | 16 | public: |
16 | MailApplet( QWidget *parent = 0 ); | 17 | MailApplet( QWidget *parent = 0 ); |
17 | ~MailApplet(); | 18 | ~MailApplet(); |
18 | 19 | ||
19 | protected: | 20 | protected: |
20 | void gotNewMail(); | 21 | void gotNewMail(); |
21 | void mouseReleaseEvent( QMouseEvent* ); | 22 | void mouseReleaseEvent( QMouseEvent* ); |
22 | void paintEvent( QPaintEvent* ); | 23 | void paintEvent( QPaintEvent* ); |
23 | 24 | ||
24 | protected slots: | 25 | protected slots: |
25 | void startup(); | 26 | void startup(); |
26 | void slotCheck(); | 27 | void slotCheck(); |
27 | void slotClicked(); | 28 | void slotClicked(); |
28 | private: | 29 | private: |
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 | ||