Commit graph

38 commits

Author SHA1 Message Date
Chocobo1
103e2b9398
Use non-recursive mutex
The related classes doesn't really need recursive mutex so drop it. And
if it is really required it usually indicates bad design and we should
avoid it anyway.
2019-09-25 15:50:21 +08:00
Chocobo1
0a959bcbe7
Clean up SettingsStorage::save()
Also it should return `true` when `m_dirty` is `false`.
2019-09-08 15:03:25 +08:00
Chocobo1
e7e5ee1ea2
Add const to TransactionalSettings class functions 2019-09-08 14:38:14 +08:00
Chocobo1
daf52a2610
Avoid double lookups 2019-09-08 14:28:38 +08:00
thalieht
8c944bd4e1 Avoid repeating the return type 2019-02-16 18:54:18 +02:00
Chocobo1
2a84345835
Mark constructors as explicit 2018-12-26 12:04:40 +08:00
thalieht
1f36b8b89f Combine qAsConst() with copyAsConst() to asConst() 2018-11-28 23:41:23 +02:00
thalieht
6b1d26d555 Convert all foreach() to range-based for() 2018-11-28 23:40:12 +02:00
sledgehammer999
de8050701d
Revert email address changes in copyright notices 2018-07-10 00:37:44 +03:00
thalieht
456270bbb1 Delete several unused #include 2018-07-03 08:38:32 +03:00
Mike Tzou
2230d96705
Merge pull request #8808 from Chocobo1/save
Improve SettingsStorage behavior
2018-05-13 14:24:14 +08:00
thalieht
20ca90800d Fix coding style 2018-05-09 17:06:22 +03:00
thalieht
6b4455e13d Use qt5 connect() syntax 2018-05-09 16:08:22 +03:00
Chocobo1
f6d74e3996
Retry saving settings when operation failed 2018-04-30 13:01:10 +08:00
Chocobo1
099314d17f
Make settings file recovery more robust
We should not blindly remove the leftover settings file, as the following write()
operation could fail and the user would lost all settings.
We should try renaming it instead.
2018-04-30 13:01:10 +08:00
Chocobo1
708b5a6904
Refactor SettingsStorage class
Make use of (i.e. returning) QFile::rename operation status
Make log message more verbose
Add const
Remove empty lines
Inline typedef
2018-04-30 13:01:10 +08:00
Chocobo1
423511765a
Fix typo 2018-03-14 23:37:08 +08:00
Eugene Shalygin
0f746ffd5a Add support for different configurations. Partially closes #465
It may be useful to have different configurations either for portable
versions or for debugging purposes. To implement this we add two
options, avaliable via command line switches
1. An option to change configuration name ("--configuration"). The name
supplied via this option is appended to
QCoreApplication::applicationName() to form "qBittorrent_<conf_name>"
name for the configuration files.
2. An option to provide a path do directory where all the settings are
stored (kind of profile directory). There is a shortcut "--portable"
which means "use directory 'profile' near the executable location".

In order to implement that we have to perform initialisation of the
profile directories before the SettingStorage and Preferences singletones
are initialised. Thus, options parsing shall be performed without defaults
read from preferences.
2017-04-12 00:50:28 +02:00
Eugene Shalygin
e64bb1de8c Drop Qt 4 support 2017-03-05 22:24:59 +01:00
sledgehammer999
a092cb9bda
Remove settings to exchange trackers. It wasn't used by non-libtorrent clients. Also it has a privacy risk and you might be DDoSing someone. DHT makes it obsolete anyway. 2017-01-19 01:13:55 +02:00
sledgehammer999
d88ec48468 Polish previous commit. 2016-12-11 23:24:55 +02:00
sledgehammer999
5a006d5980 Merge pull request #5810 from ghost/macOSpref
Change QSettings to IniFormat on macOS. Closes #5770 #5808
2016-12-11 23:23:22 +02:00
sledgehammer999
f391b24b1d Migrate last setting related to interfaces to the new system. 2016-11-01 03:42:12 +02:00
sledgehammer999
7bf06cd6e6 Fix save/load of interface address setting. 2016-11-01 03:42:07 +02:00
sledgehammer999
f885c6375a Use better variable names for tracker announce IP setting. 2016-11-01 03:42:01 +02:00
sledgehammer999
6053390bf5 Unify and simplify setting to use proxy for torrents only. 2016-11-01 03:41:51 +02:00
sledgehammer999
1757973f88 Misc fixes. 2016-11-01 03:41:40 +02:00
sledgehammer999
a5ae86512a Rename IP filtering functions and settings names. 2016-11-01 03:06:58 +02:00
Yez Ezey
26052802ca Change QSettings to IniFormat on macOS. Closes #5770 #5808
On macOS 10.12 Sierra, Apple changed the behaviour of CFPreferencesSetValue()
truncating data after a null character. https://bugreports.qt.io/browse/QTBUG-56344
Due to this, we have to move from native plist to IniFormat.
2016-10-08 14:05:30 +09:00
Vladimir Golovnev (Glassez)
b5fe749f0b Use new libtorrent-1.1 settings API 2016-06-20 08:30:02 +03:00
Vladimir Golovnev (Glassez)
b2cb473b63 Don't use Preferences in BitTorrent::Session 2016-06-20 08:30:02 +03:00
sledgehammer999
9f31b0ef4d Merge pull request #4959 from evsh/small-fix-for-settings-storage
refactor SettingsStorage class
2016-05-03 10:37:49 -05:00
sledgehammer999
ef6e848756 Display notifications when a torrent is added. Closes #334 and #915. 2016-04-25 20:07:26 +03:00
Eugene Shalygin
cc09e7e834 refactor SettingsStorage class
1. Extract "transaction" support for QSettings into separate class
TransactionalSettings.
2. Define macrto with explicit name for the case when this "transaction"
support is needed.
3. A bit optimize QHash <-> QSettings copying: replace assign with
insert() and remove repetitive key lookups.
4. In save() check dirty status before getting the lock too.

The changes from items 1 and 2 make text more structured and the logic
of the SettingsStorage class gets separated from the implementation level
task of guarding the settings serialization. The changes in 3 and 4 do not
make the app much faster, but neither make any harm to the code readability.
2016-04-05 18:43:00 +02:00
sledgehammer999
d721939d5f Use SettingsStorage instead. 2016-03-26 01:50:13 +02:00
Chocobo1
e7ff5eb6b1 Minor refactor 2016-03-09 14:08:44 +08:00
Vladimir Golovnev (Glassez)
dd34663224 Implement Advanced Saving Management subsystem
Closes #4696
2016-03-04 19:59:53 +03:00
Vladimir Golovnev (Glassez)
d05d5a85a5 Move Preferences backend code into SettingsStorage class
Closes #4764
2016-03-04 08:39:00 +03:00