summaryrefslogtreecommitdiff
path: root/noncore/net/opietooth/manager/rfcommassigndialogimpl.cpp
blob: b5cc074dcc7633ed4329e3582492fe3f0555b467 (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

#include "rfcommassigndialogimpl.h"
#include "rfcommassigndialogitem.h"
#include "rfcommconfhandler.h"

#include <qpe/config.h>

#include <qlayout.h>

using namespace OpieTooth;

// TODO: write only the file in bluebase?
// muss rfcommd dann neu gestartet werden
// sollte rfcomm bind all nicht eh default config sein ( polled das? - d.h. sobald nen gerät in der nähe ist bindet es?


RfcommAssignDialog::RfcommAssignDialog( QWidget* parent,  const char* name, bool modal, WFlags fl )
    : RfcommAssignDialogBase( parent, name, modal, fl ) {

    m_range = 5;

    m_scrollView = new QScrollView( this );
    m_scrollView->setResizePolicy( QScrollView::AutoOneFit );
    m_scrollView->setHScrollBarMode( QScrollView::AlwaysOff );

    RfcommAssignDialogBaseLayout->addWidget( m_scrollView );

    m_box = new QVBox( m_scrollView->viewport() );
    m_scrollView->addChild( m_box );

    confHandler = new RfCommConfHandler( "/etc/bluetooth/rfcomm.conf" );

    loadConfig();
}

RfcommAssignDialog::~RfcommAssignDialog()  {
    if ( confHandler )  {
        delete confHandler;
    }
}


void RfcommAssignDialog::newDevice( const QString & mac )  {

    for ( int i = 0 ; i < m_range; i++ )  {

        QMap<QString, RfCommConfObject*>::Iterator it;
        it = confHandler->foundEntries().find( QString("%1").arg( i ) );
        // make sure that rfcommX is not assigned yet
        if (  it == confHandler->foundEntries().end() )  {
            QDialog dialog( this,  "newdevice", true, WStyle_ContextHelp );
            dialog.showMaximized();
            RfcommDialogItem *newDev = new RfcommDialogItem( &dialog );
            newDev->setIdent( i );
            newDev->setMac( mac );

            if ( dialog.exec() == QDialog::Accepted )  {
                RfcommDialogItem *rfcomm = new RfcommDialogItem( m_box );
                m_itemList.insert( i , rfcomm );
                rfcomm->setIdent( i );
                rfcomm->setMac( mac );
                rfcomm->setChannel( newDev->channel() );
                rfcomm->setComment( newDev->comment() );
                qDebug( "New device set up" );
            }
        }
    }
}

void RfcommAssignDialog::loadConfig()  {

    //Config cfg( "bluetoothmanager-rfcommbind" );

    for ( int i = 0 ; i < m_range; i++ )  {
        // cfg.setGroup( QString("%1").arg( i ) );
        RfcommDialogItem *rfcomm = new RfcommDialogItem( m_box );
        m_itemList.insert( i , rfcomm );
        rfcomm->setIdent( i );
        QMap<QString, RfCommConfObject*>::Iterator it;
        it = confHandler->foundEntries().find( QString("%1").arg( i ) );
        if ( it != confHandler->foundEntries().end() )  {
            qDebug( "Found key in foundEntries() " );
            rfcomm->setMac( it.data()->mac() );
            rfcomm->setChannel( it.data()->channel() );
            rfcomm->setComment( it.data()->comment() );
        }
          /* Use rfcomm.conf directly for now
           * rfcomm->setMac( cfg.readEntry( "mac",  "" ) );
           * rfcomm->setChannel( cfg.readNumEntry( "channel", 1 ) );
           * rfcomm->setComment( cfg.readEntry( "comment", "" ) );
           */
    }
}


void RfcommAssignDialog::saveConfig()  {

    //Config cfg( "bluetoothmanager-rfcommbind" );

    QMap< int, RfcommDialogItem*>::Iterator it;

    QMap< QString, RfCommConfObject*> outMap;

    for( it = m_itemList.begin(); it != m_itemList.end(); ++it )  {

        //cfg.setGroup( QString("%1").arg( it.key() ) );
        RfcommDialogItem *rfcomm = it.data();


        outMap.insert( QString( "%1").arg( it.key() ), new RfCommConfObject( it.key(), rfcomm->mac(), rfcomm->channel(),  rfcomm->comment() ) );


        //cfg.writeEntry( "mac",  rfcomm->mac() );
        //cfg.writeEntry( "channel", rfcomm->channel() );
        //cfg.writeEntry( "comment", rfcomm->comment() );
    }

    confHandler->save( outMap );

}