summaryrefslogtreecommitdiff
path: root/libopie
authorzecke <zecke>2003-05-12 13:17:48 (UTC)
committer zecke <zecke>2003-05-12 13:17:48 (UTC)
commitd6e4c1a54185b1aa4443cb79a36acc637acf84ac (patch) (side-by-side diff)
treebff7f62a0a06cbcd3d1492b37c297e9133dacff4 /libopie
parentabfe4c66be60075a518d4918d603bb8033bc5ac4 (diff)
downloadopie-d6e4c1a54185b1aa4443cb79a36acc637acf84ac.zip
opie-d6e4c1a54185b1aa4443cb79a36acc637acf84ac.tar.gz
opie-d6e4c1a54185b1aa4443cb79a36acc637acf84ac.tar.bz2
Add handling of alarm() message
play and killAlarm... added as well
Diffstat (limited to 'libopie') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/opimmainwindow.cpp36
-rw-r--r--libopie/pim/opimmainwindow.h18
2 files changed, 49 insertions, 5 deletions
diff --git a/libopie/pim/opimmainwindow.cpp b/libopie/pim/opimmainwindow.cpp
index d1eec19..4044bc1 100644
--- a/libopie/pim/opimmainwindow.cpp
+++ b/libopie/pim/opimmainwindow.cpp
@@ -1,104 +1,138 @@
#include <qapplication.h>
+#include <qdatetime.h>
#include <qcopchannel_qws.h>
+#include <qpe/sound.h>
#include <qpe/qcopenvelope_qws.h>
#include "opimresolver.h"
#include "opimmainwindow.h"
OPimMainWindow::OPimMainWindow( const QString& service, QWidget* parent,
const char* name, WFlags flag )
: QMainWindow( parent, name, flag ), m_rtti(-1), m_service( service ), m_fallBack(0l) {
/*
* let's generate our QCopChannel
*/
m_str = QString("QPE/"+m_service).local8Bit();
m_channel= new QCopChannel(m_str, this );
connect(m_channel, SIGNAL(received(const QCString&, const QByteArray& ) ),
this, SLOT( appMessage( const QCString&, const QByteArray& ) ) );
+ connect(qApp, SIGNAL(appMessage(const QCString&, const QByteArray& ) ),
+ this, SLOT( appMessage( const QCString&, const QByteArray& ) ) );
/* connect flush and reload */
connect(qApp, SIGNAL(flush() ),
this, SLOT(flush() ) );
connect(qApp, SIGNAL(reload() ),
this, SLOT(reload() ) );
}
OPimMainWindow::~OPimMainWindow() {
delete m_channel;
}
QCopChannel* OPimMainWindow::channel() {
return m_channel;
}
void OPimMainWindow::doSetDocument( const QString& ) {
}
void OPimMainWindow::appMessage( const QCString& cmd, const QByteArray& array ) {
/*
* create demands to create
* a new record...
*/
QDataStream stream(array, IO_ReadOnly);
if ( cmd == "create()" ) {
int uid = create();
QCopEnvelope e(m_str, "created(int)" );
e << uid;
}else if ( cmd == "remove(int)" ) {
int uid;
stream >> uid;
bool rem = remove( uid );
QCopEnvelope e(m_str, "removed(bool)" );
e << rem;
}else if ( cmd == "beam(int)" ) {
- int uid, trans;
+ int uid;
stream >> uid;
beam( uid);
}else if ( cmd == "show(int)" ) {
int uid;
stream >> uid;
show( uid );
}else if ( cmd == "edit(int)" ) {
int uid;
stream >> uid;
edit( uid );
}else if ( cmd == "add(int,QByteArray)" ) {
int rtti;
QByteArray array;
stream >> rtti;
stream >> array;
m_fallBack = record(rtti, array );
if (!m_fallBack) return;
add( *m_fallBack );
delete m_fallBack;
+ }else if ( cmd == "alarm(QDateTime,int)" ) {
+ QDateTime dt; int uid;
+ stream >> dt;
+ stream >> uid;
+ qWarning(" Date: %s Uid: %d", dt.toString().latin1(), uid );
+ QDateTime current = QDateTime::currentDateTime();
+ if ( current.time().hour() != dt.time().hour() && current.time().minute() != dt.time().minute() )
+ return;
+ doAlarm( dt, uid );
+
}
}
/* implement the url scripting here */
void OPimMainWindow::setDocument( const QString& str) {
doSetDocument( str );
}
/*
* we now try to get the array demarshalled
* check if the rtti matches this one
*/
OPimRecord* OPimMainWindow::record( int rtti, const QByteArray& array ) {
if ( service() != rtti )
return 0l;
OPimRecord* record = OPimResolver::self()->record( rtti );
QDataStream str(array, IO_ReadOnly );
if ( !record || !record->loadFromStream(str) ) {
delete record;
record = 0l;
}
return record;
}
/*
* get the rtti for the service
*/
int OPimMainWindow::service() {
if ( m_rtti == -1 )
m_rtti = OPimResolver::self()->serviceId( m_service );
return m_rtti;
}
+void OPimMainWindow::doAlarm( const QDateTime&, int ) {
+
+}
+void OPimMainWindow::startAlarm(int count ) {
+ m_alarmCount = count;
+ m_playedCount = 0;
+ Sound::soundAlarm();
+ m_timerId = startTimer( 5000 );
+}
+void OPimMainWindow::killAlarm() {
+ killTimer( m_timerId );
+}
+void OPimMainWindow::timerEvent( QTimerEvent* e) {
+ if ( m_playedCount <m_alarmCount ) {
+ m_playedCount++;
+ Sound::soundAlarm();
+ }else {
+ killTimer( e->timerId() );
+ }
+}
diff --git a/libopie/pim/opimmainwindow.h b/libopie/pim/opimmainwindow.h
index dca3c82..855d364 100644
--- a/libopie/pim/opimmainwindow.h
+++ b/libopie/pim/opimmainwindow.h
@@ -1,89 +1,99 @@
#ifndef OPIE_PIM_MAINWINDOW_H
#define OPIE_PIM_MAINWINDOW_H
#include <qmainwindow.h>
#include <opie/opimrecord.h>
/**
* This is a common Opie PIM MainWindow
* it takes care of the QCOP internals
* and implements some functions
* for the URL scripting schema
*/
/*
* due Qt and Templates with signal and slots
* do not work that good :(
* (Ok how to moc a template ;) )
* We will have the mainwindow which calls a struct which
* is normally reimplemented as a template ;)
*/
class QCopChannel;
+class QDateTime;
class OPimMainWindow : public QMainWindow {
Q_OBJECT
public:
enum TransPort { BlueTooth=0,
IrDa };
OPimMainWindow( const QString& service, QWidget *parent = 0, const char* name = 0,
WFlags f = WType_TopLevel);
virtual ~OPimMainWindow();
protected slots:
/*
* called when a setDocument
* couldn't be handled by this window
*/
virtual void doSetDocument( const QString& );
/* for syncing */
virtual void flush() = 0;
virtual void reload() = 0;
/** create a new Records and return the uid */
virtual int create() = 0;
/** remove a record with UID == uid */
virtual bool remove( int uid ) = 0;
/** beam the record with UID = uid */
virtual void beam( int uid ) = 0;
/** show the record with UID == uid */
virtual void show( int uid ) = 0;
/** edit the record */
virtual void edit( int uid ) = 0;
/** make a copy of it! */
virtual void add( const OPimRecord& ) = 0;
+ virtual void doAlarm( const QDateTime&, int uid );
QCopChannel* channel();
+protected:
+ /**
+ * start to play soundAlarm()
+ * @param count How many times the alarm is played
+ */
+ void startAlarm(int count = 10);
+ void killAlarm();
+ void timerEvent( QTimerEvent* );
+
private slots:
void appMessage( const QCString&, const QByteArray& );
void setDocument( const QString& );
private:
class Private;
Private* d;
int m_rtti;
QCopChannel* m_channel;
QString m_service;
QCString m_str;
OPimRecord* m_fallBack;
-
+ int m_alarmCount;
+ int m_playedCount;
+ int m_timerId;
/* I would love to do this as a template
* but can't think of a right way
* because I need signal and slots -zecke
*/
- /*
- * the only pointer in the whole PIM API :(
- */
virtual OPimRecord* record( int rtti, const QByteArray& ) ;
int service();
};
#endif