diff --git a/qt/i2pd_qt/TunnelPane.cpp b/qt/i2pd_qt/TunnelPane.cpp index bbf5914d..a8baed6f 100644 --- a/qt/i2pd_qt/TunnelPane.cpp +++ b/qt/i2pd_qt/TunnelPane.cpp @@ -231,11 +231,20 @@ void TunnelPane::deleteTunnelForm() { } void TunnelPane::highlightWrongInput(QString warningText, QWidget* controlWithWrongInput) { + bool redVisible = wrongInputPane->isVisible(); wrongInputPane->setVisible(true); wrongInputLabel->setText(warningText); + if(!redVisible)mainWindow->adjustSizesAccordingToWrongLabel(); if(controlWithWrongInput){ mainWindow->ui->tunnelsScrollArea->ensureWidgetVisible(controlWithWrongInput); controlWithWrongInput->setFocus(); } mainWindow->showTunnelsPage(); } + +void TunnelPane::hideWrongInputLabel() const { + bool redVisible = wrongInputPane->isVisible(); + wrongInputPane->setVisible(false); + if(redVisible)mainWindow->adjustSizesAccordingToWrongLabel(); + +} diff --git a/qt/i2pd_qt/TunnelPane.h b/qt/i2pd_qt/TunnelPane.h index 3a647635..d14ba8d0 100644 --- a/qt/i2pd_qt/TunnelPane.h +++ b/qt/i2pd_qt/TunnelPane.h @@ -35,7 +35,7 @@ public: void deleteTunnelForm(); - void hideWrongInputLabel() const { wrongInputPane->setVisible(false); } + void hideWrongInputLabel() const; void highlightWrongInput(QString warningText, QWidget* controlWithWrongInput); virtual ServerTunnelPane* asServerTunnelPane()=0; diff --git a/qt/i2pd_qt/mainwindow.cpp b/qt/i2pd_qt/mainwindow.cpp index aba00cec..6d7e8b20 100644 --- a/qt/i2pd_qt/mainwindow.cpp +++ b/qt/i2pd_qt/mainwindow.cpp @@ -75,6 +75,7 @@ MainWindow::MainWindow(QWidget *parent) : int w = 683; int h = 3060; ui->settingsContents->setFixedSize(w, h); + ui->settingsContents->setGeometry(QRect(0,0,w,h)); /* QPalette pal(palette()); @@ -86,8 +87,10 @@ MainWindow::MainWindow(QWidget *parent) : pal.setColor(QPalette::Background, Qt::red); ui->wrongInputLabel->setAutoFillBackground(true); ui->wrongInputLabel->setPalette(pal); + ui->wrongInputLabel->setMaximumHeight(ui->wrongInputLabel->sizeHint().height()); ui->wrongInputLabel->setVisible(false); + settingsTitleLabelNominalHeight = ui->settingsTitleLabel->height(); #ifndef ANDROID createActions(); createTrayIcon(); @@ -629,7 +632,9 @@ void MainWindow::loadAllConfigs(){ /** returns false iff not valid items present and save was aborted */ bool MainWindow::saveAllConfigs(){ QString cannotSaveSettings = QApplication::tr("Cannot save settings."); + bool redVisible = ui->wrongInputLabel->isVisible(); ui->wrongInputLabel->setVisible(false); + if(redVisible)adjustSizesAccordingToWrongLabel(); programOptionsWriterCurrentSection=""; /*if(!logFileNameOption->lineEdit->text().trimmed().isEmpty())logOption->optionValue=boost::any(std::string("file")); @@ -851,9 +856,34 @@ void MainWindow::backClickedFromChild() { showStatusPage(statusPage); } +void MainWindow::adjustSizesAccordingToWrongLabel() { + if(ui->wrongInputLabel->isVisible()) { + int dh = ui->wrongInputLabel->height()+ui->verticalLayout_7->layout()->spacing(); + ui->verticalLayout_7->invalidate(); + ui->wrongInputLabel->adjustSize(); + ui->stackedWidget->adjustSize(); + ui->stackedWidget->setFixedHeight(531-dh); + ui->settingsPage->setFixedHeight(531-dh); + ui->verticalLayoutWidget_4->setGeometry(QRect(0, 0, 711, 531-dh)); + ui->stackedWidget->setFixedHeight(531-dh); + ui->settingsScrollArea->setFixedHeight(531-dh-settingsTitleLabelNominalHeight-ui->verticalLayout_4->spacing()); + }else{ + ui->verticalLayout_7->invalidate(); + ui->wrongInputLabel->adjustSize(); + ui->stackedWidget->adjustSize(); + ui->stackedWidget->setFixedHeight(531); + ui->settingsPage->setFixedHeight(531); + ui->verticalLayoutWidget_4->setGeometry(QRect(0, 0, 711, 531)); + ui->stackedWidget->setFixedHeight(531); + ui->settingsScrollArea->setFixedHeight(531-settingsTitleLabelNominalHeight-ui->verticalLayout_4->spacing()); + } +} + void MainWindow::highlightWrongInput(QString warningText, QWidget* widgetToFocus) { + bool redVisible = ui->wrongInputLabel->isVisible(); ui->wrongInputLabel->setVisible(true); ui->wrongInputLabel->setText(warningText); + if(!redVisible)adjustSizesAccordingToWrongLabel(); if(widgetToFocus){ui->settingsScrollArea->ensureWidgetVisible(widgetToFocus);widgetToFocus->setFocus();} showSettingsPage(); } diff --git a/qt/i2pd_qt/mainwindow.h b/qt/i2pd_qt/mainwindow.h index df8ab1e8..1b55a6da 100644 --- a/qt/i2pd_qt/mainwindow.h +++ b/qt/i2pd_qt/mainwindow.h @@ -387,7 +387,6 @@ public: //#endif private: - enum StatusPage {main_page, commands, local_destinations, leasesets, tunnels, transit_tunnels, transports, i2p_tunnels, sam_sessions}; private slots: @@ -446,7 +445,9 @@ public: Ui::StatusButtonsForm* statusButtonsUI; Ui::routerCommandsWidget* routerCommandsUI; Ui::GeneralSettingsContentsForm* uiSettings; + void adjustSizesAccordingToWrongLabel(); private: + int settingsTitleLabelNominalHeight; TextBrowserTweaked1 * textBrowser; QWidget * routerCommandsParent; PageWithBackButton * pageWithBackButton; diff --git a/qt/i2pd_qt/mainwindow.ui b/qt/i2pd_qt/mainwindow.ui index b4aaed1d..70c3d361 100644 --- a/qt/i2pd_qt/mainwindow.ui +++ b/qt/i2pd_qt/mainwindow.ui @@ -169,6 +169,9 @@ + + QLayout::SetMinAndMaxSize + @@ -606,7 +609,7 @@ - + 0 0 @@ -624,11 +627,11 @@ - 0 + 1 - + 0 0 @@ -670,7 +673,7 @@ - + 0 0 @@ -686,7 +689,7 @@ - QLayout::SetMaximumSize + QLayout::SetMinAndMaxSize @@ -702,6 +705,12 @@ + + + 0 + 0 + + Qt::ScrollBarAlwaysOn @@ -869,7 +878,7 @@ - + 0 0