|
|
@ -47,6 +47,8 @@ enum AdvSettingsRows |
|
|
|
QBITTORRENT_HEADER, |
|
|
|
QBITTORRENT_HEADER, |
|
|
|
// network interface
|
|
|
|
// network interface
|
|
|
|
NETWORK_IFACE, |
|
|
|
NETWORK_IFACE, |
|
|
|
|
|
|
|
//Optional network address
|
|
|
|
|
|
|
|
NETWORK_IFACE_ADDRESS, |
|
|
|
NETWORK_LISTEN_IPV6, |
|
|
|
NETWORK_LISTEN_IPV6, |
|
|
|
// behavior
|
|
|
|
// behavior
|
|
|
|
SAVE_RESUME_DATA_INTERVAL, |
|
|
|
SAVE_RESUME_DATA_INTERVAL, |
|
|
@ -104,6 +106,7 @@ AdvancedSettings::AdvancedSettings(QWidget *parent) |
|
|
|
setEditTriggers(QAbstractItemView::NoEditTriggers); |
|
|
|
setEditTriggers(QAbstractItemView::NoEditTriggers); |
|
|
|
// Signals
|
|
|
|
// Signals
|
|
|
|
connect(&spin_cache, SIGNAL(valueChanged(int)), SLOT(updateCacheSpinSuffix(int))); |
|
|
|
connect(&spin_cache, SIGNAL(valueChanged(int)), SLOT(updateCacheSpinSuffix(int))); |
|
|
|
|
|
|
|
connect(&combo_iface, SIGNAL(currentIndexChanged(int)), SLOT(updateInterfaceAddressCombo(int))); |
|
|
|
// Load settings
|
|
|
|
// Load settings
|
|
|
|
loadAdvancedSettings(); |
|
|
|
loadAdvancedSettings(); |
|
|
|
resizeColumnToContents(0); |
|
|
|
resizeColumnToContents(0); |
|
|
@ -146,12 +149,26 @@ void AdvancedSettings::saveAdvancedSettings() |
|
|
|
} |
|
|
|
} |
|
|
|
// Listen on IPv6 address
|
|
|
|
// Listen on IPv6 address
|
|
|
|
pref->setListenIPv6(cb_listen_ipv6.isChecked()); |
|
|
|
pref->setListenIPv6(cb_listen_ipv6.isChecked()); |
|
|
|
// Network address
|
|
|
|
// Interface address
|
|
|
|
QHostAddress addr(txt_network_address.text().trimmed()); |
|
|
|
if (combo_iface_address.currentIndex() == 0) { |
|
|
|
if (addr.isNull()) |
|
|
|
// All addresses (default)
|
|
|
|
|
|
|
|
pref->setNetworkInterfaceAddress(QString::null); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
|
|
|
|
QHostAddress ifaceAddr(combo_iface_address.currentText().trimmed()); |
|
|
|
|
|
|
|
if (ifaceAddr.isNull()) { |
|
|
|
|
|
|
|
pref->setNetworkInterfaceAddress(QString::null); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
pref->setNetworkInterfaceAddress(ifaceAddr.toString()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// Network Announce address
|
|
|
|
|
|
|
|
QHostAddress networkAddr(txt_network_address.text().trimmed()); |
|
|
|
|
|
|
|
if (networkAddr.isNull()) |
|
|
|
pref->setNetworkAddress(""); |
|
|
|
pref->setNetworkAddress(""); |
|
|
|
else |
|
|
|
else |
|
|
|
pref->setNetworkAddress(addr.toString()); |
|
|
|
pref->setNetworkAddress(networkAddr.toString()); |
|
|
|
|
|
|
|
|
|
|
|
// Program notification
|
|
|
|
// Program notification
|
|
|
|
MainWindow * const mainWindow = static_cast<Application*>(QCoreApplication::instance())->mainWindow(); |
|
|
|
MainWindow * const mainWindow = static_cast<Application*>(QCoreApplication::instance())->mainWindow(); |
|
|
|
mainWindow->setNotificationsEnabled(cb_program_notifications.isChecked()); |
|
|
|
mainWindow->setNotificationsEnabled(cb_program_notifications.isChecked()); |
|
|
@ -180,6 +197,45 @@ void AdvancedSettings::updateCacheSpinSuffix(int value) |
|
|
|
spin_cache.setSuffix(tr(" MiB")); |
|
|
|
spin_cache.setSuffix(tr(" MiB")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void AdvancedSettings::updateInterfaceAddressCombo(int) { |
|
|
|
|
|
|
|
//Try to get the currently selected interface name
|
|
|
|
|
|
|
|
QString ifaceName; |
|
|
|
|
|
|
|
if (combo_iface.currentIndex() == 0) { |
|
|
|
|
|
|
|
ifaceName = QString(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
|
|
|
|
ifaceName = combo_iface.itemData(combo_iface.currentIndex()).toString(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
const QNetworkInterface iface = QNetworkInterface::interfaceFromName(ifaceName); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Clear all items and reinsert them, default to all
|
|
|
|
|
|
|
|
combo_iface_address.clear(); |
|
|
|
|
|
|
|
combo_iface_address.addItem(tr("All Addresses")); |
|
|
|
|
|
|
|
combo_iface_address.setCurrentIndex(0); |
|
|
|
|
|
|
|
if (!iface.isValid()) { |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//Found a valid interface, try to get the addresses
|
|
|
|
|
|
|
|
const QList<QNetworkAddressEntry> addresses = iface.addressEntries(); |
|
|
|
|
|
|
|
const Preferences* const pref = Preferences::instance(); |
|
|
|
|
|
|
|
const QString currentAddress = pref->getNetworkInterfaceAddress(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (const QNetworkAddressEntry &entry, addresses) { |
|
|
|
|
|
|
|
QHostAddress ip = entry.ip(); |
|
|
|
|
|
|
|
QString ipString = ip.toString(); |
|
|
|
|
|
|
|
QAbstractSocket::NetworkLayerProtocol protocol = ip.protocol(); |
|
|
|
|
|
|
|
Q_ASSERT(protocol == QAbstractSocket::IPv4Protocol || protocol == QAbstractSocket::IPv6Protocol); |
|
|
|
|
|
|
|
//Only take ipv4 for now?
|
|
|
|
|
|
|
|
if (protocol != QAbstractSocket::IPv4Protocol) |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
combo_iface_address.addItem( ipString ); |
|
|
|
|
|
|
|
//Try to select the last added one
|
|
|
|
|
|
|
|
if (ipString == currentAddress) { |
|
|
|
|
|
|
|
combo_iface_address.setCurrentIndex(combo_iface_address.count() - 1); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void AdvancedSettings::loadAdvancedSettings() |
|
|
|
void AdvancedSettings::loadAdvancedSettings() |
|
|
|
{ |
|
|
|
{ |
|
|
|
const Preferences* const pref = Preferences::instance(); |
|
|
|
const Preferences* const pref = Preferences::instance(); |
|
|
@ -282,12 +338,16 @@ void AdvancedSettings::loadAdvancedSettings() |
|
|
|
combo_iface.setCurrentIndex(i); |
|
|
|
combo_iface.setCurrentIndex(i); |
|
|
|
} |
|
|
|
} |
|
|
|
addRow(NETWORK_IFACE, tr("Network Interface (requires restart)"), &combo_iface); |
|
|
|
addRow(NETWORK_IFACE, tr("Network Interface (requires restart)"), &combo_iface); |
|
|
|
|
|
|
|
// Network interface address
|
|
|
|
|
|
|
|
updateInterfaceAddressCombo(combo_iface.currentIndex()); |
|
|
|
|
|
|
|
addRow(NETWORK_IFACE_ADDRESS, tr("Optional IP Address to bind to (requires restart)"), &combo_iface_address); |
|
|
|
// Listen on IPv6 address
|
|
|
|
// Listen on IPv6 address
|
|
|
|
cb_listen_ipv6.setChecked(pref->getListenIPv6()); |
|
|
|
cb_listen_ipv6.setChecked(pref->getListenIPv6()); |
|
|
|
addRow(NETWORK_LISTEN_IPV6, tr("Listen on IPv6 address (requires restart)"), &cb_listen_ipv6); |
|
|
|
addRow(NETWORK_LISTEN_IPV6, tr("Listen on IPv6 address (requires restart)"), &cb_listen_ipv6); |
|
|
|
// Network address
|
|
|
|
// Announce address
|
|
|
|
txt_network_address.setText(pref->getNetworkAddress()); |
|
|
|
txt_network_address.setText(pref->getNetworkAddress()); |
|
|
|
addRow(NETWORK_ADDRESS, tr("IP Address to report to trackers (requires restart)"), &txt_network_address); |
|
|
|
addRow(NETWORK_ADDRESS, tr("IP Address to report to trackers (requires restart)"), &txt_network_address); |
|
|
|
|
|
|
|
|
|
|
|
// Program notifications
|
|
|
|
// Program notifications
|
|
|
|
const MainWindow * const mainWindow = static_cast<Application*>(QCoreApplication::instance())->mainWindow(); |
|
|
|
const MainWindow * const mainWindow = static_cast<Application*>(QCoreApplication::instance())->mainWindow(); |
|
|
|
cb_program_notifications.setChecked(mainWindow->isNotificationsEnabled()); |
|
|
|
cb_program_notifications.setChecked(mainWindow->isNotificationsEnabled()); |
|
|
|