Hello community,
here is the log from the commit of package matrix-quaternion for
openSUSE:Factory checked in at 2020-04-01 19:16:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/matrix-quaternion (Old)
and /work/SRC/openSUSE:Factory/.matrix-quaternion.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "matrix-quaternion"
Wed Apr 1 19:16:49 2020 rev:3 rq:790403 version:0.0.9.4d
Changes:
--------
--- /work/SRC/openSUSE:Factory/matrix-quaternion/matrix-quaternion.changes
2019-06-12 13:12:29.216930697 +0200
+++
/work/SRC/openSUSE:Factory/.matrix-quaternion.new.3248/matrix-quaternion.changes
2020-04-01 19:17:29.619508314 +0200
@@ -1,0 +2,21 @@
+Tue Mar 31 20:02:32 UTC 2020 - [email protected]
+
+- Update to 0.0.9.4d
+ This is a "sustaining" "rebuild" of the "stable" (that is - users
+ know its bugs by now) Quaternion on top of libQMatrixClient
+ 0.5.3.1. Unlike previous rebuilds, this incorporates two major
+ changes in Quaternion itself, backported from the master branch:
+
+ - (#653) Single sign-on support, to help Mozilla homeserver users
+ - (#663) Interoperability with Pantalaimon, to help practically
+ any Matrix user who agrees to use Pantalaimon as an E2EE proxy.
+
+-------------------------------------------------------------------
+Wed Jan 29 08:58:00 UTC 2020 - [email protected]
+
+- Update to 0.0.9.4c
+ - A problem that led to appstream-util validate failure
+ preventing correct construction of Flatpaks has been fixed.
+- Run spec-cleaner.
+
+-------------------------------------------------------------------
Old:
----
matrix-quaternion-0.0.9.4.tar.gz
New:
----
matrix-quaternion-0.0.9.4d.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ matrix-quaternion.spec ++++++
--- /var/tmp/diff_new_pack.o0UPNh/_old 2020-04-01 19:17:32.203509476 +0200
+++ /var/tmp/diff_new_pack.o0UPNh/_new 2020-04-01 19:17:32.207509478 +0200
@@ -1,7 +1,7 @@
#
# spec file for package matrix-quaternion
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,21 +17,16 @@
Name: matrix-quaternion
-Version: 0.0.9.4
+Version: 0.0.9.4d
Release: 0
Summary: QT Matrix client
License: GPL-3.0-only
Group: Productivity/Networking/Instant Messenger
-Url: https://github.com/QMatrixClient/Quaternion
+URL: https://github.com/QMatrixClient/Quaternion
Source0:
https://github.com/QMatrixClient/Quaternion/archive/%{version}/%{name}-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake
-%if 0%{?suse_version} < 1500
-BuildRequires: gcc7-c++
-%else
-BuildRequires: gcc-c++
-%endif
BuildRequires: hicolor-icon-theme
+BuildRequires: pkgconfig
BuildRequires: cmake(Qt5Keychain)
BuildRequires: cmake(Qt5LinguistTools)
BuildRequires: pkgconfig(QMatrixClient) >= 0.5.1
@@ -46,6 +41,11 @@
Requires: %{name}-lang
Requires: libqt5-qtquickcontrols
Requires: libqt5-qtquickcontrols2
+%if 0%{?suse_version} < 1500
+BuildRequires: gcc7-c++
+%else
+BuildRequires: gcc-c++
+%endif
# upstream use instead Qt5Core, Qt5Gui, Qt5Network, Qt5Quick, Qt5Widgets:
# BuildRequires: libqt5-qtdeclarative-devel libqt5-qtquickcontrols
@@ -81,8 +81,8 @@
%endif
%files
-%defattr(-,root,root,-)
-%doc COPYING README.md
+%license COPYING
+%doc README.md
%{_bindir}/quaternion
%{_datadir}/applications/*.desktop
%{_datadir}/icons/hicolor/*/apps/*
++++++ matrix-quaternion-0.0.9.4.tar.gz -> matrix-quaternion-0.0.9.4d.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/.travis.yml
new/Quaternion-0.0.9.4d/.travis.yml
--- old/Quaternion-0.0.9.4/.travis.yml 2019-04-29 11:59:48.000000000 +0200
+++ new/Quaternion-0.0.9.4d/.travis.yml 2020-03-31 08:00:03.000000000 +0200
@@ -64,6 +64,7 @@
- qt512tools
- qt512translations
- qt5keychain-dev
+ - appstream-util
- os: osx
env: [ 'PATH=/usr/local/opt/qt/bin:$PATH' ]
addons:
@@ -82,7 +83,7 @@
- mkdir build && pushd build
# TODO: add building with an external lib
- cmake .. -LA -DUSE_INTREE_LIBQMC=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo
-DCMAKE_INSTALL_PREFIX=/usr -DDEPLOY_VERBOSITY=$DEPLOY_VERBOSITY
-#- appstream-util validate linux/*.appdata.xml
+- if [ -f "$(which appstream-util)" ]; then appstream-util validate
../linux/*.appdata.xml; fi
- cmake --build . --target all
- export DESTDIR=$TRAVIS_BUILD_DIR/install
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cmake --build . --target install; fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/CMakeLists.txt
new/Quaternion-0.0.9.4d/CMakeLists.txt
--- old/Quaternion-0.0.9.4/CMakeLists.txt 2019-04-29 11:59:48.000000000
+0200
+++ new/Quaternion-0.0.9.4d/CMakeLists.txt 2020-03-31 08:00:03.000000000
+0200
@@ -1,7 +1,7 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
set(IDENTIFIER "com.github.quaternion")
-set(COPYRIGHT "Copyright © 2018-2019 QMatrixClient Project")
+set(COPYRIGHT "Copyright © 2018-2020 QMatrixClient Project")
project(quaternion VERSION 0.0.9.4 LANGUAGES CXX)
@@ -239,10 +239,10 @@
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR})
if(LINUX)
- install(FILES linux/quaternion.desktop
+ install(FILES linux/${IDENTIFIER}.desktop
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
)
- install(FILES linux/com.github.quaternion.appdata.xml
+ install(FILES linux/${IDENTIFIER}.appdata.xml
DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo
)
install(FILES ${quaternion_QM}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/client/chatroomwidget.cpp
new/Quaternion-0.0.9.4d/client/chatroomwidget.cpp
--- old/Quaternion-0.0.9.4/client/chatroomwidget.cpp 2019-04-29
11:59:48.000000000 +0200
+++ new/Quaternion-0.0.9.4d/client/chatroomwidget.cpp 2020-03-31
08:00:03.000000000 +0200
@@ -236,11 +236,10 @@
void ChatRoomWidget::encryptionChanged()
{
- m_chatEdit->setReadOnly(m_currentRoom && m_currentRoom->usesEncryption());
m_chatEdit->setPlaceholderText(
m_currentRoom
? m_currentRoom->usesEncryption()
- ? tr("Sending encrypted messages is not supported yet")
+ ? tr("Send a message (no end-to-end encryption support
yet)...")
: tr("Send a message (over %1) or enter a command...",
"%1 is the protocol used by the server (usually HTTPS)")
.arg(m_currentRoom->connection()->homeserver()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/client/dialog.cpp
new/Quaternion-0.0.9.4d/client/dialog.cpp
--- old/Quaternion-0.0.9.4/client/dialog.cpp 2019-04-29 11:59:48.000000000
+0200
+++ new/Quaternion-0.0.9.4d/client/dialog.cpp 2020-03-31 08:00:03.000000000
+0200
@@ -25,7 +25,7 @@
UseStatusLine useStatusLine, const QString& applyTitle,
QDialogButtonBox::StandardButtons addButtons)
: Dialog(title
- , QDialogButtonBox::Ok | QDialogButtonBox::Cancel | addButtons
+ , QDialogButtonBox::Ok | /*QDialogButtonBox::Cancel |*/ addButtons
, parent, useStatusLine)
{
if (!applyTitle.isEmpty())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/client/logindialog.cpp
new/Quaternion-0.0.9.4d/client/logindialog.cpp
--- old/Quaternion-0.0.9.4/client/logindialog.cpp 2019-04-29
11:59:48.000000000 +0200
+++ new/Quaternion-0.0.9.4d/client/logindialog.cpp 2020-03-31
08:00:03.000000000 +0200
@@ -20,6 +20,7 @@
#include "logindialog.h"
#include <connection.h>
+#include <ssosession.h>
#include <settings.h>
#include <QtWidgets/QLineEdit>
@@ -27,10 +28,13 @@
#include <QtWidgets/QLabel>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QFormLayout>
+#include <QtWidgets/QMessageBox>
+#include <QtGui/QDesktopServices>
using QMatrixClient::Connection;
-LoginDialog::LoginDialog(QWidget* parent, const QStringList& knownAccounts)
+LoginDialog::LoginDialog(const QString& statusMessage, QWidget* parent,
+ const QStringList& knownAccounts)
: Dialog(tr("Login"), parent, Dialog::StatusLine, tr("Login"),
Dialog::NoExtraButtons)
, userEdit(new QLineEdit(this))
@@ -40,7 +44,7 @@
, saveTokenCheck(new QCheckBox(tr("Stay logged in"), this))
, m_connection(new Connection)
{
- setup();
+ setup(statusMessage);
setPendingApplyMessage(tr("Connecting and logging in, please wait"));
connect(userEdit, &QLineEdit::editingFinished, m_connection.data(),
@@ -50,6 +54,26 @@
m_connection->resolveServer(userId);
});
+ // This button is only shown when BOTH password auth and SSO are available
+ // If only one flow is there, the "Login" button text is changed instead
+ auto* ssoButton = buttonBox()->addButton(tr("Login with SSO"),
+ QDialogButtonBox::AcceptRole);
+ connect(ssoButton, &QPushButton::clicked, this,
&LoginDialog::loginWithSso);
+ ssoButton->setHidden(true);
+ connect(m_connection.data(), &Connection::loginFlowsChanged, this,
+ [this, ssoButton] {
+ // There may be more ways to login but Quaternion only supports
+ // SSO and password for now; in the worst case of no known
+ // options password login is kept enabled as the last resort.
+ bool canUseSso = m_connection->supportsSso();
+ bool canUsePassword = m_connection->supportsPasswordAuth();
+ ssoButton->setVisible(canUseSso && canUsePassword);
+ button(QDialogButtonBox::Ok)
+ ->setText(canUseSso && !canUsePassword
+ ? QStringLiteral("Login with SSO")
+ : QStringLiteral("Login"));
+ });
+
{
// Fill defaults
using namespace QMatrixClient;
@@ -76,7 +100,7 @@
}
}
-LoginDialog::LoginDialog(QWidget* parent,
+LoginDialog::LoginDialog(const QString &statusMessage, QWidget* parent,
const QMatrixClient::AccountSettings& reloginData)
: Dialog(tr("Re-login"), parent, Dialog::StatusLine, tr("Re-login"),
Dialog::NoExtraButtons)
@@ -87,14 +111,15 @@
, saveTokenCheck(new QCheckBox(tr("Stay logged in"), this))
, m_connection(new Connection)
{
- setup();
+ setup(statusMessage);
userEdit->setReadOnly(true);
userEdit->setFrame(false);
setPendingApplyMessage(tr("Restoring access, please wait"));
}
-void LoginDialog::setup()
+void LoginDialog::setup(const QString& statusMessage)
{
+ setStatusMessage(statusMessage);
passwordEdit->setEchoMode( QLineEdit::Password );
connect(m_connection.data(), &Connection::homeserverChanged, serverEdit,
@@ -130,11 +155,61 @@
auto url = QUrl::fromUserInput(serverEdit->text());
if (!serverEdit->text().isEmpty() &&
!serverEdit->text().startsWith("http:"))
url.setScheme("https"); // Qt defaults to http (or even ftp for some)
- m_connection->setHomeserver(url);
- connect( m_connection.data(), &Connection::connected,
- this, &Dialog::accept );
- connect( m_connection.data(), &Connection::loginError,
- this, &Dialog::applyFailed);
+
+ // Whichever the flow, the two connections are the same
+ connect(m_connection.data(), &Connection::connected,
+ this, &Dialog::accept);
+ connect(m_connection.data(), &Connection::loginError,
+ this, &Dialog::applyFailed);
+ if (m_connection->homeserver() == url &&
!m_connection->loginFlows().empty())
+ loginWithBestFlow();
+ else {
+ m_connection->setHomeserver(url);
+
+ // Wait for new flows and check them
+ connectSingleShot(m_connection.data(), &Connection::loginFlowsChanged,
+ this, [this] {
+ qDebug()
+ << "Received login flows, trying to login";
+ loginWithBestFlow();
+ });
+ }
+}
+
+void LoginDialog::loginWithBestFlow()
+{
+ if (m_connection->loginFlows().empty()
+ || m_connection->supportsPasswordAuth())
+ loginWithPassword();
+ else if (m_connection->supportsSso())
+ loginWithSso();
+ else
+ emit applyFailed(tr("No supported login flows"));
+}
+
+void LoginDialog::loginWithPassword()
+{
m_connection->connectToServer(userEdit->text(), passwordEdit->text(),
initialDeviceName->text());
}
+
+void LoginDialog::loginWithSso()
+{
+ auto* ssoSession = m_connection->prepareForSso(initialDeviceName->text());
+ if (!QDesktopServices::openUrl(ssoSession->ssoUrl())) {
+ auto* instructionsBox =
+ new Dialog(tr("Single sign-on"), QDialogButtonBox::NoButton, this);
+ instructionsBox->addWidget(new QLabel(
+ tr("Quaternion couldn't automatically open the single sign-on URL.
"
+ "Please copy and paste it to the right application (usually "
+ "a web browser):")));
+ auto* urlBox = new QLineEdit(ssoSession->ssoUrl().toString());
+ urlBox->setReadOnly(true);
+ instructionsBox->addWidget(urlBox);
+ instructionsBox->addWidget(
+ new QLabel(tr("After authentication, the browser will follow "
+ "the temporary local address setup by Quaternion "
+ "to conclude the login sequence.")));
+ instructionsBox->open();
+ }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/client/logindialog.h
new/Quaternion-0.0.9.4d/client/logindialog.h
--- old/Quaternion-0.0.9.4/client/logindialog.h 2019-04-29 11:59:48.000000000
+0200
+++ new/Quaternion-0.0.9.4d/client/logindialog.h 2020-03-31
08:00:03.000000000 +0200
@@ -33,11 +33,12 @@
{
Q_OBJECT
public:
- explicit LoginDialog(QWidget* parent = nullptr,
+ explicit LoginDialog(const QString& statusMessage,
+ QWidget* parent = nullptr,
const QStringList& knownAccounts = {});
- explicit LoginDialog(QWidget* parent,
+ explicit LoginDialog(const QString& statusMessage, QWidget* parent,
const QMatrixClient::AccountSettings&
reloginData);
- void setup();
+ void setup(const QString &statusMessage);
~LoginDialog() override;
QMatrixClient::Connection* releaseConnection();
@@ -46,6 +47,9 @@
private slots:
void apply() override;
+ void loginWithBestFlow();
+ void loginWithPassword();
+ void loginWithSso();
private:
QLineEdit* userEdit;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/client/main.cpp
new/Quaternion-0.0.9.4d/client/main.cpp
--- old/Quaternion-0.0.9.4/client/main.cpp 2019-04-29 11:59:48.000000000
+0200
+++ new/Quaternion-0.0.9.4d/client/main.cpp 2020-03-31 08:00:03.000000000
+0200
@@ -39,7 +39,7 @@
QApplication::setOrganizationName(QStringLiteral("QMatrixClient"));
QApplication::setApplicationName(QStringLiteral("quaternion"));
QApplication::setApplicationDisplayName(QStringLiteral("Quaternion"));
- QApplication::setApplicationVersion(QStringLiteral("0.0.9.4"));
+ QApplication::setApplicationVersion(QStringLiteral("0.0.9.4d"));
QMatrixClient::Settings::setLegacyNames(
QStringLiteral("Quaternion"), QStringLiteral("quaternion"));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/client/mainwindow.cpp
new/Quaternion-0.0.9.4d/client/mainwindow.cpp
--- old/Quaternion-0.0.9.4/client/mainwindow.cpp 2019-04-29
11:59:48.000000000 +0200
+++ new/Quaternion-0.0.9.4d/client/mainwindow.cpp 2020-03-31
08:00:03.000000000 +0200
@@ -783,6 +783,14 @@
c->deleteLater();
}
+bool MainWindow::isInConnections(const QString& userId)
+{
+ return std::any_of(connections.cbegin(), connections.cend(),
+ [&userId](Connection* c) {
+ return c->userId() == userId;
+ });
+}
+
void MainWindow::showFirstSyncIndicator()
{
busyLabel->show();
@@ -796,80 +804,63 @@
QMatrixClient::SettingsGroup("Accounts").childGroups();
QStringList loggedOffAccounts;
for (const auto& a: allKnownAccounts)
- {
- AccountSettings as { a };
// Skip accounts mentioned in active connections
- if ([&] {
- for (auto c: connections)
- if (as.userId() == c->userId())
- return false;
- return true;
- }())
+ if (!isInConnections(AccountSettings(a).userId()))
loggedOffAccounts.push_back(a);
- }
- LoginDialog dialog(this, loggedOffAccounts);
- dialog.setStatusMessage(statusMessage);
- if (dialog.exec())
- processLogin(dialog);
+ doOpenLoginDialog(new LoginDialog(statusMessage, this, loggedOffAccounts));
}
void MainWindow::showLoginWindow(const QString& statusMessage,
- AccountSettings& reloginAccount)
+ const QString& userId)
{
- LoginDialog dialog { this, reloginAccount };
-
- dialog.setStatusMessage(statusMessage);
- if (dialog.exec())
- processLogin(dialog);
- else
- {
- reloginAccount.clearAccessToken();
- QFile(accessTokenFileName(reloginAccount)).remove();
+ auto* reloginAccount = new AccountSettings(userId);
+ auto* dialog = new LoginDialog(statusMessage, this, *reloginAccount);
+ reloginAccount->setParent(dialog); // => Delete with the dialog box
+ doOpenLoginDialog(dialog);
+ connect(dialog, &QDialog::rejected, this, [reloginAccount] {
+ reloginAccount->clearAccessToken();
+ QFile(accessTokenFileName(*reloginAccount)).remove();
// XXX: Maybe even remove the account altogether as below?
-//
QMatrixClient::SettingsGroup("Accounts").remove(reloginAccount.userId());
- }
+ //
QMatrixClient::SettingsGroup("Accounts").remove(reloginAccount->userId());
+ });
}
-void MainWindow::processLogin(LoginDialog& dialog)
+void MainWindow::doOpenLoginDialog(LoginDialog* dialog)
{
- auto connection = dialog.releaseConnection();
- AccountSettings account(connection->userId());
- account.setKeepLoggedIn(dialog.keepLoggedIn());
- account.clearAccessToken(); // Drop the legacy - just in case
- account.setHomeserver(connection->homeserver());
- account.setDeviceId(connection->deviceId());
- account.setDeviceName(dialog.deviceName());
- if (dialog.keepLoggedIn())
- {
- if (!saveAccessToken(account, connection->accessToken()))
- qWarning() << "Couldn't save access token";
- } else
- logoutOnExit.push_back(connection);
- account.sync();
+ dialog->setAttribute(Qt::WA_DeleteOnClose);
+ dialog->open();
+ connect(dialog, &QDialog::accepted, this, [this, dialog] {
+ auto connection = dialog->releaseConnection();
+ AccountSettings account(connection->userId());
+ account.setKeepLoggedIn(dialog->keepLoggedIn());
+ account.clearAccessToken(); // Drop the legacy - just in case
+ account.setHomeserver(connection->homeserver());
+ account.setDeviceId(connection->deviceId());
+ account.setDeviceName(dialog->deviceName());
+ if (dialog->keepLoggedIn()) {
+ if (!saveAccessToken(account, connection->accessToken()))
+ qWarning() << "Couldn't save access token";
+ } else
+ logoutOnExit.push_back(connection);
+ account.sync();
- showFirstSyncIndicator();
+ showFirstSyncIndicator();
- auto deviceName = dialog.deviceName();
- const auto it = std::find_if(connections.cbegin(), connections.cend(),
- [connection] (Connection* c) {
- return c->userId() == connection->userId();
- });
+ auto deviceName = dialog->deviceName();
+ if (isInConnections(connection->userId())) {
+ if (QMessageBox::warning(
+ this, tr("Logging in into a logged in account"),
+ tr("You're trying to log in into an account that's "
+ "already logged in. Do you want to continue?"),
+ QMessageBox::Yes, QMessageBox::No)
+ != QMessageBox::Yes)
+ return;
- if (it != connections.cend())
- {
- int ret = QMessageBox::warning(this,
- tr("Logging in into a logged in account"),
- tr("You're trying to log in into an account that's "
- "already logged in. Do you want to continue?"),
- QMessageBox::Yes, QMessageBox::No);
-
- if (ret == QMessageBox::Yes)
deviceName += "-" + connection->deviceId();
- else
- return;
- }
- addConnection(connection, deviceName);
+ }
+ addConnection(connection, deviceName);
+ });
}
void MainWindow::showAboutWindow()
@@ -998,12 +989,11 @@
void MainWindow::loginError(Connection* c, const QString& message)
{
Q_ASSERT_X(c, __FUNCTION__, "Login error on a null connection");
- AccountSettings as { c->userId() };
c->stopSync();
// Security over convenience: before allowing back in, remove
// the connection from the UI
emit c->loggedOut(); // Short circuit login error to logged-out event
- showLoginWindow(message, as);
+ showLoginWindow(message, c->userId());
}
void MainWindow::logout(Connection* c)
@@ -1228,8 +1218,11 @@
QStringList list;
if (type & Room)
{
- for (auto* room: connection->roomMap())
- list << room->canonicalAlias();
+ for (auto* room : connection->allRooms()) {
+ list << room->id();
+ if (!room->canonicalAlias().isEmpty())
+ list << room->canonicalAlias();
+ }
}
if (type & User)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/client/mainwindow.h
new/Quaternion-0.0.9.4d/client/mainwindow.h
--- old/Quaternion-0.0.9.4/client/mainwindow.h 2019-04-29 11:59:48.000000000
+0200
+++ new/Quaternion-0.0.9.4d/client/mainwindow.h 2020-03-31 08:00:03.000000000
+0200
@@ -66,6 +66,7 @@
void addConnection(Connection* c, const QString& deviceName);
void dropConnection(Connection* c);
+ bool isInConnections(const QString& userId);
ChatRoomWidget* getChatRoomWidget() const;
@@ -90,7 +91,7 @@
void showLoginWindow(const QString& statusMessage = {});
void showLoginWindow(const QString& statusMessage,
- QMatrixClient::AccountSettings& reloginAccount);
+ const QString& userId);
void showAboutWindow();
void logout(Connection* c);
@@ -132,7 +133,7 @@
void showFirstSyncIndicator();
void loadSettings();
void saveSettings() const;
- void processLogin(LoginDialog& dialog);
+ void doOpenLoginDialog(LoginDialog* dialog);
QByteArray loadAccessToken(const QMatrixClient::AccountSettings&
account);
QByteArray loadAccessTokenFromFile(const
QMatrixClient::AccountSettings& account);
QByteArray loadAccessTokenFromKeyChain(const
QMatrixClient::AccountSettings &account);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/client/models/roomlistmodel.cpp
new/Quaternion-0.0.9.4d/client/models/roomlistmodel.cpp
--- old/Quaternion-0.0.9.4/client/models/roomlistmodel.cpp 2019-04-29
11:59:48.000000000 +0200
+++ new/Quaternion-0.0.9.4d/client/models/roomlistmodel.cpp 2020-03-31
08:00:03.000000000 +0200
@@ -54,7 +54,7 @@
this, &RoomListModel::addRoom);
m_roomOrder->connectSignals(connection);
- for (auto* r: connection->roomMap())
+ for (auto* r: connection->allRooms())
addRoom(r);
}
@@ -70,7 +70,7 @@
return;
}
- for (auto* r: connection->roomMap())
+ for (auto* r: connection->allRooms())
deleteRoom(r);
m_connections.erase(connIt);
connection->disconnect(this);
@@ -292,7 +292,7 @@
for (const auto& c: m_connections)
{
m_roomOrder->connectSignals(c);
- for (auto* r: c->roomMap())
+ for (auto* r: c->allRooms())
{
addRoomToGroups(r);
m_roomOrder->connectSignals(r);
@@ -330,7 +330,7 @@
{
int result = 0;
for (const auto& c: m_connections)
- result += c->roomMap().size();
+ result += c->allRooms().size();
return result;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Quaternion-0.0.9.4/linux/com.github.quaternion.appdata.xml
new/Quaternion-0.0.9.4d/linux/com.github.quaternion.appdata.xml
--- old/Quaternion-0.0.9.4/linux/com.github.quaternion.appdata.xml
2019-04-29 11:59:48.000000000 +0200
+++ new/Quaternion-0.0.9.4d/linux/com.github.quaternion.appdata.xml
2020-03-31 08:00:03.000000000 +0200
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<component type="desktop-application">
- <id>com.github.quaternion</id>
+ <id>com.github.quaternion.desktop</id>
<metadata_license>CC-BY-4.0</metadata_license>
<project_license>GPL-3.0+</project_license>
<name>Quaternion</name>
@@ -23,7 +23,7 @@
<screenshots>
<screenshot type="default">
- <image type="source" width="1438"
height="890">https://raw.githubusercontent.com/QMatrixClient/Quaternion/master/quaternion.png</image>
+
<image>https://raw.githubusercontent.com/QMatrixClient/Quaternion/master/quaternion.png</image>
</screenshot>
</screenshots>
@@ -37,7 +37,6 @@
<releases>
<release version="0.0.9.4" date="2019-04-29" />
- <release version="0.0.9.4-beta1" date="2019-03-03" type="development" />
<release version="0.0.9.3" date="2018-10-21" />
<release version="0.0.9.2" date="2018-06-17" />
<release version="0.0.9.1" date="2018-05-07" />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/Quaternion-0.0.9.4/linux/com.github.quaternion.desktop
new/Quaternion-0.0.9.4d/linux/com.github.quaternion.desktop
--- old/Quaternion-0.0.9.4/linux/com.github.quaternion.desktop 1970-01-01
01:00:00.000000000 +0100
+++ new/Quaternion-0.0.9.4d/linux/com.github.quaternion.desktop 2020-03-31
08:00:03.000000000 +0200
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=Quaternion
+GenericName=Matrix Client
+Comment=IM client for the Matrix protocol
+Comment[de]=IM Client für das Matrix Protokoll
+Exec=quaternion
+Terminal=false
+Icon=quaternion
+Type=Application
+Categories=Network;InstantMessaging;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Quaternion-0.0.9.4/linux/quaternion.desktop
new/Quaternion-0.0.9.4d/linux/quaternion.desktop
--- old/Quaternion-0.0.9.4/linux/quaternion.desktop 2019-04-29
11:59:48.000000000 +0200
+++ new/Quaternion-0.0.9.4d/linux/quaternion.desktop 1970-01-01
01:00:00.000000000 +0100
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Name=Quaternion
-GenericName=Matrix Client
-Comment=IM client for the Matrix protocol
-Comment[de]=IM Client für das Matrix Protokoll
-Exec=quaternion
-Terminal=false
-Icon=quaternion
-Type=Application
-Categories=Network;InstantMessaging;