[X2Go-Commits] [x2godesktopsharing] 12/13: Replace QMessageBox based access dialog by a QDialog based access dialog. QMessageBox in Qt5 is not suitable for adding a QCheckBox widget into it anymore.
git-admin at x2go.org
git-admin at x2go.org
Mon Nov 12 14:32:35 CET 2018
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2godesktopsharing.
commit ef3dfac2eae54c1a4138ff962d44371b9f30a813
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Mon Nov 12 14:18:12 2018 +0100
Replace QMessageBox based access dialog by a QDialog based access dialog. QMessageBox in Qt5 is not suitable for adding a QCheckBox widget into it anymore.
---
accessdialog.cpp | 62 ++++++++++++++
accessdialog.h | 36 ++++++++
debian/changelog | 3 +
icons/svg/dialog-question.svg | 185 ++++++++++++++++++++++++++++++++++++++++++
messagebox.cpp | 38 ---------
messagebox.h | 31 -------
resources.qrc | 1 +
sharetray.cpp | 16 ++--
x2godesktopsharing.pro | 4 +-
9 files changed, 297 insertions(+), 79 deletions(-)
diff --git a/accessdialog.cpp b/accessdialog.cpp
new file mode 100644
index 0000000..723decb
--- /dev/null
+++ b/accessdialog.cpp
@@ -0,0 +1,62 @@
+//
+// C++ Implementation: AccessDialog
+//
+// Description:
+//
+//
+// Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>, (C) 2018
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "accessdialog.h"
+#include <QCheckBox>
+#include <QDialogButtonBox>
+#include <QLabel>
+#include <QPixmap>
+#include <QPushButton>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+
+AccessWindow::AccessWindow(QString uname, QString hname, QWidget *parent)
+ : QDialog (parent)
+{
+ setWindowTitle(QString("%1 (%2)").arg(uname).arg(hname));
+
+ QVBoxLayout *hbox = new QVBoxLayout(this);
+
+ /* question mark and text */
+ QHBoxLayout *vtexticonbox = new QHBoxLayout();
+ QLabel *icon = new QLabel();
+ icon->setPixmap ( QPixmap (":icons/svg/dialog-question.svg") );
+ vtexticonbox->addWidget(icon, 1, Qt::AlignLeft);
+ QLabel *text = new QLabel();
+ text->setText(QString(tr("Accept %1 from %2 ?")).arg(uname).arg(hname));
+ vtexticonbox->addWidget(text, 1, Qt::AlignLeft);
+ hbox->addLayout(vtexticonbox);
+
+ /* the check box (remember this setting for user X) */
+ checkBox=new QCheckBox(QString(tr("Save selection for %1")).arg(uname),this);
+ hbox->addWidget(checkBox, 1, Qt::AlignLeft);
+
+ /* dialog buttons */
+ QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+ buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Grant access"));
+ connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
+ buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Deny access"));
+ buttonBox->button(QDialogButtonBox::Cancel)->setDefault(true);
+ connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
+ hbox->addWidget(buttonBox, 1, Qt::AlignRight | Qt::AlignBottom);
+
+ /* modality */
+ setWindowModality(Qt::WindowModal);
+}
+
+AccessWindow::~AccessWindow()
+{
+}
+
+bool AccessWindow::isChecked()
+{
+ return checkBox->isChecked();
+}
diff --git a/accessdialog.h b/accessdialog.h
new file mode 100644
index 0000000..1dd01c8
--- /dev/null
+++ b/accessdialog.h
@@ -0,0 +1,36 @@
+//
+// C++ Interface: AccessDialog
+//
+// Description:
+//
+//
+// Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>, (C) 2018
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef ACCESSDIALOG_H
+#define ACCESSDIALOG_H
+
+/**
+ @author Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
+*/
+
+#include <QDialog>
+#include <QCheckBox>
+
+/**
+ @author Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
+*/
+class AccessWindow : public QDialog
+{
+ Q_OBJECT
+public:
+ AccessWindow(QString uname, QString hname, QWidget *parent = NULL);
+ ~AccessWindow();
+ bool isChecked();
+private:
+ QCheckBox* checkBox;
+};
+
+#endif
diff --git a/debian/changelog b/debian/changelog
index b55c7d7..057d4b3 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -20,6 +20,9 @@ x2godesktopsharing (3.1.1.5-0x2go1) UNRELEASED; urgency=medium
- Make the desktop sharing group configurable system-wide and by the user.
- man/man8/x2goterminate-desktopsharing.8: Grammar fix.
- resources.qrc: Rename file from resources.rcc.
+ - Replace QMessageBox based access dialog by a QDialog based access dialog.
+ QMessageBox in Qt5 is not suitable for adding a QCheckBox widget into it
+ anymore.
* debian/*:
+ Convert to DH packaging style. Build against Qt5.
* debian/control:
diff --git a/icons/svg/dialog-question.svg b/icons/svg/dialog-question.svg
new file mode 100644
index 0000000..50123ac
--- /dev/null
+++ b/icons/svg/dialog-question.svg
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48px"
+ height="48px"
+ id="svg7220"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="dialog-question.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs7222">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient4873">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop4875" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop4877" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4873"
+ id="linearGradient2704"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.3440063,0,0,2.3440063,-121.79862,31.22942)"
+ x1="62.745731"
+ y1="-13.444987"
+ x2="62.608765"
+ y2="7.1072145" />
+ <linearGradient
+ id="linearGradient3811">
+ <stop
+ id="stop3813"
+ offset="0"
+ style="stop-color:#204a87;stop-opacity:1" />
+ <stop
+ id="stop3815"
+ offset="1"
+ style="stop-color:#3465a4;stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3811"
+ id="linearGradient3927"
+ x1="15.046636"
+ y1="44.787998"
+ x2="15.046636"
+ y2="3.8851264"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0805272,0,0,1.0805026,-1.5082857,-3.3507604)" />
+ <linearGradient
+ id="linearGradient5106">
+ <stop
+ style="stop-color:#8fb3d9;stop-opacity:1"
+ offset="0"
+ id="stop5108" />
+ <stop
+ id="stop8208"
+ offset="0.25288007"
+ style="stop-color:#729fcf;stop-opacity:1" />
+ <stop
+ style="stop-color:#3465a4;stop-opacity:1"
+ offset="0.68271071"
+ id="stop8210" />
+ <stop
+ style="stop-color:#204a87;stop-opacity:1"
+ offset="1"
+ id="stop5110" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5106"
+ id="radialGradient2707"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-7.565785,-6.219707e-7,3.9644633e-7,-4.8230546,494.60904,-26.555114)"
+ cx="62.202274"
+ cy="-5.7132163"
+ fx="62.202274"
+ fy="-5.7132163"
+ r="9.7552835" />
+ <linearGradient
+ id="linearGradient10691"
+ inkscape:collect="always">
+ <stop
+ id="stop10693"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop10695"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10691"
+ id="radialGradient3080"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="scale(1.902215,0.525703)"
+ cx="6.702713"
+ cy="73.615715"
+ fx="6.702713"
+ fy="73.615715"
+ r="7.228416" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="7"
+ inkscape:cx="24"
+ inkscape:cy="24"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1680"
+ inkscape:window-height="1000"
+ inkscape:window-x="0"
+ inkscape:window-y="25" />
+ <metadata
+ id="metadata7225">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ transform="matrix(1.6,0,0,1.8421053,3.6000003,-30.289476)"
+ d="M 26.5,38.700001 A 13.75,3.8 0 1 1 -1,38.700001 A 13.75,3.8 0 1 1 26.5,38.700001 z"
+ sodipodi:ry="3.8"
+ sodipodi:rx="13.75"
+ sodipodi:cy="38.700001"
+ sodipodi:cx="12.75"
+ id="path2625"
+ style="opacity:0.5;fill:url(#radialGradient3080);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ style="fill:url(#radialGradient2707);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3927);stroke-width:1.00004065;stroke-miterlimit:4;stroke-dasharray:none"
+ d="M 45.499979,22.999239 C 45.499979,34.87373 35.873401,44.49998 24.000271,44.49998 C 12.126053,44.49998 2.5000203,34.873621 2.5000203,22.999239 C 2.5000203,11.12529 12.126053,1.5000193 24.000271,1.5000193 C 35.873401,1.5000193 45.499979,11.12529 45.499979,22.999239 L 45.499979,22.999239 z"
+ id="path6495" />
+ <path
+ id="path8655"
+ d="M 44.49904,22.999272 C 44.49904,34.321462 35.320423,43.499975 23.999791,43.499975 C 12.678124,43.499975 3.5000253,34.321356 3.5000253,22.999272 C 3.5000253,11.677606 12.678124,2.5000243 23.999791,2.5000243 C 35.320423,2.5000243 44.49904,11.677606 44.49904,22.999272 L 44.49904,22.999272 z"
+ style="opacity:0.6;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient2704);stroke-width:1.00004995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path9053"
+ style="font-size:72px;font-style:normal;font-weight:bold;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Standard Symbols L"
+ d="M 25.499549,29.000001 C 25.500288,27.000001 24.999549,24.022899 27.499549,22.000001 C 29.987045,20.009725 32.016392,18.017155 31.999549,15.000001 C 32.036328,12.012312 28.999549,10.023333 25.999549,9.7499987 C 22.008774,9.4823727 17.999549,10.031438 15.999549,14.000001 C 15.707504,15.711192 15.898252,18.000001 17.999549,18.000001 C 18.983603,18.000001 19.999549,17.038081 19.999549,16.000001 L 19.999549,15.000001 C 19.999549,14.500001 20.028884,14.041648 20.999549,13.500001 C 22 [...]
+ sodipodi:nodetypes="cccccsssssssscc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path8287"
+ sodipodi:cx="18.4417"
+ sodipodi:cy="34.547359"
+ sodipodi:rx="2.2272584"
+ sodipodi:ry="2.4054391"
+ d="M 20.668958,34.547359 A 2.2272584,2.4054391 0 1 1 16.214442,34.547359 A 2.2272584,2.4054391 0 1 1 20.668958,34.547359 z"
+ transform="matrix(0.8979649,0,0,0.831449,7.4395493,5.2756317)" />
+ </g>
+</svg>
diff --git a/messagebox.cpp b/messagebox.cpp
deleted file mode 100644
index 60e0075..0000000
--- a/messagebox.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// C++ Implementation: messagebox
-//
-// Description:
-//
-//
-// Author: Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>, (C) 2009-2015
-//
-// Copyright: See COPYING file that comes with this distribution
-//
-//
-#include "messagebox.h"
-#include <QCheckBox>
-#include <QGridLayout>
-
-MessageBox::MessageBox(QString uname, QString hname, QWidget *parent)
- : QMessageBox(parent)
-{
- checkBox=new QCheckBox(
- QString(tr("Save selection for %1")).arg(uname),this);
- ((QGridLayout*)layout())->addWidget(checkBox,1,1);
- setIcon(Question);
- setWindowModality(Qt::WindowModal);
- setText(QString(tr("Accept %1 from %2 ?")).arg(uname).arg(hname));
- setStandardButtons(Yes|No);
- setWindowTitle(QString("%1(%2)").arg(uname).arg(hname));
-}
-
-
-MessageBox::~MessageBox()
-{
-}
-
-bool MessageBox::isChecked()
-{
- return checkBox->isChecked();
-}
-
diff --git a/messagebox.h b/messagebox.h
deleted file mode 100644
index a77ad1f..0000000
--- a/messagebox.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-// C++ Interface: messagebox
-//
-// Description:
-//
-//
-// Author: Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>, (C) 2009-2015
-//
-// Copyright: See COPYING file that comes with this distribution
-//
-//
-#ifndef MESSAGEBOX_H
-#define MESSAGEBOX_H
-
-#include <QMessageBox>
-/**
- @author Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
-*/
-class QCheckBox;
-class MessageBox : public QMessageBox
-{
- Q_OBJECT
-public:
- MessageBox(QString uname, QString hname, QWidget *parent = 0);
- ~MessageBox();
- bool isChecked();
-private:
- QCheckBox* checkBox;
-};
-
-#endif
diff --git a/resources.qrc b/resources.qrc
index 5e5a232..7cd4c6e 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -18,6 +18,7 @@
<file>icons/32x32/wlist.png</file>
<file>icons/32x32/x2godesktopsharing.png</file>
<file>icons/128x128/x2godesktopsharing.png</file>
+ <file>icons/svg/dialog-question.svg</file>
<file>x2godesktopsharing_da.qm</file>
<file>x2godesktopsharing_de.qm</file>
<file>x2godesktopsharing_es.qm</file>
diff --git a/sharetray.cpp b/sharetray.cpp
index c7e96bb..a975004 100644
--- a/sharetray.cpp
+++ b/sharetray.cpp
@@ -18,18 +18,19 @@
#include <QDir>
#include <QtDebug>
#include <QMessageBox>
+#include <QDialog>
#include <QSocketNotifier>
#include <sys/socket.h>
#include <sys/unistd.h>
#include "simplelocalsocket.h"
#include "accessaction.h"
+#include "accessdialog.h"
#include <sys/types.h>
#include <csignal>
#include <errno.h>
#include <QToolTip>
#include <QTimer>
#include <QSettings>
-#include "messagebox.h"
#include <QSystemTrayIcon>
#include <QCloseEvent>
#include <QDateTime>
@@ -404,7 +405,7 @@ QString ShareTray::getSocketAnswer ( QString message )
QString client=lst[0];
QString user=params[1];
QString remote_user=lst[10];
- if ( getAccess ( remote_user, client ) ==QMessageBox::Yes )
+ if ( getAccess ( remote_user, client ) ==QDialog::Accepted )
{
trayMessage ( tr ( "Access granted" ),QString ( tr ( "%1(%2): access granted" ) ).arg (remote_user ).arg ( client ) );
//start agent
@@ -486,13 +487,12 @@ int ShareTray::getAccess ( QString remote_user, QString host )
if ( systemwideBlackList.contains ( remote_user ) )
return QMessageBox::Yes;
- MessageBox m ( remote_user, host, this );
- m.activateWindow();
- m.raise();
- int res=m.exec();
- if ( m.isChecked() &&res==QMessageBox::Yes )
+ AccessWindow ad ( remote_user, host, this );
+ ad.raise();
+ int res=ad.exec();
+ if ( ad.isChecked() &&res==QDialog::Accepted )
userWhiteList<<remote_user;
- if ( m.isChecked() &&res==QMessageBox::No )
+ if ( ad.isChecked() &&res==QDialog::Rejected )
userBlackList<<remote_user;
actBlack->setEnabled ( userBlackList.size() >0 );
actWhite->setEnabled ( userWhiteList.size() >0 );
diff --git a/x2godesktopsharing.pro b/x2godesktopsharing.pro
index 530e3ed..75a9556 100644
--- a/x2godesktopsharing.pro
+++ b/x2godesktopsharing.pro
@@ -44,11 +44,11 @@ SOURCES += main.cpp \
sharetray.cpp \
simplelocalsocket.cpp \
accessaction.cpp \
- messagebox.cpp
+ accessdialog.cpp
HEADERS += sharetray.h \
simplelocalsocket.h \
accessaction.h \
- messagebox.h
+ accessdialog.h
RESOURCES += resources.qrc
FORMS = dlg.ui
--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2godesktopsharing.git
More information about the x2go-commits
mailing list