Chapter 2. A graphical login

To get the all messages, warnings and dialogs away from the console to KDE use the function set_kdestandarddialogs() and include its header file hk_kdemessages.h.

Example 2.1. Getting the messages to KDE

#define HAVE_SSTREAM 1
#include <kapp.h>
#include <kaboutdata.h>
#include <kcmdlineargs.h>
#include <klocale.h>
#include <qwidget.h>
#include <hk_classes.h>
#include <iostream>
#include <hk_kdemessages.h>

static const char *description =
    I18N_NOOP("A hk_kdeclasses example Application");

static const char *version = "v0.1";


int main(int argc, char **argv)
{
    KAboutData about("hk_kdeexample", I18N_NOOP("hk_kdeexample"), version, description, KAboutData::License_GPL, "(C) 2001 Horst Knorr", 0, 0, "hk_classes@knoda.org");
    about.addAuthor( "Horst Knorr", 0, "hk_classes@knoda.org" );
    KCmdLineArgs::init(argc, argv, &about);
    KApplication app;
    QWidget* widget = new QWidget;
    app.setMainWidget(widget);
    set_kdestandarddialogs();

    hk_drivermanager* mydrivermanager = new hk_drivermanager(false);
    if (mydrivermanager==NULL) {cout <<"error creating mydrivermanager"<<endl;exit(1);}
    hk_connection* myconnection = mydrivermanager->new_connection();
    if (myconnection==NULL) {cout <<"error creating myconnection"<<endl;exit(1);}
    myconnection->connect();

    hk_database* mydatabase=myconnection->new_database("exampledb");
    if (mydatabase==NULL) {cout <<"error creating mydatabase"<<endl;exit(1);}
    hk_datasource* mydatasource= mydatabase->new_table("authors");
    if (mydatasource==NULL) {cout <<"error creating mydatasource"<<endl;exit(1);}
    mydatasource->enable();

    widget->show();

    int res= app.exec();
    delete mydrivermanager;
    return res;
}

Compile the program. Now you see a driver selection window followed by a login window. If you already have some experience with knoda you should recognize the dialogs.