summaryrefslogtreecommitdiff
path: root/examples/opiecore/odebugdemo/odebugdemo.cpp
blob: b046d28182d212dadbc227f9dccc9c58a0fd1860 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/* QT */

#include <qvbox.h>
#include <qhbox.h>
#include <qvbuttongroup.h>
#include <qhbuttongroup.h>
#include <qlineedit.h>
#include <qradiobutton.h>
#include <qpushbutton.h>

/* OPIE */

#include <qpe/config.h>

#include <opie2/odebug.h>
#include <opie2/oapplication.h>
#include <opie2/oglobal.h>
#include <opie2/oglobalsettings.h>

using namespace Opie::Core;

class DemoApp : public OApplication
{
Q_OBJECT
public:
  DemoApp( int argc, char** argv ) : OApplication( argc, argv, "libopie2 debug demo" )
  {
    // you have access to your OApplication object via oApp
    odebug << "Process-wide OApplication object @ " << oApp << "" << oendl; 

    // you have access to global settings via OGlobalSettings
    int mode = OGlobalSettings::debugMode();

    QVBox* vbox = new QVBox();
    setMainWidget( vbox );

    g = new QVButtonGroup( "Output Strategy", vbox );
    QRadioButton* r0 = new QRadioButton( "file", g );
    QRadioButton* r1 = new QRadioButton( "messagebox", g );
    QRadioButton* r2 = new QRadioButton( "stderr", g );
    QRadioButton* r3 = new QRadioButton( "syslog", g );
    QRadioButton* r4 = new QRadioButton( "socket", g );
    g->insert( r0, 0 );
    g->insert( r1, 1 );
    g->insert( r2, 2 );
    g->insert( r3, 3 );
    g->insert( r4, 4 );
    g->setRadioButtonExclusive( true );
    connect( g, SIGNAL( clicked(int) ), this, SLOT( chooseMethod(int) ) );

    if ( mode != -1 ) g->setButton( mode );

    QHButtonGroup* hbox = new QHButtonGroup( "Extra Output Information", vbox );
    e = new QLineEdit( hbox );
    QPushButton* pb = new QPushButton( hbox );

    connect( e, SIGNAL( returnPressed() ), this, SLOT( updateDebugOutput() ) );
    connect( pb, SIGNAL( clicked() ), this, SLOT( updateDebugOutput() ) );

    // show the additional debug mode dependent output information
    e->setText( OGlobalSettings::debugOutput() );

    // buttos
    QPushButton* info = new QPushButton( "Emit Debug(Info) Output!", vbox );
    connect( info, SIGNAL( clicked() ), this, SLOT( emitInfoOutput() ) );
    QPushButton* warn = new QPushButton( "Emit a Warning Output!", vbox );
    connect( warn, SIGNAL( clicked() ), this, SLOT( emitWarningOutput() ) );
    QPushButton* error = new QPushButton( "Emit an Error Output!", vbox );
    connect( error, SIGNAL( clicked() ), this, SLOT( emitErrorOutput() ) );
    QPushButton* fatal = new QPushButton( "Emit a Fatal Output!", vbox );
    connect( fatal, SIGNAL( clicked() ), this, SLOT( emitFatalOutput() ) );

    QPushButton* tb = new QPushButton( "Emit a Fatal Backtrace!", vbox );
    connect( tb, SIGNAL( clicked() ), this, SLOT( emitTBOutput() ) );

    info->show();
    warn->show();
    error->show();
    fatal->show();
    tb->show();
    g->show();
    hbox->show();
    e->show();
    vbox->show();
    showMainWidget( vbox );
  }

public slots:
  void chooseMethod(int method)
  {
    m = method;
    odebug << "choosing method: " << method << "" << oendl; 
    OConfig* g = OGlobal::config();
    g->setGroup( "General" );
    g->writeEntry( "debugMode", m );
    e->setText( OGlobalSettings::debugOutput() );
    g->write();
  }
  void updateDebugOutput()
  {
    OConfig* g = OGlobal::config();
    g->setGroup( "General" );
    g->writeEntry( "debugOutput"+QString::number(OGlobalSettings::debugMode()), e->text() );
    g->write();
  }
  void emitInfoOutput()
  {
    odebug << "This is a debug message" << oendl;
  }
  void emitWarningOutput()
  {
    owarn << "This is a warning message" << oendl;
  }
  void emitErrorOutput()
  {
    oerr << "This is an errror message" << oendl;
  }
  void emitFatalOutput()
  {
    ofatal << "This is a fatal message" << oendl;
  }
  void emitTBOutput()
  {
    ofatal << "This is a fatal message + backtrace\n" + odBacktrace(); // odBacktrace includes \n
  }

private:
  QButtonGroup* g;
  int m;
  QLineEdit* e;
};

int main( int argc, char** argv )
{
    DemoApp* app = new DemoApp( argc, argv );
    app->exec();

    return 0;

}

#include "odebugdemo.moc"