• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdenetwork API Reference
  • KDE Home
  • Contact Us
 

krfb

  • sources
  • kde-4.12
  • kdenetwork
  • krfb
  • krfb
manageinvitationsdialog.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE project
2  Copyright (C) 2007 Alessandro Praduroux <pradu@pradu.it>
3 
4  This program is free software; you can redistribute it and/or
5  modify it under the terms of the GNU General Public
6  License as published by the Free Software Foundation; either
7  version 2 of the License, or (at your option) any later version.
8 */
9 #include "manageinvitationsdialog.h"
10 
11 #include "invitationmanager.h"
12 #include "invitation.h"
13 #include "krfbconfig.h"
14 #include "personalinvitedialog.h"
15 #include "ui_configtcp.h"
16 #include "ui_configsecurity.h"
17 
18 #include <KConfigDialog>
19 #include <KGlobal>
20 #include <KIconLoader>
21 #include <KLocale>
22 #include <KMessageBox>
23 #include <KStandardGuiItem>
24 #include <KSystemTimeZone>
25 #include <KToolInvocation>
26 #include <KStandardAction>
27 #include <KActionCollection>
28 
29 #include <QtGui/QWidget>
30 #include <QtGui/QToolTip>
31 #include <QtGui/QCursor>
32 #include <QtCore/QDateTime>
33 #include <QtNetwork/QNetworkInterface>
34 
35 class TCP: public QWidget, public Ui::TCP
36 {
37 public:
38  TCP(QWidget *parent = 0) : QWidget(parent) {
39  setupUi(this);
40  }
41 };
42 
43 class Security: public QWidget, public Ui::Security
44 {
45 public:
46  Security(QWidget *parent = 0) : QWidget(parent) {
47  setupUi(this);
48  }
49 };
50 
51 
52 ManageInvitationsDialog::ManageInvitationsDialog(QWidget *parent)
53  : KXmlGuiWindow(parent)
54 {
55  setAttribute(Qt::WA_DeleteOnClose, false);
56 
57  QWidget *mainWidget = new QWidget;
58  m_ui.setupUi(mainWidget);
59  m_ui.pixmapLabel->setPixmap(KIcon("krfb").pixmap(128));
60  setCentralWidget(mainWidget);
61 
62  connect(m_ui.helpLabel, SIGNAL(linkActivated(QString)), SLOT(showWhatsthis()));
63  connect(m_ui.newPersonalInvitationButton, SIGNAL(clicked()), SLOT(inviteManually()));
64  connect(m_ui.newEmailInvitationButton, SIGNAL(clicked()), SLOT(inviteByMail()));
65  connect(InvitationManager::self(), SIGNAL(invitationNumChanged(int)), SLOT(reloadInvitations()));
66  connect(m_ui.deleteAllButton, SIGNAL(clicked()), SLOT(deleteAll()));
67  connect(m_ui.deleteOneButton, SIGNAL(clicked()), SLOT(deleteCurrent()));
68  connect(m_ui.invitationWidget, SIGNAL(itemSelectionChanged()), SLOT(selectionChanged()));
69 
70  KStandardAction::quit(QCoreApplication::instance(), SLOT(quit()), actionCollection());
71  KStandardAction::preferences(this, SLOT(showConfiguration()), actionCollection());
72 
73  setupGUI(QSize(550, 330));
74  setAutoSaveSettings();
75 
76  reloadInvitations();
77 }
78 
79 ManageInvitationsDialog::~ManageInvitationsDialog()
80 {
81 }
82 
83 void ManageInvitationsDialog::showWhatsthis()
84 {
85  QToolTip::showText(QCursor::pos(),
86  i18n("An invitation creates a one-time password that allows the receiver to connect to your desktop.\n"
87  "It is valid for only one successful connection and will expire after an hour if it has not been used. \n"
88  "When somebody connects to your computer a dialog will appear and ask you for permission.\n"
89  "The connection will not be established before you accept it. In this dialog you can also\nrestrict "
90  "the other person to view your desktop only, without the ability to move your\nmouse pointer or press "
91  "keys.\nIf you want to create a permanent password for Desktop Sharing, allow 'Uninvited Connections' \n"
92  "in the configuration."));
93 
94 }
95 
96 void ManageInvitationsDialog::inviteManually()
97 {
98  Invitation inv = InvitationManager::self()->addInvitation();
99  PersonalInviteDialog *pid = new PersonalInviteDialog(this);
100  pid->setPassword(inv.password());
101  pid->setExpiration(inv.expirationTime());
102  pid->show();
103 }
104 
105 void ManageInvitationsDialog::inviteByMail()
106 {
107  int r = KMessageBox::warningContinueCancel(this,
108  i18n("When sending an invitation by email, note that everybody who reads this email "
109  "will be able to connect to your computer for one hour, or until the first "
110  "successful connection took place, whichever comes first. \n"
111  "You should either encrypt the email or at least send it only in a "
112  "secure network, but not over the Internet."),
113  i18n("Send Invitation via Email"),
114  KStandardGuiItem::cont(),
115  KStandardGuiItem::cancel(),
116  "showEmailInvitationWarning");
117 
118  if (r == KMessageBox::Cancel) {
119  return;
120  }
121 
122  QList<QNetworkInterface> ifl = QNetworkInterface::allInterfaces();
123  QString host;
124  int port = KrfbConfig::port();
125  foreach(const QNetworkInterface & nif, ifl) {
126  if (nif.flags() & QNetworkInterface::IsLoopBack) {
127  continue;
128  }
129 
130  if (nif.flags() & QNetworkInterface::IsRunning) {
131  if (!nif.addressEntries().isEmpty()) {
132  host = nif.addressEntries()[0].ip().toString();
133  }
134  }
135  }
136 
137  Invitation inv = InvitationManager::self()->addInvitation();
138  KUrl invUrl(QString("vnc://invitation:%1@%2:%3").arg(inv.password()).arg(host).arg(port));
139  KToolInvocation::invokeMailer(QString(), QString(), QString(),
140  i18n("Desktop Sharing (VNC) invitation"),
141  ki18n("You have been invited to a VNC session. If you have the KDE Remote "
142  "Desktop Connection installed, just click on the link below.\n\n"
143  "%1\n\n"
144  "Otherwise you can use any VNC client with the following parameters:\n\n"
145  "Host: %2:%3\n"
146  "Password: %4\n\n"
147  "For security reasons this invitation will expire at %5 (%6).")
148  .subs(invUrl.url())
149  .subs(host)
150  .subs(QString::number(port))
151  .subs(inv.password())
152  .subs(KGlobal::locale()->formatDateTime(inv.expirationTime()))
153  .subs(KSystemTimeZones::local().name())
154  .toString());
155 
156 }
157 
158 void ManageInvitationsDialog::reloadInvitations()
159 {
160  m_ui.invitationWidget->clear();
161  KLocale *loc = KGlobal::locale();
162  foreach(const Invitation & inv, InvitationManager::self()->invitations()) {
163  QStringList strs;
164  strs << loc->formatDateTime(inv.creationTime()) << loc->formatDateTime(inv.expirationTime());
165  QTreeWidgetItem *it = new QTreeWidgetItem(strs);
166  m_ui.invitationWidget->addTopLevelItem(it);
167  it->setData(0, Qt::UserRole + 1, inv.creationTime());
168  }
169  m_ui.invitationWidget->resizeColumnToContents(0);
170  m_ui.deleteAllButton->setEnabled(InvitationManager::self()->activeInvitations() > 0);
171 }
172 
173 void ManageInvitationsDialog::showConfiguration()
174 {
175  if (KConfigDialog::showDialog("settings")) {
176  return;
177  }
178 
179  KConfigDialog *dialog = new KConfigDialog(this, "settings", KrfbConfig::self());
180  dialog->addPage(new TCP, i18n("Network"), "network-workgroup");
181  dialog->addPage(new Security, i18n("Security"), "security-high");
182  dialog->setHelp(QString(), "krfb");
183  dialog->show();
184 }
185 
186 void ManageInvitationsDialog::deleteAll()
187 {
188  if (KMessageBox::warningContinueCancel(this,
189  i18n("<qt>Are you sure you want to delete all invitations?</qt>"),
190  i18n("Confirm delete Invitations"),
191  KStandardGuiItem::ok(),
192  KStandardGuiItem::cancel(),
193  QString("krfbdeleteallinv")) !=
194  KMessageBox::Continue) {
195  return;
196  }
197 
198  InvitationManager::self()->removeAllInvitations();
199 }
200 
201 void ManageInvitationsDialog::deleteCurrent()
202 {
203  if (KMessageBox::warningContinueCancel(this,
204  i18n("<qt>Are you sure you want to delete this invitation?</qt>"),
205  i18n("Confirm delete Invitations"),
206  KStandardGuiItem::ok(),
207  KStandardGuiItem::cancel(),
208  QString("krfbdeleteoneinv")) !=
209  KMessageBox::Continue) {
210  return;
211  }
212 
213  // disable updates while deleting items, otherwise the list would invalidate itself
214  disconnect(InvitationManager::self(), SIGNAL(invitationNumChanged(int)),
215  this, SLOT(reloadInvitations()));
216 
217  QList<QTreeWidgetItem *> itl = m_ui.invitationWidget->selectedItems();
218  foreach(QTreeWidgetItem * itm, itl) {
219  foreach(const Invitation & inv, InvitationManager::self()->invitations()) {
220  if (inv.creationTime() == itm->data(0, Qt::UserRole + 1)) {
221  InvitationManager::self()->removeInvitation(inv);
222  }
223  }
224  }
225 
226  // update it manually
227  reloadInvitations();
228 
229  connect(InvitationManager::self(), SIGNAL(invitationNumChanged(int)),
230  SLOT(reloadInvitations()));
231 }
232 
233 void ManageInvitationsDialog::selectionChanged()
234 {
235  m_ui.deleteOneButton->setEnabled(m_ui.invitationWidget->selectedItems().size() > 0);
236 }
237 
238 void ManageInvitationsDialog::readProperties(const KConfigGroup& group)
239 {
240  if (group.readEntry("Visible", true)) {
241  show();
242  }
243  KMainWindow::readProperties(group);
244 }
245 
246 void ManageInvitationsDialog::saveProperties(KConfigGroup& group)
247 {
248  group.writeEntry("Visible", isVisible());
249  KMainWindow::saveProperties(group);
250 }
251 
252 #include "manageinvitationsdialog.moc"
253 
InvitationManager::self
static InvitationManager * self()
Definition: invitationmanager.cpp:26
ManageInvitationsDialog::ManageInvitationsDialog
ManageInvitationsDialog(QWidget *parent=0)
Definition: manageinvitationsdialog.cpp:52
personalinvitedialog.h
ManageInvitationsDialog::saveProperties
virtual void saveProperties(KConfigGroup &group)
Definition: manageinvitationsdialog.cpp:246
ManageInvitationsDialog::showConfiguration
void showConfiguration()
Definition: manageinvitationsdialog.cpp:173
QWidget
ManageInvitationsDialog::reloadInvitations
void reloadInvitations()
Definition: manageinvitationsdialog.cpp:158
ManageInvitationsDialog::readProperties
virtual void readProperties(const KConfigGroup &group)
Definition: manageinvitationsdialog.cpp:238
ManageInvitationsDialog::~ManageInvitationsDialog
~ManageInvitationsDialog()
Definition: manageinvitationsdialog.cpp:79
ManageInvitationsDialog::showWhatsthis
void showWhatsthis()
Definition: manageinvitationsdialog.cpp:83
Invitation::expirationTime
QDateTime expirationTime() const
Definition: invitation.cpp:102
ManageInvitationsDialog::deleteCurrent
void deleteCurrent()
Definition: manageinvitationsdialog.cpp:201
invitation.h
KXmlGuiWindow
krfbconfig.h
Invitation
Definition: invitation.h:29
InvitationManager::removeInvitation
void removeInvitation(const Invitation &inv)
Definition: invitationmanager.cpp:118
ManageInvitationsDialog::deleteAll
void deleteAll()
Definition: manageinvitationsdialog.cpp:186
KrfbConfig::port
static int port()
Get This is the port on which krfb will listen.
Definition: krfbconfig.h:31
PersonalInviteDialog::setPassword
void setPassword(const QString &passwd)
Definition: personalinvitedialog.cpp:76
InvitationManager::addInvitation
Invitation addInvitation()
Definition: invitationmanager.cpp:83
KrfbConfig::self
static KrfbConfig * self()
Definition: krfbconfig.cpp:17
Invitation::password
QString password() const
Definition: invitation.cpp:97
InvitationManager::removeAllInvitations
void removeAllInvitations()
Definition: invitationmanager.cpp:125
invitationmanager.h
PersonalInviteDialog::setExpiration
void setExpiration(const QDateTime &expire)
Definition: personalinvitedialog.cpp:81
ManageInvitationsDialog::inviteManually
void inviteManually()
Definition: manageinvitationsdialog.cpp:96
ManageInvitationsDialog::inviteByMail
void inviteByMail()
Definition: manageinvitationsdialog.cpp:105
ManageInvitationsDialog::selectionChanged
void selectionChanged()
Definition: manageinvitationsdialog.cpp:233
PersonalInviteDialog
Definition: personalinvitedialog.h:30
Invitation::creationTime
QDateTime creationTime() const
Definition: invitation.cpp:107
manageinvitationsdialog.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:54:10 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

krfb

Skip menu "krfb"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdenetwork API Reference

Skip menu "kdenetwork API Reference"
  • kget
  • kopete
  •   kopete
  •   libkopete
  • krdc
  • krfb

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal