summaryrefslogtreecommitdiff
path: root/examples
authormickeyl <mickeyl>2004-04-05 13:49:07 (UTC)
committer mickeyl <mickeyl>2004-04-05 13:49:07 (UTC)
commitf44b1d4abe82cfb74db68bffcaf240f6f6134708 (patch) (side-by-side diff)
treec150abb3cbc842fd930d3ab7543a0b34ec3145ad /examples
parent997a521a3ee84f614e2781a663911096ffb4a91a (diff)
downloadopie-f44b1d4abe82cfb74db68bffcaf240f6f6134708.zip
opie-f44b1d4abe82cfb74db68bffcaf240f6f6134708.tar.gz
opie-f44b1d4abe82cfb74db68bffcaf240f6f6134708.tar.bz2
use opie debugging
Diffstat (limited to 'examples') (more/less context) (ignore whitespace changes)
-rw-r--r--examples/networksettings/config.in2
-rw-r--r--examples/networksettings/example.pro19
-rw-r--r--examples/networksettings/exampleiface.cpp5
-rw-r--r--examples/networksettings/examplemodule.cpp10
-rw-r--r--examples/simple-pim/config.in2
-rw-r--r--examples/simple-pim/example.pro2
-rw-r--r--examples/simple-pim/simple.cpp38
7 files changed, 46 insertions, 32 deletions
diff --git a/examples/networksettings/config.in b/examples/networksettings/config.in
index 4bbbb4e..e1a68cc 100644
--- a/examples/networksettings/config.in
+++ b/examples/networksettings/config.in
@@ -1,4 +1,4 @@
config EXAMPLE_VPN
boolean "opie-networksettingsplugin-example (VPN module)"
default "n" if NETWORKSETUP
- depends ( LIBQPE || LIBQPE-X11 ) && NETWORKSETUP && NETWORKSETUP-CORE && INTERFACES && EXAMPLES
+ depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && NETWORKSETUP && NETWORKSETUP-CORE && INTERFACES && EXAMPLES
diff --git a/examples/networksettings/example.pro b/examples/networksettings/example.pro
index 835dbd0..7bfa1ed 100644
--- a/examples/networksettings/example.pro
+++ b/examples/networksettings/example.pro
@@ -1,17 +1,14 @@
-#TEMPLATE = app
-#
TEMPLATE = lib
-#CONFIG += qt plugin warn_on
-CONFIG += qt plugin warn_on
+CONFIG += qt plugin warn_on
DESTDIR = $(OPIEDIR)/plugins/networksettings
-HEADERS = exampleiface.h examplemodule.h
-SOURCES = exampleiface.cpp examplemodule.cpp
-INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/noncore/settings/networksettings $(OPIEDIR)/noncore/settings/networksettings/interfaces
-DEPENDPATH += $(OPIEDIR)/include $(OPIEDIR)/noncore/settings/networksettings $(OPIEDIR)/noncore/settings/networksettings/interfaces
-LIBS += -lqpe -linterfaces
-TARGET = example_vpn
-VERSION = 1.0.0
+HEADERS = exampleiface.h examplemodule.h
+SOURCES = exampleiface.cpp examplemodule.cpp
+INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/noncore/settings/networksettings $(OPIEDIR)/noncore/settings/networksettings/interfaces
+DEPENDPATH += $(OPIEDIR)/include $(OPIEDIR)/noncore/settings/networksettings $(OPIEDIR)/noncore/settings/networksettings/interfaces
+LIBS += -lqpe -linterfaces -lopiecore2
+TARGET = example_vpn
+VERSION = 1.0.0
include ( $(OPIEDIR)/include.pro )
diff --git a/examples/networksettings/exampleiface.cpp b/examples/networksettings/exampleiface.cpp
index 5267a9c..8012bb2 100644
--- a/examples/networksettings/exampleiface.cpp
+++ b/examples/networksettings/exampleiface.cpp
@@ -1,43 +1,46 @@
#include "exampleiface.h"
+#include <opie2/odebug.h>
+using namespace Opie::Core;
+
VirtualInterface::VirtualInterface( QObject* parent,
const char* name,
bool status )
: Interface(parent, name, status )
{
}
VirtualInterface::~VirtualInterface() {
}
bool VirtualInterface::refresh() {
/* we do VPN over ppp
* so replace the interfaceName with
* something actual existing
* I take wlan0 in my case
*/
QString old = getInterfaceName();
- qWarning("Interface name was " + old );
+ odebug << "Interface name was " << old << oendl;
setInterfaceName( "wlan0" );
bool b =Interface::refresh();
setInterfaceName( old );
/* new and old interface name */
emit updateInterface(this);
return b;
}
void VirtualInterface::start() {
// call pptp
setStatus(true);
refresh();
emit updateMessage("VPN started");
}
void VirtualInterface::stop() {
setStatus(false );
refresh();
emit updateMessage("VPN halted");
}
diff --git a/examples/networksettings/examplemodule.cpp b/examples/networksettings/examplemodule.cpp
index d7fd718..703e6bd 100644
--- a/examples/networksettings/examplemodule.cpp
+++ b/examples/networksettings/examplemodule.cpp
@@ -1,71 +1,75 @@
-#include <qwidget.h>
+#include "exampleiface.h"
+#include "examplemodule.h"
+
+/* OPIE */
+#include <opie2/odebug.h>
+using namespace Opie::Core;
#include <interfaces/interfaceinformationimp.h>
-#include "exampleiface.h"
-#include "examplemodule.h"
+#include <qwidget.h>
VirtualModule::VirtualModule() {
Interface* iface = new VirtualInterface( 0 );
iface->setHardwareName( "vpn" );
iface->setInterfaceName( "Test VPN" );
m_interfaces.append( iface );
// If we set up VPN via pptp
// and networksettins was closed and now opened
// we need to hide the ppp device behind us
// One can do this by calling setHandledInterfaceNames
// setHandledInterfaceNames();
}
VirtualModule::~VirtualModule() {
m_interfaces.setAutoDelete( true );
m_interfaces.clear();
}
/*
* We're a VPN module
*/
bool VirtualModule::isOwner( Interface* iface ) {
/* check if it is our device */
return m_interfaces.find( iface ) != -1;
}
QWidget* VirtualModule::configure( Interface* ) {
/* We don't have any Config for now */
return 0l;
}
QWidget* VirtualModule::information( Interface* iface ) {
return new InterfaceInformationImp(0, "Interface info", iface );
}
QList<Interface> VirtualModule::getInterfaces() {
return m_interfaces;
}
void VirtualModule::possibleNewInterfaces( QMap<QString, QString>& map) {
map.insert( QObject::tr("VPN PPTP"),
QObject::tr("Add new Point to Point Tunnel Protocol connection" ) );
}
Interface* VirtualModule::addNewInterface( const QString& ) {
/* check the str if we support more interfaces */
/*
Interface* iface = new VirtualInterface( 0 );
iface->setModuleOwner( this );
return iface;*/
// if we would support saving interfaces we could add
// them here
return 0;
}
bool VirtualModule::remove( Interface* ) {
/* we do not support removing our interface */
return false;
}
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 @@
config SIMPLE_PIM_EXAMPLE
boolean "Mainwindow with PIM and QCOP usage"
default "y"
- depends ( LIBQPE || LIBQPE-X11 ) && EXAMPLES && LIBOPIEPIM2
+ 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 @@
CONFIG += qt warn_on quick-app
TARGET = simple-pim
HEADERS = simple.h
SOURCES = simple.cpp
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/include
# we now also include opie
-LIBS += -lqpe -lopiepim2 -lopieui2
+LIBS += -lqpe -lopiecore2 -lopiepim2 -lopieui2
include ( $(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,134 +1,144 @@
+/* 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/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
-#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>
-
-#include <opie2/oapplicationfactory.h> // a template + macro to save the main method and allow quick launching
-#include <opie2/otabwidget.h>
-#include <opie2/owait.h>
-
-#include "simple.h"
+/* 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
*/
-using namespace Opie::Core;
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 OPimRecord&) ),
this, SLOT(slotShowRecord(const OPimRecord&) ) );
connect(m_dateView, SIGNAL(showRecord(const OPimRecord&) ),
this, SLOT(slotShowRecord(const 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"),
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"),
@@ -211,193 +221,193 @@ void MainWindow::slotLoad() {
}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 */
m_tb.load();
m_db.load();
{
/* tell the applications to reload */
QCopEnvelope("QPE/Application/todolist", "reload()");
QCopEnvelope("QPE/Application/datebook", "reload()");
}
slotLoadForDay( QDate::currentDate() );
}
}
/* overloaded member for shortcoming of libqpe */
void MainWindow::slotLoadForDay(int y, int m, int d) {
/* year,month, day */
slotLoadForDay( QDate(y, m, d ) );
}
void MainWindow::slotLoadForDay(const QDate& date) {
/* all todos for today including the ones without dueDate */
m_todoView->set( m_tb.effectiveToDos(date, date ) );
m_dateView->set( m_db.effectiveEvents( date, date ) );
}
/* we want to show the current record */
void MainWindow::slotShow() {
/* we only added PIMListViews so we can safely cast */
PIMListView *view = static_cast<PIMListView*>(m_tab->currentWidget() );
/* ask the view to send a signal */
view->showCurrentRecord();
}
/* as answer this slot will be called */
void MainWindow::slotShowRecord( const Opie::OPimRecord& rec) {
/* got a parent but still is a toplevel MODAL dialog */
QDialog* dia = new QDialog(this,"dialog",TRUE );
QVBoxLayout *box = new QVBoxLayout( dia );
dia->setCaption( tr("View Record") );
QTextView *view = new QTextView(dia );
view->setText( rec.toRichText() );
box->addWidget( view );
/*
* execute via QPEApplication
* this allows QPEApplication to make a sane decision
* on the size
*/
dia->showMaximized();
QPEApplication::execDialog( dia );
delete dia;
}
void MainWindow::slotDate() {
/*
* called by the action we will show a Popup
* at the current mouse position with a DateChooser
* to select the day
*/
- qWarning("slot Date");
+ odebug << "slot Date" << oendl;
QPopupMenu *menu = new QPopupMenu();
/* A Month to select a date from TRUE for auto close */
DateBookMonth *month = new DateBookMonth(menu, 0, true );
connect(month, SIGNAL(dateClicked(int,int,int) ),
this, SLOT(slotLoadForDay(int,int,int) ) );
menu->insertItem( month );
menu->exec( QCursor::pos() );
/*
* we do not need to delete month because
* we delete its parent menu
*/
delete menu;
}
/*
* An anonymous namespace this symbol is only available here
* so truely private
*/
namespace {
/* not static cause namespace does that what static would do */
const int RTTI = 5050;
/*
* every ListView got Items. we've special pim items
* holding ownership and the pointer to a pim record
* it can't hold a pimrecord directly because this
* would introduce slicing... any break
*/
/*
* A struct is a special class. Everything is public by
* default.
*/
struct PIMListViewItem : public QListViewItem {
/*
*currently no hierachies are planed for the example
* so only one constructor with a QListView as parent
*/
PIMListViewItem( QListView*, Opie::OPimRecord* record );
~PIMListViewItem();
/* used by the QListViewItem to easily allow identifiying of different
* items. Values greater than 1000 should be used */
int rtti()const;
Opie::OPimRecord* record()const;
private:
Opie::OPimRecord* m_record;
};
PIMListViewItem::PIMListViewItem( QListView *p, Opie::OPimRecord* rec )
: QListViewItem(p), m_record( rec ) {
}
PIMListViewItem::~PIMListViewItem() {
/* we've the onwership so we need to delete it */
delete m_record;
}
Opie::OPimRecord* PIMListViewItem::record()const {
return m_record;
}
}
PIMListView::PIMListView( QWidget* widget, const char* name, WFlags fl )
: QListView(widget, name, fl )
{
addColumn("Summary");
}
PIMListView::~PIMListView() {
}
void PIMListView::set( Opie::OPimTodoAccess::List list ) {
/* clear first and then add new items */
clear();
Opie::OPimTodoAccess::List::Iterator it;
for (it = list.begin(); it != list.end(); ++it ) {
/*
* make a new item which automatically gets added to the listview
* and call the copy c'tor to create a new OPimTodo
*/
PIMListViewItem *i = new PIMListViewItem(this, new Opie::OPimTodo( *it ) );
i->setText(0, (*it).summary() );
}
}
void PIMListView::set( const Opie::OEffectiveEvent::ValueList& lst ) {
/* clear first and then add items */
clear();