-rw-r--r-- | noncore/net/mail/taskbarapplet/mailapplet.cpp | 51 |
1 files changed, 33 insertions, 18 deletions
diff --git a/noncore/net/mail/taskbarapplet/mailapplet.cpp b/noncore/net/mail/taskbarapplet/mailapplet.cpp index 2fc1d01..9c0d32f 100644 --- a/noncore/net/mail/taskbarapplet/mailapplet.cpp +++ b/noncore/net/mail/taskbarapplet/mailapplet.cpp | |||
@@ -7,32 +7,42 @@ | |||
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 */ | ||
16 | #include <signal.h> | ||
17 | |||
15 | using namespace Opie::Core; | 18 | using namespace Opie::Core; |
16 | 19 | ||
17 | MailApplet::MailApplet( QWidget *parent ) | 20 | MailApplet::MailApplet( QWidget *parent ) |
18 | : QWidget( parent ) { | 21 | : QWidget( parent ) { |
19 | 22 | ||
20 | m_config = new Config( "mail" ); | 23 | m_config = new Config( "mail" ); |
21 | m_config->setGroup( "Applet" ); | 24 | m_config->setGroup( "Applet" ); |
22 | 25 | ||
23 | setFixedWidth( AppLnk::smallIconSize() ); | 26 | setFixedWidth( AppLnk::smallIconSize() ); |
24 | setFixedHeight( AppLnk::smallIconSize() ); | 27 | setFixedHeight( AppLnk::smallIconSize() ); |
25 | 28 | ||
26 | hide(); | 29 | hide(); |
27 | 30 | ||
28 | m_newMails = 0; | 31 | m_newMails = 0; |
29 | m_statusMail = 0l; | 32 | m_statusMail = 0l; |
30 | 33 | ||
34 | /* for networking we must block SIGPIPE and Co. */ | ||
35 | struct sigaction blocking_action,temp_action; | ||
36 | blocking_action.sa_handler = SIG_IGN; | ||
37 | sigemptyset(&(blocking_action.sa_mask)); | ||
38 | blocking_action.sa_flags = 0; | ||
39 | sigaction(SIGPIPE,&blocking_action,&temp_action); | ||
40 | |||
31 | if ( !m_config->readBoolEntry( "Disabled", false ) ) { | 41 | if ( !m_config->readBoolEntry( "Disabled", false ) ) { |
32 | // delay 5 sec until the whole mail backend gets started .-) | 42 | // delay 5 sec until the whole mail backend gets started .-) |
33 | QTimer::singleShot( 5000, this, SLOT( startup() ) ); | 43 | QTimer::singleShot( 5000, this, SLOT( startup() ) ); |
34 | } | 44 | } |
35 | repaint( true ); | 45 | repaint( true ); |
36 | } | 46 | } |
37 | 47 | ||
38 | 48 | ||
@@ -64,72 +74,77 @@ void MailApplet::slotClicked() { | |||
64 | e << QString( "opiemail" ); | 74 | e << QString( "opiemail" ); |
65 | 75 | ||
66 | ODevice *device = ODevice::inst(); | 76 | ODevice *device = ODevice::inst(); |
67 | if ( !device-> ledList().isEmpty() ) { | 77 | if ( !device-> ledList().isEmpty() ) { |
68 | OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0]; | 78 | OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0]; |
69 | 79 | ||
70 | device->setLedState( led, Led_Off ); | 80 | device->setLedState( led, Led_Off ); |
71 | } | 81 | } |
72 | |||
73 | if (m_statusMail) | 82 | if (m_statusMail) |
74 | m_statusMail->reset_status(); | 83 | m_statusMail->reset_status(); |
75 | |||
76 | hide(); | 84 | hide(); |
77 | } | 85 | } |
78 | 86 | ||
79 | void MailApplet::startup() { | 87 | void MailApplet::startup() |
88 | { | ||
80 | Settings *settings = new Settings(); | 89 | Settings *settings = new Settings(); |
81 | QList<Account> ma = settings->getAccounts(); | 90 | QList<Account> ma = settings->getAccounts(); |
82 | m_statusMail = new StatusMail( ma ); | 91 | m_statusMail = new StatusMail( ma ); |
83 | delete settings; | 92 | delete settings; |
84 | 93 | ||
85 | m_intervalMs = m_config->readNumEntry( "CheckEvery", 5 ) * 60000; | 94 | //m_intervalMs = m_config->readNumEntry( "CheckEvery", 5 ) * 60000; |
95 | m_intervalMs = 100; | ||
86 | m_intervalTimer = new QTimer(); | 96 | m_intervalTimer = new QTimer(); |
87 | m_intervalTimer->start( m_intervalMs ); | 97 | m_intervalTimer->start( m_intervalMs ); |
88 | connect( m_intervalTimer, SIGNAL( timeout() ), this, SLOT( slotCheck() ) ); | 98 | connect( m_intervalTimer, SIGNAL( timeout() ), this, SLOT( slotCheck() ) ); |
89 | } | 99 | } |
90 | 100 | ||
91 | void MailApplet::slotCheck() { | 101 | void MailApplet::slotCheck() { |
92 | // Check wether the check interval has been changed. | 102 | // Check wether the check interval has been changed. |
103 | odebug << "MailApplet::slotCheck()" << oendl; | ||
93 | int newIntervalMs = m_config->readNumEntry( "CheckEvery", 5 ) * 60000; | 104 | int newIntervalMs = m_config->readNumEntry( "CheckEvery", 5 ) * 60000; |
94 | if ( newIntervalMs != m_intervalMs ) { | 105 | if ( newIntervalMs != m_intervalMs ) { |
95 | m_intervalTimer->changeInterval( newIntervalMs ); | 106 | m_intervalTimer->changeInterval( newIntervalMs ); |
96 | m_intervalMs = newIntervalMs; | 107 | m_intervalMs = newIntervalMs; |
97 | } | 108 | } |
98 | 109 | ||
99 | if (m_statusMail == 0) { | 110 | if (m_statusMail == 0) { |
100 | return; | 111 | return; |
101 | } | 112 | } |
102 | 113 | ||
103 | folderStat stat; | 114 | folderStat stat; |
104 | m_statusMail->check_current_stat( stat ); | 115 | m_statusMail->check_current_stat( stat ); |
105 | int newMailsOld = m_newMails; | 116 | int newMailsOld = m_newMails; |
106 | m_newMails = stat.message_unseen; | 117 | m_newMails = stat.message_unseen; |
107 | odebug << QString( "test %1" ).arg( m_newMails ) << oendl; | 118 | odebug << QString( "test %1" ).arg( m_newMails ) << oendl; |
108 | if ( m_newMails > 0 && newMailsOld != m_newMails ) { | 119 | if ( m_newMails > 0) { |
109 | ODevice *device = ODevice::inst(); | 120 | if (isHidden()) |
110 | if ( isHidden() ) | ||
111 | show(); | 121 | show(); |
112 | if ( m_config->readBoolEntry( "BlinkLed", true ) ) { | 122 | if (newMailsOld != m_newMails) { |
113 | if ( !device->ledList().isEmpty() ) { | 123 | ODevice *device = ODevice::inst(); |
114 | OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0]; | 124 | if ( m_config->readBoolEntry( "BlinkLed", true ) ) { |
115 | device->setLedState( led, device->ledStateList( led ).contains( Led_BlinkSlow ) ? Led_BlinkSlow : Led_On ); | 125 | if ( !device->ledList().isEmpty() ) { |
126 | 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 ); | ||
128 | } | ||
116 | } | 129 | } |
130 | if ( m_config->readBoolEntry( "PlaySound", false ) ) | ||
131 | device->playAlarmSound(); | ||
117 | } | 132 | } |
118 | if ( m_config->readBoolEntry( "PlaySound", false ) ) | ||
119 | device->playAlarmSound(); | ||
120 | |||
121 | Config cfg( "mail" ); | 133 | Config cfg( "mail" ); |
122 | cfg.setGroup( "Status" ); | 134 | cfg.setGroup( "Status" ); |
123 | cfg.writeEntry( "newMails", m_newMails ); | 135 | cfg.writeEntry( "newMails", m_newMails ); |
124 | QCopEnvelope env( "QPE/Pim", "newMails(int)" ); | 136 | { |
125 | env << m_newMails; | 137 | odebug << "QCop abschicken" << oendl; |
138 | QCopEnvelope env( "QPE/Pim", "newMails(int)" ); | ||
139 | env << m_newMails; | ||
140 | } | ||
141 | odebug << "QCop abschicken done" << oendl; | ||
126 | repaint( true ); | 142 | repaint( true ); |
127 | |||
128 | } else { | 143 | } else { |
129 | ODevice *device = ODevice::inst(); | 144 | ODevice *device = ODevice::inst(); |
130 | if ( !isHidden() ) | 145 | if ( !isHidden() ) |
131 | hide(); | 146 | hide(); |
132 | if ( !device->ledList().isEmpty() ) { | 147 | if ( !device->ledList().isEmpty() ) { |
133 | OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0]; | 148 | OLed led = ( device->ledList().contains( Led_Mail ) ) ? Led_Mail : device->ledList()[0]; |
134 | device->setLedState( led, Led_Off ); | 149 | device->setLedState( led, Led_Off ); |
135 | } | 150 | } |