Skip to content

Commit 07907de

Browse files
committed
NOISSUE revamp the MSA login dialog
It now has a more sensible UI/UX: - Added a QR code you can scan on your phone to complete the logn flow - Inverted the progress bar to show that it is a timeout - Redone the text label so that it does not break the layout when it has multiple lines Also started working on redoing the accounts/profiles/skins/capes management in general
1 parent 9a03efe commit 07907de

21 files changed

+2506
-111
lines changed

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ add_subdirectory(libraries/hoedown) # markdown parser
255255
add_subdirectory(libraries/launcher) # java based launcher part for Minecraft
256256
add_subdirectory(libraries/javacheck) # java compatibility checker
257257
add_subdirectory(libraries/xz-embedded) # xz compression
258+
add_subdirectory(libraries/qrcode) # library for generating QR codes
258259
add_subdirectory(libraries/quazip) # zip manipulation library
259260
add_subdirectory(libraries/rainbow) # Qt extension for colors
260261
add_subdirectory(libraries/iconfix) # fork of Qt's QIcon loader

COPYING.md

+24
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,30 @@ Portions are licensed under MS-PL:
315315
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
316316
DEALINGS IN THE SOFTWARE.
317317

318+
# qt-qrcodegenerator
319+
320+
MIT License
321+
322+
Copyright (c) 2023 Alex Spataru
323+
324+
Permission is hereby granted, free of charge, to any person obtaining a copy
325+
of this software and associated documentation files (the "Software"), to deal
326+
in the Software without restriction, including without limitation the rights
327+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
328+
copies of the Software, and to permit persons to whom the Software is
329+
furnished to do so, subject to the following conditions:
330+
331+
The above copyright notice and this permission notice shall be included in all
332+
copies or substantial portions of the Software.
333+
334+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
335+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
336+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
337+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
338+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
339+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
340+
SOFTWARE.
341+
318342
# tomlc99
319343

320344
MIT License

launcher/CMakeLists.txt

+36-27
Original file line numberDiff line numberDiff line change
@@ -744,6 +744,8 @@ SET(LAUNCHER_SOURCES
744744
# GUI - dialogs
745745
ui/dialogs/AboutDialog.cpp
746746
ui/dialogs/AboutDialog.h
747+
ui/dialogs/AccountsDialog.cpp
748+
ui/dialogs/AccountsDialog.h
747749
ui/dialogs/ProfileSelectDialog.cpp
748750
ui/dialogs/ProfileSelectDialog.h
749751
ui/dialogs/ProfileSetupDialog.cpp
@@ -817,6 +819,8 @@ SET(LAUNCHER_SOURCES
817819
ui/widgets/ProgressWidget.cpp
818820
ui/widgets/WideBar.h
819821
ui/widgets/WideBar.cpp
822+
ui/widgets/WrapLabel.h
823+
ui/widgets/WrapLabel.cpp
820824

821825
# GUI - instance group view
822826
ui/instanceview/InstanceProxyModel.cpp
@@ -833,50 +837,54 @@ SET(LAUNCHER_SOURCES
833837
)
834838

835839
qt5_wrap_ui(LAUNCHER_UI
840+
ui/dialogs/AboutDialog.ui
841+
ui/dialogs/AccountsDialog.ui
842+
ui/dialogs/CopyInstanceDialog.ui
843+
ui/dialogs/CreateShortcutDialog.ui
844+
ui/dialogs/ExportInstanceDialog.ui
845+
ui/dialogs/IconPickerDialog.ui
846+
ui/dialogs/MSALoginDialog.ui
847+
ui/dialogs/ModrinthExportDialog.ui
848+
ui/dialogs/NewComponentDialog.ui
849+
ui/dialogs/NewInstanceDialog.ui
850+
ui/dialogs/NotificationDialog.ui
851+
ui/dialogs/ProfileSelectDialog.ui
852+
ui/dialogs/ProfileSetupDialog.ui
853+
ui/dialogs/ProgressDialog.ui
854+
ui/dialogs/SkinUploadDialog.ui
855+
ui/dialogs/UpdateDialog.ui
836856
ui/pages/global/AccountListPage.ui
857+
ui/pages/global/ExternalToolsPage.ui
837858
ui/pages/global/JavaPage.ui
838859
ui/pages/global/LauncherPage.ui
860+
ui/pages/global/MinecraftPage.ui
839861
ui/pages/global/PasteEEPage.ui
840862
ui/pages/global/ProxyPage.ui
841-
ui/pages/global/MinecraftPage.ui
842-
ui/pages/global/ExternalToolsPage.ui
863+
ui/pages/instance/GameOptionsPage.ui
864+
ui/pages/instance/InstanceSettingsPage.ui
865+
ui/pages/instance/LegacyUpgradePage.ui
866+
ui/pages/instance/LogPage.ui
843867
ui/pages/instance/ModFolderPage.ui
844868
ui/pages/instance/NotesPage.ui
845-
ui/pages/instance/LogPage.ui
846-
ui/pages/instance/ServersPage.ui
847-
ui/pages/instance/GameOptionsPage.ui
848869
ui/pages/instance/OtherLogsPage.ui
849-
ui/pages/instance/InstanceSettingsPage.ui
870+
ui/pages/instance/ScreenshotsPage.ui
871+
ui/pages/instance/ServersPage.ui
850872
ui/pages/instance/VersionPage.ui
851873
ui/pages/instance/WorldListPage.ui
852-
ui/pages/instance/LegacyUpgradePage.ui
853-
ui/pages/instance/ScreenshotsPage.ui
874+
ui/pages/modplatform/ImportPage.ui
875+
ui/pages/modplatform/VanillaPage.ui
854876
ui/pages/modplatform/atlauncher/AtlOptionalModDialog.ui
855877
ui/pages/modplatform/atlauncher/AtlPage.ui
856-
ui/pages/modplatform/VanillaPage.ui
857-
ui/pages/modplatform/legacy_ftb/Page.ui
858878
ui/pages/modplatform/import_ftb/FTBAPage.ui
859-
ui/pages/modplatform/ImportPage.ui
879+
ui/pages/modplatform/legacy_ftb/Page.ui
860880
ui/pages/modplatform/modrinth/ModrinthPage.ui
861881
ui/pages/modplatform/technic/TechnicPage.ui
862-
ui/widgets/InstanceCardWidget.ui
863882
ui/widgets/CustomCommands.ui
883+
ui/widgets/CustomCommands.ui
884+
ui/widgets/InstanceCardWidget.ui
885+
ui/widgets/InstanceCardWidget.ui
886+
ui/widgets/MCModInfoFrame.ui
864887
ui/widgets/MCModInfoFrame.ui
865-
ui/dialogs/CopyInstanceDialog.ui
866-
ui/dialogs/ProfileSetupDialog.ui
867-
ui/dialogs/ProgressDialog.ui
868-
ui/dialogs/NewInstanceDialog.ui
869-
ui/dialogs/NotificationDialog.ui
870-
ui/dialogs/UpdateDialog.ui
871-
ui/dialogs/NewComponentDialog.ui
872-
ui/dialogs/ProfileSelectDialog.ui
873-
ui/dialogs/SkinUploadDialog.ui
874-
ui/dialogs/ExportInstanceDialog.ui
875-
ui/dialogs/IconPickerDialog.ui
876-
ui/dialogs/MSALoginDialog.ui
877-
ui/dialogs/AboutDialog.ui
878-
ui/dialogs/CreateShortcutDialog.ui
879-
ui/dialogs/ModrinthExportDialog.ui
880888
)
881889

882890
qt5_add_resources(LAUNCHER_RESOURCES
@@ -910,6 +918,7 @@ target_link_libraries(Launcher_logic
910918
tomlc99
911919
BuildConfig
912920
Katabasis
921+
qrcode
913922
)
914923
target_link_libraries(Launcher_logic
915924
Qt5::Core
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/* Copyright 2024 Petr Mrázek
2+
*
3+
* This source is subject to the Microsoft Permissive License (MS-PL).
4+
* Please see the COPYING.md file for more information.
5+
*/
6+
7+
8+
#include "AccountsDialog.h"
9+
#include "ui_AccountsDialog.h"
10+
#include <QIcon>
11+
#include <QMenu>
12+
#include "Application.h"
13+
#include "BuildConfig.h"
14+
#include "CustomMessageBox.h"
15+
#include "ProgressDialog.h"
16+
#include <minecraft/services/SkinDelete.h>
17+
#include "SkinUploadDialog.h"
18+
#include "MSALoginDialog.h"
19+
20+
AccountsDialog::AccountsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AccountsDialog)
21+
{
22+
ui->setupUi(this);
23+
auto icon = APPLICATION->getThemedIcon("accounts");
24+
if(icon.isNull())
25+
{
26+
icon = APPLICATION->getThemedIcon("noaccount");
27+
}
28+
setWindowIcon(icon);
29+
setWindowTitle(tr("Minecraft Accounts"));
30+
31+
}
32+
33+
AccountsDialog::~AccountsDialog()
34+
{
35+
delete ui;
36+
}

launcher/ui/dialogs/AccountsDialog.h

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/* Copyright 2024 Petr Mrázek
2+
*
3+
* This source is subject to the Microsoft Permissive License (MS-PL).
4+
* Please see the COPYING.md file for more information.
5+
*/
6+
7+
#pragma once
8+
9+
#include <QDialog>
10+
#include "minecraft/auth/AccountList.h"
11+
12+
class QMenu;
13+
14+
namespace Ui
15+
{
16+
class AccountsDialog;
17+
}
18+
19+
class AccountsDialog : public QDialog
20+
{
21+
Q_OBJECT
22+
23+
public:
24+
explicit AccountsDialog(QWidget *parent = 0);
25+
virtual ~AccountsDialog();
26+
27+
private:
28+
Ui::AccountsDialog *ui;
29+
shared_qobject_ptr<AccountList> m_accounts;
30+
};

0 commit comments

Comments
 (0)