Commit graph

28 commits

Author SHA1 Message Date
JosJuice
09f3f9b41a Remove NonCopyable
The class NonCopyable is, like the name says, supposed to disallow
copying. But should it allow moving?

For a long time, NonCopyable used to not allow moving. (It declared
a deleted copy constructor and assigment operator without declaring
a move constructor and assignment operator, making the compiler
implicitly delete the move constructor and assignment operator.)
That's fine if the classes that inherit from NonCopyable don't need
to be movable or if writing the move constructor and assignment
operator by hand is fine, but that's not the case for all classes,
as I discovered when I was working on the DirectoryBlob PR.

Because of that, I decided to make NonCopyable movable in c7602cc,
allowing me to use NonCopyable in DirectoryBlob.h. That was however
an unfortunate decision, because some of the classes that inherit
from NonCopyable have incorrect behavior when moved by default-
generated move constructors and assignment operators, and do not
explicitly delete the move constructors and assignment operators,
relying on NonCopyable being non-movable.

So what can we do about this? There are four solutions that I can
think of:

1. Make NonCopyable non-movable and tell DirectoryBlob to suck it.

2. Keep allowing moving NonCopyable, and expect that classes that
   don't support moving will delete the move constructor and
   assignment operator manually. Not only is this inconsistent
   (having classes disallow copying one way and disallow moving
   another way), but deleting the move constructor and assignment
   operator manually is too easy to forget compared to how tricky
   the resulting problems are.

3. Have one "MovableNonCopyable" and one "NonMovableNonCopyable".
   It works, but it feels rather silly...

4. Don't have a NonCopyable class at all. Considering that deleting
   the copy constructor and assignment operator only takes two lines
   of code, I don't see much of a reason to keep NonCopyable. I
   suppose that there was more of a point in having NonCopyable back
   in the pre-C++11 days, when it wasn't possible to use "= delete".

I decided to go with the fourth one (like the commit title says).
The implementation of the commit is fairly straight-forward, though
I would like to point out that I skipped adding "= delete" lines
for classes whose only reason for being uncopyable is that they
contain uncopyable classes like File::IOFile and std::unique_ptr,
because the compiler makes such classes uncopyable automatically.
2017-08-22 16:40:34 +02:00
spycrab
78cc759d56 Settings: Implement NetPlay globals 2017-08-10 06:49:57 +02:00
JosJuice
fa4723ffb4 DolphinQt2: Rename "Table"/"List" to "List View"/"Grid View"
Sentret_C posted this comment on Transifex recently:

"What Dolphin refers to as "Table View" and "List View" are
similar to "List View" and "Grid View" in Steam, and I think
the Steam names describe them better."

I agree with that, so here's a commit that changes the names.
2017-08-06 11:35:45 +02:00
spycrab
962d684ca2 Qt: Implement logging settings and signals 2017-08-01 01:36:08 +02:00
Lioncash
80b938b403 DolphinQt2: Remove unimplemented prototypes
Also removes an unnecessary includes in related files
2017-07-26 16:26:55 -04:00
Michael Maltese
234ab6f759 DolphinQt2: set QSettings parameters globally 2017-07-07 17:08:00 -07:00
spycrab
2cf0228ada Qt: Implement sysmenu booting 2017-07-06 21:27:31 +02:00
Michael Maltese
d0fdb9f149 DolphinQt2: replace Settings with SConfig where possible
Changes:
- `ShowDevelopmentWarning` is now under the '[Interface]' group in
  Dolphin.ini, with other interface-related settings. So, whoever uses
  DolphinQt will have to edit that manually again. Sorry!
- Game search paths and the last file are now shared properly with
  DolphinWX
- Qt-only preferences like "Preferred View: list/table" are now
  stored using the platform's native settings storage, rather than in
  UI.ini
2017-06-29 17:17:32 -07:00
spycrab
15243093c4 Qt: Implement missing settings 2017-06-27 17:32:43 +02:00
shuffle2
b8f2e24dd5 Merge pull request #5546 from ligfx/qtdynamicthemes
DolphinQt2: live updates to UI theme
2017-06-05 17:15:17 -07:00
Michael Maltese
5a4ee87d6a DolphinQt2: Settings: emit ThemeChanged signal 2017-06-05 17:04:29 -07:00
Michael Maltese
833e38ed56 Settings: emit HideCursorChanged() 2017-06-05 16:49:28 -07:00
Michael Maltese
47e8cb97b4 DolphinQt2: move path signals from PathDialog to Settings 2017-06-05 16:46:10 -07:00
Michael Maltese
548522877a DolphinQt2: make Settings a singleton
With this, we can get signals when properties change.
2017-06-05 16:46:10 -07:00
Starsam80
e1ea6805a7
Qt: Remove booting from the last path 2017-06-04 14:43:41 -06:00
spycrab
6e28f4dae6 Qt: Implement analytics (+ prompt) 2017-05-20 23:41:02 +02:00
spycrab
33e111e92f Qt: Implement button mapping dialogs 2017-05-20 17:53:17 +02:00
Corwin McKnight
a2d2acf741 Qt: Add General Pane to Settings
Replace SConfig references with Settings()
2017-05-11 12:40:14 -07:00
spycrab
c8d0b647ac Qt: Add controller (overview) window 2017-05-09 18:49:10 +02:00
spycrab
6bf7b5ff0f Qt: Bring Gamelist up to Wx standards 2017-05-08 19:03:59 +02:00
JosJuice
0a15aaaa12 Move DiscIO enums to a new file
At first there weren't many enums in Volume.h, but the number has been
growing, and I'm planning to add one more for regions. To not make
Volume.h too large, and to avoid needing to include Volume.h in code
that doesn't use volume objects, I'm moving the enums to a new file.
I'm also turning them into enum classes while I'm at it.
2016-07-13 17:29:27 +02:00
EmptyChaos
0efb19e66a DolphinQt2: Experimental GUI Warning Prompt.
Add a GUI prompt to tell users not to use DolphinQt by accident.
2016-07-13 15:52:45 +10:00
Pierre Bourdon
3570c7f03a Reformat all the things. Have fun with merge conflicts. 2016-06-24 10:43:46 +02:00
Rukai
cc6a7826c0 Implements Emulation MenuBar
Save states, fullscreen, frame advance, screenshot and emulation
controls are available through the MenuBar
2016-03-20 11:44:35 +11:00
spxtr
48d1adb96f DQt2: Add a message if the game list is empty. 2016-01-01 02:29:39 -08:00
spxtr
5b2a76458d DQt2: Implement Paths config dialog 2015-12-30 19:03:13 -08:00
spxtr
21032d76a8 Use const reference, explicit, final, and override in DQt2. 2015-12-21 19:46:03 -08:00
spxtr
3a4a60f937 Use a separate INI file for UI settings. 2015-12-20 15:36:39 -08:00