Re-organize KdenliveDoc constructor
This patch re-organizes big chunks of the code in kdenlivedoc.cpp along
with the calling code in projectmanager.cpp to make it clearer and more
testable.
- Split out the KdenliveDoc ctor into two ctors, one for opening a file
(private) and one for creating a new file (public). - Add KdenliveDoc::Open factory method, which returns several flags plus
a pointer to the doc only if it was successful. Callers should use
Open so that the actual constructor won't have so much code that can
fail. - Lift all GUI interactions into the caller (projectmanager.cpp) so that
creating a KdenliveDoc can be unit tested. - Set DropInvalidChars when opening files only if the user chose to try to recover an unreadable file. This should fix BUG:435768 in which non-BMP Unicode characters are silently dropped from files.
- Add a unit test for BUG:435768
Edited by Eric Jiang