root/trunk/qt4-gui/src/dialogs/randomchatdlg.cpp

Revision 6466, 8.3 kB (checked in by flynd, 4 months ago)

Use const pointer for owner objects that are fetched only for read access.

  • Property svn:eol-style set to native
Line 
1// -*- c-basic-offset: 2 -*-
2/*
3 * This file is part of Licq, an instant messaging client for UNIX.
4 * Copyright (C) 2000-2006 Licq developers
5 *
6 * Licq is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * Licq is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Licq; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19 */
20
21#include "randomchatdlg.h"
22
23#include "config.h"
24
25#include <QDialogButtonBox>
26#include <QHBoxLayout>
27#include <QListWidget>
28#include <QPushButton>
29#include <QVBoxLayout>
30
31#include <licq_events.h>
32#include <licq_icqd.h>
33
34#include "core/gui-defines.h"
35#include "core/licqgui.h"
36#include "core/messagebox.h"
37#include "core/signalmanager.h"
38
39#include "helpers/support.h"
40
41using namespace LicqQtGui;
42/* TRANSLATOR LicqQtGui::RandomChatDlg */
43/* TRANSLATOR LicqQtGui::SetRandomChatGroupDlg */
44
45RandomChatDlg::RandomChatDlg(QWidget* parent)
46  : QDialog(parent),
47    myTag(0)
48{
49  Support::setWidgetProps(this, "RandomChatDialog");
50  setAttribute(Qt::WA_DeleteOnClose, true);
51  setWindowTitle(tr("Random Chat Search"));
52
53  QVBoxLayout* topLayout = new QVBoxLayout(this);
54  myGroupsList = new QListWidget(this);
55  topLayout->addWidget(myGroupsList);
56
57  QDialogButtonBox* buttons = new QDialogButtonBox();
58  topLayout->addWidget(buttons);
59  myOkButton = buttons->addButton(QDialogButtonBox::Ok);
60  myOkButton->setText(tr("&Search"));
61  myCancelButton = buttons->addButton(QDialogButtonBox::Cancel);
62
63  connect(myOkButton, SIGNAL(clicked()), SLOT(okPressed()));
64  connect(myCancelButton, SIGNAL(clicked()), SLOT(close()));
65
66  // Fill in the combo box
67  myGroupsList->addItem(tr("General"));
68  myGroupsList->addItem(tr("Romance"));
69  myGroupsList->addItem(tr("Games"));
70  myGroupsList->addItem(tr("Students"));
71  myGroupsList->addItem(tr("20 Something"));
72  myGroupsList->addItem(tr("30 Something"));
73  myGroupsList->addItem(tr("40 Something"));
74  myGroupsList->addItem(tr("50 Plus"));
75  myGroupsList->addItem(tr("Seeking Women"));
76  myGroupsList->addItem(tr("Seeking Men"));
77
78  myGroupsList->setCurrentRow(0);
79
80  show();
81}
82
83RandomChatDlg::~RandomChatDlg()
84{
85  if (myTag != 0)
86    gLicqDaemon->CancelEvent(myTag);
87}
88
89void RandomChatDlg::okPressed()
90{
91  myOkButton->setEnabled(false);
92  connect(LicqGui::instance()->signalManager(),
93      SIGNAL(doneUserFcn(ICQEvent*)), SLOT(userEventDone(ICQEvent*)));
94  unsigned long nGroup = ICQ_RANDOMxCHATxGROUP_NONE;
95  switch(myGroupsList->currentRow())
96  {
97    case 0: nGroup = ICQ_RANDOMxCHATxGROUP_GENERAL; break;
98    case 1: nGroup = ICQ_RANDOMxCHATxGROUP_ROMANCE; break;
99    case 2: nGroup = ICQ_RANDOMxCHATxGROUP_GAMES; break;
100    case 3: nGroup = ICQ_RANDOMxCHATxGROUP_STUDENTS; break;
101    case 4: nGroup = ICQ_RANDOMxCHATxGROUP_20SOME; break;
102    case 5: nGroup = ICQ_RANDOMxCHATxGROUP_30SOME; break;
103    case 6: nGroup = ICQ_RANDOMxCHATxGROUP_40SOME; break;
104    case 7: nGroup = ICQ_RANDOMxCHATxGROUP_50PLUS; break;
105    case 8: nGroup = ICQ_RANDOMxCHATxGROUP_MxSEEKxF; break;
106    case 9: nGroup = ICQ_RANDOMxCHATxGROUP_FxSEEKxM; break;
107  }
108  myTag = gLicqDaemon->icqRandomChatSearch(nGroup);
109  setWindowTitle(tr("Searching for Random Chat Partner..."));
110}
111
112void RandomChatDlg::userEventDone(ICQEvent* event)
113{
114  if (!event->Equals(myTag))
115    return;
116
117  myOkButton->setEnabled(true);
118  myTag = 0;
119
120  switch (event->Result())
121  {
122    case EVENT_FAILED:
123      WarnUser(this, tr("No random chat user found in that group."));
124      break;
125    case EVENT_TIMEDOUT:
126      WarnUser(this, tr("Random chat search timed out."));
127      break;
128    case EVENT_ERROR:
129      WarnUser(this, tr("Random chat search had an error."));
130      break;
131    default:
132      //TODO when CSearchAck changes
133      LicqGui::instance()->showEventDialog(ChatEvent, event->SearchAck()->Id(),
134          event->SearchAck()->PPID() );
135      close();
136      return;
137  }
138
139}
140
141//=====SetRandomChatGroupDlg================================================
142
143SetRandomChatGroupDlg::SetRandomChatGroupDlg(QWidget* parent)
144  : QDialog(parent),
145    myTag(0)
146{
147  Support::setWidgetProps(this, "SetRandomChatGroupDlg");
148  setWindowTitle(tr("Set Random Chat Group"));
149
150  QVBoxLayout* topLayout = new QVBoxLayout(this);
151  myGroupsList = new QListWidget(this);
152  topLayout->addWidget(myGroupsList);
153
154  QHBoxLayout* lay = new QHBoxLayout();
155
156  lay->addStretch(2);
157  myOkButton = new QPushButton(tr("&Set"), this);
158  lay->addWidget(myOkButton);
159
160  lay->addSpacing(10);
161  myCancelButton = new QPushButton(tr("&Close"), this);
162  lay->addWidget(myCancelButton);
163  lay->addStretch(2);
164
165  topLayout->addLayout(lay);
166
167  connect(myOkButton, SIGNAL(clicked()), SLOT(okPressed()));
168  connect(myCancelButton, SIGNAL(clicked()), SLOT(close()));
169
170  // Fill in the combo box
171  myGroupsList->addItem(tr("(none)"));
172  myGroupsList->addItem(tr("General"));
173  myGroupsList->addItem(tr("Romance"));
174  myGroupsList->addItem(tr("Games"));
175  myGroupsList->addItem(tr("Students"));
176  myGroupsList->addItem(tr("20 Something"));
177  myGroupsList->addItem(tr("30 Something"));
178  myGroupsList->addItem(tr("40 Something"));
179  myGroupsList->addItem(tr("50 Plus"));
180  myGroupsList->addItem(tr("Seeking Women"));
181  myGroupsList->addItem(tr("Seeking Men"));
182
183  const ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R);
184  if (o == NULL)
185  {
186    close();
187    return;
188  }
189  switch(o->RandomChatGroup())
190  {
191    case ICQ_RANDOMxCHATxGROUP_GENERAL: myGroupsList->setCurrentRow(1); break;
192    case ICQ_RANDOMxCHATxGROUP_ROMANCE: myGroupsList->setCurrentRow(2); break;
193    case ICQ_RANDOMxCHATxGROUP_GAMES: myGroupsList->setCurrentRow(3); break;
194    case ICQ_RANDOMxCHATxGROUP_STUDENTS: myGroupsList->setCurrentRow(4); break;
195    case ICQ_RANDOMxCHATxGROUP_20SOME: myGroupsList->setCurrentRow(5); break;
196    case ICQ_RANDOMxCHATxGROUP_30SOME: myGroupsList->setCurrentRow(6); break;
197    case ICQ_RANDOMxCHATxGROUP_40SOME: myGroupsList->setCurrentRow(7); break;
198    case ICQ_RANDOMxCHATxGROUP_50PLUS: myGroupsList->setCurrentRow(8); break;
199    case ICQ_RANDOMxCHATxGROUP_MxSEEKxF: myGroupsList->setCurrentRow(9); break;
200    case ICQ_RANDOMxCHATxGROUP_FxSEEKxM: myGroupsList->setCurrentRow(10); break;
201    case ICQ_RANDOMxCHATxGROUP_NONE:
202    default:
203      myGroupsList->setCurrentRow(0); break;
204  }
205  gUserManager.DropOwner(o);
206
207  show();
208}
209
210SetRandomChatGroupDlg::~SetRandomChatGroupDlg()
211{
212  if (myTag != 0)
213    gLicqDaemon->CancelEvent(myTag);
214}
215
216void SetRandomChatGroupDlg::okPressed()
217{
218  myOkButton->setEnabled(false);
219  myCancelButton = new QPushButton(tr("&Cancel"), this);
220  connect(LicqGui::instance()->signalManager(),
221      SIGNAL(doneUserFcn(ICQEvent*)), SLOT(userEventDone(ICQEvent*)));
222  unsigned long nGroup = ICQ_RANDOMxCHATxGROUP_NONE;
223  switch(myGroupsList->currentRow())
224  {
225    case 0: nGroup = ICQ_RANDOMxCHATxGROUP_NONE; break;
226    case 1: nGroup = ICQ_RANDOMxCHATxGROUP_GENERAL; break;
227    case 2: nGroup = ICQ_RANDOMxCHATxGROUP_ROMANCE; break;
228    case 3: nGroup = ICQ_RANDOMxCHATxGROUP_GAMES; break;
229    case 4: nGroup = ICQ_RANDOMxCHATxGROUP_STUDENTS; break;
230    case 5: nGroup = ICQ_RANDOMxCHATxGROUP_20SOME; break;
231    case 6: nGroup = ICQ_RANDOMxCHATxGROUP_30SOME; break;
232    case 7: nGroup = ICQ_RANDOMxCHATxGROUP_40SOME; break;
233    case 8: nGroup = ICQ_RANDOMxCHATxGROUP_50PLUS; break;
234    case 9: nGroup = ICQ_RANDOMxCHATxGROUP_MxSEEKxF; break;
235    case 10: nGroup = ICQ_RANDOMxCHATxGROUP_FxSEEKxM; break;
236  }
237  myTag = gLicqDaemon->icqSetRandomChatGroup(nGroup);
238  setWindowTitle(tr("Setting Random Chat Group..."));
239}
240
241void SetRandomChatGroupDlg::userEventDone(ICQEvent* event)
242{
243  if (!event->Equals(myTag))
244    return;
245
246  myOkButton->setEnabled(true);
247  myCancelButton = new QPushButton(tr("&Close"), this);
248  myTag = 0;
249
250  switch (event->Result())
251  {
252    case EVENT_FAILED:
253      setWindowTitle(windowTitle() + tr("failed"));
254      break;
255    case EVENT_TIMEDOUT:
256      setWindowTitle(windowTitle() + tr("timed out"));
257      break;
258    case EVENT_ERROR:
259      setWindowTitle(windowTitle() + tr("error"));
260      break;
261    default:
262      setWindowTitle(windowTitle() + tr("done"));
263      break;
264  }
265}
Note: See TracBrowser for help on using the browser.