~ubuntu-branches/ubuntu/quantal/psi/quantal

« back to all changes in this revision

Viewing changes to src/options/opt_status.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jan Niehusmann
  • Date: 2005-01-10 17:41:43 UTC
  • mfrom: (1.2.1 upstream) (2.1.2 hoary)
  • Revision ID: james.westby@ubuntu.com-20050110174143-ltocv5zapl6blf5d
Tags: 0.9.3-1
* New upstream release
* Cleaned up debian/rules (some things are done by upstream Makefiles now)
* Fixed some lintian warnings:
  - removed executable bit from some .png files
  - moved psi.desktop to /usr/share/applications
* Updated menu files

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "opt_status.h"
 
2
#include "common.h"
 
3
#include "iconwidget.h"
 
4
 
 
5
#include <qbuttongroup.h>
 
6
#include <qwhatsthis.h>
 
7
#include <qcheckbox.h>
 
8
#include <qradiobutton.h>
 
9
#include <qcombobox.h>
 
10
#include <qlineedit.h>
 
11
#include <qspinbox.h>
 
12
#include <qtextedit.h>
 
13
#include <qinputdialog.h>
 
14
 
 
15
#include "opt_status-ui.h"
 
16
 
 
17
//----------------------------------------------------------------------------
 
18
// OptionsTabStatus
 
19
//----------------------------------------------------------------------------
 
20
 
 
21
OptionsTabStatus::OptionsTabStatus(QObject *parent)
 
22
: OptionsTab(parent, "status", "", tr("Status"), tr("Status preferences"), "status/online")
 
23
{
 
24
        w = 0;
 
25
        o = new Options;
 
26
}
 
27
 
 
28
OptionsTabStatus::~OptionsTabStatus()
 
29
{
 
30
        delete o;
 
31
}
 
32
 
 
33
QWidget *OptionsTabStatus::widget()
 
34
{
 
35
        if ( w )
 
36
                return 0;
 
37
 
 
38
        w = new OptStatusUI();
 
39
        OptStatusUI *d = (OptStatusUI *)w;
 
40
 
 
41
        QString s = tr("Makes Psi automatically set your status to \"away\" if your"
 
42
                " computer is idle for the specified amount of time.");
 
43
        QWhatsThis::add(d->ck_asAway, s);
 
44
        QWhatsThis::add(d->sb_asAway, s);
 
45
        s = tr("Makes Psi automatically set your status to \"extended away\" if your"
 
46
                " computer is idle for the specified amount of time.");
 
47
        QWhatsThis::add(d->ck_asXa, s);
 
48
        QWhatsThis::add(d->sb_asXa, s);
 
49
        s = tr("Makes Psi automatically set your status to \"offline\" if your"
 
50
                " computer is idle for the specified amount of time."
 
51
                "  This will disconnect you from the Jabber server.");
 
52
        QWhatsThis::add(d->ck_asOffline, s);
 
53
        QWhatsThis::add(d->sb_asOffline, s);
 
54
 
 
55
        QWhatsThis::add(d->te_asMessage,
 
56
                tr("Specifies an extended message to use if you allow Psi"
 
57
                " to set your status automatically.  See options above."));
 
58
 
 
59
        d->pb_spNew->setEnabled(TRUE);
 
60
        d->pb_spDelete->setEnabled(FALSE);
 
61
        d->te_sp->setEnabled(FALSE);
 
62
        connect(d->pb_spNew, SIGNAL(clicked()), SLOT(newStatusPreset()));
 
63
        connect(d->pb_spDelete, SIGNAL(clicked()), SLOT(removeStatusPreset()));
 
64
        connect(d->lb_sp, SIGNAL(highlighted(int)), SLOT(selectStatusPreset(int)));
 
65
        connect(d->te_sp, SIGNAL(textChanged()), SLOT(changeStatusPreset()));
 
66
 
 
67
        QWhatsThis::add(d->pb_spNew,
 
68
                tr("Press this button to create a new status message preset."));
 
69
        QWhatsThis::add(d->pb_spDelete,
 
70
                tr("Press this button to delete a status message preset."));
 
71
        QWhatsThis::add(d->lb_sp,
 
72
                tr("Use this list to select a status message preset"
 
73
                " to view or edit in the box to the bottom."));
 
74
        QWhatsThis::add(d->te_sp,
 
75
                tr("You may edit the message here for the currently selected"
 
76
                " status message preset in the list to the above."));
 
77
 
 
78
        QWhatsThis::add(d->ck_askOnline,
 
79
                tr("Jabber allows you to put extended status messages on"
 
80
                " all status types.  Normally, Psi does not prompt you for"
 
81
                " an extended message when you set your status to \"online\"."
 
82
                "  Check this option if you want to have this prompt."));
 
83
 
 
84
        return w;
 
85
}
 
86
 
 
87
void OptionsTabStatus::applyOptions(Options *opt)
 
88
{
 
89
        if ( !w )
 
90
                return;
 
91
 
 
92
        OptStatusUI *d = (OptStatusUI *)w;
 
93
 
 
94
        opt->asAway = d->sb_asAway->value();
 
95
        opt->asXa = d->sb_asXa->value();
 
96
        opt->asOffline = d->sb_asOffline->value();
 
97
        opt->use_asAway = d->ck_asAway->isChecked();
 
98
        opt->use_asXa = d->ck_asXa->isChecked();
 
99
        opt->use_asOffline = d->ck_asOffline->isChecked();
 
100
        opt->asMessage = d->te_asMessage->text();
 
101
 
 
102
        opt->sp = o->sp;
 
103
 
 
104
        opt->askOnline = d->ck_askOnline->isChecked();
 
105
        opt->askOffline = d->ck_askOffline->isChecked();
 
106
}
 
107
 
 
108
void OptionsTabStatus::restoreOptions(const Options *opt)
 
109
{
 
110
        if ( !w )
 
111
                return;
 
112
 
 
113
        OptStatusUI *d = (OptStatusUI *)w;
 
114
 
 
115
        d->sb_asAway->setMinValue(0);
 
116
        d->sb_asAway->setValue( opt->asAway );
 
117
        d->sb_asXa->setMinValue(0);
 
118
        d->sb_asXa->setValue( opt->asXa );
 
119
        d->sb_asOffline->setMinValue(0);
 
120
        d->sb_asOffline->setValue( opt->asOffline );
 
121
        /*if (opt->asAway <= 0 )
 
122
                opt->use_asAway = FALSE;
 
123
        if (opt->asXa <= 0 )
 
124
                opt->use_asXa = FALSE;
 
125
        if(d->opt.asOffline <= 0)
 
126
                opt->use_asOffline = FALSE;*/
 
127
        d->ck_asAway->setChecked( opt->use_asAway );
 
128
        d->ck_asXa->setChecked( opt->use_asXa );
 
129
        d->ck_asOffline->setChecked( opt->use_asOffline );
 
130
        d->te_asMessage->setText( opt->asMessage );
 
131
 
 
132
        o->sp = opt->sp;
 
133
        d->lb_sp->clear();
 
134
        d->lb_sp->insertStringList(o->sp.varsToStringList());
 
135
        if(d->lb_sp->count() >= 1)
 
136
                d->lb_sp->setSelected(0, TRUE);
 
137
 
 
138
        d->ck_askOnline->setChecked( opt->askOnline );
 
139
        d->ck_askOffline->setChecked( opt->askOffline );
 
140
}
 
141
 
 
142
void OptionsTabStatus::setData(PsiCon *, QWidget *parentDialog)
 
143
{
 
144
        parentWidget = parentDialog;
 
145
}
 
146
 
 
147
void OptionsTabStatus::selectStatusPreset(int x)
 
148
{
 
149
        OptStatusUI *d = (OptStatusUI *)w;
 
150
 
 
151
        //noDirty = TRUE;
 
152
        disconnect(d->te_sp, SIGNAL(textChanged()), 0, 0);
 
153
        if ( x == -1 ) {
 
154
                d->pb_spDelete->setEnabled(false);
 
155
                d->te_sp->setText("");
 
156
                d->te_sp->setEnabled(false);
 
157
 
 
158
                //noDirty = FALSE;
 
159
                connect(d->te_sp, SIGNAL(textChanged()), SLOT(changeStatusPreset()));
 
160
                return;
 
161
        }
 
162
 
 
163
        d->pb_spDelete->setEnabled(true);
 
164
 
 
165
        d->te_sp->setText( o->sp.get( d->lb_sp->text(x)) );
 
166
        d->te_sp->setEnabled(true);
 
167
 
 
168
        //noDirty = FALSE;
 
169
        connect(d->te_sp, SIGNAL(textChanged()), SLOT(changeStatusPreset()));
 
170
}
 
171
 
 
172
void OptionsTabStatus::newStatusPreset()
 
173
{
 
174
        OptStatusUI *d = (OptStatusUI *)w;
 
175
 
 
176
        QString text;
 
177
 
 
178
        while(1) {
 
179
                bool ok = FALSE;
 
180
                text = QInputDialog::getText(
 
181
                        CAP(tr("New Status Preset")),
 
182
                        tr("Please enter a name for the new status preset:"),
 
183
                        QLineEdit::Normal, text, &ok, parentWidget);
 
184
                if(!ok)
 
185
                        return;
 
186
 
 
187
                if(text.isEmpty())
 
188
                        QMessageBox::information(parentWidget, tr("Error"), tr("Can't create a blank preset!"));
 
189
                else if(o->sp.findByKey(text) != o->sp.end())
 
190
                        QMessageBox::information(parentWidget, tr("Error"), tr("You already have a preset with that name!"));
 
191
                else
 
192
                        break;
 
193
        }
 
194
 
 
195
        o->sp.set(text, "");
 
196
        d->lb_sp->insertItem(text);
 
197
        d->lb_sp->setSelected(d->lb_sp->count()-1, TRUE);
 
198
        d->te_sp->setFocus();
 
199
 
 
200
        emit dataChanged();
 
201
}
 
202
 
 
203
void OptionsTabStatus::removeStatusPreset()
 
204
{
 
205
        OptStatusUI *d = (OptStatusUI *)w;
 
206
        int id = d->lb_sp->currentItem();
 
207
        if(id == -1)
 
208
                return;
 
209
 
 
210
        emit dataChanged();
 
211
 
 
212
        o->sp.unset(d->lb_sp->text(id));
 
213
        d->lb_sp->removeItem(id);
 
214
 
 
215
        // select a new entry if possible
 
216
        if(d->lb_sp->count() == 0) {
 
217
                selectStatusPreset(-1);
 
218
                return;
 
219
        }
 
220
 
 
221
        if(id >= (int)d->lb_sp->count())
 
222
                id = d->lb_sp->count()-1;
 
223
 
 
224
        d->lb_sp->setSelected(id, TRUE);
 
225
        selectStatusPreset(id);
 
226
}
 
227
 
 
228
void OptionsTabStatus::changeStatusPreset()
 
229
{
 
230
        OptStatusUI *d = (OptStatusUI *)w;
 
231
        int id = d->lb_sp->currentItem();
 
232
        if(id == -1)
 
233
                return;
 
234
 
 
235
        o->sp.set(d->lb_sp->text(id), d->te_sp->text());
 
236
        emit dataChanged();
 
237
}