mirror of
				https://github.com/PurpleI2P/i2pd.git
				synced 2025-11-04 08:30:46 +00:00 
			
		
		
		
	general settings widget ui revolution for convenience + widget locks: fixed #927
This commit is contained in:
		
							parent
							
								
									3d5fb07ca8
								
							
						
					
					
						commit
						7738eae4b0
					
				
					 13 changed files with 3060 additions and 2849 deletions
				
			
		| 
						 | 
				
			
			@ -179,6 +179,9 @@ int ClientTunnelPane::appendClientTunnelForm(
 | 
			
		|||
        QObject::connect(sigTypeComboBox, SIGNAL(currentIndexChanged(int)),
 | 
			
		||||
                                 this, SLOT(updated()));
 | 
			
		||||
        horizontalLayout_2->addWidget(sigTypeComboBox);
 | 
			
		||||
        QPushButton * lockButton2 = new QPushButton(gridLayoutWidget_2);
 | 
			
		||||
        horizontalLayout_2->addWidget(lockButton2);
 | 
			
		||||
        widgetlocks.add(new widgetlock(sigTypeComboBox, lockButton2));
 | 
			
		||||
        QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
 | 
			
		||||
        horizontalLayout_2->addItem(horizontalSpacer);
 | 
			
		||||
        tunnelGridLayout->addLayout(horizontalLayout_2);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -197,6 +197,9 @@ int ServerTunnelPane::appendServerTunnelForm(
 | 
			
		|||
        QObject::connect(sigTypeComboBox, SIGNAL(currentIndexChanged(int)),
 | 
			
		||||
                                 this, SLOT(updated()));
 | 
			
		||||
        horizontalLayout_2->addWidget(sigTypeComboBox);
 | 
			
		||||
        QPushButton * lockButton2 = new QPushButton(gridLayoutWidget_2);
 | 
			
		||||
        horizontalLayout_2->addWidget(lockButton2);
 | 
			
		||||
        widgetlocks.add(new widgetlock(sigTypeComboBox, lockButton2));
 | 
			
		||||
        QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
 | 
			
		||||
        horizontalLayout_2->addItem(horizontalSpacer);
 | 
			
		||||
        tunnelGridLayout->addLayout(horizontalLayout_2);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,6 +65,9 @@ void TunnelPane::setupTunnelPane(
 | 
			
		|||
        typeLabel->setObjectName(QStringLiteral("typeLabel"));
 | 
			
		||||
        horizontalLayout_->addWidget(typeLabel);
 | 
			
		||||
        horizontalLayout_->addWidget(tunnelTypeComboBox);
 | 
			
		||||
        QPushButton * lockButton1 = new QPushButton(gridLayoutWidget_2);
 | 
			
		||||
        horizontalLayout_->addWidget(lockButton1);
 | 
			
		||||
        widgetlocks.add(new widgetlock(tunnelTypeComboBox, lockButton1));
 | 
			
		||||
        this->tunnelTypeComboBox=tunnelTypeComboBox;
 | 
			
		||||
        QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
 | 
			
		||||
        horizontalLayout_->addItem(horizontalSpacer);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@
 | 
			
		|||
 | 
			
		||||
#include "TunnelConfig.h"
 | 
			
		||||
 | 
			
		||||
#include <widgetlock.h>
 | 
			
		||||
#include <widgetlockregistry.h>
 | 
			
		||||
 | 
			
		||||
class ServerTunnelPane;
 | 
			
		||||
class ClientTunnelPane;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -33,6 +36,7 @@ public:
 | 
			
		|||
 | 
			
		||||
protected:
 | 
			
		||||
    TunnelConfig* tunnelConfig;
 | 
			
		||||
    widgetlockregistry widgetlocks;
 | 
			
		||||
    TunnelsPageUpdateListener* tunnelsPageUpdateListener;
 | 
			
		||||
    QVBoxLayout *tunnelGridLayout;
 | 
			
		||||
    QGroupBox *tunnelGroupBox;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2875
									
								
								qt/i2pd_qt/generalsettingswidget.ui
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2875
									
								
								qt/i2pd_qt/generalsettingswidget.ui
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -89,7 +89,9 @@ SOURCES += DaemonQT.cpp mainwindow.cpp \
 | 
			
		|||
    ../../daemon/UnixDaemon.cpp \
 | 
			
		||||
    ../../daemon/UPnP.cpp \
 | 
			
		||||
    textbrowsertweaked1.cpp \
 | 
			
		||||
    pagewithbackbutton.cpp
 | 
			
		||||
    pagewithbackbutton.cpp \
 | 
			
		||||
    widgetlock.cpp \
 | 
			
		||||
    widgetlockregistry.cpp
 | 
			
		||||
 | 
			
		||||
#qt creator does not handle this well
 | 
			
		||||
#SOURCES += $$files(../../libi2pd/*.cpp)
 | 
			
		||||
| 
						 | 
				
			
			@ -170,7 +172,9 @@ HEADERS  += DaemonQT.h mainwindow.h \
 | 
			
		|||
    ../../daemon/I2PControl.h \
 | 
			
		||||
    ../../daemon/UPnP.h \
 | 
			
		||||
    textbrowsertweaked1.h \
 | 
			
		||||
    pagewithbackbutton.h
 | 
			
		||||
    pagewithbackbutton.h \
 | 
			
		||||
    widgetlock.h \
 | 
			
		||||
    widgetlockregistry.h
 | 
			
		||||
 | 
			
		||||
INCLUDEPATH += ../../libi2pd
 | 
			
		||||
INCLUDEPATH += ../../libi2pd_client
 | 
			
		||||
| 
						 | 
				
			
			@ -180,7 +184,8 @@ INCLUDEPATH += .
 | 
			
		|||
FORMS += mainwindow.ui \
 | 
			
		||||
    tunnelform.ui \
 | 
			
		||||
    statusbuttons.ui \
 | 
			
		||||
    routercommandswidget.ui
 | 
			
		||||
    routercommandswidget.ui \
 | 
			
		||||
    generalsettingswidget.ui
 | 
			
		||||
 | 
			
		||||
LIBS += -lz
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
#include "ui_mainwindow.h"
 | 
			
		||||
#include "ui_statusbuttons.h"
 | 
			
		||||
#include "ui_routercommandswidget.h"
 | 
			
		||||
#include "ui_generalsettingswidget.h"
 | 
			
		||||
#include <sstream>
 | 
			
		||||
#include <QScrollBar>
 | 
			
		||||
#include <QMessageBox>
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +39,9 @@ MainWindow::MainWindow(QWidget *parent) :
 | 
			
		|||
    ,ui(new Ui::MainWindow)
 | 
			
		||||
    ,statusButtonsUI(new Ui::StatusButtonsForm)
 | 
			
		||||
    ,routerCommandsUI(new Ui::routerCommandsWidget)
 | 
			
		||||
    ,uiSettings(new Ui::GeneralSettingsContentsForm)
 | 
			
		||||
    ,routerCommandsParent(new QWidget(this))
 | 
			
		||||
    ,widgetlocks()
 | 
			
		||||
    ,i2pController(nullptr)
 | 
			
		||||
    ,configItems()
 | 
			
		||||
    ,datadir()
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +53,7 @@ MainWindow::MainWindow(QWidget *parent) :
 | 
			
		|||
    ui->setupUi(this);
 | 
			
		||||
    statusButtonsUI->setupUi(ui->statusButtonsPane);
 | 
			
		||||
    routerCommandsUI->setupUi(routerCommandsParent);
 | 
			
		||||
    uiSettings->setupUi(ui->settingsContents);
 | 
			
		||||
    routerCommandsParent->hide();
 | 
			
		||||
    ui->verticalLayout_2->addWidget(routerCommandsParent);
 | 
			
		||||
    //,statusHtmlUI(new Ui::StatusHtmlPaneForm)
 | 
			
		||||
| 
						 | 
				
			
			@ -66,9 +70,8 @@ MainWindow::MainWindow(QWidget *parent) :
 | 
			
		|||
    onResize();
 | 
			
		||||
 | 
			
		||||
    ui->stackedWidget->setCurrentIndex(0);
 | 
			
		||||
    ui->settingsScrollArea->resize(ui->settingsContentsGridLayout->sizeHint().width()+10,380);
 | 
			
		||||
    ui->settingsScrollArea->resize(uiSettings->settingsContentsGridLayout->sizeHint().width()+10,380);
 | 
			
		||||
    QScrollBar* const barSett = ui->settingsScrollArea->verticalScrollBar();
 | 
			
		||||
    //QSize szSettContents = ui->settingsContentsGridLayout->minimumSize();
 | 
			
		||||
    int w = 683;
 | 
			
		||||
    int h = 3060;
 | 
			
		||||
    ui->settingsContents->setFixedSize(w, h);
 | 
			
		||||
| 
						 | 
				
			
			@ -80,10 +83,6 @@ MainWindow::MainWindow(QWidget *parent) :
 | 
			
		|||
    ui->settingsContents->setPalette(pal);
 | 
			
		||||
    */
 | 
			
		||||
 | 
			
		||||
    //ui->settingsScrollArea->adjustSize();
 | 
			
		||||
    /*ui->tunnelsScrollAreaWidgetContents->setFixedSize(
 | 
			
		||||
                ui->tunnelsScrollArea->width() - barSett->width(), 0);*/
 | 
			
		||||
 | 
			
		||||
#ifndef ANDROID
 | 
			
		||||
    createActions();
 | 
			
		||||
    createTrayIcon();
 | 
			
		||||
| 
						 | 
				
			
			@ -138,142 +137,145 @@ MainWindow::MainWindow(QWidget *parent) :
 | 
			
		|||
 | 
			
		||||
#   define OPTION(section,option,defaultValueGetter) ConfigOption(QString(section),QString(option))
 | 
			
		||||
 | 
			
		||||
    initFileChooser(    OPTION("","conf",[](){return "";}), ui->configFileLineEdit, ui->configFileBrowsePushButton);
 | 
			
		||||
    initFolderChooser(  OPTION("","datadir",[]{return "";}), ui->dataFolderLineEdit, ui->dataFolderBrowsePushButton);
 | 
			
		||||
    initFileChooser(    OPTION("","tunconf",[](){return "";}), ui->tunnelsConfigFileLineEdit, ui->tunnelsConfigFileBrowsePushButton);
 | 
			
		||||
    initFileChooser(    OPTION("","conf",[](){return "";}), uiSettings->configFileLineEdit, uiSettings->configFileBrowsePushButton);
 | 
			
		||||
    initFolderChooser(  OPTION("","datadir",[]{return "";}), uiSettings->dataFolderLineEdit, uiSettings->dataFolderBrowsePushButton);
 | 
			
		||||
    initFileChooser(    OPTION("","tunconf",[](){return "";}), uiSettings->tunnelsConfigFileLineEdit, uiSettings->tunnelsConfigFileBrowsePushButton);
 | 
			
		||||
 | 
			
		||||
    initFileChooser(    OPTION("","pidfile",[]{return "";}), ui->pidFileLineEdit, ui->pidFileBrowsePushButton);
 | 
			
		||||
    initFileChooser(    OPTION("","pidfile",[]{return "";}), uiSettings->pidFileLineEdit, uiSettings->pidFileBrowsePushButton);
 | 
			
		||||
    daemonOption=initNonGUIOption(   OPTION("","daemon",[]{return "";}));
 | 
			
		||||
    serviceOption=initNonGUIOption(   OPTION("","service",[]{return "";}));
 | 
			
		||||
 | 
			
		||||
    ui->logDestinationComboBox->clear();
 | 
			
		||||
    ui->logDestinationComboBox->insertItems(0, QStringList()
 | 
			
		||||
    uiSettings->logDestinationComboBox->clear();
 | 
			
		||||
    uiSettings->logDestinationComboBox->insertItems(0, QStringList()
 | 
			
		||||
     << QApplication::translate("MainWindow", "stdout", 0)
 | 
			
		||||
     << QApplication::translate("MainWindow", "file", 0)
 | 
			
		||||
    );
 | 
			
		||||
    initLogDestinationCombobox(   OPTION("","log",[]{return "";}), ui->logDestinationComboBox);
 | 
			
		||||
    initLogDestinationCombobox(   OPTION("","log",[]{return "";}), uiSettings->logDestinationComboBox);
 | 
			
		||||
 | 
			
		||||
    logFileNameOption=initFileChooser(    OPTION("","logfile",[]{return "";}), ui->logFileLineEdit, ui->logFileBrowsePushButton);
 | 
			
		||||
    initLogLevelCombobox(OPTION("","loglevel",[]{return "";}), ui->logLevelComboBox);
 | 
			
		||||
    logFileNameOption=initFileChooser(    OPTION("","logfile",[]{return "";}), uiSettings->logFileLineEdit, uiSettings->logFileBrowsePushButton);
 | 
			
		||||
    initLogLevelCombobox(OPTION("","loglevel",[]{return "";}), uiSettings->logLevelComboBox);
 | 
			
		||||
 | 
			
		||||
    initIPAddressBox(   OPTION("","host",[]{return "";}), ui->routerExternalHostLineEdit, tr("Router external address -> Host"));
 | 
			
		||||
    initTCPPortBox(     OPTION("","port",[]{return "";}), ui->routerExternalPortLineEdit, tr("Router external address -> Port"));
 | 
			
		||||
    initIPAddressBox(   OPTION("","host",[]{return "";}), uiSettings->routerExternalHostLineEdit, tr("Router external address -> Host"));
 | 
			
		||||
    initTCPPortBox(     OPTION("","port",[]{return "";}), uiSettings->routerExternalPortLineEdit, tr("Router external address -> Port"));
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("","ipv6",[]{return "false";}), ui->ipv6CheckBox);
 | 
			
		||||
    initCheckBox(       OPTION("","notransit",[]{return "false";}), ui->notransitCheckBox);
 | 
			
		||||
    initCheckBox(       OPTION("","floodfill",[]{return "false";}), ui->floodfillCheckBox);
 | 
			
		||||
    initStringBox(      OPTION("","bandwidth",[]{return "";}), ui->bandwidthLineEdit);
 | 
			
		||||
    initStringBox(      OPTION("","family",[]{return "";}), ui->familyLineEdit);
 | 
			
		||||
    initIntegerBox(     OPTION("","netid",[]{return "2";}), ui->netIdLineEdit, tr("NetID"));
 | 
			
		||||
    initCheckBox(       OPTION("","ipv6",[]{return "false";}), uiSettings->ipv6CheckBox);
 | 
			
		||||
    initCheckBox(       OPTION("","notransit",[]{return "false";}), uiSettings->notransitCheckBox);
 | 
			
		||||
    initCheckBox(       OPTION("","floodfill",[]{return "false";}), uiSettings->floodfillCheckBox);
 | 
			
		||||
    initStringBox(      OPTION("","bandwidth",[]{return "";}), uiSettings->bandwidthLineEdit);
 | 
			
		||||
    initStringBox(      OPTION("","family",[]{return "";}), uiSettings->familyLineEdit);
 | 
			
		||||
    initIntegerBox(     OPTION("","netid",[]{return "2";}), uiSettings->netIdLineEdit, tr("NetID"));
 | 
			
		||||
 | 
			
		||||
#ifdef Q_OS_WIN
 | 
			
		||||
    initCheckBox(       OPTION("","insomnia",[]{return "";}), ui->insomniaCheckBox);
 | 
			
		||||
    initCheckBox(       OPTION("","insomnia",[]{return "";}), uiSettings->insomniaCheckBox);
 | 
			
		||||
    initNonGUIOption(   OPTION("","svcctl",[]{return "";}));
 | 
			
		||||
    initNonGUIOption(   OPTION("","close",[]{return "";}));
 | 
			
		||||
#else
 | 
			
		||||
    ui->insomniaCheckBox->setEnabled(false);
 | 
			
		||||
    uiSettings->insomniaCheckBox->setEnabled(false);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("http","enabled",[]{return "true";}), ui->webconsoleEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("http","address",[]{return "";}), ui->webconsoleAddrLineEdit, tr("HTTP webconsole -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("http","port",[]{return "7070";}), ui->webconsolePortLineEdit, tr("HTTP webconsole -> Port"));
 | 
			
		||||
    initCheckBox(       OPTION("http","auth",[]{return "";}), ui->webconsoleBasicAuthCheckBox);
 | 
			
		||||
    initStringBox(      OPTION("http","user",[]{return "i2pd";}), ui->webconsoleUserNameLineEditBasicAuth);
 | 
			
		||||
    initStringBox(      OPTION("http","pass",[]{return "";}), ui->webconsolePasswordLineEditBasicAuth);
 | 
			
		||||
    initCheckBox(       OPTION("http","enabled",[]{return "true";}), uiSettings->webconsoleEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("http","address",[]{return "";}), uiSettings->webconsoleAddrLineEdit, tr("HTTP webconsole -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("http","port",[]{return "7070";}), uiSettings->webconsolePortLineEdit, tr("HTTP webconsole -> Port"));
 | 
			
		||||
    initCheckBox(       OPTION("http","auth",[]{return "";}), uiSettings->webconsoleBasicAuthCheckBox);
 | 
			
		||||
    initStringBox(      OPTION("http","user",[]{return "i2pd";}), uiSettings->webconsoleUserNameLineEditBasicAuth);
 | 
			
		||||
    initStringBox(      OPTION("http","pass",[]{return "";}), uiSettings->webconsolePasswordLineEditBasicAuth);
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("httpproxy","enabled",[]{return "";}), ui->httpProxyEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("httpproxy","address",[]{return "";}), ui->httpProxyAddressLineEdit, tr("HTTP proxy -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("httpproxy","port",[]{return "4444";}), ui->httpProxyPortLineEdit, tr("HTTP proxy -> Port"));
 | 
			
		||||
    initFileChooser(    OPTION("httpproxy","keys",[]{return "";}), ui->httpProxyKeyFileLineEdit, ui->httpProxyKeyFilePushButton);
 | 
			
		||||
    initCheckBox(       OPTION("httpproxy","enabled",[]{return "";}), uiSettings->httpProxyEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("httpproxy","address",[]{return "";}), uiSettings->httpProxyAddressLineEdit, tr("HTTP proxy -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("httpproxy","port",[]{return "4444";}), uiSettings->httpProxyPortLineEdit, tr("HTTP proxy -> Port"));
 | 
			
		||||
    initFileChooser(    OPTION("httpproxy","keys",[]{return "";}), uiSettings->httpProxyKeyFileLineEdit, uiSettings->httpProxyKeyFilePushButton);
 | 
			
		||||
 | 
			
		||||
    initSignatureTypeCombobox(OPTION("httpproxy","signaturetype",[]{return "7";}), ui->comboBox_httpPorxySignatureType);
 | 
			
		||||
    initStringBox(     OPTION("httpproxy","inbound.length",[]{return "3";}), ui->httpProxyInboundTunnelsLenLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("httpproxy","inbound.quantity",[]{return "5";}), ui->httpProxyInboundTunnQuantityLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("httpproxy","outbound.length",[]{return "3";}), ui->httpProxyOutBoundTunnLenLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("httpproxy","outbound.quantity",[]{return "5";}), ui->httpProxyOutboundTunnQuantityLineEdit);
 | 
			
		||||
    initSignatureTypeCombobox(OPTION("httpproxy","signaturetype",[]{return "7";}), uiSettings->comboBox_httpPorxySignatureType);
 | 
			
		||||
    initStringBox(     OPTION("httpproxy","inbound.length",[]{return "3";}), uiSettings->httpProxyInboundTunnelsLenLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("httpproxy","inbound.quantity",[]{return "5";}), uiSettings->httpProxyInboundTunnQuantityLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("httpproxy","outbound.length",[]{return "3";}), uiSettings->httpProxyOutBoundTunnLenLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("httpproxy","outbound.quantity",[]{return "5";}), uiSettings->httpProxyOutboundTunnQuantityLineEdit);
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("socksproxy","enabled",[]{return "";}), ui->socksProxyEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("socksproxy","address",[]{return "";}), ui->socksProxyAddressLineEdit, tr("Socks proxy -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("socksproxy","port",[]{return "4447";}), ui->socksProxyPortLineEdit, tr("Socks proxy -> Port"));
 | 
			
		||||
    initFileChooser(    OPTION("socksproxy","keys",[]{return "";}), ui->socksProxyKeyFileLineEdit, ui->socksProxyKeyFilePushButton);
 | 
			
		||||
    initSignatureTypeCombobox(OPTION("socksproxy","signaturetype",[]{return "7";}), ui->comboBox_socksProxySignatureType);
 | 
			
		||||
    initStringBox(     OPTION("socksproxy","inbound.length",[]{return "";}), ui->socksProxyInboundTunnelsLenLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("socksproxy","inbound.quantity",[]{return "";}), ui->socksProxyInboundTunnQuantityLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("socksproxy","outbound.length",[]{return "";}), ui->socksProxyOutBoundTunnLenLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("socksproxy","outbound.quantity",[]{return "";}), ui->socksProxyOutboundTunnQuantityLineEdit);
 | 
			
		||||
    initIPAddressBox(   OPTION("socksproxy","outproxy",[]{return "";}), ui->outproxyAddressLineEdit, tr("Socks proxy -> Outproxy address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("socksproxy","outproxyport",[]{return "";}), ui->outproxyPortLineEdit, tr("Socks proxy -> Outproxy port"));
 | 
			
		||||
    initCheckBox(       OPTION("socksproxy","enabled",[]{return "";}), uiSettings->socksProxyEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("socksproxy","address",[]{return "";}), uiSettings->socksProxyAddressLineEdit, tr("Socks proxy -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("socksproxy","port",[]{return "4447";}), uiSettings->socksProxyPortLineEdit, tr("Socks proxy -> Port"));
 | 
			
		||||
    initFileChooser(    OPTION("socksproxy","keys",[]{return "";}), uiSettings->socksProxyKeyFileLineEdit, uiSettings->socksProxyKeyFilePushButton);
 | 
			
		||||
    initSignatureTypeCombobox(OPTION("socksproxy","signaturetype",[]{return "7";}), uiSettings->comboBox_socksProxySignatureType);
 | 
			
		||||
    initStringBox(     OPTION("socksproxy","inbound.length",[]{return "";}), uiSettings->socksProxyInboundTunnelsLenLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("socksproxy","inbound.quantity",[]{return "";}), uiSettings->socksProxyInboundTunnQuantityLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("socksproxy","outbound.length",[]{return "";}), uiSettings->socksProxyOutBoundTunnLenLineEdit);
 | 
			
		||||
    initStringBox(     OPTION("socksproxy","outbound.quantity",[]{return "";}), uiSettings->socksProxyOutboundTunnQuantityLineEdit);
 | 
			
		||||
    initIPAddressBox(   OPTION("socksproxy","outproxy",[]{return "";}), uiSettings->outproxyAddressLineEdit, tr("Socks proxy -> Outproxy address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("socksproxy","outproxyport",[]{return "";}), uiSettings->outproxyPortLineEdit, tr("Socks proxy -> Outproxy port"));
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("sam","enabled",[]{return "false";}), ui->samEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("sam","address",[]{return "";}), ui->samAddressLineEdit, tr("SAM -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("sam","port",[]{return "7656";}), ui->samPortLineEdit, tr("SAM -> Port"));
 | 
			
		||||
    initCheckBox(       OPTION("sam","enabled",[]{return "false";}), uiSettings->samEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("sam","address",[]{return "";}), uiSettings->samAddressLineEdit, tr("SAM -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("sam","port",[]{return "7656";}), uiSettings->samPortLineEdit, tr("SAM -> Port"));
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("bob","enabled",[]{return "false";}), ui->bobEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("bob","address",[]{return "";}), ui->bobAddressLineEdit, tr("BOB -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("bob","port",[]{return "2827";}), ui->bobPortLineEdit, tr("BOB -> Port"));
 | 
			
		||||
    initCheckBox(       OPTION("bob","enabled",[]{return "false";}), uiSettings->bobEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("bob","address",[]{return "";}), uiSettings->bobAddressLineEdit, tr("BOB -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("bob","port",[]{return "2827";}), uiSettings->bobPortLineEdit, tr("BOB -> Port"));
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("i2cp","enabled",[]{return "false";}), ui->i2cpEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("i2cp","address",[]{return "";}), ui->i2cpAddressLineEdit, tr("I2CP -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("i2cp","port",[]{return "7654";}), ui->i2cpPortLineEdit, tr("I2CP -> Port"));
 | 
			
		||||
    initCheckBox(       OPTION("i2cp","enabled",[]{return "false";}), uiSettings->i2cpEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("i2cp","address",[]{return "";}), uiSettings->i2cpAddressLineEdit, tr("I2CP -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("i2cp","port",[]{return "7654";}), uiSettings->i2cpPortLineEdit, tr("I2CP -> Port"));
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("i2pcontrol","enabled",[]{return "false";}), ui->i2pControlEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("i2pcontrol","address",[]{return "";}), ui->i2pControlAddressLineEdit, tr("I2PControl -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("i2pcontrol","port",[]{return "7650";}), ui->i2pControlPortLineEdit, tr("I2PControl -> Port"));
 | 
			
		||||
    initStringBox(      OPTION("i2pcontrol","password",[]{return "";}), ui->i2pControlPasswordLineEdit);
 | 
			
		||||
    initFileChooser(    OPTION("i2pcontrol","cert",[]{return "i2pcontrol.crt.pem";}), ui->i2pControlCertFileLineEdit, ui->i2pControlCertFileBrowsePushButton);
 | 
			
		||||
    initFileChooser(    OPTION("i2pcontrol","key",[]{return "i2pcontrol.key.pem";}), ui->i2pControlKeyFileLineEdit, ui->i2pControlKeyFileBrowsePushButton);
 | 
			
		||||
    initCheckBox(       OPTION("i2pcontrol","enabled",[]{return "false";}), uiSettings->i2pControlEnabledCheckBox);
 | 
			
		||||
    initIPAddressBox(   OPTION("i2pcontrol","address",[]{return "";}), uiSettings->i2pControlAddressLineEdit, tr("I2PControl -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("i2pcontrol","port",[]{return "7650";}), uiSettings->i2pControlPortLineEdit, tr("I2PControl -> Port"));
 | 
			
		||||
    initStringBox(      OPTION("i2pcontrol","password",[]{return "";}), uiSettings->i2pControlPasswordLineEdit);
 | 
			
		||||
    initFileChooser(    OPTION("i2pcontrol","cert",[]{return "i2pcontrol.crt.pem";}), uiSettings->i2pControlCertFileLineEdit, uiSettings->i2pControlCertFileBrowsePushButton);
 | 
			
		||||
    initFileChooser(    OPTION("i2pcontrol","key",[]{return "i2pcontrol.key.pem";}), uiSettings->i2pControlKeyFileLineEdit, uiSettings->i2pControlKeyFileBrowsePushButton);
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("upnp","enabled",[]{return "true";}), ui->enableUPnPCheckBox);
 | 
			
		||||
    initStringBox(      OPTION("upnp","name",[]{return "I2Pd";}), ui->upnpNameLineEdit);
 | 
			
		||||
    initCheckBox(       OPTION("upnp","enabled",[]{return "true";}), uiSettings->enableUPnPCheckBox);
 | 
			
		||||
    initStringBox(      OPTION("upnp","name",[]{return "I2Pd";}), uiSettings->upnpNameLineEdit);
 | 
			
		||||
	
 | 
			
		||||
    initCheckBox(       OPTION("precomputation","elgamal",[]{return "false";}), ui->useElGamalPrecomputedTablesCheckBox);
 | 
			
		||||
    initCheckBox(       OPTION("precomputation","elgamal",[]{return "false";}), uiSettings->useElGamalPrecomputedTablesCheckBox);
 | 
			
		||||
	
 | 
			
		||||
    initCheckBox(       OPTION("reseed","verify",[]{return "";}), ui->reseedVerifyCheckBox);
 | 
			
		||||
    initFileChooser(    OPTION("reseed","file",[]{return "";}), ui->reseedFileLineEdit, ui->reseedFileBrowsePushButton);
 | 
			
		||||
    initStringBox(      OPTION("reseed","urls",[]{return "";}), ui->reseedURLsLineEdit);
 | 
			
		||||
    initCheckBox(       OPTION("reseed","verify",[]{return "";}), uiSettings->reseedVerifyCheckBox);
 | 
			
		||||
    initFileChooser(    OPTION("reseed","file",[]{return "";}), uiSettings->reseedFileLineEdit, uiSettings->reseedFileBrowsePushButton);
 | 
			
		||||
    initStringBox(      OPTION("reseed","urls",[]{return "";}), uiSettings->reseedURLsLineEdit);
 | 
			
		||||
	
 | 
			
		||||
    initStringBox(      OPTION("addressbook","defaulturl",[]{return "";}), ui->addressbookDefaultURLLineEdit);
 | 
			
		||||
    initStringBox(      OPTION("addressbook","subscriptions",[]{return "";}), ui->addressbookSubscriptionsURLslineEdit);
 | 
			
		||||
    initStringBox(      OPTION("addressbook","defaulturl",[]{return "";}), uiSettings->addressbookDefaultURLLineEdit);
 | 
			
		||||
    initStringBox(      OPTION("addressbook","subscriptions",[]{return "";}), uiSettings->addressbookSubscriptionsURLslineEdit);
 | 
			
		||||
	
 | 
			
		||||
    initUInt16Box(     OPTION("limits","transittunnels",[]{return "2500";}), ui->maxNumOfTransitTunnelsLineEdit, tr("maxNumberOfTransitTunnels"));
 | 
			
		||||
    initUInt16Box(     OPTION("limits","openfiles",[]{return "0";}), ui->maxNumOfOpenFilesLineEdit, tr("maxNumberOfOpenFiles"));
 | 
			
		||||
    initUInt32Box(     OPTION("limits","coresize",[]{return "0";}), ui->coreFileMaxSizeNumberLineEdit, tr("coreFileMaxSize"));
 | 
			
		||||
    initUInt16Box(     OPTION("limits","transittunnels",[]{return "2500";}), uiSettings->maxNumOfTransitTunnelsLineEdit, tr("maxNumberOfTransitTunnels"));
 | 
			
		||||
    initUInt16Box(     OPTION("limits","openfiles",[]{return "0";}), uiSettings->maxNumOfOpenFilesLineEdit, tr("maxNumberOfOpenFiles"));
 | 
			
		||||
    initUInt32Box(     OPTION("limits","coresize",[]{return "0";}), uiSettings->coreFileMaxSizeNumberLineEdit, tr("coreFileMaxSize"));
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("trust","enabled",[]{return "false";}), ui->checkBoxTrustEnable);
 | 
			
		||||
    initStringBox(      OPTION("trust","family",[]{return "";}), ui->lineEditTrustFamily);
 | 
			
		||||
    initStringBox(      OPTION("trust","routers",[]{return "";}), ui->lineEditTrustRouters);
 | 
			
		||||
    initCheckBox(       OPTION("trust","hidden",[]{return "false";}), ui->checkBoxTrustHidden);
 | 
			
		||||
    initCheckBox(       OPTION("trust","enabled",[]{return "false";}), uiSettings->checkBoxTrustEnable);
 | 
			
		||||
    initStringBox(      OPTION("trust","family",[]{return "";}), uiSettings->lineEditTrustFamily);
 | 
			
		||||
    initStringBox(      OPTION("trust","routers",[]{return "";}), uiSettings->lineEditTrustRouters);
 | 
			
		||||
    initCheckBox(       OPTION("trust","hidden",[]{return "false";}), uiSettings->checkBoxTrustHidden);
 | 
			
		||||
 | 
			
		||||
    initCheckBox(       OPTION("websockets","enabled",[]{return "false";}), ui->checkBoxWebsocketsEnable);
 | 
			
		||||
    initIPAddressBox(   OPTION("websockets","address",[]{return "127.0.0.1";}), ui->lineEdit_webSock_addr, tr("Websocket server -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("websockets","port",[]{return "7666";}), ui->lineEdit_webSock_port, tr("Websocket server -> Port"));
 | 
			
		||||
    initCheckBox(       OPTION("websockets","enabled",[]{return "false";}), uiSettings->checkBoxWebsocketsEnable);
 | 
			
		||||
    initIPAddressBox(   OPTION("websockets","address",[]{return "127.0.0.1";}), uiSettings->lineEdit_webSock_addr, tr("Websocket server -> IP address"));
 | 
			
		||||
    initTCPPortBox(     OPTION("websockets","port",[]{return "7666";}), uiSettings->lineEdit_webSock_port, tr("Websocket server -> Port"));
 | 
			
		||||
 | 
			
		||||
#   undef OPTION
 | 
			
		||||
 | 
			
		||||
    //widgetlocks.add(new widgetlock(widget,lockbtn));
 | 
			
		||||
    widgetlocks.add(new widgetlock(uiSettings->logDestinationComboBox,uiSettings->logDestComboEditPushButton));
 | 
			
		||||
    widgetlocks.add(new widgetlock(uiSettings->logLevelComboBox,uiSettings->logLevelComboEditPushButton));
 | 
			
		||||
    widgetlocks.add(new widgetlock(uiSettings->comboBox_httpPorxySignatureType,uiSettings->httpProxySignTypeComboEditPushButton));
 | 
			
		||||
    widgetlocks.add(new widgetlock(uiSettings->comboBox_socksProxySignatureType,uiSettings->socksProxySignTypeComboEditPushButton));
 | 
			
		||||
 | 
			
		||||
    loadAllConfigs();
 | 
			
		||||
 | 
			
		||||
    QObject::connect(ui->logDestinationComboBox, SIGNAL(currentIndexChanged(const QString &)),
 | 
			
		||||
    QObject::connect(uiSettings->logDestinationComboBox, SIGNAL(currentIndexChanged(const QString &)),
 | 
			
		||||
                     this, SLOT(logDestinationComboBoxValueChanged(const QString &)));
 | 
			
		||||
    logDestinationComboBoxValueChanged(ui->logDestinationComboBox->currentText());
 | 
			
		||||
    logDestinationComboBoxValueChanged(uiSettings->logDestinationComboBox->currentText());
 | 
			
		||||
 | 
			
		||||
    //tunnelsFormGridLayoutWidget = new QWidget(ui->tunnelsScrollAreaWidgetContents);
 | 
			
		||||
    //tunnelsFormGridLayoutWidget->setObjectName(QStringLiteral("tunnelsFormGridLayoutWidget"));
 | 
			
		||||
    //tunnelsFormGridLayoutWidget->setGeometry(QRect(0, 0, 621, 451));
 | 
			
		||||
    ui->tunnelsScrollAreaWidgetContents->setGeometry(QRect(0, 0, 621, 451));
 | 
			
		||||
 | 
			
		||||
    appendTunnelForms("");
 | 
			
		||||
 | 
			
		||||
    ui->configFileLineEdit->setEnabled(false);
 | 
			
		||||
    ui->configFileBrowsePushButton->setEnabled(false);
 | 
			
		||||
    ui->configFileLineEdit->setText(confpath);
 | 
			
		||||
    ui->tunnelsConfigFileLineEdit->setText(tunconfpath);
 | 
			
		||||
    uiSettings->configFileLineEdit->setEnabled(false);
 | 
			
		||||
    uiSettings->configFileBrowsePushButton->setEnabled(false);
 | 
			
		||||
    uiSettings->configFileLineEdit->setText(confpath);
 | 
			
		||||
    uiSettings->tunnelsConfigFileLineEdit->setText(tunconfpath);
 | 
			
		||||
 | 
			
		||||
    for(QList<MainWindowItem*>::iterator it = configItems.begin(); it!= configItems.end(); ++it) {
 | 
			
		||||
        MainWindowItem* item = *it;
 | 
			
		||||
        item->installListeners(this);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    QObject::connect(ui->tunnelsConfigFileLineEdit, SIGNAL(textChanged(const QString &)),
 | 
			
		||||
    QObject::connect(uiSettings->tunnelsConfigFileLineEdit, SIGNAL(textChanged(const QString &)),
 | 
			
		||||
                     this, SLOT(reloadTunnelsConfigAndUI()));
 | 
			
		||||
 | 
			
		||||
    QObject::connect(ui->addServerTunnelPushButton, SIGNAL(released()), this, SLOT(addServerTunnelPushButtonReleased()));
 | 
			
		||||
| 
						 | 
				
			
			@ -293,8 +295,8 @@ MainWindow::MainWindow(QWidget *parent) :
 | 
			
		|||
 | 
			
		||||
void MainWindow::logDestinationComboBoxValueChanged(const QString & text) {
 | 
			
		||||
    bool stdout = text==QString("stdout");
 | 
			
		||||
    ui->logFileLineEdit->setEnabled(!stdout);
 | 
			
		||||
    ui->logFileBrowsePushButton->setEnabled(!stdout);
 | 
			
		||||
    uiSettings->logFileLineEdit->setEnabled(!stdout);
 | 
			
		||||
    uiSettings->logFileBrowsePushButton->setEnabled(!stdout);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,6 +59,9 @@
 | 
			
		|||
 | 
			
		||||
#include <iostream>
 | 
			
		||||
 | 
			
		||||
#include "widgetlockregistry.h"
 | 
			
		||||
#include "widgetlock.h"
 | 
			
		||||
 | 
			
		||||
template<typename ValueType>
 | 
			
		||||
bool isType(boost::any& a) {
 | 
			
		||||
    return
 | 
			
		||||
| 
						 | 
				
			
			@ -329,6 +332,7 @@ namespace Ui {
 | 
			
		|||
  class MainWindow;
 | 
			
		||||
  class StatusButtonsForm;
 | 
			
		||||
  class routerCommandsWidget;
 | 
			
		||||
  class GeneralSettingsContentsForm;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
using namespace i2p::client;
 | 
			
		||||
| 
						 | 
				
			
			@ -412,12 +416,15 @@ private:
 | 
			
		|||
    Ui::MainWindow* ui;
 | 
			
		||||
    Ui::StatusButtonsForm* statusButtonsUI;
 | 
			
		||||
    Ui::routerCommandsWidget* routerCommandsUI;
 | 
			
		||||
    Ui::GeneralSettingsContentsForm* uiSettings;
 | 
			
		||||
 | 
			
		||||
    TextBrowserTweaked1 * textBrowser;
 | 
			
		||||
    QWidget * routerCommandsParent;
 | 
			
		||||
    PageWithBackButton * pageWithBackButton;
 | 
			
		||||
    TextBrowserTweaked1 * childTextBrowser;
 | 
			
		||||
 | 
			
		||||
    widgetlockregistry widgetlocks;
 | 
			
		||||
 | 
			
		||||
    i2p::qt::Controller* i2pController;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										1
									
								
								qt/i2pd_qt/widgetlock.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								qt/i2pd_qt/widgetlock.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
#include "widgetlock.h"
 | 
			
		||||
							
								
								
									
										33
									
								
								qt/i2pd_qt/widgetlock.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								qt/i2pd_qt/widgetlock.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
#ifndef WIDGETLOCK_H
 | 
			
		||||
#define WIDGETLOCK_H
 | 
			
		||||
 | 
			
		||||
#include <QWidget>
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QPushButton>
 | 
			
		||||
#include <QApplication>
 | 
			
		||||
 | 
			
		||||
class widgetlock : public QObject {
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QWidget* widget;
 | 
			
		||||
    QPushButton* lockButton;
 | 
			
		||||
public slots:
 | 
			
		||||
    void lockButtonClicked(bool) {
 | 
			
		||||
        bool wasEnabled = widget->isEnabled();
 | 
			
		||||
        widget->setEnabled(!wasEnabled);
 | 
			
		||||
        lockButton->setText(widget->isEnabled()?lockButton->tr("Lock"):lockButton->tr("Edit"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    widgetlock(QWidget* widget_, QPushButton* lockButton_): widget(widget_),lockButton(lockButton_) {
 | 
			
		||||
        widget->setEnabled(false);
 | 
			
		||||
        lockButton->setText(lockButton->tr("Edit"));
 | 
			
		||||
        QObject::connect(lockButton,SIGNAL(clicked(bool)), this, SLOT(lockButtonClicked(bool)));
 | 
			
		||||
    }
 | 
			
		||||
    virtual ~widgetlock() {
 | 
			
		||||
        QObject::disconnect(lockButton,SIGNAL(clicked(bool)), this, SLOT(lockButtonClicked(bool)));
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // WIDGETLOCK_H
 | 
			
		||||
							
								
								
									
										2
									
								
								qt/i2pd_qt/widgetlockregistry.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								qt/i2pd_qt/widgetlockregistry.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
#include "widgetlockregistry.h"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										23
									
								
								qt/i2pd_qt/widgetlockregistry.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								qt/i2pd_qt/widgetlockregistry.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
#ifndef WIDGETLOCKREGISTRY_H
 | 
			
		||||
#define WIDGETLOCKREGISTRY_H
 | 
			
		||||
 | 
			
		||||
#include <vector>
 | 
			
		||||
#include <widgetlock.h>
 | 
			
		||||
 | 
			
		||||
class widgetlockregistry {
 | 
			
		||||
    std::vector<widgetlock*> locks;
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    widgetlockregistry() : locks() {}
 | 
			
		||||
    virtual ~widgetlockregistry() {
 | 
			
		||||
        while(!locks.empty()) {
 | 
			
		||||
            delete locks.back();
 | 
			
		||||
            locks.pop_back();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    void add(widgetlock* lock) {
 | 
			
		||||
        locks.push_back(lock);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // WIDGETLOCKREGISTRY_H
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue