File indexing completed on 2024-06-09 04:59:06

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "serverinfowidget.h"
0008 #include "rocketchataccount.h"
0009 #include "serverconfiginfo.h"
0010 #include <KLocalizedString>
0011 #include <QFormLayout>
0012 #include <QLabel>
0013 
0014 ServerInfoWidget::ServerInfoWidget(RocketChatAccount *account, QWidget *parent)
0015     : QWidget(parent)
0016     , mAccountName(new QLabel(this))
0017     , mUserName(new QLabel(this))
0018     , mServerVersion(new QLabel(this))
0019     , mServerUrl(new QLabel(this))
0020     , mLogo(new QLabel(this))
0021     , mRocketChatAccount(account)
0022 {
0023     auto layout = new QFormLayout(this);
0024     layout->setObjectName(QStringLiteral("layout"));
0025     layout->setContentsMargins({});
0026 
0027     mLogo->setObjectName(QStringLiteral("mLogo"));
0028     mLogo->hide(); // Hide by default
0029     layout->addWidget(mLogo);
0030 
0031     mAccountName->setObjectName(QStringLiteral("mAccountName"));
0032     mAccountName->setTextInteractionFlags(Qt::TextSelectableByMouse);
0033     mAccountName->setTextFormat(Qt::PlainText);
0034     layout->addRow(i18n("Account name:"), mAccountName);
0035 
0036     mUserName->setObjectName(QStringLiteral("mUserName"));
0037     mUserName->setTextInteractionFlags(Qt::TextSelectableByMouse);
0038     mUserName->setTextFormat(Qt::PlainText);
0039     layout->addRow(i18n("Username:"), mUserName);
0040 
0041     mServerUrl->setObjectName(QStringLiteral("mServerUrl"));
0042     mServerUrl->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse);
0043     mServerUrl->setTextFormat(Qt::RichText);
0044     layout->addRow(i18n("Server URL:"), mServerUrl);
0045 
0046     mServerVersion->setObjectName(QStringLiteral("mServerVersion"));
0047     mServerVersion->setTextInteractionFlags(Qt::TextSelectableByMouse);
0048     mServerVersion->setTextFormat(Qt::PlainText);
0049     layout->addRow(i18n("Server version:"), mServerVersion);
0050 
0051     if (mRocketChatAccount) {
0052         if (mRocketChatAccount->ruqolaServerConfig()->hasAtLeastVersion(5, 0, 0)) {
0053             mEnterpriseLicense = new QLabel(this);
0054             mEnterpriseLicense->setObjectName(QStringLiteral("mEnterpriseLicense"));
0055             mEnterpriseLicense->setTextInteractionFlags(Qt::TextSelectableByMouse);
0056             mEnterpriseLicense->setTextFormat(Qt::PlainText);
0057             layout->addRow(i18n("License:"), mEnterpriseLicense);
0058             mEnterpriseLicense->setText(mRocketChatAccount->ruqolaServerConfig()->hasEnterpriseSupport() ? i18n("Enterprise") : i18n("None"));
0059         }
0060         setServerConfigInfo(mRocketChatAccount->serverConfigInfo());
0061     }
0062 }
0063 
0064 ServerInfoWidget::~ServerInfoWidget() = default;
0065 
0066 void ServerInfoWidget::setServerConfigInfo(ServerConfigInfo *info)
0067 {
0068     if (info) {
0069         mAccountName->setText(info->accountName());
0070         mUserName->setText(info->userName());
0071         mServerVersion->setText(info->serverVersionStr());
0072         mServerUrl->setText(QStringLiteral("<a href=\"%1\">%1</a>").arg(info->serverUrl()));
0073         const QString logoLocalUrl{mRocketChatAccount->attachmentUrlFromLocalCache(info->logoUrl()).toLocalFile()};
0074         if (!logoLocalUrl.isEmpty()) {
0075             const QPixmap pix{logoLocalUrl};
0076             if (!pix.isNull()) {
0077                 mLogo->show();
0078                 const QPixmap scaledPixmap = pix.scaled(100, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation);
0079                 mLogo->setPixmap(scaledPixmap);
0080             }
0081         }
0082     }
0083 }
0084 
0085 #include "moc_serverinfowidget.cpp"