Added needed classes.

This commit is contained in:
Martin Rotter 2016-07-27 06:26:07 +02:00
parent 9cb5c94b92
commit e02ceb82bc
27 changed files with 1867 additions and 20 deletions

View File

@ -268,7 +268,14 @@ HEADERS += src/core/feeddownloader.h \
src/network-web/googlesuggest.h \
src/gui/discoverfeedsbutton.h \
src/gui/settings/settingspanel.h \
src/gui/settings/settingsgeneral.h
src/gui/settings/settingsgeneral.h \
src/gui/settings/settingsdatabase.h \
src/gui/settings/settingsshortcuts.h \
src/gui/settings/settingsgui.h \
src/gui/settings/settingslocalization.h \
src/gui/settings/settingsbrowsermail.h \
src/gui/settings/settingsfeedsmessages.h \
src/gui/settings/settingsdownloads.h
SOURCES += src/core/feeddownloader.cpp \
src/core/feedsmodel.cpp \
@ -381,7 +388,14 @@ SOURCES += src/core/feeddownloader.cpp \
src/network-web/googlesuggest.cpp \
src/gui/discoverfeedsbutton.cpp \
src/gui/settings/settingspanel.cpp \
src/gui/settings/settingsgeneral.cpp
src/gui/settings/settingsgeneral.cpp \
src/gui/settings/settingsdatabase.cpp \
src/gui/settings/settingsshortcuts.cpp \
src/gui/settings/settingsgui.cpp \
src/gui/settings/settingslocalization.cpp \
src/gui/settings/settingsbrowsermail.cpp \
src/gui/settings/settingsfeedsmessages.cpp \
src/gui/settings/settingsdownloads.cpp
FORMS += \
src/gui/toolbareditor.ui \
@ -400,7 +414,14 @@ FORMS += \
src/services/standard/gui/formstandardcategorydetails.ui \
src/services/standard/gui/formstandardimportexport.ui \
src/services/tt-rss/gui/formeditaccount.ui \
src/gui/settings/settingsgeneral.ui
src/gui/settings/settingsgeneral.ui \
src/gui/settings/settingsdatabase.ui \
src/gui/settings/settingsshortcuts.ui \
src/gui/settings/settingsgui.ui \
src/gui/settings/settingslocalization.ui \
src/gui/settings/settingsbrowsermail.ui \
src/gui/settings/settingsfeedsmessages.ui \
src/gui/settings/settingsdownloads.ui
TRANSLATIONS += localization/qtbase-cs.ts \
localization/qtbase-da.ts \

View File

@ -88,7 +88,7 @@
<item row="0" column="1">
<widget class="QStackedWidget" name="m_stackedSettings">
<property name="currentIndex">
<number>0</number>
<number>7</number>
</property>
<widget class="QWidget" name="m_pageGeneral">
<layout class="QFormLayout" name="formLayout_5">

View File

@ -0,0 +1,14 @@
#include "settingsbrowsermail.h"
#include "ui_settingsbrowsermail.h"
SettingsBrowserMail::SettingsBrowserMail(QWidget *parent) :
QWidget(parent),
ui(new Ui::SettingsBrowserMail)
{
ui->setupUi(this);
}
SettingsBrowserMail::~SettingsBrowserMail()
{
delete ui;
}

View File

@ -0,0 +1,22 @@
#ifndef SETTINGSBROWSERMAIL_H
#define SETTINGSBROWSERMAIL_H
#include <QWidget>
namespace Ui {
class SettingsBrowserMail;
}
class SettingsBrowserMail : public QWidget
{
Q_OBJECT
public:
explicit SettingsBrowserMail(QWidget *parent = 0);
~SettingsBrowserMail();
private:
Ui::SettingsBrowserMail *ui;
};
#endif // SETTINGSBROWSERMAIL_H

View File

@ -0,0 +1,382 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SettingsBrowserMail</class>
<widget class="QWidget" name="SettingsBrowserMail">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>658</width>
<height>200</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<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>
<widget class="QTabWidget" name="m_tabBrowserProxy">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="m_tabExternalBrowser">
<attribute name="title">
<string>External web browser</string>
</attribute>
<layout class="QFormLayout" name="formLayout_17">
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="m_grpCustomExternalBrowser">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If unchecked, then default system-wide web browser is used.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="title">
<string>Use custom external web browser</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QFormLayout" name="formLayout_12">
<item row="0" column="0">
<widget class="QLabel" name="m_lblExternalBrowserExecutable">
<property name="text">
<string>Web browser executable</string>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<item>
<widget class="QLineEdit" name="m_txtExternalBrowserExecutable">
<property name="readOnly">
<bool>true</bool>
</property>
<property name="placeholderText">
<string>Executable file of web browser</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="m_btnExternalBrowserExecutable">
<property name="text">
<string>&amp;Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="m_lblExternalBrowserArguments">
<property name="text">
<string>Executable parameters</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="m_txtExternalBrowserArguments">
<property name="placeholderText">
<string>Parameters to executable</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="m_lblExternalBrowserPreset">
<property name="text">
<string>Use sample arguments for</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="m_cmbExternalBrowserPreset">
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
<item>
<property name="text">
<string>Select browser</string>
</property>
</item>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label">
<property name="text">
<string>Note that &quot;%1&quot; (without quotation marks) is placeholder for URL of selected message.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>External e-mail client</string>
</attribute>
<layout class="QFormLayout" name="formLayout_22">
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="m_grpCustomExternalEmail">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If unchecked, then default system-wide web browser is used.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="title">
<string>Use custom external e-mail client</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QFormLayout" name="formLayout_21">
<item row="0" column="0">
<widget class="QLabel" name="m_lblExternalEmailExecutable">
<property name="text">
<string>E-mail client executable</string>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_15">
<item>
<widget class="QLineEdit" name="m_txtExternalEmailExecutable">
<property name="readOnly">
<bool>true</bool>
</property>
<property name="placeholderText">
<string>Executable file of e-mail client</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="m_btnExternalEmailExecutable">
<property name="text">
<string>&amp;Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="m_lblExternalEmailArguments">
<property name="text">
<string>Executable parameters</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="m_txtExternalEmailArguments">
<property name="placeholderText">
<string>Parameters to executable</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="m_lblExternalEmailPreset">
<property name="text">
<string>Use sample arguments for</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="m_cmbExternalEmailPreset">
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
<item>
<property name="text">
<string>Select client</string>
</property>
</item>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="m_lblExternalEmailInfo">
<property name="text">
<string>Placeholders:
• %1 - title of selected message,
• %2 - body of selected message.</string>
</property>
<property name="indent">
<number>20</number>
</property>
</widget>
</item>
</layout>
</widget>
</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>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,25 @@
#include "gui/settings/settingsdatabase.h"
SettingsDatabase::SettingsDatabase(QWidget *parent)
: QWidget(parent), m_ui(new Ui::SettingsDatabase) {
m_ui->setupUi(this);
}
SettingsDatabase::~SettingsDatabase() {
delete m_ui;
}
void SettingsDatabase::loadSettings() {
onBeginLoadSettings();
onEndLoadSettings();
}
void SettingsDatabase::saveSettings() {
onBeginSaveSettings();
onEndSaveSettings();
}

View File

@ -0,0 +1,23 @@
#ifndef SETTINGSDATABASE_H
#define SETTINGSDATABASE_H
#include "gui/settings/settingspanel.h"
#include "ui_settingsdatabase.h"
class SettingsDatabase : public SettingsPanel {
Q_OBJECT
public:
explicit SettingsDatabase(QWidget *parent = 0);
virtual ~SettingsDatabase();
void loadSettings();
void saveSettings();
private:
Ui::SettingsDatabase *m_ui;
};
#endif // SETTINGSDATABASE_H

View File

@ -0,0 +1,291 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SettingsDatabase</class>
<widget class="QWidget" name="SettingsDatabase">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>558</width>
<height>282</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QFormLayout" name="formLayout">
<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" colspan="2">
<widget class="QLabel" name="m_lblDataStorageWarning">
<property name="text">
<string>WARNING: Note that switching to another data storage type will NOT copy existing your data from currently active data storage to newly selected one.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="m_lblDatabaseDriver">
<property name="text">
<string>Database driver</string>
</property>
<property name="buddy">
<cstring>m_cmbDatabaseDriver</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="m_cmbDatabaseDriver"/>
</item>
<item row="2" column="0" colspan="2">
<widget class="QStackedWidget" name="m_stackedDatabaseDriver">
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="m_pageSqlite">
<layout class="QFormLayout" name="formLayout_15">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<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" colspan="2">
<widget class="QCheckBox" name="m_checkSqliteUseInMemoryDatabase">
<property name="text">
<string>Use in-memory database as the working database</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="m_lblSqliteInMemoryWarnings">
<property name="text">
<string>Usage of in-memory working database has several advantages and pitfalls. Make sure that you are familiar with these before you turn this feature on. Advantages:
&lt;ul&gt;
&lt;li&gt;higher speed for feed/message manipulations (especially with thousands of messages displayed),&lt;/li&gt;
&lt;li&gt;whole database stored in RAM, thus your hard drive can rest more.&lt;/li&gt;
&lt;/ul&gt;
Disadvantages:
&lt;ul&gt;
&lt;li&gt;if application crashes, your changes from last session are lost,&lt;/li&gt;
&lt;li&gt;application startup and shutdown can take little longer (max. 2 seconds).&lt;/li&gt;
&lt;/ul&gt;
Authors of this application are NOT responsible for lost data.</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="indent">
<number>20</number>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="m_pageMysql">
<layout class="QFormLayout" name="formLayout_16">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<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">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Hostname</string>
</property>
<property name="buddy">
<cstring>m_txtMysqlHostname</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="LineEditWithStatus" name="m_txtMysqlHostname" native="true"/>
</item>
<item>
<widget class="QLabel" name="label_6">
<property name="text">
<string>Port</string>
</property>
<property name="buddy">
<cstring>m_spinMysqlPort</cstring>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="m_spinMysqlPort">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>65536</number>
</property>
<property name="value">
<number>3306</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Username</string>
</property>
<property name="buddy">
<cstring>m_txtMysqlUsername</cstring>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="LineEditWithStatus" name="m_txtMysqlUsername" native="true"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Password</string>
</property>
<property name="buddy">
<cstring>m_txtMysqlPassword</cstring>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="LineEditWithStatus" name="m_txtMysqlPassword" native="true"/>
</item>
<item row="5" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QPushButton" name="m_btnMysqlTestSetup">
<property name="text">
<string>Test setup</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="LabelWithStatus" name="m_lblMysqlTestResult" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="6" column="0" colspan="2">
<widget class="QLabel" name="m_lblMysqlInfo">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Note that speed of used MySQL server and latency of used connection medium HEAVILY influences the final performance of this application. Using slow database connections leads to bad performance when browsing feeds or messages.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="margin">
<number>10</number>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="m_checkMysqlShowPassword">
<property name="text">
<string>&amp;Show password</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="LineEditWithStatus" name="m_txtMysqlDatabase" native="true"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Working database</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>LabelWithStatus</class>
<extends>QWidget</extends>
<header>labelwithstatus.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>LineEditWithStatus</class>
<extends>QWidget</extends>
<header>lineeditwithstatus.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,14 @@
#include "settingsdownloads.h"
#include "ui_settingsdownloads.h"
SettingsDownloads::SettingsDownloads(QWidget *parent) :
QWidget(parent),
ui(new Ui::SettingsDownloads)
{
ui->setupUi(this);
}
SettingsDownloads::~SettingsDownloads()
{
delete ui;
}

View File

@ -0,0 +1,22 @@
#ifndef SETTINGSDOWNLOADS_H
#define SETTINGSDOWNLOADS_H
#include <QWidget>
namespace Ui {
class SettingsDownloads;
}
class SettingsDownloads : public QWidget
{
Q_OBJECT
public:
explicit SettingsDownloads(QWidget *parent = 0);
~SettingsDownloads();
private:
Ui::SettingsDownloads *ui;
};
#endif // SETTINGSDOWNLOADS_H

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SettingsDownloads</class>
<widget class="QWidget" name="SettingsDownloads">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>758</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QCheckBox" name="m_checkOpenManagerWhenDownloadStarts">
<property name="text">
<string>Open download manager when new download is started</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Target directory for downloaded files</string>
</property>
<layout class="QFormLayout" name="formLayout_20">
<item row="1" column="0">
<widget class="QRadioButton" name="m_rbDownloadsAskEachFile">
<property name="text">
<string>Ask for each individual downloaded file</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QRadioButton" name="m_rbDownloadsSaveAllIntoDirectory">
<property name="text">
<string>Save all downloaded files to</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="m_txtDownloadsTargetDirectory">
<property name="readOnly">
<bool>true</bool>
</property>
<property name="placeholderText">
<string>Target directory where all downloaded files are saved</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="m_btnDownloadsTargetDirectory">
<property name="text">
<string>&amp;Browse</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,14 @@
#include "settingsfeedsmessages.h"
#include "ui_settingsfeedsmessages.h"
SettingsFeedsMessages::SettingsFeedsMessages(QWidget *parent) :
QWidget(parent),
ui(new Ui::SettingsFeedsMessages)
{
ui->setupUi(this);
}
SettingsFeedsMessages::~SettingsFeedsMessages()
{
delete ui;
}

View File

@ -0,0 +1,22 @@
#ifndef SETTINGSFEEDSMESSAGES_H
#define SETTINGSFEEDSMESSAGES_H
#include <QWidget>
namespace Ui {
class SettingsFeedsMessages;
}
class SettingsFeedsMessages : public QWidget
{
Q_OBJECT
public:
explicit SettingsFeedsMessages(QWidget *parent = 0);
~SettingsFeedsMessages();
private:
Ui::SettingsFeedsMessages *ui;
};
#endif // SETTINGSFEEDSMESSAGES_H

View File

@ -0,0 +1,221 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SettingsFeedsMessages</class>
<widget class="QWidget" name="SettingsFeedsMessages">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>686</width>
<height>208</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<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>
<widget class="QTabWidget" name="m_tabFeedsMessages">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="m_tabFeeds">
<attribute name="title">
<string>Feeds &amp;&amp; categories</string>
</attribute>
<layout class="QFormLayout" name="formLayout_10">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="m_checkUpdateAllFeedsOnStartup">
<property name="text">
<string>Update all feed on application startup</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="m_checkAutoUpdate">
<property name="text">
<string>Auto-update all feeds every</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Feed connection timeout</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="m_spinFeedUpdateTimeout">
<property name="toolTip">
<string>Connection timeout is time interval which is reserved for downloading new messages for the feed. If this time interval elapses, then download process is aborted.</string>
</property>
<property name="suffix">
<string> ms</string>
</property>
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>45000</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Message count format in feed list</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="m_cmbCountsFeedList">
<property name="toolTip">
<string notr="true"/>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QLabel" name="label_9">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Enter format for count of messages displayed next to each feed/category in feed list. Use &quot;%all&quot; and &quot;%unread&quot; strings which are placeholders for the actual count of all (or unread) messages.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="TimeSpinBox" name="m_spinAutoUpdateInterval">
<property name="enabled">
<bool>false</bool>
</property>
<property name="readOnly">
<bool>false</bool>
</property>
<property name="accelerated">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="m_tabMessages">
<attribute name="title">
<string>Messages</string>
</attribute>
<layout class="QFormLayout" name="formLayout_11">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="0">
<widget class="QCheckBox" name="m_checkRemoveReadMessagesOnExit">
<property name="text">
<string>Remove all read messages from all feeds on application exit</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="m_checkKeppMessagesInTheMiddle">
<property name="text">
<string>Keep message selection in the middle of the message list viewport</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="m_checkMessagesDateTimeFormat">
<property name="text">
<string>Use custom date/time format (overrides format loaded from active localization)</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="m_cmbMessagesDateTimeFormat"/>
</item>
<item row="4" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>Internal message browser fonts</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_16">
<item>
<widget class="QLabel" name="m_lblMessagesFont">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="m_btnChangeMessagesFont">
<property name="text">
<string>&amp;Change font</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<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>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>TimeSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header>timespinbox.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -1,3 +1,20 @@
// This file is part of RSS Guard.
//
// Copyright (C) 2011-2016 by Martin Rotter <rotter.martinos@gmail.com>
//
// RSS Guard is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// RSS Guard is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with RSS Guard. If not, see <http://www.gnu.org/licenses/>.
#include "gui/settings/settingsgeneral.h"
#include "miscellaneous/systemfactory.h"
@ -15,6 +32,8 @@ SettingsGeneral::~SettingsGeneral() {
}
void SettingsGeneral::loadSettings() {
onBeginLoadSettings();
m_ui->m_checkForUpdatesOnStart->setChecked(settings()->value(GROUP(General), SETTING(General::UpdateOnStartup)).toBool());
// Load auto-start status.
@ -42,10 +61,12 @@ void SettingsGeneral::loadSettings() {
m_ui->m_checkRemoveTrolltechJunk->setVisible(false);
#endif
SettingsPanel::loadSettings();
onEndLoadSettings();
}
void SettingsGeneral::saveSettings() {
onBeginSaveSettings();
// If auto-start feature is available and user wants to turn it on, then turn it on.
if (m_ui->m_checkAutostart->isChecked()) {
qApp->system()->setAutoStartStatus(SystemFactory::Enabled);
@ -57,5 +78,5 @@ void SettingsGeneral::saveSettings() {
settings()->setValue(GROUP(General), General::UpdateOnStartup, m_ui->m_checkForUpdatesOnStart->isChecked());
settings()->setValue(GROUP(General), General::RemoveTrolltechJunk, m_ui->m_checkRemoveTrolltechJunk->isChecked());
SettingsPanel::saveSettings();
onEndSaveSettings();
}

View File

@ -1,3 +1,20 @@
// This file is part of RSS Guard.
//
// Copyright (C) 2011-2016 by Martin Rotter <rotter.martinos@gmail.com>
//
// RSS Guard is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// RSS Guard is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with RSS Guard. If not, see <http://www.gnu.org/licenses/>.
#ifndef SETTINGSGENERAL_H
#define SETTINGSGENERAL_H

View File

@ -0,0 +1,14 @@
#include "settingsgui.h"
#include "ui_settingsgui.h"
SettingsGui::SettingsGui(QWidget *parent) :
QWidget(parent),
ui(new Ui::SettingsGui)
{
ui->setupUi(this);
}
SettingsGui::~SettingsGui()
{
delete ui;
}

22
src/gui/settings/settingsgui.h Executable file
View File

@ -0,0 +1,22 @@
#ifndef SETTINGSGUI_H
#define SETTINGSGUI_H
#include <QWidget>
namespace Ui {
class SettingsGui;
}
class SettingsGui : public QWidget
{
Q_OBJECT
public:
explicit SettingsGui(QWidget *parent = 0);
~SettingsGui();
private:
Ui::SettingsGui *ui;
};
#endif // SETTINGSGUI_H

393
src/gui/settings/settingsgui.ui Executable file
View File

@ -0,0 +1,393 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SettingsGui</class>
<widget class="QWidget" name="SettingsGui">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>670</width>
<height>394</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<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>
<widget class="QTabWidget" name="m_tabUi">
<property name="tabPosition">
<enum>QTabWidget::North</enum>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="m_tabIconSkin">
<attribute name="title">
<string>Icons &amp;&amp; skins</string>
</attribute>
<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>
<widget class="QScrollArea" name="m_scrollIconSkins">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_2">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>664</width>
<height>368</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Icons</string>
</property>
<layout class="QFormLayout" name="formLayout_8">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="0" column="0">
<widget class="QLabel" name="m_lblIconTheme">
<property name="text">
<string>Icon theme</string>
</property>
<property name="buddy">
<cstring>m_cmbIconTheme</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="m_cmbIconTheme"/>
</item>
</layout>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Skins</string>
</property>
<layout class="QFormLayout" name="formLayout_9">
<item row="0" column="0" colspan="2">
<widget class="QTreeWidget" name="m_treeSkins">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="indentation">
<number>0</number>
</property>
<property name="rootIsDecorated">
<bool>false</bool>
</property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
<property name="expandsOnDoubleClick">
<bool>false</bool>
</property>
<attribute name="headerMinimumSectionSize">
<number>80</number>
</attribute>
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="m_lblActiveCaption">
<property name="text">
<string>Active skin:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="m_lblActiveContents">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="m_lblSelectedCaption">
<property name="text">
<string>Selected skin:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="m_lblSelectedContents">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="m_tabNotifications">
<attribute name="title">
<string>Tray area &amp;&amp; notifications</string>
</attribute>
<layout class="QFormLayout" name="formLayout_3">
<item row="2" column="0" colspan="2">
<widget class="QGroupBox" name="m_grpTray">
<property name="title">
<string>Tray icon</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QFormLayout" name="formLayout_2">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<item row="1" column="0">
<widget class="QCheckBox" name="m_checkHideWhenMinimized">
<property name="text">
<string>Hide main window when it is minimized</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="m_checkHidden">
<property name="text">
<string>Start application hidden</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="m_checkEnableNotifications">
<property name="text">
<string>Enable popup balloon tooltips</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="m_tabTabs">
<attribute name="title">
<string>Tabs</string>
</attribute>
<layout class="QFormLayout" name="formLayout_7">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
</property>
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="m_checkNewTabDoubleClick">
<property name="text">
<string>Open new tabs with left mouse button double-click on tab bar</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="m_hideTabBarIfOneTabVisible">
<property name="text">
<string>Hide tab bar if just one tab is visible</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QGroupBox" name="m_grbCloseTabs">
<property name="title">
<string>Close tabs with</string>
</property>
<layout class="QFormLayout" name="formLayout_13">
<item row="0" column="0">
<widget class="QCheckBox" name="m_checkCloseTabsDoubleClick">
<property name="text">
<string>Right mouse button double-click</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="m_checkCloseTabsMiddleClick">
<property name="text">
<string>Middle mouse button single-click</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="m_tabToolBars">
<attribute name="title">
<string>Toolbars</string>
</attribute>
<layout class="QFormLayout" name="formLayout_18">
<item row="0" column="1">
<widget class="QComboBox" name="m_cmbToolbarButtonStyle"/>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="m_cmbSelectToolBar">
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>Toolbar for feeds list</string>
</property>
</item>
<item>
<property name="text">
<string>Toolbar for messages list</string>
</property>
</item>
<item>
<property name="text">
<string>Statusbar</string>
</property>
</item>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QStackedWidget" name="m_stackedToolbars">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="m_pageFeedsToolbar">
<layout class="QHBoxLayout" name="horizontalLayout_13">
<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>
<widget class="ToolBarEditor" name="m_editorFeedsToolbar" native="true"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="m_pageMessagesToolbar">
<layout class="QHBoxLayout" name="horizontalLayout_14">
<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>
<widget class="ToolBarEditor" name="m_editorMessagesToolbar" native="true"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="m_pageStatusbar">
<layout class="QHBoxLayout" name="horizontalLayout_18">
<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>
<widget class="ToolBarEditor" name="m_editorStatusbar" native="true"/>
</item>
</layout>
</widget>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Toolbar button style</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Select toolbar to edit</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>ToolBarEditor</class>
<extends>QWidget</extends>
<header>toolbareditor.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,14 @@
#include "settingslocalization.h"
#include "ui_settingslocalization.h"
SettingsLocalization::SettingsLocalization(QWidget *parent) :
QWidget(parent),
ui(new Ui::SettingsLocalization)
{
ui->setupUi(this);
}
SettingsLocalization::~SettingsLocalization()
{
delete ui;
}

View File

@ -0,0 +1,22 @@
#ifndef SETTINGSLOCALIZATION_H
#define SETTINGSLOCALIZATION_H
#include <QWidget>
namespace Ui {
class SettingsLocalization;
}
class SettingsLocalization : public QWidget
{
Q_OBJECT
public:
explicit SettingsLocalization(QWidget *parent = 0);
~SettingsLocalization();
private:
Ui::SettingsLocalization *ui;
};
#endif // SETTINGSLOCALIZATION_H

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SettingsLocalization</class>
<widget class="QWidget" name="SettingsLocalization">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<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>
<widget class="QTreeWidget" name="m_treeLanguages">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="indentation">
<number>0</number>
</property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
<property name="allColumnsShowFocus">
<bool>true</bool>
</property>
<property name="expandsOnDoubleClick">
<bool>false</bool>
</property>
<property name="columnCount">
<number>0</number>
</property>
<attribute name="headerMinimumSectionSize">
<number>80</number>
</attribute>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -15,26 +15,36 @@
// You should have received a copy of the GNU General Public License
// along with RSS Guard. If not, see <http://www.gnu.org/licenses/>.
#include "gui/settings/settingspanel.h"
#include "miscellaneous/settings.h"
SettingsPanel::SettingsPanel(Settings *settings, QWidget *parent) : QWidget(parent), m_settings(settings) {
SettingsPanel::SettingsPanel(Settings *settings, QWidget *parent)
: QWidget(parent), m_isDirty(false), m_isLoading(false), m_settings(settings) {
}
void SettingsPanel::loadSettings() {
void SettingsPanel::onBeginLoadSettings() {
m_isLoading = true;
}
void SettingsPanel::onEndLoadSettings() {
m_isLoading = false;
setIsDirty(false);
}
void SettingsPanel::saveSettings() {
void SettingsPanel::onBeginSaveSettings() {
}
void SettingsPanel::onEndSaveSettings() {
setIsDirty(false);
}
void SettingsPanel::dirtifySettings() {
setIsDirty(true);
emit settingsChanged();
if (!m_isLoading) {
setIsDirty(true);
emit settingsChanged();
}
}
bool SettingsPanel::isDirty() const {

View File

@ -15,7 +15,6 @@
// You should have received a copy of the GNU General Public License
// along with RSS Guard. If not, see <http://www.gnu.org/licenses/>.
#ifndef SETTINGSPANEL_H
#define SETTINGSPANEL_H
@ -30,15 +29,14 @@ class SettingsPanel : public QWidget {
public:
explicit SettingsPanel(Settings *settings, QWidget *parent = 0);
// Call this base implementation in the end of your subclass implementation.
virtual void loadSettings();
// Call this base implementation in the end of your subclass implementation.
virtual void saveSettings();
virtual void loadSettings() = 0;
virtual void saveSettings() = 0;
protected:
// Sets this settings panel as dirty (some settings are changed) and emits the signal.
void dirtifySettings();
void onBeginLoadSettings();
void onEndLoadSettings();
void onBeginSaveSettings();
void onEndSaveSettings();
// These methods should not be probably called by subclasses.
bool isDirty() const;
@ -47,11 +45,17 @@ class SettingsPanel : public QWidget {
// Settings to use to save/load.
Settings *settings() const;
protected slots:
// Sets this settings panel as dirty (some settings are changed) and emits the signal.
// NOTE: This will be probably called by subclasses when user changes some stuff.
void dirtifySettings();
signals:
void settingsChanged();
private:
bool m_isDirty;
bool m_isLoading;
Settings *m_settings;
};

View File

@ -0,0 +1,25 @@
#include "gui/settings/settingsshortcuts.h"
SettingsShortcuts::SettingsShortcuts(QWidget *parent)
: QWidget(parent), m_ui(new Ui::SettingsShortcuts) {
m_ui->setupUi(this);
}
SettingsShortcuts::~SettingsShortcuts() {
delete m_ui;
}
void SettingsShortcuts::loadSettings() {
onBeginLoadSettings();
onEndLoadSettings();
}
void SettingsShortcuts::saveSettings() {
onBeginSaveSettings();
onEndSaveSettings();
}

View File

@ -0,0 +1,23 @@
#ifndef SETTINGSSHORTCUTS_H
#define SETTINGSSHORTCUTS_H
#include "gui/settings/settingspanel.h"
#include "ui_settingsshortcuts.h"
class SettingsShortcuts : public SettingsPanel {
Q_OBJECT
public:
explicit SettingsShortcuts(QWidget *parent = 0);
virtual ~SettingsShortcuts();
void loadSettings();
void saveSettings();
private:
Ui::SettingsShortcuts *m_ui;
};
#endif // SETTINGSSHORTCUTS_H

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SettingsShortcuts</class>
<widget class="QWidget" name="SettingsShortcuts">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>785</width>
<height>526</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<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>
<widget class="QScrollArea" name="m_scrollShortcuts">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="m_scrollShortcutsContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>785</width>
<height>526</height>
</rect>
</property>
<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>
<widget class="DynamicShortcutsWidget" name="m_shortcuts" native="true"/>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>DynamicShortcutsWidget</class>
<extends>QWidget</extends>
<header>dynamicshortcutswidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>