From ea88eac42099656fabada6c5c2cb5bbfe1d7a6ea Mon Sep 17 00:00:00 2001 From: firstcryptoman Date: Fri, 17 May 2024 22:39:51 +0400 Subject: [PATCH] Enhance UI scalability by adding dynamic text resizing across various pages --- src/qt/masternodelist.cpp | 20 +++++++++++++++++- src/qt/masternodelist.h | 1 + src/qt/overviewpage.cpp | 6 +++--- src/qt/overviewpage.h | 3 --- src/qt/receivecoinsdialog.cpp | 5 +++-- src/qt/receivecoinsdialog.h | 1 - src/qt/sendcoinsdialog.cpp | 6 +++--- src/qt/sendcoinsdialog.h | 2 +- src/qt/sendcoinsentry.cpp | 38 +++++++++++++++++++++++++++++++++++ src/qt/sendcoinsentry.h | 3 +++ src/qt/transactionview.cpp | 23 +++++++++++++++++++-- src/qt/transactionview.h | 2 ++ 12 files changed, 94 insertions(+), 16 deletions(-) diff --git a/src/qt/masternodelist.cpp b/src/qt/masternodelist.cpp index 66b08ed29a..cf04e90dba 100644 --- a/src/qt/masternodelist.cpp +++ b/src/qt/masternodelist.cpp @@ -372,7 +372,10 @@ void MasternodeList::resizeEvent(QResizeEvent* event) { QWidget::resizeEvent(event); - int newWidth = event->size().width(); + const int newWidth = event->size().width(); + const int newHeight = event->size().height(); + + adjustTextSize(newWidth ,newHeight); // Calculate new column widths based on the new window width int newWidthOwner = static_cast(newWidth * 0.19); @@ -391,4 +394,19 @@ void MasternodeList::resizeEvent(QResizeEvent* event) ui->tableWidgetMasternodesDIP3->setColumnWidth(7, newWidthMid); ui->tableWidgetMasternodesDIP3->setColumnWidth(8, newWidthMid); ui->tableWidgetMasternodesDIP3->setColumnWidth(9, newWidthOwner); +} +void MasternodeList::adjustTextSize(int width,int height){ + + int fontSize = std::max(12, std::min(width, height) / 60); + QFont font = this->font(); + font.setPointSize(fontSize); + + // Set font size for all labels + ui->label_filter_2->setFont(font); + ui->label_count_2->setFont(font); + ui->countLabelDIP3->setFont(font); + ui->checkBoxMyMasternodesOnly->setFont(font); + ui->tableWidgetMasternodesDIP3->setFont(font); + ui->tableWidgetMasternodesDIP3->horizontalHeader()->setFont(font); + ui->tableWidgetMasternodesDIP3->verticalHeader()->setFont(font); } \ No newline at end of file diff --git a/src/qt/masternodelist.h b/src/qt/masternodelist.h index 9bccd90f82..6d469ea9be 100644 --- a/src/qt/masternodelist.h +++ b/src/qt/masternodelist.h @@ -40,6 +40,7 @@ class MasternodeList : public QWidget void setClientModel(ClientModel* clientModel); void setWalletModel(WalletModel* walletModel); void resizeEvent(QResizeEvent*) override; + void adjustTextSize(int width,int height); private: QMenu* contextMenuDIP3; int64_t nTimeFilterUpdatedDIP3; diff --git a/src/qt/overviewpage.cpp b/src/qt/overviewpage.cpp index 225aa2341b..1045bca1ce 100644 --- a/src/qt/overviewpage.cpp +++ b/src/qt/overviewpage.cpp @@ -481,8 +481,8 @@ void OverviewPage::resizeEvent(QResizeEvent* event) QWidget::resizeEvent(event); // Retrieve new dimensions from the resize event - int newWidth = event->size().width(); - int newHeight = event->size().height(); + const int newWidth = event->size().width(); + const int newHeight = event->size().height(); adjustTextSize(newWidth, newHeight); // Determine widths for specific widgets as percentages of total width int labelWidth = static_cast(newWidth * 0.5); @@ -516,7 +516,7 @@ void OverviewPage::adjustTextSize(int width, int height){ int baseFontSize = std::max(12, std::min(width, height) / 60); // Font for regular text components - QFont textFont = ui->labelBalance->font();; + QFont textFont = ui->labelBalance->font(); textFont.setPointSize(baseFontSize); // Font for labels, smaller than the text font size diff --git a/src/qt/overviewpage.h b/src/qt/overviewpage.h index 9d98949962..a6e97b27f2 100644 --- a/src/qt/overviewpage.h +++ b/src/qt/overviewpage.h @@ -17,9 +17,6 @@ #include #include #include -#include -#include -#include class ClientModel; diff --git a/src/qt/receivecoinsdialog.cpp b/src/qt/receivecoinsdialog.cpp index 744f53c199..4278e462fc 100644 --- a/src/qt/receivecoinsdialog.cpp +++ b/src/qt/receivecoinsdialog.cpp @@ -369,8 +369,9 @@ void ReceiveCoinsDialog::resizeEvent(QResizeEvent* event) QDialog::resizeEvent(event); // Get new size from the event - int newWidth = event->size().width(); - int newHeight = event->size().height(); + const int newWidth = event->size().width(); + const int newHeight = event->size().height(); + adjustTextSize(newWidth,newHeight); // Set fixed, minimum, and maximum sizes for ComboBoxes int comboBoxMinHeight = 20; diff --git a/src/qt/receivecoinsdialog.h b/src/qt/receivecoinsdialog.h index 0f23f53a4e..c5eac0b986 100644 --- a/src/qt/receivecoinsdialog.h +++ b/src/qt/receivecoinsdialog.h @@ -16,7 +16,6 @@ #include #include #include -#include class OptionsModel; class PlatformStyle; diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index 723d502cf1..68ae98b47a 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -1282,10 +1282,10 @@ void SendCoinsDialog::resizeEvent(QResizeEvent* event) { QWidget::resizeEvent(event); // Retrieve new dimensions from the resize event - int newWidth = event->size().width(); - int newHeight = event->size().height(); + const int newWidth = event->size().width(); + const int newHeight = event->size().height(); - int labelMinWidth = static_cast(newWidth * 0.15); + const int labelMinWidth = static_cast(newWidth * 0.15); // Resize and adjust components ui->sendButton->setMinimumWidth(labelMinWidth); diff --git a/src/qt/sendcoinsdialog.h b/src/qt/sendcoinsdialog.h index 3215028143..5abf2e3a07 100644 --- a/src/qt/sendcoinsdialog.h +++ b/src/qt/sendcoinsdialog.h @@ -67,7 +67,7 @@ public Q_SLOTS: bool fFeeMinimized; bool fAnonymousMode; const PlatformStyle *platformStyle; - void resizeEvent(QResizeEvent* event); + void resizeEvent(QResizeEvent* event) override; void adjustTextSize(int width, int height); // Process WalletModel::SendCoinsReturn and generate a pair consisting diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index 49fda59920..1825191da3 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -14,6 +14,7 @@ #include #include +#include SendCoinsEntry::SendCoinsEntry(const PlatformStyle *_platformStyle, QWidget *parent) : QStackedWidget(parent), @@ -265,3 +266,40 @@ bool SendCoinsEntry::updateLabel(const QString &address) ui->addAsLabel->setText(associatedLabel); return true; } +void SendCoinsEntry::resizeEvent(QResizeEvent* event) { + QStackedWidget::resizeEvent(event); + + const int newWidth = event->size().width(); + const int newHeight = event->size().height(); + + adjustTextSize(newWidth, newHeight); +} + + +void SendCoinsEntry::adjustTextSize(int width, int height) { + int baseFontSize = std::max(14, width / 120); + + QFont font = this->font(); + font.setPointSize(baseFontSize); + + ui->payToLabel->setFont(font); + ui->labellLabel->setFont(font); + ui->addAsLabel->setFont(font); + ui->amountLabel->setFont(font); + ui->messageLabel->setFont(font); + ui->messageTextLabel->setFont(font); + ui->payTo->setFont(font); + ui->payTo_is->setFont(font); + ui->memoLabel_is->setFont(font); + ui->memoTextLabel_is->setFont(font); + ui->amountLabel_is->setFont(font); + ui->payToLabel_s->setFont(font); + ui->payTo_s->setFont(font); + ui->memoLabel_s->setFont(font); + ui->memoTextLabel_s->setFont(font); + ui->amountLabel_s->setFont(font); + ui->checkboxSubtractFeeFromAmount->setFont(font); + ui->deleteButton->setFont(font); + ui->pasteButton->setFont(font); + ui->addressBookButton->setFont(font); +} \ No newline at end of file diff --git a/src/qt/sendcoinsentry.h b/src/qt/sendcoinsentry.h index 2c6bf35242..506981d5e3 100644 --- a/src/qt/sendcoinsentry.h +++ b/src/qt/sendcoinsentry.h @@ -73,6 +73,9 @@ private Q_SLOTS: bool isPcodeEntry; bool updateLabel(const QString &address); + void resizeEvent(QResizeEvent* event) override; + void adjustTextSize(int width, int height); + }; #endif // BITCOIN_QT_SENDCOINSENTRY_H diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index ed58fb8d8e..c8e0d7502a 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -717,8 +717,10 @@ void TransactionView::resizeEvent(QResizeEvent* event) QWidget::resizeEvent(event); // Retrieve new dimensions from the resize event - int newWidth = event->size().width(); - int newHeight = event->size().height(); + const int newWidth = event->size().width(); + const int newHeight = event->size().height(); + + adjustTextSize(newWidth, newHeight); int headerHeight = newHeight * 0.1; @@ -751,3 +753,20 @@ void TransactionView::resizeEvent(QResizeEvent* event) transactionView->setColumnWidth(TransactionTableModel::Type, typeColumnWidth); transactionView->setColumnWidth(TransactionTableModel::ToAddress, addressColumnWidth); } +void TransactionView::adjustTextSize(int width,int height){ + + int fontSize = std::max(12, std::min(width, height) / 60); + QFont font = this->font(); + font.setPointSize(fontSize); + + // Set font size for all labels + transactionView->setFont(font); + transactionView->horizontalHeader()->setFont(font); + transactionView->verticalHeader()->setFont(font); + dateWidget->setFont(font); + typeWidget->setFont(font); + amountWidget->setFont(font); + instantsendWidget->setFont(font); + addressWidget->setFont(font); + amountWidget->setFont(font); +} \ No newline at end of file diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h index 09c6dd7da5..5b78cce3f7 100644 --- a/src/qt/transactionview.h +++ b/src/qt/transactionview.h @@ -39,6 +39,8 @@ class TransactionView : public QWidget void setModel(WalletModel *model); void resizeEvent(QResizeEvent* event) override; + void adjustTextSize(int width, int height); + // Date ranges for filter enum DateEnum {