summaryrefslogtreecommitdiff
path: root/examples/simple-pim
Unidiff
Diffstat (limited to 'examples/simple-pim') (more/less context) (ignore whitespace changes)
-rw-r--r--examples/simple-pim/config.in2
-rw-r--r--examples/simple-pim/example.pro2
-rw-r--r--examples/simple-pim/simple.cpp38
3 files changed, 26 insertions, 16 deletions
diff --git a/examples/simple-pim/config.in b/examples/simple-pim/config.in
index aa1a426..9e6adc9 100644
--- a/examples/simple-pim/config.in
+++ b/examples/simple-pim/config.in
@@ -1,4 +1,4 @@
1 config SIMPLE_PIM_EXAMPLE 1 config SIMPLE_PIM_EXAMPLE
2 boolean "Mainwindow with PIM and QCOP usage" 2 boolean "Mainwindow with PIM and QCOP usage"
3 default "y" 3 default "y"
4 depends ( LIBQPE || LIBQPE-X11 ) && EXAMPLES && LIBOPIEPIM2 4 depends ( LIBQPE || LIBQPE-X11 ) && EXAMPLES && LIBOPIE2CORE && LIBOPIE2PIM
diff --git a/examples/simple-pim/example.pro b/examples/simple-pim/example.pro
index ebcdb2b..b8b2c69 100644
--- a/examples/simple-pim/example.pro
+++ b/examples/simple-pim/example.pro
@@ -1,17 +1,17 @@
1CONFIG += qt warn_on quick-app 1CONFIG += qt warn_on quick-app
2 2
3 3
4TARGET = simple-pim 4TARGET = simple-pim
5 5
6HEADERS = simple.h 6HEADERS = simple.h
7SOURCES = simple.cpp 7SOURCES = simple.cpp
8 8
9 9
10INCLUDEPATH += $(OPIEDIR)/include 10INCLUDEPATH += $(OPIEDIR)/include
11DEPENDPATH += $(OPIEDIR)/include 11DEPENDPATH += $(OPIEDIR)/include
12 12
13 13
14# we now also include opie 14# we now also include opie
15LIBS += -lqpe -lopiepim2 -lopieui2 15LIBS += -lqpe -lopiecore2 -lopiepim2 -lopieui2
16 16
17include ( $(OPIEDIR)/include.pro ) 17include ( $(OPIEDIR)/include.pro )
diff --git a/examples/simple-pim/simple.cpp b/examples/simple-pim/simple.cpp
index 50905bf..efd5070 100644
--- a/examples/simple-pim/simple.cpp
+++ b/examples/simple-pim/simple.cpp
@@ -1,86 +1,96 @@
1/* We use a sane order of include files, from the most special to the least special
2 That helps to reduce the number of implicit includes hence increases the reuse */
3
4/* First the local include files */
5#include "simple.h"
6
7/* Then the Ope include files.
8This includes qpe stuff which will eventually be merged with libopie2 */
9#include <opie2/odebug.h> // for odebug streams
10#include <opie2/oapplicationfactory.h> // a template + macro to save the main method and allow quick launching
11#include <opie2/otabwidget.h>
12#include <opie2/owait.h>
13#include <qpe/qpeapplication.h> // the QPEApplication
14#include <qpe/resource.h>
15#include <qpe/sound.h>
16#include <qpe/qcopenvelope_qws.h>
17#include <qpe/datebookmonth.h>
18#include <qpe/timestring.h>
19using namespace Opie::Core;
20
21/* Now the Qt includes */
1#include <qaction.h> // action 22#include <qaction.h> // action
2#include <qmenubar.h> // menubar 23#include <qmenubar.h> // menubar
3#include <qtoolbar.h> // toolbar 24#include <qtoolbar.h> // toolbar
4#include <qlabel.h> // a label 25#include <qlabel.h> // a label
5#include <qpushbutton.h> // the header file for the QPushButton 26#include <qpushbutton.h> // the header file for the QPushButton
6#include <qlayout.h> 27#include <qlayout.h>
7#include <qtimer.h> // we use it for the singleShot 28#include <qtimer.h> // we use it for the singleShot
8#include <qdatetime.h> // for QDate 29#include <qdatetime.h> // for QDate
9#include <qtextview.h> // a rich text widget 30#include <qtextview.h> // a rich text widget
10#include <qdialog.h> 31#include <qdialog.h>
11#include <qwhatsthis.h> // for whats this 32#include <qwhatsthis.h> // for whats this
12 33
13#include <qpe/qpeapplication.h> // the QPEApplication 34/* Add standard includes here if you need some
14#include <qpe/resource.h> 35 Examples are: stdlib.h, socket.h, etc. */
15#include <qpe/sound.h>
16#include <qpe/qcopenvelope_qws.h>
17#include <qpe/datebookmonth.h>
18#include <qpe/timestring.h>
19
20#include <opie2/oapplicationfactory.h> // a template + macro to save the main method and allow quick launching
21#include <opie2/otabwidget.h>
22#include <opie2/owait.h>
23
24#include "simple.h"
25 36
26/* 37/*
27 * implementation of simple 38 * implementation of simple
28 */ 39 */
29 40
30/* 41/*
31 * The factory is used for quicklaunching 42 * The factory is used for quicklaunching
32 * 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 43 * 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
33 * 44 *
34 * Depending on the global quick launch setting this will create 45 * Depending on the global quick launch setting this will create
35 * either a main method or one for our component plugin system 46 * either a main method or one for our component plugin system
36 */ 47 */
37 48
38using namespace Opie::Core;
39OPIE_EXPORT_APP( OApplicationFactory<MainWindow> ) 49OPIE_EXPORT_APP( OApplicationFactory<MainWindow> )
40 50
41MainWindow::MainWindow(QWidget *parent, const char* name, WFlags fl ) 51MainWindow::MainWindow(QWidget *parent, const char* name, WFlags fl )
42 : QMainWindow( parent, name, fl ) { 52 : QMainWindow( parent, name, fl ) {
43 setCaption(tr("My MainWindow") ); 53 setCaption(tr("My MainWindow") );
44 54
45 m_desktopChannel = 0; 55 m_desktopChannel = 0;
46 m_loading = 0; 56 m_loading = 0;
47 57
48 initUI(); 58 initUI();
49 59
50 60
51 /* 61 /*
52 * Tab widget as central 62 * Tab widget as central
53 */ 63 */
54 m_tab = new Opie::Ui::OTabWidget(this); 64 m_tab = new Opie::Ui::OTabWidget(this);
55 65
56 setCentralWidget( m_tab ); 66 setCentralWidget( m_tab );
57 67
58 m_todoView = new PIMListView(m_tab, "Todo view" ); 68 m_todoView = new PIMListView(m_tab, "Todo view" );
59 m_tab->addTab( m_todoView,"todo/TodoList", tr("Todos") ); 69 m_tab->addTab( m_todoView,"todo/TodoList", tr("Todos") );
60 70
61 m_dateView = new PIMListView(m_tab, "Datebook view" ); 71 m_dateView = new PIMListView(m_tab, "Datebook view" );
62 m_tab->addTab( m_dateView, "datebook/DateBook", tr("Events") ); 72 m_tab->addTab( m_dateView, "datebook/DateBook", tr("Events") );
63 73
64 /* now connect the actions */ 74 /* now connect the actions */
65 /* 75 /*
66 * we connect the activated to our show 76 * we connect the activated to our show
67 * and on activation we will show a detailed 77 * and on activation we will show a detailed
68 * summary of the record 78 * summary of the record
69 */ 79 */
70 connect(m_fire, SIGNAL(activated() ), 80 connect(m_fire, SIGNAL(activated() ),
71 this, SLOT(slotShow() ) ); 81 this, SLOT(slotShow() ) );
72 82
73 /* 83 /*
74 * We will change the date 84 * We will change the date
75 */ 85 */
76 connect(m_dateAction, SIGNAL(activated() ), 86 connect(m_dateAction, SIGNAL(activated() ),
77 this, SLOT(slotDate() ) ); 87 this, SLOT(slotDate() ) );
78 88
79 /* 89 /*
80 * connect the show signal of the PIMListView 90 * connect the show signal of the PIMListView
81 * to a slot to show a dialog 91 * to a slot to show a dialog
82 */ 92 */
83 connect(m_todoView, SIGNAL(showRecord(const OPimRecord&) ), 93 connect(m_todoView, SIGNAL(showRecord(const OPimRecord&) ),
84 this, SLOT(slotShowRecord(const OPimRecord&) ) ); 94 this, SLOT(slotShowRecord(const OPimRecord&) ) );
85 connect(m_dateView, SIGNAL(showRecord(const OPimRecord&) ), 95 connect(m_dateView, SIGNAL(showRecord(const OPimRecord&) ),
86 this, SLOT(slotShowRecord(const OPimRecord&) ) ); 96 this, SLOT(slotShowRecord(const OPimRecord&) ) );
@@ -259,97 +269,97 @@ void MainWindow::slotLoadForDay(int y, int m, int d) {
259} 269}
260 270
261void MainWindow::slotLoadForDay(const QDate& date) { 271void MainWindow::slotLoadForDay(const QDate& date) {
262 272
263 273
264 /* all todos for today including the ones without dueDate */ 274 /* all todos for today including the ones without dueDate */
265 m_todoView->set( m_tb.effectiveToDos(date, date ) ); 275 m_todoView->set( m_tb.effectiveToDos(date, date ) );
266 m_dateView->set( m_db.effectiveEvents( date, date ) ); 276 m_dateView->set( m_db.effectiveEvents( date, date ) );
267} 277}
268 278
269/* we want to show the current record */ 279/* we want to show the current record */
270void MainWindow::slotShow() { 280void MainWindow::slotShow() {
271 /* we only added PIMListViews so we can safely cast */ 281 /* we only added PIMListViews so we can safely cast */
272 PIMListView *view = static_cast<PIMListView*>(m_tab->currentWidget() ); 282 PIMListView *view = static_cast<PIMListView*>(m_tab->currentWidget() );
273 283
274 /* ask the view to send a signal */ 284 /* ask the view to send a signal */
275 view->showCurrentRecord(); 285 view->showCurrentRecord();
276 286
277} 287}
278 288
279/* as answer this slot will be called */ 289/* as answer this slot will be called */
280void MainWindow::slotShowRecord( const Opie::OPimRecord& rec) { 290void MainWindow::slotShowRecord( const Opie::OPimRecord& rec) {
281 /* got a parent but still is a toplevel MODAL dialog */ 291 /* got a parent but still is a toplevel MODAL dialog */
282 QDialog* dia = new QDialog(this,"dialog",TRUE ); 292 QDialog* dia = new QDialog(this,"dialog",TRUE );
283 QVBoxLayout *box = new QVBoxLayout( dia ); 293 QVBoxLayout *box = new QVBoxLayout( dia );
284 dia->setCaption( tr("View Record") ); 294 dia->setCaption( tr("View Record") );
285 295
286 296
287 QTextView *view = new QTextView(dia ); 297 QTextView *view = new QTextView(dia );
288 view->setText( rec.toRichText() ); 298 view->setText( rec.toRichText() );
289 box->addWidget( view ); 299 box->addWidget( view );
290 /* 300 /*
291 * execute via QPEApplication 301 * execute via QPEApplication
292 * this allows QPEApplication to make a sane decision 302 * this allows QPEApplication to make a sane decision
293 * on the size 303 * on the size
294 */ 304 */
295 dia->showMaximized(); 305 dia->showMaximized();
296 QPEApplication::execDialog( dia ); 306 QPEApplication::execDialog( dia );
297 delete dia; 307 delete dia;
298} 308}
299 309
300 310
301void MainWindow::slotDate() { 311void MainWindow::slotDate() {
302 /* 312 /*
303 * called by the action we will show a Popup 313 * called by the action we will show a Popup
304 * at the current mouse position with a DateChooser 314 * at the current mouse position with a DateChooser
305 * to select the day 315 * to select the day
306 */ 316 */
307 qWarning("slot Date"); 317 odebug << "slot Date" << oendl;
308 QPopupMenu *menu = new QPopupMenu(); 318 QPopupMenu *menu = new QPopupMenu();
309 /* A Month to select a date from TRUE for auto close */ 319 /* A Month to select a date from TRUE for auto close */
310 DateBookMonth *month = new DateBookMonth(menu, 0, true ); 320 DateBookMonth *month = new DateBookMonth(menu, 0, true );
311 connect(month, SIGNAL(dateClicked(int,int,int) ), 321 connect(month, SIGNAL(dateClicked(int,int,int) ),
312 this, SLOT(slotLoadForDay(int,int,int) ) ); 322 this, SLOT(slotLoadForDay(int,int,int) ) );
313 323
314 menu->insertItem( month ); 324 menu->insertItem( month );
315 325
316 menu->exec( QCursor::pos() ); 326 menu->exec( QCursor::pos() );
317 327
318 /* 328 /*
319 * we do not need to delete month because 329 * we do not need to delete month because
320 * we delete its parent menu 330 * we delete its parent menu
321 */ 331 */
322 332
323 delete menu; 333 delete menu;
324} 334}
325 335
326/* 336/*
327 * An anonymous namespace this symbol is only available here 337 * An anonymous namespace this symbol is only available here
328 * so truely private 338 * so truely private
329 */ 339 */
330namespace { 340namespace {
331 /* not static cause namespace does that what static would do */ 341 /* not static cause namespace does that what static would do */
332 const int RTTI = 5050; 342 const int RTTI = 5050;
333 /* 343 /*
334 * every ListView got Items. we've special pim items 344 * every ListView got Items. we've special pim items
335 * holding ownership and the pointer to a pim record 345 * holding ownership and the pointer to a pim record
336 * it can't hold a pimrecord directly because this 346 * it can't hold a pimrecord directly because this
337 * would introduce slicing... any break 347 * would introduce slicing... any break
338 */ 348 */
339 /* 349 /*
340 * A struct is a special class. Everything is public by 350 * A struct is a special class. Everything is public by
341 * default. 351 * default.
342 */ 352 */
343 struct PIMListViewItem : public QListViewItem { 353 struct PIMListViewItem : public QListViewItem {
344 /* 354 /*
345 *currently no hierachies are planed for the example 355 *currently no hierachies are planed for the example
346 * so only one constructor with a QListView as parent 356 * so only one constructor with a QListView as parent
347 */ 357 */
348 PIMListViewItem( QListView*, Opie::OPimRecord* record ); 358 PIMListViewItem( QListView*, Opie::OPimRecord* record );
349 ~PIMListViewItem(); 359 ~PIMListViewItem();
350 360
351 /* used by the QListViewItem to easily allow identifiying of different 361 /* used by the QListViewItem to easily allow identifiying of different
352 * items. Values greater than 1000 should be used */ 362 * items. Values greater than 1000 should be used */
353 int rtti()const; 363 int rtti()const;
354 Opie::OPimRecord* record()const; 364 Opie::OPimRecord* record()const;
355 365