diff --git a/daemon/HTTPServer.cpp b/daemon/HTTPServer.cpp
index 82939bbf..a019acaf 100644
--- a/daemon/HTTPServer.cpp
+++ b/daemon/HTTPServer.cpp
@@ -454,7 +454,7 @@ namespace http {
s << "
\r\n";
}
- void ShowCommands (std::stringstream& s, uint32_t token)
+ static void ShowCommands (std::stringstream& s, uint32_t token)
{
/* commands */
s << "Router Commands
\r\n";
diff --git a/daemon/HTTPServer.h b/daemon/HTTPServer.h
index 79f265b8..b65c9094 100644
--- a/daemon/HTTPServer.h
+++ b/daemon/HTTPServer.h
@@ -82,7 +82,6 @@ namespace http
void ShowLocalDestinations (std::stringstream& s);
void ShowLeasesSets(std::stringstream& s);
void ShowTunnels (std::stringstream& s);
- void ShowCommands (std::stringstream& s, uint32_t token);
void ShowTransitTunnels (std::stringstream& s);
void ShowTransports (std::stringstream& s);
void ShowSAMSessions (std::stringstream& s);
diff --git a/qt/i2pd_qt/i2pd_qt.pro b/qt/i2pd_qt/i2pd_qt.pro
index 918f0230..c1ce8c5c 100644
--- a/qt/i2pd_qt/i2pd_qt.pro
+++ b/qt/i2pd_qt/i2pd_qt.pro
@@ -177,7 +177,8 @@ INCLUDEPATH += .
FORMS += mainwindow.ui \
tunnelform.ui \
- statusbuttons.ui
+ statusbuttons.ui \
+ routercommandswidget.ui
LIBS += -lz
diff --git a/qt/i2pd_qt/mainwindow.cpp b/qt/i2pd_qt/mainwindow.cpp
index b465bc18..b342efe1 100644
--- a/qt/i2pd_qt/mainwindow.cpp
+++ b/qt/i2pd_qt/mainwindow.cpp
@@ -1,9 +1,11 @@
+#include
#include
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ui_statusbuttons.h"
-#include "ui_statushtmlpaneform.h"
+#include "ui_routercommandswidget.h"
#include
+#include
#include
#include
#include
@@ -12,6 +14,7 @@
#include "Config.h"
#include "FS.h"
#include "Log.h"
+#include "RouterContext.h"
#include "HTTPServer.h"
@@ -19,10 +22,6 @@
# include
#endif
-#include
-
-#include
-
#include "DaemonQT.h"
#include "SignatureTypeComboboxFactory.h"
@@ -37,6 +36,8 @@ MainWindow::MainWindow(QWidget *parent) :
,showHiddenInfoStatusMainPage(false)
,ui(new Ui::MainWindow)
,statusButtonsUI(new Ui::StatusButtonsForm)
+ ,routerCommandsUI(new Ui::routerCommandsWidget)
+ ,routerCommandsParent(new QWidget(this))
,i2pController(nullptr)
,configItems()
,datadir()
@@ -47,6 +48,9 @@ MainWindow::MainWindow(QWidget *parent) :
{
ui->setupUi(this);
statusButtonsUI->setupUi(ui->statusButtonsPane);
+ routerCommandsUI->setupUi(routerCommandsParent);
+ routerCommandsParent->hide();
+ ui->verticalLayout_2->addWidget(routerCommandsParent);
//,statusHtmlUI(new Ui::StatusHtmlPaneForm)
//statusHtmlUI->setupUi(lastStatusWidgetui->statusWidget);
ui->statusButtonsPane->setFixedSize(171,300);
@@ -260,12 +264,26 @@ MainWindow::MainWindow(QWidget *parent) :
//QMetaObject::connectSlotsByName(this);
}
+void MainWindow::updateRouterCommandsButtons() {
+ bool acceptsTunnels = i2p::context.AcceptsTunnels ();
+ routerCommandsUI->declineTransitTunnelsPushButton->setEnabled(acceptsTunnels);
+ routerCommandsUI->acceptTransitTunnelsPushButton->setEnabled(!acceptsTunnels);
+}
+
void MainWindow::showStatusPage(StatusPage newStatusPage){
ui->stackedWidget->setCurrentIndex(0);
setStatusButtonsVisible(true);
statusPage=newStatusPage;
showHiddenInfoStatusMainPage=false;
- textBrowser->setHtml(getStatusPageHtml(false));
+ if(newStatusPage!=StatusPage::commands){
+ textBrowser->setHtml(getStatusPageHtml(false));
+ textBrowser->show();
+ routerCommandsParent->hide();
+ }else{
+ routerCommandsParent->show();
+ textBrowser->hide();
+ updateRouterCommandsButtons();
+ }
wasSelectingAtStatusMainPage=false;
}
void MainWindow::showSettingsPage(){ui->stackedWidget->setCurrentIndex(1);setStatusButtonsVisible(false);}
@@ -283,7 +301,7 @@ QString MainWindow::getStatusPageHtml(bool showHiddenInfo) {
switch (statusPage) {
case main_page: i2p::http::ShowStatus(s, showHiddenInfo);break;
- case commands: i2p::http::ShowCommands(s, /*token=*/0); break;
+ case commands: break;
case local_destinations: i2p::http::ShowLocalDestinations(s);break;
case leasesets: i2p::http::ShowLeasesSets(s); break;
case tunnels: i2p::http::ShowTunnels(s); break;
diff --git a/qt/i2pd_qt/mainwindow.h b/qt/i2pd_qt/mainwindow.h
index 1c538810..2a1e7d64 100644
--- a/qt/i2pd_qt/mainwindow.h
+++ b/qt/i2pd_qt/mainwindow.h
@@ -309,7 +309,7 @@ public:
namespace Ui {
class MainWindow;
class StatusButtonsForm;
- class StatusHtmlPaneForm;
+ class routerCommandsWidget;
}
using namespace i2p::client;
@@ -388,12 +388,17 @@ private:
Ui::MainWindow* ui;
Ui::StatusButtonsForm* statusButtonsUI;
+ Ui::routerCommandsWidget* routerCommandsUI;
TextBrowserTweaked1 * textBrowser;
+ QWidget * routerCommandsParent;
i2p::qt::Controller* i2pController;
protected:
+
+ void updateRouterCommandsButtons();
+
#ifndef ANDROID
void closeEvent(QCloseEvent *event);
#endif
diff --git a/qt/i2pd_qt/mainwindow.ui b/qt/i2pd_qt/mainwindow.ui
index 59033e9d..6945a2a2 100644
--- a/qt/i2pd_qt/mainwindow.ui
+++ b/qt/i2pd_qt/mainwindow.ui
@@ -283,8 +283,8 @@
0
0
- 80
- 26
+ 689
+ 496
diff --git a/qt/i2pd_qt/routercommandswidget.ui b/qt/i2pd_qt/routercommandswidget.ui
new file mode 100644
index 00000000..fa4f2177
--- /dev/null
+++ b/qt/i2pd_qt/routercommandswidget.ui
@@ -0,0 +1,94 @@
+
+
+ routerCommandsWidget
+
+
+
+ 0
+ 0
+ 400
+ 300
+
+
+
+
+ 0
+ 0
+
+
+
+ Form
+
+
+
+
+ 0
+ 0
+ 401
+ 301
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Router Commands
+
+
+
+ -
+
+
+ Run peer test
+
+
+
+ -
+
+
+ Decline transit tunnels
+
+
+
+ -
+
+
+ Accept transit tunnels
+
+
+
+ -
+
+
+ false
+
+
+ Cancel graceful quit
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+
+