summaryrefslogtreecommitdiff
path: root/libopie2
Unidiff
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/ui/opimmainwindow.cpp36
-rw-r--r--libopie2/opiepim/ui/opimmainwindow.h18
2 files changed, 49 insertions, 5 deletions
diff --git a/libopie2/opiepim/ui/opimmainwindow.cpp b/libopie2/opiepim/ui/opimmainwindow.cpp
index d1eec19..4044bc1 100644
--- a/libopie2/opiepim/ui/opimmainwindow.cpp
+++ b/libopie2/opiepim/ui/opimmainwindow.cpp
@@ -1,31 +1,35 @@
1#include <qapplication.h> 1#include <qapplication.h>
2#include <qdatetime.h>
2#include <qcopchannel_qws.h> 3#include <qcopchannel_qws.h>
3 4
5#include <qpe/sound.h>
4#include <qpe/qcopenvelope_qws.h> 6#include <qpe/qcopenvelope_qws.h>
5 7
6#include "opimresolver.h" 8#include "opimresolver.h"
7#include "opimmainwindow.h" 9#include "opimmainwindow.h"
8 10
9OPimMainWindow::OPimMainWindow( const QString& service, QWidget* parent, 11OPimMainWindow::OPimMainWindow( const QString& service, QWidget* parent,
10 const char* name, WFlags flag ) 12 const char* name, WFlags flag )
11 : QMainWindow( parent, name, flag ), m_rtti(-1), m_service( service ), m_fallBack(0l) { 13 : QMainWindow( parent, name, flag ), m_rtti(-1), m_service( service ), m_fallBack(0l) {
12 14
13 /* 15 /*
14 * let's generate our QCopChannel 16 * let's generate our QCopChannel
15 */ 17 */
16 m_str = QString("QPE/"+m_service).local8Bit(); 18 m_str = QString("QPE/"+m_service).local8Bit();
17 m_channel= new QCopChannel(m_str, this ); 19 m_channel= new QCopChannel(m_str, this );
18 connect(m_channel, SIGNAL(received(const QCString&, const QByteArray& ) ), 20 connect(m_channel, SIGNAL(received(const QCString&, const QByteArray& ) ),
19 this, SLOT( appMessage( const QCString&, const QByteArray& ) ) ); 21 this, SLOT( appMessage( const QCString&, const QByteArray& ) ) );
22 connect(qApp, SIGNAL(appMessage(const QCString&, const QByteArray& ) ),
23 this, SLOT( appMessage( const QCString&, const QByteArray& ) ) );
20 24
21 /* connect flush and reload */ 25 /* connect flush and reload */
22 connect(qApp, SIGNAL(flush() ), 26 connect(qApp, SIGNAL(flush() ),
23 this, SLOT(flush() ) ); 27 this, SLOT(flush() ) );
24 connect(qApp, SIGNAL(reload() ), 28 connect(qApp, SIGNAL(reload() ),
25 this, SLOT(reload() ) ); 29 this, SLOT(reload() ) );
26} 30}
27OPimMainWindow::~OPimMainWindow() { 31OPimMainWindow::~OPimMainWindow() {
28 delete m_channel; 32 delete m_channel;
29} 33}
30QCopChannel* OPimMainWindow::channel() { 34QCopChannel* OPimMainWindow::channel() {
31 return m_channel; 35 return m_channel;
@@ -41,44 +45,54 @@ void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array )
41 QDataStream stream(array, IO_ReadOnly); 45 QDataStream stream(array, IO_ReadOnly);
42 if ( cmd == "create()" ) { 46 if ( cmd == "create()" ) {
43 int uid = create(); 47 int uid = create();
44 QCopEnvelope e(m_str, "created(int)" ); 48 QCopEnvelope e(m_str, "created(int)" );
45 e << uid; 49 e << uid;
46 }else if ( cmd == "remove(int)" ) { 50 }else if ( cmd == "remove(int)" ) {
47 int uid; 51 int uid;
48 stream >> uid; 52 stream >> uid;
49 bool rem = remove( uid ); 53 bool rem = remove( uid );
50 QCopEnvelope e(m_str, "removed(bool)" ); 54 QCopEnvelope e(m_str, "removed(bool)" );
51 e << rem; 55 e << rem;
52 }else if ( cmd == "beam(int)" ) { 56 }else if ( cmd == "beam(int)" ) {
53 int uid, trans; 57 int uid;
54 stream >> uid; 58 stream >> uid;
55 beam( uid); 59 beam( uid);
56 }else if ( cmd == "show(int)" ) { 60 }else if ( cmd == "show(int)" ) {
57 int uid; 61 int uid;
58 stream >> uid; 62 stream >> uid;
59 show( uid ); 63 show( uid );
60 }else if ( cmd == "edit(int)" ) { 64 }else if ( cmd == "edit(int)" ) {
61 int uid; 65 int uid;
62 stream >> uid; 66 stream >> uid;
63 edit( uid ); 67 edit( uid );
64 }else if ( cmd == "add(int,QByteArray)" ) { 68 }else if ( cmd == "add(int,QByteArray)" ) {
65 int rtti; 69 int rtti;
66 QByteArray array; 70 QByteArray array;
67 stream >> rtti; 71 stream >> rtti;
68 stream >> array; 72 stream >> array;
69 m_fallBack = record(rtti, array ); 73 m_fallBack = record(rtti, array );
70 if (!m_fallBack) return; 74 if (!m_fallBack) return;
71 add( *m_fallBack ); 75 add( *m_fallBack );
72 delete m_fallBack; 76 delete m_fallBack;
77 }else if ( cmd == "alarm(QDateTime,int)" ) {
78 QDateTime dt; int uid;
79 stream >> dt;
80 stream >> uid;
81 qWarning(" Date: %s Uid: %d", dt.toString().latin1(), uid );
82 QDateTime current = QDateTime::currentDateTime();
83 if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() )
84 return;
85 doAlarm( dt, uid );
86
73 } 87 }
74} 88}
75/* implement the url scripting here */ 89/* implement the url scripting here */
76void OPimMainWindow::setDocument( const QString& str) { 90void OPimMainWindow::setDocument( const QString& str) {
77 doSetDocument( str ); 91 doSetDocument( str );
78} 92}
79/* 93/*
80 * we now try to get the array demarshalled 94 * we now try to get the array demarshalled
81 * check if the rtti matches this one 95 * check if the rtti matches this one
82 */ 96 */
83OPimRecord* OPimMainWindow::record( int rtti, const QByteArray& array ) { 97OPimRecord* OPimMainWindow::record( int rtti, const QByteArray& array ) {
84 if ( service() != rtti ) 98 if ( service() != rtti )
@@ -93,12 +107,32 @@ OPimRecord* OPimMainWindow::record( int rtti, const QByteArray& array ) {
93 107
94 return record; 108 return record;
95} 109}
96/* 110/*
97 * get the rtti for the service 111 * get the rtti for the service
98 */ 112 */
99int OPimMainWindow::service() { 113int OPimMainWindow::service() {
100 if ( m_rtti == -1 ) 114 if ( m_rtti == -1 )
101 m_rtti = OPimResolver::self()->serviceId( m_service ); 115 m_rtti = OPimResolver::self()->serviceId( m_service );
102 116
103 return m_rtti; 117 return m_rtti;
104} 118}
119void OPimMainWindow::doAlarm( const QDateTime&, int ) {
120
121}
122void OPimMainWindow::startAlarm(int count ) {
123 m_alarmCount = count;
124 m_playedCount = 0;
125 Sound::soundAlarm();
126 m_timerId = startTimer( 5000 );
127}
128void OPimMainWindow::killAlarm() {
129 killTimer( m_timerId );
130}
131void OPimMainWindow::timerEvent( QTimerEvent* e) {
132 if ( m_playedCount <m_alarmCount ) {
133 m_playedCount++;
134 Sound::soundAlarm();
135 }else {
136 killTimer( e->timerId() );
137 }
138}
diff --git a/libopie2/opiepim/ui/opimmainwindow.h b/libopie2/opiepim/ui/opimmainwindow.h
index dca3c82..855d364 100644
--- a/libopie2/opiepim/ui/opimmainwindow.h
+++ b/libopie2/opiepim/ui/opimmainwindow.h
@@ -11,24 +11,25 @@
11 * and implements some functions 11 * and implements some functions
12 * for the URL scripting schema 12 * for the URL scripting schema
13 */ 13 */
14/* 14/*
15 * due Qt and Templates with signal and slots 15 * due Qt and Templates with signal and slots
16 * do not work that good :( 16 * do not work that good :(
17 * (Ok how to moc a template ;) ) 17 * (Ok how to moc a template ;) )
18 * We will have the mainwindow which calls a struct which 18 * We will have the mainwindow which calls a struct which
19 * is normally reimplemented as a template ;) 19 * is normally reimplemented as a template ;)
20 */ 20 */
21 21
22class QCopChannel; 22class QCopChannel;
23class QDateTime;
23class OPimMainWindow : public QMainWindow { 24class OPimMainWindow : public QMainWindow {
24 Q_OBJECT 25 Q_OBJECT
25public: 26public:
26 enum TransPort { BlueTooth=0, 27 enum TransPort { BlueTooth=0,
27 IrDa }; 28 IrDa };
28 29
29 OPimMainWindow( const QString& service, QWidget *parent = 0, const char* name = 0, 30 OPimMainWindow( const QString& service, QWidget *parent = 0, const char* name = 0,
30 WFlags f = WType_TopLevel); 31 WFlags f = WType_TopLevel);
31 virtual ~OPimMainWindow(); 32 virtual ~OPimMainWindow();
32 33
33 34
34protected slots: 35protected slots:
@@ -47,43 +48,52 @@ protected slots:
47 virtual bool remove( int uid ) = 0; 48 virtual bool remove( int uid ) = 0;
48 /** beam the record with UID = uid */ 49 /** beam the record with UID = uid */
49 virtual void beam( int uid ) = 0; 50 virtual void beam( int uid ) = 0;
50 51
51 /** show the record with UID == uid */ 52 /** show the record with UID == uid */
52 virtual void show( int uid ) = 0; 53 virtual void show( int uid ) = 0;
53 /** edit the record */ 54 /** edit the record */
54 virtual void edit( int uid ) = 0; 55 virtual void edit( int uid ) = 0;
55 56
56 /** make a copy of it! */ 57 /** make a copy of it! */
57 virtual void add( const OPimRecord& ) = 0; 58 virtual void add( const OPimRecord& ) = 0;
58 59
60 virtual void doAlarm( const QDateTime&, int uid );
59 61
60 QCopChannel* channel(); 62 QCopChannel* channel();
61 63
64protected:
65 /**
66 * start to play soundAlarm()
67 * @param count How many times the alarm is played
68 */
69 void startAlarm(int count = 10);
70 void killAlarm();
71 void timerEvent( QTimerEvent* );
72
62private slots: 73private slots:
63 void appMessage( const QCString&, const QByteArray& ); 74 void appMessage( const QCString&, const QByteArray& );
64 void setDocument( const QString& ); 75 void setDocument( const QString& );
65 76
66 77
67private: 78private:
68 class Private; 79 class Private;
69 Private* d; 80 Private* d;
70 81
71 int m_rtti; 82 int m_rtti;
72 QCopChannel* m_channel; 83 QCopChannel* m_channel;
73 QString m_service; 84 QString m_service;
74 QCString m_str; 85 QCString m_str;
75 OPimRecord* m_fallBack; 86 OPimRecord* m_fallBack;
76 87 int m_alarmCount;
88 int m_playedCount;
89 int m_timerId;
77 /* I would love to do this as a template 90 /* I would love to do this as a template
78 * but can't think of a right way 91 * but can't think of a right way
79 * because I need signal and slots -zecke 92 * because I need signal and slots -zecke
80 */ 93 */
81 /*
82 * the only pointer in the whole PIM API :(
83 */
84 virtual OPimRecord* record( int rtti, const QByteArray& ) ; 94 virtual OPimRecord* record( int rtti, const QByteArray& ) ;
85 int service(); 95 int service();
86}; 96};
87 97
88 98
89#endif 99#endif