summaryrefslogtreecommitdiffstats
path: root/ksirc/KSPrefs/page_startup.cpp
blob: 060da44d8c04481bd532635b0367c0e3fc3b25d9 (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
/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#include <qlineedit.h>
#include <qpushbutton.h>
#include <qlistbox.h>

#include <kapplication.h>
#include <kconfig.h>
#include <keditlistbox.h>

#include <kdebug.h>

#include "page_startup.h"

PageStartup::PageStartup( QWidget *parent, const char *name ) : PageStartupBase( parent, name)
{
    notifyLB->upButton()->hide();
    notifyLB->downButton()->hide();
    serverLB->upButton()->hide();
    serverLB->downButton()->hide();

    QListBox *lb = serverLB->listBox();
    connect(lb, SIGNAL(highlighted(int)),
	    this, SLOT(clickedLB(int)));

    changing = false;

}

PageStartup::~PageStartup()
{
}

void PageStartup::saveConfig()
{
    KSOServer glb = ksopts->server["global"];
    QStringList items = serverLB->items();

    ksopts->server.clear();

    QStringList::iterator it = items.begin();
    for( ; it != items.end(); ++it){
        ksopts->server[*it] = server[*it];
    }
    if(!ksopts->server.contains("global")){
        ksopts->server["global"] = glb;
    }

}

void PageStartup::readConfig( const KSOptions *opts )
{
    server = opts->server;

    changing = true;
    ServerOpMap::Iterator it;
    for ( it = server.begin(); it != server.end(); ++it ) {
        if(it.data().globalCopy == false)
	    serverLB->insertItem(it.key());
    }
    QListBoxItem *item = serverLB->listBox()->findItem("global");
    serverLB->listBox()->setSelected(item, true);
    changing = false;
    clickedLB(serverLB->listBox()->index(item));

}

void PageStartup::defaultConfig()
{
    KSOptions opts;
    readConfig( &opts );
}

void PageStartup::changed()
{
    emit modified();

    QString ser = serverLB->currentText();
    if(ser.isEmpty())
	return;

    if(changing)
        return;

    kdDebug(5008) << "got changed for: " << ser <<endl;

    server[ser].nick = nickLE->text();
    server[ser].altNick = altNickLE->text();
    server[ser].realName = rnLE->text();
    server[ser].userID = uiLE->text();

    server[ser].notifyList.clear();
    for ( int i = 0; i < notifyLB->count(); ++i)
	server[ser].notifyList.append( notifyLB->text( i ) );
    server[ser].globalCopy = false;

}

void PageStartup::clickedLB(int index)
{

    QString text = serverLB->text(index);
    if(!server.contains(text)){
	server[text] = server["global"];
        server[text].globalCopy = true;
    }

    changing = true;
    notifyLB->clear();

    nickLE->setText( server[text].nick );
    altNickLE->setText( server[text].altNick );
    rnLE->setText( server[text].realName );
    uiLE->setText( server[text].userID );
    notifyLB->insertStringList( server[text].notifyList );
    changing = false;
}

#include "page_startup.moc"