#include <QDesktopServices>
#include <QFileDialog>
+#include <QInputDialog>
#include <QMessageBox>
#include <QScrollBar>
#include <QStandardItemModel>
// pools
ui->poolFrame->show();
- ui->combo_pools->insertItems(0, m_pools);
- auto preferredPool = config()->get(Config::xmrigPool).toString();
- if (m_pools.contains(preferredPool))
- ui->combo_pools->setCurrentIndex(m_pools.indexOf(preferredPool));
- else {
- preferredPool = m_pools.at(0);
- config()->set(Config::xmrigPool, preferredPool);
- }
- connect(ui->combo_pools, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &XMRigWidget::onPoolChanged);
+ this->updatePools();
+ connect(ui->combo_pools, &QComboBox::currentTextChanged, this, &XMRigWidget::onPoolChanged);
+
+ connect(ui->btn_poolConfig, &QPushButton::clicked, [this]{
+ QStringList pools = config()->get(Config::pools).toStringList();
+ bool ok;
+ QString poolStr = QInputDialog::getMultiLineText(this, "Pool addresses", "Set pool addresses (one per line):", pools.join("\n"), &ok);
+ if (!ok) {
+ return;
+ }
+ QStringList newPools = poolStr.split("\n");
+ newPools.removeAll("");
+ newPools.removeDuplicates();
+ config()->set(Config::pools, newPools);
+ this->updatePools();
+ });
// info
ui->console->appendPlainText(QString("Detected %1 CPU threads.").arg(threads));
ui->label_threads->setText(QString("CPU threads: %1").arg(m_threads));
}
-void XMRigWidget::onPoolChanged(int pos) {
- config()->set(Config::xmrigPool, m_pools.at(pos));
+void XMRigWidget::onPoolChanged(const QString &pool) {
+ if (!pool.isEmpty()) {
+ config()->set(Config::xmrigPool, pool);
+ }
}
void XMRigWidget::onBrowseClicked() {
m_contextMenu->exec(ui->tableView->viewport()->mapToGlobal(pos));
}
+void XMRigWidget::updatePools() {
+ QStringList pools = config()->get(Config::pools).toStringList();
+ if (pools.isEmpty()) {
+ pools = m_defaultPools;
+ config()->set(Config::pools, pools);
+ }
+ ui->combo_pools->clear();
+ ui->combo_pools->insertItems(0, pools);
+
+ QString preferredPool = config()->get(Config::xmrigPool).toString();
+ if (pools.contains(preferredPool)) {
+ ui->combo_pools->setCurrentIndex(pools.indexOf(preferredPool));
+ } else {
+ preferredPool = pools.at(0);
+ config()->set(Config::xmrigPool, preferredPool);
+ }
+}
+
void XMRigWidget::onSoloChecked(int state) {
if(state == 2) {
ui->poolFrame->hide();
private slots:
void onBrowseClicked();
void onThreadsValueChanged(int date);
- void onPoolChanged(int pos);
+ void onPoolChanged(const QString &pool);
signals:
void miningStarted();
private:
void showContextMenu(const QPoint &pos);
+ void updatePools();
QScopedPointer<Ui::XMRigWidget> ui;
QSharedPointer<AppContext> m_ctx;
bool m_isMining = false;
int m_threads;
QStringList m_urls;
- QStringList m_pools{"pool.xmr.pt:9000", "pool.supportxmr.com:9000", "mine.xmrpool.net:443", "xmrpool.eu:9999", "xmr-eu1.nanopool.org:14433", "pool.minexmr.com:6666", "us-west.minexmr.com:6666", "monerohash.com:9999", "cryptonote.social:5555", "cryptonote.social:5556"};
+ QStringList m_defaultPools{"pool.xmr.pt:9000", "pool.supportxmr.com:9000", "mine.xmrpool.net:443", "xmrpool.eu:9999", "xmr-eu1.nanopool.org:14433", "pool.minexmr.com:6666", "us-west.minexmr.com:6666", "monerohash.com:9999", "cryptonote.social:5555", "cryptonote.social:5556"};
};
#endif // FEATHER_XMRWIDGET_H
<property name="windowTitle">
<string>Form</string>
</property>
- <layout class="QGridLayout" name="gridLayout_2">
+ <layout class="QVBoxLayout" name="verticalLayout_4">
<property name="leftMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
- <item row="0" column="0">
+ <item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>1</number>
</property>
- <widget class="QWidget" name="tab">
+ <widget class="QWidget" name="tabMining">
<attribute name="title">
<string>Mining</string>
</attribute>
</item>
</layout>
</widget>
- <widget class="QWidget" name="tab_3">
+ <widget class="QWidget" name="tabSettings">
<attribute name="title">
<string>Settings</string>
</attribute>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
- <layout class="QGridLayout" name="gridLayout_4">
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>0</number>
- </property>
<property name="bottomMargin">
<number>0</number>
</property>
- <item row="0" column="0">
- <layout class="QVBoxLayout" name="verticalLayout_4">
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
- <widget class="QLabel" name="label_4">
- <property name="text">
- <string>Pool</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="combo_pools">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_3">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- </layout>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Pool</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="combo_pools">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btn_poolConfig">
+ <property name="text">
+ <string>Configure</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>414</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
</item>
</layout>
</widget>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
- <layout class="QGridLayout" name="gridLayout_5">
+ <layout class="QHBoxLayout" name="horizontalLayout_8">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
- <property name="rightMargin">
- <number>0</number>
- </property>
<property name="bottomMargin">
<number>0</number>
</property>
- <item row="0" column="0">
- <layout class="QVBoxLayout" name="verticalLayout_8">
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_8">
- <item>
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Node address</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLineEdit" name="lineEdit_solo">
- <property name="text">
- <string>127.0.0.1:18081</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_5">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- </layout>
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Node address</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEdit_solo">
+ <property name="text">
+ <string>127.0.0.1:18081</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>173</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
- <widget class="QWidget" name="tab_2">
+ <widget class="QWidget" name="tabDownloads">
<attribute name="title">
<string>Downloads</string>
</attribute>
- <layout class="QGridLayout" name="gridLayout">
- <item row="0" column="0">
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <item>
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QLabel" name="label_latest_version">
</item>
</layout>
</item>
- <item row="1" column="0">
+ <item>
<widget class="QTableView" name="tableView">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>