annotate main/NetworkPermissionTester.cpp @ 1620:33d32b3190bf

Store aggregate models in the document and release them when they are invalidated (because their components have been released). They're no longer leaked, but we still don't save them in the session file.
author Chris Cannam
date Mon, 27 Feb 2017 16:26:37 +0000
parents 3f6c18fcc075
children 3dbfe3ba0d1f
rev   line source
Chris@663 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@663 2
Chris@663 3 /*
Chris@663 4 Sonic Visualiser
Chris@663 5 An audio file viewer and annotation editor.
Chris@663 6 Centre for Digital Music, Queen Mary, University of London.
Chris@663 7
Chris@663 8 This program is free software; you can redistribute it and/or
Chris@663 9 modify it under the terms of the GNU General Public License as
Chris@663 10 published by the Free Software Foundation; either version 2 of the
Chris@663 11 License, or (at your option) any later version. See the file
Chris@663 12 COPYING included with this distribution for more information.
Chris@663 13 */
Chris@663 14
Chris@663 15 #include "NetworkPermissionTester.h"
Chris@663 16
Chris@663 17 #include "../version.h"
Chris@663 18
Chris@663 19 #include <QWidget>
Chris@663 20 #include <QString>
Chris@663 21 #include <QSettings>
Chris@663 22 #include <QCoreApplication>
Chris@663 23 #include <QDialog>
Chris@663 24 #include <QGridLayout>
Chris@663 25 #include <QLabel>
Chris@663 26 #include <QDialogButtonBox>
Chris@663 27 #include <QCheckBox>
Chris@663 28
Chris@663 29 bool
Chris@663 30 NetworkPermissionTester::havePermission()
Chris@663 31 {
Chris@663 32 QSettings settings;
Chris@663 33 settings.beginGroup("Preferences");
Chris@663 34
Chris@663 35 QString tag = QString("network-permission-%1").arg(SV_VERSION);
Chris@663 36
Chris@663 37 bool permish = false;
Chris@663 38
Chris@663 39 if (settings.contains(tag)) {
Chris@663 40 permish = settings.value(tag, false).toBool();
Chris@663 41 } else {
Chris@663 42
Chris@663 43 QDialog d;
Chris@663 44 d.setWindowTitle(QCoreApplication::translate("NetworkPermissionTester", "Welcome to Sonic Visualiser"));
Chris@663 45
Chris@663 46 QGridLayout *layout = new QGridLayout;
Chris@663 47 d.setLayout(layout);
Chris@663 48
Chris@1613 49 QString preamble;
Chris@1613 50 preamble = QCoreApplication::translate
Chris@1613 51 ("NetworkPermissionTester",
Chris@1613 52 "<h2>Welcome to Sonic Visualiser!</h2>"
Chris@1613 53 "<p><img src=\":icons/qm-logo-smaller.png\" style=\"float:right\">Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.</p>"
Chris@1613 54 "<p>Developed in the Centre for Digital Music at Queen Mary University of London, Sonic Visualiser is open source software under the GNU General Public License.</p>"
Chris@1613 55 "<p><hr></p>"
Chris@1613 56 "<p><b>Before we go on...</b></p>"
Chris@1613 57 "<p>Sonic Visualiser would like permission to use the network.</p>");
Chris@1613 58
Chris@1613 59 QString bullets;
Chris@1613 60 if (m_withOSC) {
Chris@1613 61 bullets = QCoreApplication::translate
Chris@1613 62 ("NetworkPermissionTester",
Chris@1613 63 "<p>This is to:</p>"
Chris@1613 64 "<ul><li> Find information about available and installed plugins;</li>"
Chris@1613 65 "<li> Support the use of Open Sound Control; and</li>"
Chris@1613 66 "<li> Tell you when updates are available.</li>"
Chris@1613 67 "</ul>");
Chris@1613 68 } else {
Chris@1613 69 bullets = QCoreApplication::translate
Chris@1613 70 ("NetworkPermissionTester",
Chris@1613 71 "<p>This is to:</p>"
Chris@1613 72 "<ul><li> Find information about available and installed plugins; and</li>"
Chris@1613 73 "<li> Tell you when updates are available.</li>"
Chris@1613 74 "</ul>");
Chris@1613 75 }
Chris@1613 76
Chris@1613 77 QString postamble;
Chris@1613 78 postamble = QCoreApplication::translate
Chris@1613 79 ("NetworkPermissionTester",
Chris@1613 80 "<p><b>No personal information will be sent, no tracking is carried out, and no individual information will be shared with anyone else.</b> We will however make aggregate counts of distinct requests for usage reporting.</p>"
Chris@1613 81 "<p>We recommend that you allow this, because it makes Sonic Visualiser more useful to you and supports the public funding of this work. But if you do not wish to allow it, please un-check the box below.<br></p>");
Chris@1613 82
Chris@663 83 QLabel *label = new QLabel;
Chris@663 84 label->setWordWrap(true);
Chris@1613 85 label->setText(preamble + bullets + postamble);
Chris@663 86 layout->addWidget(label, 0, 0);
Chris@663 87
Chris@667 88 QCheckBox *cb = new QCheckBox(QCoreApplication::translate("NetworkPermissionTester", "Allow this"));
Chris@663 89 cb->setChecked(true);
Chris@663 90 layout->addWidget(cb, 1, 0);
Chris@663 91
Chris@663 92 QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Ok);
Chris@663 93 QObject::connect(bb, SIGNAL(accepted()), &d, SLOT(accept()));
Chris@663 94 layout->addWidget(bb, 2, 0);
Chris@663 95
Chris@663 96 d.exec();
Chris@663 97
Chris@681 98 permish = cb->isChecked();
Chris@663 99 settings.setValue(tag, permish);
Chris@663 100 }
Chris@663 101
Chris@663 102 settings.endGroup();
Chris@663 103
Chris@663 104 return permish;
Chris@663 105 }
Chris@663 106
Chris@663 107
Chris@663 108