summaryrefslogtreecommitdiff
path: root/examples/simple-pim
Side-by-side diff
Diffstat (limited to 'examples/simple-pim') (more/less context) (show whitespace changes)
-rw-r--r--examples/simple-pim/opie-simple.control2
-rw-r--r--examples/simple-pim/simple.cpp8
2 files changed, 5 insertions, 5 deletions
diff --git a/examples/simple-pim/opie-simple.control b/examples/simple-pim/opie-simple.control
index 1b54f91..80ad85b 100644
--- a/examples/simple-pim/opie-simple.control
+++ b/examples/simple-pim/opie-simple.control
@@ -1,9 +1,9 @@
Package: opie-simple-pim-example
Files: bin/main-tab apps/Examples/main-tab.desktop
Priority: optional
Section: opie/examples
Maintainer: Holger 'zecke' Freyther <zecke@handhelds.org>
Architecture: arm
-Depends: task-opie-minimal, opie-pics
+Depends: task-opie-minimal, libopiecore2, libopieui2, libopiepim2, opie-pics
Description: A simple example
Version: $QPE_VERSION$EXTRAVERSION
diff --git a/examples/simple-pim/simple.cpp b/examples/simple-pim/simple.cpp
index 00c5600..6019d04 100644
--- a/examples/simple-pim/simple.cpp
+++ b/examples/simple-pim/simple.cpp
@@ -1,252 +1,252 @@
/* We use a sane order of include files, from the most special to the least special
That helps to reduce the number of implicit includes hence increases the reuse */
/* First the local include files */
#include "simple.h"
/* Then the Ope include files.
This includes qpe stuff which will eventually be merged with libopie2 */
#include <opie2/odebug.h> // for odebug streams
#include <opie2/oapplicationfactory.h> // a template + macro to save the main method and allow quick launching
+#include <opie2/oresource.h>
#include <opie2/otabwidget.h>
#include <opie2/owait.h>
#include <qpe/qpeapplication.h> // the QPEApplication
-#include <qpe/resource.h>
#include <qpe/sound.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/datebookmonth.h>
#include <qpe/timestring.h>
using namespace Opie::Core;
/* Now the Qt includes */
#include <qaction.h> // action
#include <qmenubar.h> // menubar
#include <qtoolbar.h> // toolbar
#include <qlabel.h> // a label
#include <qpushbutton.h> // the header file for the QPushButton
#include <qlayout.h>
#include <qtimer.h> // we use it for the singleShot
#include <qdatetime.h> // for QDate
#include <qtextview.h> // a rich text widget
#include <qdialog.h>
#include <qwhatsthis.h> // for whats this
/* Add standard includes here if you need some
Examples are: stdlib.h, socket.h, etc. */
/*
* implementation of simple
*/
/*
* The factory is used for quicklaunching
* It needs a constructor ( c'tor ) with at least QWidget, const char* and WFlags as parameter and a static QString appName() matching the TARGET of the .pro
*
* Depending on the global quick launch setting this will create
* either a main method or one for our component plugin system
*/
OPIE_EXPORT_APP( OApplicationFactory<MainWindow> )
MainWindow::MainWindow(QWidget *parent, const char* name, WFlags fl )
: QMainWindow( parent, name, fl ) {
setCaption(tr("My MainWindow") );
m_desktopChannel = 0;
m_loading = 0;
initUI();
/*
* Tab widget as central
*/
m_tab = new Opie::Ui::OTabWidget(this);
setCentralWidget( m_tab );
m_todoView = new PIMListView(m_tab, "Todo view" );
m_tab->addTab( m_todoView,"todo/TodoList", tr("Todos") );
m_dateView = new PIMListView(m_tab, "Datebook view" );
m_tab->addTab( m_dateView, "datebook/DateBook", tr("Events") );
/* now connect the actions */
/*
* we connect the activated to our show
* and on activation we will show a detailed
* summary of the record
*/
connect(m_fire, SIGNAL(activated() ),
this, SLOT(slotShow() ) );
/*
* We will change the date
*/
connect(m_dateAction, SIGNAL(activated() ),
this, SLOT(slotDate() ) );
/*
* connect the show signal of the PIMListView
* to a slot to show a dialog
*/
connect(m_todoView, SIGNAL(showRecord(const Opie::OPimRecord&) ),
this, SLOT(slotShowRecord(const Opie::OPimRecord&) ) );
connect(m_dateView, SIGNAL(showRecord(const Opie::OPimRecord&) ),
this, SLOT(slotShowRecord(const Opie::OPimRecord&) ) );
/*
* Now comes the important lines of code for this example
* We do not directly call load but delay loading until
* all Events are dispatches and handled.
* SO we will load once our window is mapped to screen
* to achieve that we use a QTimer::singleShot
* After 10 milli seconds the timer fires and on TimerEvent
* out slot slotLoad will be called
* Remember this a Constructor to construct your object and not
* to load
*/
QTimer::singleShot( 10, this, SLOT(slotLoad() ) );
}
MainWindow::~MainWindow() {
// again nothing to delete because Qt takes care
}
void MainWindow::setDocument( const QString& /*str*/ ) {
}
void MainWindow::initUI() {
setToolBarsMovable( false );
QToolBar *menuBarHolder = new QToolBar( this );
menuBarHolder->setHorizontalStretchable( true );
QMenuBar *mb = new QMenuBar( menuBarHolder );
QToolBar *tb = new QToolBar( this );
QPopupMenu *fileMenu = new QPopupMenu( this );
- QAction *a = new QAction( tr("Quit"), Resource::loadIconSet("quit_icon"),
+ QAction *a = new QAction( tr("Quit"), Opie::Core::OResource::loadPixmap("quit_icon", Opie::Core::OResource::SmallIcon),
QString::null, 0, this, "quit_action" );
/*
* Connect quit to the QApplication quit slot
*/
connect(a, SIGNAL(activated() ),
qApp, SLOT(quit() ) );
a->addTo( fileMenu );
a = new QAction(tr("View Current"),
- Resource::loadIconSet("zoom"),
+ Opie::Core::OResource::loadPixmap("zoom", Opie::Core::OResource::SmallIcon),
QString::null, 0, this, "view current");
/* a simple whats this online explanation of out button */
a->setWhatsThis(tr("Views the current record") );
/* or QWhatsThis::add(widget, "description" ); */
/* see the power? */
a->addTo( fileMenu );
a->addTo( tb );
m_fire = a;
a = new QAction(tr("Choose Date"),
- Resource::loadIconSet("day"),
+ Opie::Core::OResource::loadPixmap("day", Opie::Core::OResource::SmallIcon),
QString::null, 0, this, "choose date" );
a->addTo( fileMenu );
a->addTo( tb );
m_dateAction = a;
mb->insertItem(tr("File"), fileMenu );
}
void MainWindow::slotLoad() {
/*
* There is no real shared access in the PIM API
* It wasn't finish cause of health problems of one
* of the authors so we do something fancy and use QCOP
* the IPC system to get a current copy
*/
/* NOTES to QCOP: QCOP operates over channels and use QDataStream
* to send data. You can check if a channel isRegistered or hook
* yourself to that channel. A Channel is QCString and normally
* prefix with QPE/ and then the system in example QPE/System,
* QPE/Desktop a special channel is the application channel
* it QPE/Application/appname this channel gets created on app
* startup by QPEApplication. QCOP is asynchronous
*
* To send you'll use QCopEnevelope
*
*/
/*
* What we will do is first is get to know if either
* datebook or todolist are running if so we will kindly
* asked to save the data for us.
* If neither are running we can load directly
*/
if (!QCopChannel::isRegistered("QPE/Application/todolist") &&
!QCopChannel::isRegistered("QPE/Application/datebook") ) {
m_db.load();
m_tb.load();
return slotLoadForDay( QDate::currentDate() );
}
/*
* prepare our answer machine the QCopChannel
* QPE/Desktop will send "flushDone(QString)" when
* the flush is done it emits a signal on receive
*/
m_desktopChannel = new QCopChannel("QPE/Desktop");
connect(m_desktopChannel, SIGNAL(received(const QCString&,const QByteArray&) ),
this, SLOT(slotDesktopReceive(const QCString&,const QByteArray&) ) );
/* the numberof synced channels will be set to zero */
m_synced = 0;
/*
* We use {} around the QCopEnvelope because it sends its
* data on destruction of QCopEnvelope with
*/
/* check again if not present increment synced*/
if ( QCopChannel::isRegistered("QPE/Application/todolist") ) {
QCopEnvelope env("QPE/Application/todolist", "flush()" );
// env << data; but we do not have any parameters here
}else
m_synced++;
if ( QCopChannel::isRegistered("QPE/Application/datebook") ) {
QCopEnvelope env("QPE/Application/datebook", "flush()" );
}else
m_synced++;
/* we will provide a wait scrren */
m_loading = new Opie::Ui::OWait(this, "wait screen" );
}
void MainWindow::slotDesktopReceive(const QCString& cmd, const QByteArray& data ) {
/* the bytearray was filled with the QDataStream now
* we open it read only to get the value(s)
*/
QDataStream stream(data, IO_ReadOnly );
/*
* we're only interested in the flushDone
*/
if ( cmd == "flushDone(QString)" ) {
QString appname;
stream >> appname; // get the first argument out of stream
if (appname == QString::fromLatin1("datebook") ||
appname == QString::fromLatin1("todolist") )
m_synced++;
}
/*
* If we synced both we can go ahead
* In future this is not needed anymore when we finally
* implemented X-Ref and other PIM features
*/
if (m_synced >= 2 ) {
delete m_loading;
delete m_desktopChannel;
/* now we finally can start doing the actual loading */