Working on per acc proxy.
This commit is contained in:
parent
18a1d0e595
commit
ff969016db
39
src/librssguard/gui/networkproxydetails.cpp
Executable file
39
src/librssguard/gui/networkproxydetails.cpp
Executable file
@ -0,0 +1,39 @@
|
||||
// For license of this file, see <project-root-folder>/LICENSE.md.
|
||||
|
||||
#include "gui/networkproxydetails.h"
|
||||
|
||||
#include "gui/guiutilities.h"
|
||||
|
||||
#include <QNetworkProxy>
|
||||
|
||||
NetworkProxyDetails::NetworkProxyDetails(QWidget* parent) : QWidget(parent) {
|
||||
m_ui.setupUi(this);
|
||||
GuiUtilities::setLabelAsNotice(*m_ui.m_lblProxyInfo, false);
|
||||
|
||||
connect(m_ui.m_cmbProxyType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
||||
&NetworkProxyDetails::onProxyTypeChanged);
|
||||
connect(m_ui.m_checkShowPassword, &QCheckBox::stateChanged, this, &NetworkProxyDetails::displayProxyPassword);
|
||||
|
||||
m_ui.m_cmbProxyType->addItem(tr("No proxy"), QNetworkProxy::ProxyType::NoProxy);
|
||||
m_ui.m_cmbProxyType->addItem(tr("System proxy"), QNetworkProxy::ProxyType::DefaultProxy);
|
||||
m_ui.m_cmbProxyType->addItem(tr("Socks5"), QNetworkProxy::ProxyType::Socks5Proxy);
|
||||
m_ui.m_cmbProxyType->addItem(tr("Http"), QNetworkProxy::ProxyType::HttpProxy);
|
||||
|
||||
displayProxyPassword(Qt::CheckState::Unchecked);
|
||||
}
|
||||
|
||||
void NetworkProxyDetails::displayProxyPassword(int state) {
|
||||
if (state == Qt::CheckState::Checked) {
|
||||
m_ui.m_txtProxyPassword->setEchoMode(QLineEdit::EchoMode::Normal);
|
||||
}
|
||||
else {
|
||||
m_ui.m_txtProxyPassword->setEchoMode(QLineEdit::EchoMode::PasswordEchoOnEdit);
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkProxyDetails::onProxyTypeChanged(int index) {
|
||||
const QNetworkProxy::ProxyType selected_type = static_cast<QNetworkProxy::ProxyType>(m_ui.m_cmbProxyType->itemData(index).toInt());
|
||||
const bool is_proxy_selected = selected_type != QNetworkProxy::NoProxy && selected_type != QNetworkProxy::DefaultProxy;
|
||||
|
||||
m_ui.m_proxyDetails->setEnabled(is_proxy_selected);
|
||||
}
|
24
src/librssguard/gui/networkproxydetails.h
Executable file
24
src/librssguard/gui/networkproxydetails.h
Executable file
@ -0,0 +1,24 @@
|
||||
// For license of this file, see <project-root-folder>/LICENSE.md.
|
||||
|
||||
#ifndef NETWORKPROXYDETAILS_H
|
||||
#define NETWORKPROXYDETAILS_H
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include "ui_networkproxydetails.h"
|
||||
|
||||
class NetworkProxyDetails : public QWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit NetworkProxyDetails(QWidget* parent = nullptr);
|
||||
|
||||
private slots:
|
||||
void displayProxyPassword(int state);
|
||||
void onProxyTypeChanged(int index);
|
||||
|
||||
public:
|
||||
Ui::NetworkProxyDetails m_ui;
|
||||
};
|
||||
|
||||
#endif // NETWORKPROXYDETAILS_H
|
194
src/librssguard/gui/networkproxydetails.ui
Executable file
194
src/librssguard/gui/networkproxydetails.ui
Executable file
@ -0,0 +1,194 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>NetworkProxyDetails</class>
|
||||
<widget class="QWidget" name="NetworkProxyDetails">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>507</width>
|
||||
<height>257</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="m_lblProxyType">
|
||||
<property name="text">
|
||||
<string extracomment="Proxy server type.">Type</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_cmbProxyType</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="m_cmbProxyType"/>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QWidget" name="m_proxyDetails" native="true">
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="m_lblProxyHost">
|
||||
<property name="text">
|
||||
<string>Host</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_txtProxyHost</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="m_txtProxyHost">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>Hostname or IP of your proxy server</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="m_lblProxyPort">
|
||||
<property name="text">
|
||||
<string>Port</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_spinProxyPort</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="m_spinProxyPort">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>65535</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>80</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="m_lblProxyUsername">
|
||||
<property name="text">
|
||||
<string>Username</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_txtProxyUsername</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="m_txtProxyUsername">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>Your username for proxy server authentication</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="m_lblProxyPassword">
|
||||
<property name="text">
|
||||
<string>Password</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_txtProxyPassword</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="m_txtProxyPassword">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="echoMode">
|
||||
<enum>QLineEdit::PasswordEchoOnEdit</enum>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>Your password for proxy server authentication</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="m_checkShowPassword">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Display password</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QLabel" name="m_lblProxyInfo">
|
||||
<property name="text">
|
||||
<string>Note that these settings are applied only on newly established connections.</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="2">
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
@ -3,6 +3,7 @@
|
||||
#include "gui/settings/settingsbrowsermail.h"
|
||||
|
||||
#include "gui/guiutilities.h"
|
||||
#include "gui/networkproxydetails.h"
|
||||
#include "miscellaneous/application.h"
|
||||
#include "miscellaneous/externaltool.h"
|
||||
#include "network-web/silentnetworkaccessmanager.h"
|
||||
@ -13,12 +14,13 @@
|
||||
#include <QNetworkProxy>
|
||||
|
||||
SettingsBrowserMail::SettingsBrowserMail(Settings* settings, QWidget* parent)
|
||||
: SettingsPanel(settings, parent), m_ui(new Ui::SettingsBrowserMail) {
|
||||
: SettingsPanel(settings, parent), m_proxyDetails(new NetworkProxyDetails(this)), m_ui(new Ui::SettingsBrowserMail) {
|
||||
m_ui->setupUi(this);
|
||||
|
||||
m_ui->m_tabBrowserProxy->addTab(m_proxyDetails, tr("Network proxy"));
|
||||
|
||||
GuiUtilities::setLabelAsNotice(*m_ui->label, false);
|
||||
GuiUtilities::setLabelAsNotice(*m_ui->m_lblExternalEmailInfo, false);
|
||||
GuiUtilities::setLabelAsNotice(*m_ui->m_lblProxyInfo, false);
|
||||
GuiUtilities::setLabelAsNotice(*m_ui->m_lblToolInfo, false);
|
||||
|
||||
#if defined(USE_WEBENGINE)
|
||||
@ -30,12 +32,12 @@ SettingsBrowserMail::SettingsBrowserMail(Settings* settings, QWidget* parent)
|
||||
m_ui->m_listTools->setHeaderLabels(QStringList() << tr("Executable") << tr("Parameters"));
|
||||
m_ui->m_listTools->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
|
||||
|
||||
connect(m_ui->m_cmbProxyType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
||||
connect(m_proxyDetails->m_ui.m_cmbProxyType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
||||
&SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_ui->m_txtProxyHost, &QLineEdit::textChanged, this, &SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_ui->m_txtProxyPassword, &QLineEdit::textChanged, this, &SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_ui->m_txtProxyUsername, &QLineEdit::textChanged, this, &SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_ui->m_spinProxyPort, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,
|
||||
connect(m_proxyDetails->m_ui.m_txtProxyHost, &QLineEdit::textChanged, this, &SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_proxyDetails->m_ui.m_txtProxyPassword, &QLineEdit::textChanged, this, &SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_proxyDetails->m_ui.m_txtProxyUsername, &QLineEdit::textChanged, this, &SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_proxyDetails->m_ui.m_spinProxyPort, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,
|
||||
&SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_ui->m_grpCustomExternalBrowser, &QGroupBox::toggled, this, &SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_ui->m_grpCustomExternalEmail, &QGroupBox::toggled, this, &SettingsBrowserMail::dirtifySettings);
|
||||
@ -43,9 +45,6 @@ SettingsBrowserMail::SettingsBrowserMail(Settings* settings, QWidget* parent)
|
||||
connect(m_ui->m_txtExternalBrowserExecutable, &QLineEdit::textChanged, this, &SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_ui->m_txtExternalEmailArguments, &QLineEdit::textChanged, this, &SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_ui->m_txtExternalEmailExecutable, &QLineEdit::textChanged, this, &SettingsBrowserMail::dirtifySettings);
|
||||
connect(m_ui->m_cmbProxyType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
||||
&SettingsBrowserMail::onProxyTypeChanged);
|
||||
connect(m_ui->m_checkShowPassword, &QCheckBox::stateChanged, this, &SettingsBrowserMail::displayProxyPassword);
|
||||
connect(m_ui->m_cmbExternalBrowserPreset, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,
|
||||
&SettingsBrowserMail::changeDefaultBrowserArguments);
|
||||
connect(m_ui->m_btnExternalBrowserExecutable, &QPushButton::clicked, this, &SettingsBrowserMail::selectBrowserExecutable);
|
||||
@ -90,31 +89,6 @@ void SettingsBrowserMail::selectBrowserExecutable() {
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsBrowserMail::displayProxyPassword(int state) {
|
||||
if (state == Qt::Checked) {
|
||||
m_ui->m_txtProxyPassword->setEchoMode(QLineEdit::Normal);
|
||||
}
|
||||
else {
|
||||
m_ui->m_txtProxyPassword->setEchoMode(QLineEdit::PasswordEchoOnEdit);
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsBrowserMail::onProxyTypeChanged(int index) {
|
||||
const QNetworkProxy::ProxyType selected_type = static_cast<QNetworkProxy::ProxyType>(m_ui->m_cmbProxyType->itemData(index).toInt());
|
||||
const bool is_proxy_selected = selected_type != QNetworkProxy::NoProxy && selected_type != QNetworkProxy::DefaultProxy;
|
||||
|
||||
m_ui->m_txtProxyHost->setEnabled(is_proxy_selected);
|
||||
m_ui->m_txtProxyPassword->setEnabled(is_proxy_selected);
|
||||
m_ui->m_txtProxyUsername->setEnabled(is_proxy_selected);
|
||||
m_ui->m_spinProxyPort->setEnabled(is_proxy_selected);
|
||||
m_ui->m_checkShowPassword->setEnabled(is_proxy_selected);
|
||||
m_ui->m_lblProxyHost->setEnabled(is_proxy_selected);
|
||||
m_ui->m_lblProxyInfo->setEnabled(is_proxy_selected);
|
||||
m_ui->m_lblProxyPassword->setEnabled(is_proxy_selected);
|
||||
m_ui->m_lblProxyPort->setEnabled(is_proxy_selected);
|
||||
m_ui->m_lblProxyUsername->setEnabled(is_proxy_selected);
|
||||
}
|
||||
|
||||
QList<ExternalTool> SettingsBrowserMail::externalTools() const {
|
||||
QList<ExternalTool> list;
|
||||
|
||||
@ -181,19 +155,15 @@ void SettingsBrowserMail::loadSettings() {
|
||||
SETTING(Browser::CustomExternalEmailExecutable)).toString());
|
||||
m_ui->m_txtExternalEmailArguments->setText(settings()->value(GROUP(Browser), SETTING(Browser::CustomExternalEmailArguments)).toString());
|
||||
m_ui->m_grpCustomExternalEmail->setChecked(settings()->value(GROUP(Browser), SETTING(Browser::CustomExternalEmailEnabled)).toBool());
|
||||
m_ui->m_cmbProxyType->addItem(tr("No proxy"), QNetworkProxy::NoProxy);
|
||||
m_ui->m_cmbProxyType->addItem(tr("System proxy"), QNetworkProxy::DefaultProxy);
|
||||
m_ui->m_cmbProxyType->addItem(tr("Socks5"), QNetworkProxy::Socks5Proxy);
|
||||
m_ui->m_cmbProxyType->addItem(tr("Http"), QNetworkProxy::HttpProxy);
|
||||
|
||||
// Load the settings.
|
||||
QNetworkProxy::ProxyType selected_proxy_type = static_cast<QNetworkProxy::ProxyType>(settings()->value(GROUP(Proxy),
|
||||
SETTING(Proxy::Type)).toInt());
|
||||
m_ui->m_cmbProxyType->setCurrentIndex(m_ui->m_cmbProxyType->findData(selected_proxy_type));
|
||||
m_ui->m_txtProxyHost->setText(settings()->value(GROUP(Proxy), SETTING(Proxy::Host)).toString());
|
||||
m_ui->m_txtProxyUsername->setText(settings()->value(GROUP(Proxy), SETTING(Proxy::Username)).toString());
|
||||
m_ui->m_txtProxyPassword->setText(settings()->password(GROUP(Proxy), SETTING(Proxy::Password)).toString());
|
||||
m_ui->m_spinProxyPort->setValue(settings()->value(GROUP(Proxy), SETTING(Proxy::Port)).toInt());
|
||||
m_proxyDetails->m_ui.m_cmbProxyType->setCurrentIndex(m_proxyDetails->m_ui.m_cmbProxyType->findData(selected_proxy_type));
|
||||
m_proxyDetails->m_ui.m_txtProxyHost->setText(settings()->value(GROUP(Proxy), SETTING(Proxy::Host)).toString());
|
||||
m_proxyDetails->m_ui.m_txtProxyUsername->setText(settings()->value(GROUP(Proxy), SETTING(Proxy::Username)).toString());
|
||||
m_proxyDetails->m_ui.m_txtProxyPassword->setText(settings()->password(GROUP(Proxy), SETTING(Proxy::Password)).toString());
|
||||
m_proxyDetails->m_ui.m_spinProxyPort->setValue(settings()->value(GROUP(Proxy), SETTING(Proxy::Port)).toInt());
|
||||
|
||||
setExternalTools(ExternalTool::toolsFromSettings());
|
||||
onEndLoadSettings();
|
||||
@ -215,11 +185,11 @@ void SettingsBrowserMail::saveSettings() {
|
||||
settings()->setValue(GROUP(Browser), Browser::CustomExternalEmailExecutable, m_ui->m_txtExternalEmailExecutable->text());
|
||||
settings()->setValue(GROUP(Browser), Browser::CustomExternalEmailArguments, m_ui->m_txtExternalEmailArguments->text());
|
||||
settings()->setValue(GROUP(Browser), Browser::CustomExternalEmailEnabled, m_ui->m_grpCustomExternalEmail->isChecked());
|
||||
settings()->setValue(GROUP(Proxy), Proxy::Type, m_ui->m_cmbProxyType->itemData(m_ui->m_cmbProxyType->currentIndex()));
|
||||
settings()->setValue(GROUP(Proxy), Proxy::Host, m_ui->m_txtProxyHost->text());
|
||||
settings()->setValue(GROUP(Proxy), Proxy::Username, m_ui->m_txtProxyUsername->text());
|
||||
settings()->setPassword(GROUP(Proxy), Proxy::Password, m_ui->m_txtProxyPassword->text());
|
||||
settings()->setValue(GROUP(Proxy), Proxy::Port, m_ui->m_spinProxyPort->value());
|
||||
settings()->setValue(GROUP(Proxy), Proxy::Type, m_proxyDetails->m_ui.m_cmbProxyType->itemData(m_proxyDetails->m_ui.m_cmbProxyType->currentIndex()));
|
||||
settings()->setValue(GROUP(Proxy), Proxy::Host, m_proxyDetails->m_ui.m_txtProxyHost->text());
|
||||
settings()->setValue(GROUP(Proxy), Proxy::Username, m_proxyDetails->m_ui.m_txtProxyUsername->text());
|
||||
settings()->setPassword(GROUP(Proxy), Proxy::Password, m_proxyDetails->m_ui.m_txtProxyPassword->text());
|
||||
settings()->setValue(GROUP(Proxy), Proxy::Port, m_proxyDetails->m_ui.m_spinProxyPort->value());
|
||||
|
||||
auto tools = externalTools();
|
||||
|
||||
|
@ -6,8 +6,11 @@
|
||||
#include "gui/settings/settingspanel.h"
|
||||
|
||||
#include "miscellaneous/externaltool.h"
|
||||
|
||||
#include "ui_settingsbrowsermail.h"
|
||||
|
||||
class NetworkProxyDetails;
|
||||
|
||||
class SettingsBrowserMail : public SettingsPanel {
|
||||
Q_OBJECT
|
||||
|
||||
@ -26,13 +29,12 @@ class SettingsBrowserMail : public SettingsPanel {
|
||||
void selectBrowserExecutable();
|
||||
void changeDefaultEmailArguments(int index);
|
||||
void selectEmailExecutable();
|
||||
void displayProxyPassword(int state);
|
||||
void onProxyTypeChanged(int index);
|
||||
|
||||
private:
|
||||
QList<ExternalTool> externalTools() const;
|
||||
void setExternalTools(const QList<ExternalTool>& list);
|
||||
|
||||
NetworkProxyDetails* m_proxyDetails;
|
||||
Ui::SettingsBrowserMail* m_ui;
|
||||
};
|
||||
|
||||
|
@ -335,167 +335,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="m_tabProxy">
|
||||
<attribute name="title">
|
||||
<string>Proxy</string>
|
||||
</attribute>
|
||||
<layout class="QFormLayout" name="formLayout_6">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="m_lblProxyType">
|
||||
<property name="text">
|
||||
<string extracomment="Proxy server type.">Type</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_cmbProxyType</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="m_cmbProxyType"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="m_lblProxyHost">
|
||||
<property name="text">
|
||||
<string>Host</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_txtProxyHost</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="m_txtProxyHost">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>Hostname or IP of your proxy server</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="m_lblProxyPort">
|
||||
<property name="text">
|
||||
<string>Port</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_spinProxyPort</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="m_spinProxyPort">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>65535</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>80</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="m_lblProxyUsername">
|
||||
<property name="text">
|
||||
<string>Username</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_txtProxyUsername</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="m_txtProxyUsername">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>Your username for proxy server authentication</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="m_lblProxyPassword">
|
||||
<property name="text">
|
||||
<string>Password</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_txtProxyPassword</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="m_txtProxyPassword">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="echoMode">
|
||||
<enum>QLineEdit::PasswordEchoOnEdit</enum>
|
||||
</property>
|
||||
<property name="placeholderText">
|
||||
<string>Your password for proxy server authentication</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QCheckBox" name="m_checkShowPassword">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Display password</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="2">
|
||||
<widget class="QLabel" name="m_lblProxyInfo">
|
||||
<property name="text">
|
||||
<string>Note that these settings are applied only on newly established connections.</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="2">
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@ -516,12 +355,6 @@
|
||||
<tabstop>m_listTools</tabstop>
|
||||
<tabstop>m_btnAddTool</tabstop>
|
||||
<tabstop>m_btnDeleteTool</tabstop>
|
||||
<tabstop>m_cmbProxyType</tabstop>
|
||||
<tabstop>m_txtProxyHost</tabstop>
|
||||
<tabstop>m_spinProxyPort</tabstop>
|
||||
<tabstop>m_txtProxyUsername</tabstop>
|
||||
<tabstop>m_txtProxyPassword</tabstop>
|
||||
<tabstop>m_checkShowPassword</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
@ -98,6 +98,7 @@ HEADERS += core/feeddownloader.h \
|
||||
gui/toolbareditor.h \
|
||||
gui/treeviewcolumnsmenu.h \
|
||||
gui/widgetwithstatus.h \
|
||||
gui/networkproxydetails.h \
|
||||
miscellaneous/application.h \
|
||||
miscellaneous/autosaver.h \
|
||||
miscellaneous/databasecleaner.h \
|
||||
@ -166,6 +167,7 @@ HEADERS += core/feeddownloader.h \
|
||||
services/standard/atomparser.h \
|
||||
services/standard/feedparser.h \
|
||||
services/abstract/gui/authenticationdetails.h \
|
||||
services/standard/gui/formeditstandardaccount.h \
|
||||
services/standard/gui/formstandardcategorydetails.h \
|
||||
services/standard/gui/formstandardfeeddetails.h \
|
||||
services/standard/gui/formstandardimportexport.h \
|
||||
@ -260,6 +262,7 @@ SOURCES += core/feeddownloader.cpp \
|
||||
gui/toolbareditor.cpp \
|
||||
gui/treeviewcolumnsmenu.cpp \
|
||||
gui/widgetwithstatus.cpp \
|
||||
gui/networkproxydetails.cpp \
|
||||
miscellaneous/application.cpp \
|
||||
miscellaneous/autosaver.cpp \
|
||||
miscellaneous/databasecleaner.cpp \
|
||||
@ -322,6 +325,7 @@ SOURCES += core/feeddownloader.cpp \
|
||||
services/standard/atomparser.cpp \
|
||||
services/standard/feedparser.cpp \
|
||||
services/abstract/gui/authenticationdetails.cpp \
|
||||
services/standard/gui/formeditstandardaccount.cpp \
|
||||
services/standard/gui/formstandardcategorydetails.cpp \
|
||||
services/standard/gui/formstandardfeeddetails.cpp \
|
||||
services/standard/gui/formstandardimportexport.cpp \
|
||||
@ -373,6 +377,7 @@ FORMS += gui/dialogs/formabout.ui \
|
||||
gui/settings/settingslocalization.ui \
|
||||
gui/settings/settingsshortcuts.ui \
|
||||
gui/toolbareditor.ui \
|
||||
gui/networkproxydetails.ui \
|
||||
network-web/downloaditem.ui \
|
||||
network-web/downloadmanager.ui \
|
||||
services/abstract/gui/formaccountdetails.ui \
|
||||
|
@ -1841,6 +1841,7 @@ int DatabaseQueries::createBaseAccount(const QSqlDatabase& db, const QString& co
|
||||
void DatabaseQueries::editBaseAccount(const QSqlDatabase& db, ServiceRoot* account, bool* ok) {
|
||||
Q_UNUSED(account)
|
||||
Q_UNUSED(ok)
|
||||
Q_UNUSED(db)
|
||||
|
||||
// TODO: edit proxy etc
|
||||
}
|
||||
@ -2406,7 +2407,7 @@ QList<ServiceRoot*> DatabaseQueries::getGmailAccounts(const QSqlDatabase& db, bo
|
||||
|
||||
if (query.exec("SELECT * FROM GmailAccounts;")) {
|
||||
while (query.next()) {
|
||||
auto* root = new GmailServiceRoot(nullptr);
|
||||
auto* root = new GmailServiceRoot();
|
||||
|
||||
root->setId(query.value(0).toInt());
|
||||
root->setAccountId(query.value(0).toInt());
|
||||
@ -2504,7 +2505,7 @@ QList<ServiceRoot*> DatabaseQueries::getInoreaderAccounts(const QSqlDatabase& db
|
||||
|
||||
if (query.exec("SELECT * FROM InoreaderAccounts;")) {
|
||||
while (query.next()) {
|
||||
auto* root = new InoreaderServiceRoot(nullptr);
|
||||
auto* root = new InoreaderServiceRoot();
|
||||
|
||||
root->setId(query.value(0).toInt());
|
||||
root->setAccountId(query.value(0).toInt());
|
||||
|
@ -3,31 +3,22 @@
|
||||
#include "services/abstract/gui/formaccountdetails.h"
|
||||
|
||||
#include "gui/guiutilities.h"
|
||||
#include "gui/networkproxydetails.h"
|
||||
#include "miscellaneous/application.h"
|
||||
#include "miscellaneous/iconfactory.h"
|
||||
#include "services/abstract/serviceroot.h"
|
||||
|
||||
FormAccountDetails::FormAccountDetails(const QIcon& icon, QWidget* parent) : QDialog(parent), m_account(nullptr) {
|
||||
FormAccountDetails::FormAccountDetails(const QIcon& icon, QWidget* parent)
|
||||
: QDialog(parent), m_proxyDetails(new NetworkProxyDetails(this)), m_account(nullptr) {
|
||||
m_ui.setupUi(this);
|
||||
|
||||
insertCustomTab(m_proxyDetails, tr("Network proxy"), 0);
|
||||
GuiUtilities::applyDialogProperties(*this, icon.isNull()
|
||||
? qApp->icons()->fromTheme(QSL("emblem-system"))
|
||||
: icon);
|
||||
createConnections();
|
||||
}
|
||||
|
||||
void FormAccountDetails::apply() {
|
||||
if (m_account != nullptr) {
|
||||
// Perform last-time operations before account is changed.
|
||||
auto* cached_account = dynamic_cast<CacheForServiceRoot*>(m_account);
|
||||
|
||||
if (cached_account != nullptr) {
|
||||
qWarningNN << LOGSEC_CORE << "Last-time account cache saving before account gets changed.";
|
||||
cached_account->saveAllCachedData(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FormAccountDetails::insertCustomTab(QWidget* custom_tab, const QString& title, int index) {
|
||||
m_ui.m_tabWidget->insertTab(index, custom_tab, title);
|
||||
}
|
||||
|
@ -7,7 +7,12 @@
|
||||
|
||||
#include "ui_formaccountdetails.h"
|
||||
|
||||
#include "miscellaneous/application.h"
|
||||
#include "miscellaneous/databasefactory.h"
|
||||
#include "miscellaneous/databasequeries.h"
|
||||
|
||||
class ServiceRoot;
|
||||
class NetworkProxyDetails;
|
||||
|
||||
class FormAccountDetails : public QDialog {
|
||||
Q_OBJECT
|
||||
@ -24,11 +29,17 @@ class FormAccountDetails : public QDialog {
|
||||
protected slots:
|
||||
|
||||
// Applies changes.
|
||||
// NOTE: This must be reimplemented in subclasses. Also this
|
||||
// base implementation must be called first.
|
||||
virtual void apply();
|
||||
// NOTE: This must be reimplemented in subclasses. Also, every
|
||||
// subclass must call applyInternal() method as first statement.
|
||||
virtual void apply() = 0;
|
||||
|
||||
protected:
|
||||
|
||||
// Performs some common operations and returns true if creating
|
||||
// new account or false if editing existing account.
|
||||
template<class T>
|
||||
bool applyInternal();
|
||||
|
||||
void activateTab(int index);
|
||||
void clearTabs();
|
||||
void insertCustomTab(QWidget* custom_tab, const QString& title, int index);
|
||||
@ -43,9 +54,36 @@ class FormAccountDetails : public QDialog {
|
||||
|
||||
protected:
|
||||
Ui::FormAccountDetails m_ui;
|
||||
NetworkProxyDetails* m_proxyDetails;
|
||||
ServiceRoot* m_account;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
inline bool FormAccountDetails::applyInternal() {
|
||||
if (m_account != nullptr) {
|
||||
// Perform last-time operations before account is changed.
|
||||
auto* cached_account = dynamic_cast<CacheForServiceRoot*>(m_account);
|
||||
|
||||
if (cached_account != nullptr) {
|
||||
qWarningNN << LOGSEC_CORE << "Last-time account cache saving before account gets changed.";
|
||||
cached_account->saveAllCachedData(true);
|
||||
}
|
||||
}
|
||||
|
||||
QSqlDatabase database = qApp->database()->connection(QSL("FormAccountDetails"));
|
||||
bool creating = m_account == nullptr;
|
||||
|
||||
if (m_account == nullptr) {
|
||||
m_account = new T();
|
||||
m_account->setAccountId(DatabaseQueries::createBaseAccount(database, m_account->code()));
|
||||
m_account->setId(m_account->accountId());
|
||||
}
|
||||
|
||||
// NOTE: We edit account common attributes here directly.
|
||||
DatabaseQueries::editBaseAccount(database, m_account);
|
||||
return creating;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
inline T* FormAccountDetails::addEditAccount(T* account_to_edit) {
|
||||
if (account_to_edit == nullptr) {
|
||||
@ -55,8 +93,12 @@ inline T* FormAccountDetails::addEditAccount(T* account_to_edit) {
|
||||
setEditableAccount(static_cast<ServiceRoot*>(account_to_edit));
|
||||
}
|
||||
|
||||
exec();
|
||||
return account<T>();
|
||||
if (exec() == QDialog::DialogCode::Accepted) {
|
||||
return account<T>();
|
||||
}
|
||||
else {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
template<class T>
|
||||
|
@ -18,15 +18,8 @@
|
||||
|
||||
#include <QFileDialog>
|
||||
|
||||
GmailServiceRoot::GmailServiceRoot(GmailNetworkFactory* network, RootItem* parent)
|
||||
: ServiceRoot(parent), m_network(network), m_actionReply(nullptr) {
|
||||
if (network == nullptr) {
|
||||
m_network = new GmailNetworkFactory(this);
|
||||
}
|
||||
else {
|
||||
m_network->setParent(this);
|
||||
}
|
||||
|
||||
GmailServiceRoot::GmailServiceRoot(RootItem* parent)
|
||||
: ServiceRoot(parent), m_network(new GmailNetworkFactory(this)), m_actionReply(nullptr) {
|
||||
m_network->setService(this);
|
||||
setIcon(GmailEntryPoint().icon());
|
||||
}
|
||||
@ -74,10 +67,10 @@ void GmailServiceRoot::loadFromDatabase() {
|
||||
}
|
||||
}
|
||||
|
||||
void GmailServiceRoot::saveAccountDataToDatabase() {
|
||||
void GmailServiceRoot::saveAccountDataToDatabase(bool creating_new) {
|
||||
QSqlDatabase database = qApp->database()->connection(metaObject()->className());
|
||||
|
||||
if (accountId() != NO_PARENT_CATEGORY) {
|
||||
if (!creating_new) {
|
||||
if (DatabaseQueries::overwriteGmailAccount(database, m_network->username(),
|
||||
m_network->oauth()->clientId(),
|
||||
m_network->oauth()->clientSecret(),
|
||||
@ -90,21 +83,15 @@ void GmailServiceRoot::saveAccountDataToDatabase() {
|
||||
}
|
||||
}
|
||||
else {
|
||||
bool saved;
|
||||
int id_to_assign = DatabaseQueries::createBaseAccount(database, code(), &saved);
|
||||
|
||||
if (saved) {
|
||||
if (DatabaseQueries::createGmailAccount(database, id_to_assign,
|
||||
m_network->username(),
|
||||
m_network->oauth()->clientId(),
|
||||
m_network->oauth()->clientSecret(),
|
||||
m_network->oauth()->redirectUrl(),
|
||||
m_network->oauth()->refreshToken(),
|
||||
m_network->batchSize())) {
|
||||
setId(id_to_assign);
|
||||
setAccountId(id_to_assign);
|
||||
updateTitle();
|
||||
}
|
||||
if (DatabaseQueries::createGmailAccount(database,
|
||||
accountId(),
|
||||
m_network->username(),
|
||||
m_network->oauth()->clientId(),
|
||||
m_network->oauth()->clientSecret(),
|
||||
m_network->oauth()->redirectUrl(),
|
||||
m_network->oauth()->refreshToken(),
|
||||
m_network->batchSize())) {
|
||||
updateTitle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,10 +12,10 @@ class GmailServiceRoot : public ServiceRoot, public CacheForServiceRoot {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit GmailServiceRoot(GmailNetworkFactory* network, RootItem* parent = nullptr);
|
||||
explicit GmailServiceRoot(RootItem* parent = nullptr);
|
||||
virtual ~GmailServiceRoot();
|
||||
|
||||
void saveAccountDataToDatabase();
|
||||
void saveAccountDataToDatabase(bool creating_new);
|
||||
|
||||
void setNetwork(GmailNetworkFactory* network);
|
||||
GmailNetworkFactory* network() const;
|
||||
|
@ -20,16 +20,7 @@ FormEditGmailAccount::FormEditGmailAccount(QWidget* parent)
|
||||
}
|
||||
|
||||
void FormEditGmailAccount::apply() {
|
||||
FormAccountDetails::apply();
|
||||
|
||||
bool editing_account = true;
|
||||
|
||||
if (m_account == nullptr) {
|
||||
// We want to confirm newly created account.
|
||||
// So save new account into DB, setup its properties.
|
||||
m_account = new GmailServiceRoot(nullptr);
|
||||
editing_account = false;
|
||||
}
|
||||
bool editing_account = !applyInternal<GmailServiceRoot>();
|
||||
|
||||
// We copy credentials from testing OAuth to live OAuth.
|
||||
account<GmailServiceRoot>()->network()->oauth()->setAccessToken(m_details->m_oauth->accessToken());
|
||||
@ -42,7 +33,8 @@ void FormEditGmailAccount::apply() {
|
||||
|
||||
account<GmailServiceRoot>()->network()->setUsername(m_details->m_ui.m_txtUsername->lineEdit()->text());
|
||||
account<GmailServiceRoot>()->network()->setBatchSize(m_details->m_ui.m_spinLimitMessages->value());
|
||||
account<GmailServiceRoot>()->saveAccountDataToDatabase();
|
||||
|
||||
account<GmailServiceRoot>()->saveAccountDataToDatabase(!editing_account);
|
||||
accept();
|
||||
|
||||
if (editing_account) {
|
||||
|
@ -21,16 +21,7 @@ FormEditInoreaderAccount::FormEditInoreaderAccount(QWidget* parent)
|
||||
}
|
||||
|
||||
void FormEditInoreaderAccount::apply() {
|
||||
FormAccountDetails::apply();
|
||||
|
||||
bool editing_account = true;
|
||||
|
||||
if (m_account == nullptr) {
|
||||
// We want to confirm newly created account.
|
||||
// So save new account into DB, setup its properties.
|
||||
m_account = new InoreaderServiceRoot(nullptr);
|
||||
editing_account = false;
|
||||
}
|
||||
bool editing_account = !applyInternal<InoreaderServiceRoot>();
|
||||
|
||||
// We copy credentials from testing OAuth to live OAuth.
|
||||
account<InoreaderServiceRoot>()->network()->oauth()->setAccessToken(m_details->m_oauth->accessToken());
|
||||
@ -43,7 +34,8 @@ void FormEditInoreaderAccount::apply() {
|
||||
|
||||
account<InoreaderServiceRoot>()->network()->setUsername(m_details->m_ui.m_txtUsername->lineEdit()->text());
|
||||
account<InoreaderServiceRoot>()->network()->setBatchSize(m_details->m_ui.m_spinLimitMessages->value());
|
||||
account<InoreaderServiceRoot>()->saveAccountDataToDatabase();
|
||||
|
||||
account<InoreaderServiceRoot>()->saveAccountDataToDatabase(!editing_account);
|
||||
accept();
|
||||
|
||||
if (editing_account) {
|
||||
|
@ -16,15 +16,8 @@
|
||||
|
||||
#include <QThread>
|
||||
|
||||
InoreaderServiceRoot::InoreaderServiceRoot(InoreaderNetworkFactory* network, RootItem* parent)
|
||||
: ServiceRoot(parent), m_network(network) {
|
||||
if (network == nullptr) {
|
||||
m_network = new InoreaderNetworkFactory(this);
|
||||
}
|
||||
else {
|
||||
m_network->setParent(this);
|
||||
}
|
||||
|
||||
InoreaderServiceRoot::InoreaderServiceRoot(RootItem* parent)
|
||||
: ServiceRoot(parent), m_network(new InoreaderNetworkFactory(this)) {
|
||||
m_network->setService(this);
|
||||
setIcon(InoreaderEntryPoint().icon());
|
||||
}
|
||||
@ -44,10 +37,10 @@ void InoreaderServiceRoot::loadFromDatabase() {
|
||||
performInitialAssembly(categories, feeds, labels);
|
||||
}
|
||||
|
||||
void InoreaderServiceRoot::saveAccountDataToDatabase() {
|
||||
void InoreaderServiceRoot::saveAccountDataToDatabase(bool creating_new) {
|
||||
QSqlDatabase database = qApp->database()->connection(metaObject()->className());
|
||||
|
||||
if (accountId() != NO_PARENT_CATEGORY) {
|
||||
if (!creating_new) {
|
||||
if (DatabaseQueries::overwriteInoreaderAccount(database, m_network->userName(),
|
||||
m_network->oauth()->clientId(),
|
||||
m_network->oauth()->clientSecret(),
|
||||
@ -60,21 +53,15 @@ void InoreaderServiceRoot::saveAccountDataToDatabase() {
|
||||
}
|
||||
}
|
||||
else {
|
||||
bool saved;
|
||||
int id_to_assign = DatabaseQueries::createBaseAccount(database, code(), &saved);
|
||||
|
||||
if (saved) {
|
||||
if (DatabaseQueries::createInoreaderAccount(database, id_to_assign,
|
||||
m_network->userName(),
|
||||
m_network->oauth()->clientId(),
|
||||
m_network->oauth()->clientSecret(),
|
||||
m_network->oauth()->redirectUrl(),
|
||||
m_network->oauth()->refreshToken(),
|
||||
m_network->batchSize())) {
|
||||
setId(id_to_assign);
|
||||
setAccountId(id_to_assign);
|
||||
updateTitle();
|
||||
}
|
||||
if (DatabaseQueries::createInoreaderAccount(database,
|
||||
accountId(),
|
||||
m_network->userName(),
|
||||
m_network->oauth()->clientId(),
|
||||
m_network->oauth()->clientSecret(),
|
||||
m_network->oauth()->redirectUrl(),
|
||||
m_network->oauth()->refreshToken(),
|
||||
m_network->batchSize())) {
|
||||
updateTitle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,10 +12,10 @@ class InoreaderServiceRoot : public ServiceRoot, public CacheForServiceRoot {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit InoreaderServiceRoot(InoreaderNetworkFactory* network, RootItem* parent = nullptr);
|
||||
explicit InoreaderServiceRoot(RootItem* parent = nullptr);
|
||||
virtual ~InoreaderServiceRoot();
|
||||
|
||||
void saveAccountDataToDatabase();
|
||||
void saveAccountDataToDatabase(bool creating_new);
|
||||
|
||||
void setNetwork(InoreaderNetworkFactory* network);
|
||||
InoreaderNetworkFactory* network() const;
|
||||
|
@ -19,16 +19,7 @@ FormEditOwnCloudAccount::FormEditOwnCloudAccount(QWidget* parent)
|
||||
}
|
||||
|
||||
void FormEditOwnCloudAccount::apply() {
|
||||
FormAccountDetails::apply();
|
||||
|
||||
bool editing_account = true;
|
||||
|
||||
if (m_account == nullptr) {
|
||||
// We want to confirm newly created account.
|
||||
// So save new account into DB, setup its properties.
|
||||
m_account = new OwnCloudServiceRoot();
|
||||
editing_account = false;
|
||||
}
|
||||
bool editing_account = !applyInternal<OwnCloudServiceRoot>();
|
||||
|
||||
account<OwnCloudServiceRoot>()->network()->setUrl(m_details->m_ui.m_txtUrl->lineEdit()->text());
|
||||
account<OwnCloudServiceRoot>()->network()->setAuthUsername(m_details->m_ui.m_txtUsername->lineEdit()->text());
|
||||
@ -37,7 +28,7 @@ void FormEditOwnCloudAccount::apply() {
|
||||
account<OwnCloudServiceRoot>()->network()->setBatchSize(m_details->m_ui.m_spinLimitMessages->value());
|
||||
account<OwnCloudServiceRoot>()->network()->setDownloadOnlyUnreadMessages(m_details->m_ui.m_checkDownloadOnlyUnreadMessages->isChecked());
|
||||
|
||||
account<OwnCloudServiceRoot>()->saveAccountDataToDatabase();
|
||||
account<OwnCloudServiceRoot>()->saveAccountDataToDatabase(!editing_account);
|
||||
accept();
|
||||
|
||||
if (editing_account) {
|
||||
|
@ -128,10 +128,10 @@ void OwnCloudServiceRoot::updateTitle() {
|
||||
setTitle(m_network->authUsername() + QSL(" (Nextcloud News)"));
|
||||
}
|
||||
|
||||
void OwnCloudServiceRoot::saveAccountDataToDatabase() {
|
||||
void OwnCloudServiceRoot::saveAccountDataToDatabase(bool creating_new) {
|
||||
QSqlDatabase database = qApp->database()->connection(metaObject()->className());
|
||||
|
||||
if (accountId() != NO_PARENT_CATEGORY) {
|
||||
if (!creating_new) {
|
||||
if (DatabaseQueries::overwriteOwnCloudAccount(database, m_network->authUsername(),
|
||||
m_network->authPassword(), m_network->url(),
|
||||
m_network->forceServerSideUpdate(), m_network->batchSize(),
|
||||
@ -141,19 +141,12 @@ void OwnCloudServiceRoot::saveAccountDataToDatabase() {
|
||||
}
|
||||
}
|
||||
else {
|
||||
bool saved;
|
||||
int id_to_assign = DatabaseQueries::createBaseAccount(database, code(), &saved);
|
||||
|
||||
if (saved) {
|
||||
if (DatabaseQueries::createOwnCloudAccount(database, id_to_assign, m_network->authUsername(),
|
||||
m_network->authPassword(), m_network->url(),
|
||||
m_network->forceServerSideUpdate(),
|
||||
m_network->downloadOnlyUnreadMessages(),
|
||||
m_network->batchSize())) {
|
||||
setId(id_to_assign);
|
||||
setAccountId(id_to_assign);
|
||||
updateTitle();
|
||||
}
|
||||
if (DatabaseQueries::createOwnCloudAccount(database, accountId(), m_network->authUsername(),
|
||||
m_network->authPassword(), m_network->url(),
|
||||
m_network->forceServerSideUpdate(),
|
||||
m_network->downloadOnlyUnreadMessages(),
|
||||
m_network->batchSize())) {
|
||||
updateTitle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ class OwnCloudServiceRoot : public ServiceRoot, public CacheForServiceRoot {
|
||||
OwnCloudNetworkFactory* network() const;
|
||||
|
||||
void updateTitle();
|
||||
void saveAccountDataToDatabase();
|
||||
void saveAccountDataToDatabase(bool creating_new);
|
||||
|
||||
protected:
|
||||
virtual RootItem* obtainNewTreeForSyncIn() const;
|
||||
|
21
src/librssguard/services/standard/gui/formeditstandardaccount.cpp
Executable file
21
src/librssguard/services/standard/gui/formeditstandardaccount.cpp
Executable file
@ -0,0 +1,21 @@
|
||||
// For license of this file, see <project-root-folder>/LICENSE.md.
|
||||
|
||||
#include "services/standard/gui/formeditstandardaccount.h"
|
||||
|
||||
#include "miscellaneous/application.h"
|
||||
#include "miscellaneous/databasefactory.h"
|
||||
#include "miscellaneous/databasequeries.h"
|
||||
#include "miscellaneous/iconfactory.h"
|
||||
#include "services/standard/standardserviceroot.h"
|
||||
|
||||
FormEditStandardAccount::FormEditStandardAccount(QWidget* parent)
|
||||
: FormAccountDetails(qApp->icons()->fromTheme(QSL("rssguard")), parent) {}
|
||||
|
||||
void FormEditStandardAccount::apply() {
|
||||
applyInternal<StandardServiceRoot>();
|
||||
accept();
|
||||
}
|
||||
|
||||
void FormEditStandardAccount::setEditableAccount(ServiceRoot* editable_account) {
|
||||
FormAccountDetails::setEditableAccount(editable_account);
|
||||
}
|
19
src/librssguard/services/standard/gui/formeditstandardaccount.h
Executable file
19
src/librssguard/services/standard/gui/formeditstandardaccount.h
Executable file
@ -0,0 +1,19 @@
|
||||
// For license of this file, see <project-root-folder>/LICENSE.md.
|
||||
|
||||
#ifndef FORMEDITSTANDARDACCOUNT_H
|
||||
#define FORMEDITSTANDARDACCOUNT_H
|
||||
|
||||
#include "services/abstract/gui/formaccountdetails.h"
|
||||
|
||||
class FormEditStandardAccount : public FormAccountDetails {
|
||||
public:
|
||||
explicit FormEditStandardAccount(QWidget* parent = nullptr);
|
||||
|
||||
protected slots:
|
||||
virtual void apply();
|
||||
|
||||
protected:
|
||||
virtual void setEditableAccount(ServiceRoot* editable_account);
|
||||
};
|
||||
|
||||
#endif // FORMEDITSTANDARDACCOUNT_H
|
@ -5,6 +5,7 @@
|
||||
#include "definitions/definitions.h"
|
||||
#include "miscellaneous/application.h"
|
||||
#include "miscellaneous/databasequeries.h"
|
||||
#include "services/standard/gui/formeditstandardaccount.h"
|
||||
#include "services/standard/standardserviceroot.h"
|
||||
|
||||
QString StandardServiceEntryPoint::name() const {
|
||||
@ -28,20 +29,9 @@ QString StandardServiceEntryPoint::code() const {
|
||||
}
|
||||
|
||||
ServiceRoot* StandardServiceEntryPoint::createNewRoot() const {
|
||||
// Switch DB.
|
||||
QSqlDatabase database = qApp->database()->connection(QSL("StandardServiceEntryPoint"));
|
||||
bool ok;
|
||||
int new_id = DatabaseQueries::createBaseAccount(database, code(), &ok);
|
||||
FormEditStandardAccount form_acc(qApp->mainFormWidget());
|
||||
|
||||
if (ok) {
|
||||
auto* root = new StandardServiceRoot();
|
||||
|
||||
root->setAccountId(new_id);
|
||||
return root;
|
||||
}
|
||||
else {
|
||||
return nullptr;
|
||||
}
|
||||
return form_acc.addEditAccount<StandardServiceRoot>();
|
||||
}
|
||||
|
||||
QList<ServiceRoot*> StandardServiceEntryPoint::initializeSubtree() const {
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "services/abstract/importantnode.h"
|
||||
#include "services/abstract/labelsnode.h"
|
||||
#include "services/abstract/recyclebin.h"
|
||||
#include "services/standard/gui/formeditstandardaccount.h"
|
||||
#include "services/standard/gui/formstandardcategorydetails.h"
|
||||
#include "services/standard/gui/formstandardfeeddetails.h"
|
||||
#include "services/standard/gui/formstandardimportexport.h"
|
||||
@ -87,13 +88,20 @@ QString StandardServiceRoot::code() const {
|
||||
}
|
||||
|
||||
bool StandardServiceRoot::canBeEdited() const {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool StandardServiceRoot::canBeDeleted() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool StandardServiceRoot::editViaGui() {
|
||||
FormEditStandardAccount form_pointer(qApp->mainFormWidget());
|
||||
|
||||
form_pointer.addEditAccount(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool StandardServiceRoot::deleteViaGui() {
|
||||
return ServiceRoot::deleteViaGui();
|
||||
}
|
||||
|
@ -29,6 +29,7 @@ class StandardServiceRoot : public ServiceRoot {
|
||||
|
||||
bool canBeEdited() const;
|
||||
bool canBeDeleted() const;
|
||||
bool editViaGui();
|
||||
bool deleteViaGui();
|
||||
bool supportsFeedAdding() const;
|
||||
bool supportsCategoryAdding() const;
|
||||
|
@ -17,16 +17,7 @@ FormEditTtRssAccount::FormEditTtRssAccount(QWidget* parent)
|
||||
}
|
||||
|
||||
void FormEditTtRssAccount::apply() {
|
||||
FormAccountDetails::apply();
|
||||
|
||||
bool editing_account = true;
|
||||
|
||||
if (m_account == nullptr) {
|
||||
// We want to confirm newly created account.
|
||||
// So save new account into DB, setup its properties.
|
||||
m_account = new TtRssServiceRoot();
|
||||
editing_account = false;
|
||||
}
|
||||
bool editing_account = !applyInternal<TtRssServiceRoot>();
|
||||
|
||||
account<TtRssServiceRoot>()->network()->setUrl(m_details->m_ui.m_txtUrl->lineEdit()->text());
|
||||
account<TtRssServiceRoot>()->network()->setUsername(m_details->m_ui.m_txtUsername->lineEdit()->text());
|
||||
@ -37,7 +28,7 @@ void FormEditTtRssAccount::apply() {
|
||||
account<TtRssServiceRoot>()->network()->setForceServerSideUpdate(m_details->m_ui.m_checkServerSideUpdate->isChecked());
|
||||
account<TtRssServiceRoot>()->network()->setDownloadOnlyUnreadMessages(m_details->m_ui.m_checkDownloadOnlyUnreadMessages->isChecked());
|
||||
|
||||
account<TtRssServiceRoot>()->saveAccountDataToDatabase();
|
||||
account<TtRssServiceRoot>()->saveAccountDataToDatabase(!editing_account);
|
||||
accept();
|
||||
|
||||
if (editing_account) {
|
||||
|
@ -13,7 +13,6 @@ TtRssAccountDetails::TtRssAccountDetails(QWidget* parent) : QWidget(parent) {
|
||||
m_ui.m_lblTestResult->label()->setWordWrap(true);
|
||||
m_ui.m_lblServerSideUpdateInformation->setText(tr("Leaving this option on causes that updates "
|
||||
"of feeds will be probably much slower and may time-out often."));
|
||||
m_ui.m_lblDescription->setText(tr("Note that at least API level %1 is required.").arg(TTRSS_MINIMAL_API_LEVEL));
|
||||
m_ui.m_txtHttpUsername->lineEdit()->setPlaceholderText(tr("HTTP authentication username"));
|
||||
m_ui.m_txtHttpPassword->lineEdit()->setPlaceholderText(tr("HTTP authentication password"));
|
||||
m_ui.m_txtPassword->lineEdit()->setPlaceholderText(tr("Password for your TT-RSS account"));
|
||||
@ -23,7 +22,6 @@ TtRssAccountDetails::TtRssAccountDetails(QWidget* parent) : QWidget(parent) {
|
||||
tr("No test done yet."),
|
||||
tr("Here, results of connection test are shown."));
|
||||
|
||||
GuiUtilities::setLabelAsNotice(*m_ui.m_lblDescription, true);
|
||||
GuiUtilities::setLabelAsNotice(*m_ui.m_lblServerSideUpdateInformation, true);
|
||||
|
||||
setTabOrder(m_ui.m_txtUrl->lineEdit(), m_ui.m_checkDownloadOnlyUnreadMessages);
|
||||
|
@ -11,21 +11,48 @@
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="2" column="0" colspan="2">
|
||||
<item row="0" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="m_lblTitle">
|
||||
<property name="text">
|
||||
<string>URL</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_txtUrl</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="LineEditWithStatus" name="m_txtUrl" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="m_checkDownloadOnlyUnreadMessages">
|
||||
<property name="text">
|
||||
<string>Download only unread messages</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="m_checkServerSideUpdate">
|
||||
<property name="text">
|
||||
<string>Force execution of server-side update when updating feeds from RSS Guard</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="2">
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="QLabel" name="m_lblServerSideUpdateInformation">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QGroupBox" name="m_gbAuthentication">
|
||||
<property name="toolTip">
|
||||
<string>Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.</string>
|
||||
@ -76,7 +103,7 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="2">
|
||||
<item row="5" column="0" colspan="2">
|
||||
<widget class="QGroupBox" name="m_gbHttpAuthentication">
|
||||
<property name="toolTip">
|
||||
<string>Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.</string>
|
||||
@ -130,14 +157,14 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<item row="6" column="0">
|
||||
<widget class="QPushButton" name="m_btnTestSetup">
|
||||
<property name="text">
|
||||
<string>&Test setup</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<item row="6" column="1">
|
||||
<widget class="LabelWithStatus" name="m_lblTestResult" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
@ -150,7 +177,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0" colspan="2">
|
||||
<item row="7" column="0" colspan="2">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
@ -163,43 +190,6 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="m_lblTitle">
|
||||
<property name="text">
|
||||
<string>URL</string>
|
||||
</property>
|
||||
<property name="buddy">
|
||||
<cstring>m_txtUrl</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="LineEditWithStatus" name="m_txtUrl" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="2">
|
||||
<widget class="QLabel" name="m_lblDescription">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QLabel" name="m_lblServerSideUpdateInformation">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
|
@ -211,10 +211,10 @@ TtRssNetworkFactory* TtRssServiceRoot::network() const {
|
||||
return m_network;
|
||||
}
|
||||
|
||||
void TtRssServiceRoot::saveAccountDataToDatabase() {
|
||||
void TtRssServiceRoot::saveAccountDataToDatabase(bool creating_new) {
|
||||
QSqlDatabase database = qApp->database()->connection(metaObject()->className());
|
||||
|
||||
if (accountId() != NO_PARENT_CATEGORY) {
|
||||
if (!creating_new) {
|
||||
// We are overwritting previously saved data.
|
||||
if (DatabaseQueries::overwriteTtRssAccount(database, m_network->username(), m_network->password(),
|
||||
m_network->authIsUsed(), m_network->authUsername(),
|
||||
@ -226,19 +226,12 @@ void TtRssServiceRoot::saveAccountDataToDatabase() {
|
||||
}
|
||||
}
|
||||
else {
|
||||
bool saved;
|
||||
int id_to_assign = DatabaseQueries::createBaseAccount(database, code(), &saved);
|
||||
|
||||
if (saved) {
|
||||
if (DatabaseQueries::createTtRssAccount(database, id_to_assign, m_network->username(),
|
||||
m_network->password(), m_network->authIsUsed(),
|
||||
m_network->authUsername(), m_network->authPassword(),
|
||||
m_network->url(), m_network->forceServerSideUpdate(),
|
||||
m_network->downloadOnlyUnreadMessages())) {
|
||||
setId(id_to_assign);
|
||||
setAccountId(id_to_assign);
|
||||
updateTitle();
|
||||
}
|
||||
if (DatabaseQueries::createTtRssAccount(database, accountId(), m_network->username(),
|
||||
m_network->password(), m_network->authIsUsed(),
|
||||
m_network->authUsername(), m_network->authPassword(),
|
||||
m_network->url(), m_network->forceServerSideUpdate(),
|
||||
m_network->downloadOnlyUnreadMessages())) {
|
||||
updateTitle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ class TtRssServiceRoot : public ServiceRoot, public CacheForServiceRoot {
|
||||
// Access to network.
|
||||
TtRssNetworkFactory* network() const;
|
||||
|
||||
void saveAccountDataToDatabase();
|
||||
void saveAccountDataToDatabase(bool creating_new);
|
||||
void updateTitle();
|
||||
|
||||
protected:
|
||||
|
Loading…
x
Reference in New Issue
Block a user