From 9b8b30fa6cbdf1424b29cde21fae112e8bf96e6d Mon Sep 17 00:00:00 2001
From: zecke <zecke>
Date: Sat, 30 Nov 2002 11:28:47 +0000
Subject: More infrastructure

ORecur has now the nextOccurence function
exceptions
We've now Notifers like Alarms and DatebookEntries
we may add to execute applications...
AppName replaced with service cause it is a service

Add rtti to OPimRecord as a static function
This is used inside the BackEnd classes to static_cast...

added removeAllCompleted to the todobackends...

add a common Opie PIM mainwindow which takes care of some simple
scripting enchangements..

much more
---
(limited to 'libopie2/opiepim/ui')

diff --git a/libopie2/opiepim/ui/opimmainwindow.cpp b/libopie2/opiepim/ui/opimmainwindow.cpp
new file mode 100644
index 0000000..92be2fd
--- a/dev/null
+++ b/libopie2/opiepim/ui/opimmainwindow.cpp
@@ -0,0 +1,71 @@
+#include <qapplication.h>
+#include <qcopchannel_qws.h>
+
+#include <qpe/qcopenvelope_qws.h>
+
+#include "opimmainwindow.h"
+
+OPimMainWindow::OPimMainWindow( const QString& service, QWidget* parent,
+                                const char* name, WFlags flag )
+    : QMainWindow( parent, name, flag ), 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 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::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)" ) {
+        int uid, trans;
+        stream >> uid;
+        stream >> trans;
+        beam( uid, trans );
+    }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;
+    }
+}
diff --git a/libopie2/opiepim/ui/opimmainwindow.h b/libopie2/opiepim/ui/opimmainwindow.h
new file mode 100644
index 0000000..94100bd
--- a/dev/null
+++ b/libopie2/opiepim/ui/opimmainwindow.h
@@ -0,0 +1,79 @@
+#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 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:
+    /* 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 ,  int transport = IrDa) = 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;
+
+    /* 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& ) = 0;
+    QCopChannel* channel();
+
+private slots:
+    void appMessage( const QCString&, const QByteArray& );
+
+
+private:
+    class Private;
+    Private* d;
+
+    QCopChannel* m_channel;
+    QString m_service;
+    QCString m_str;
+    OPimRecord* m_fallBack;
+};
+
+
+#endif
--
cgit v0.9.0.2