Skip to content

Commit

Permalink
handle non-backwards compatible INI changes due to Qt6
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinhendricks committed Apr 1, 2022
1 parent ce89f2d commit 9806df2
Show file tree
Hide file tree
Showing 7 changed files with 79 additions and 18 deletions.
8 changes: 7 additions & 1 deletion src/Misc/SettingsStore.cpp
Expand Up @@ -34,6 +34,12 @@

#include "sigil_constants.h"

#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
static const QString SETTINGS_FILE = SIGIL_SETTINGS_FILE;
#else
static const QString SETTINGS_FILE = SIGIL_V6_SETTINGS_FILE;
#endif

static QString SETTINGS_GROUP = "user_preferences";
static QString KEY_DEFAULT_METADATA_LANGUAGE = SETTINGS_GROUP + "/" + "default_metadata_lang";
static QString KEY_UI_LANGUAGE = SETTINGS_GROUP + "/" + "ui_language";
Expand Down Expand Up @@ -133,7 +139,7 @@ static QString KEY_MAIN_MENU_ICON_SIZE = SETTINGS_GROUP + "/" + "main_menu_icon_
static QString KEY_CLIPBOARD_HISTORY_LIMIT = SETTINGS_GROUP + "/" + "clipboard_history_limit";

SettingsStore::SettingsStore()
: QSettings(Utility::DefinePrefsDir() + "/sigil.ini", QSettings::IniFormat)
: QSettings(Utility::DefinePrefsDir() + "/" + SETTINGS_FILE, QSettings::IniFormat)
{
// See QTBUG-40796 and QTBUG-54510 as using UTF-8 as a codec for ini files is very broken
// setIniCodec("UTF-8");
Expand Down
7 changes: 6 additions & 1 deletion src/MiscEditors/ClipEditorModel.cpp
Expand Up @@ -41,7 +41,12 @@
#define QT_ENUM_KEEPEMPTYPARTS QString::KeepEmptyParts
#endif

static const QString SETTINGS_FILE = "sigil_clips.ini";
#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
static const QString SETTINGS_FILE = CLIPS_SETTINGS_FILE;
#else
static const QString SETTINGS_FILE = CLIPS_V6_SETTINGS_FILE;
#endif

static const QString SETTINGS_GROUP = "clip_entries";
static const QString ENTRY_NAME = "Name";
static const QString ENTRY_TEXT = "Text";
Expand Down
10 changes: 8 additions & 2 deletions src/MiscEditors/IndexEditorModel.cpp
Expand Up @@ -27,10 +27,16 @@
#include <QDataStream>
#include <QtCore/QTime>

#include "MiscEditors/IndexEditorModel.h"
#include "sigil_constants.h"
#include "Misc/Utility.h"
#include "MiscEditors/IndexEditorModel.h"

#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
static const QString SETTINGS_FILE = INDEX_SETTINGS_FILE;
#else
static const QString SETTINGS_FILE = INDEX_V6_SETTINGS_FILE;
#endif

static const QString SETTINGS_FILE = "sigil_index.ini";
static const QString SETTINGS_GROUP = "index_entries";
static const QString ENTRY_PATTERN = "Text to Include";
static const QString ENTRY_INDEX_ENTRY = "Index Entries";
Expand Down
19 changes: 5 additions & 14 deletions src/MiscEditors/SearchEditorModel.cpp
Expand Up @@ -44,8 +44,11 @@
#define QT_ENUM_KEEPEMPTYPARTS QString::KeepEmptyParts
#endif

static const QString SETTINGS_FILE = "sigil_searches_v2.ini";
static const QString OLD_SETTINGS_FILE = "sigil_searches.ini";
#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
static const QString SETTINGS_FILE = SEARCHES_V2_SETTINGS_FILE;;
#else
static const QString SETTINGS_FILE = SEARCHES_V6_SETTINGS_FILE;
#endif

static const QString SETTINGS_GROUP = "search_entries";
static const QString ENTRY_NAME = "Name";
Expand Down Expand Up @@ -77,18 +80,6 @@ SearchEditorModel::SearchEditorModel(QObject *parent)
m_IsDataModified(false)
{
m_SettingsPath = Utility::DefinePrefsDir() + "/" + SETTINGS_FILE;
QString OldSettingsPath = Utility::DefinePrefsDir() + "/" + OLD_SETTINGS_FILE;
QFileInfo fi(m_SettingsPath);
if (!fi.exists()) {
QFileInfo oldfi(OldSettingsPath);
if (oldfi.exists() && oldfi.isFile()) {
// create v2 settings file from old one
bool success = QFile::copy(oldfi.absoluteFilePath(), m_SettingsPath);
if (!success) {
qDebug() << "Failed to create v2 saved searches from old";
}
}
}
QStringList header;
header.append(tr("Name"));
header.append(tr("Find"));
Expand Down
31 changes: 31 additions & 0 deletions src/main.cpp
Expand Up @@ -292,6 +292,16 @@ void setupHighDPI()
}
#endif

void update_ini_file_if_needed(const QString oldfile, const QString newfile)
{
QFileInfo nf(newfile);
if (!nf.exists()) {
QFileInfo of(oldfile);
if (of.exists() && of.isFile()) QFile::copy(oldfile, newfile);
}
}


// Application entry point
int main(int argc, char *argv[])
{
Expand Down Expand Up @@ -326,6 +336,27 @@ int main(int argc, char *argv[])
QCoreApplication::setApplicationName("sigil");
QCoreApplication::setApplicationVersion(SIGIL_VERSION);

// handle all non-backwards compatible ini file changes
update_ini_file_if_needed(Utility::DefinePrefsDir() + "/" + SEARCHES_SETTINGS_FILE,
Utility::DefinePrefsDir() + "/" + SEARCHES_V2_SETTINGS_FILE);

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
// Qt6 forced move to utf-8 settings values but Qt5 settings are broken for utf-8 codec
// See QTBUG-40796 and QTBUG-54510 which never got fixed
update_ini_file_if_needed(Utility::DefinePrefsDir() + "/" + SIGIL_SETTINGS_FILE,
Utility::DefinePrefsDir() + "/" + SIGIL_V6_SETTINGS_FILE);

update_ini_file_if_needed(Utility::DefinePrefsDir() + "/" + CLIPS_SETTINGS_FILE,
Utility::DefinePrefsDir() + "/" + CLIPS_V6_SETTINGS_FILE);

update_ini_file_if_needed(Utility::DefinePrefsDir() + "/" + INDEX_SETTINGS_FILE,
Utility::DefinePrefsDir() + "/" + INDEX_V6_SETTINGS_FILE);

update_ini_file_if_needed(Utility::DefinePrefsDir() + "/" + SEARCHES_V2_SETTINGS_FILE,
Utility::DefinePrefsDir() + "/" + SEARCHES_V6_SETTINGS_FILE);
#endif


#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
// register the our own url scheme (this is required since Qt 5.12)
QWebEngineUrlScheme sigilScheme("sigil");
Expand Down
11 changes: 11 additions & 0 deletions src/sigil_constants.cpp
Expand Up @@ -25,6 +25,17 @@
#include <QStringList>
#include "sigil_constants.h"

const QString CLIPS_SETTINGS_FILE = "sigil_clips.ini";
const QString INDEX_SETTINGS_FILE = "sigil_index.ini";
const QString SEARCHES_SETTINGS_FILE = "sigil_searches.ini";
const QString SEARCHES_V2_SETTINGS_FILE = "sigil_searches_v2.ini";
const QString SIGIL_SETTINGS_FILE = "sigil.ini";

const QString CLIPS_V6_SETTINGS_FILE = "sigil_clips_v6.ini";
const QString INDEX_V6_SETTINGS_FILE = "sigil_index_v6.ini";
const QString SEARCHES_V6_SETTINGS_FILE = "sigil_searches_v6.ini";
const QString SIGIL_V6_SETTINGS_FILE = "sigil_v6.ini";

#if _WIN32
#include <QProcessEnvironment>

Expand Down
11 changes: 11 additions & 0 deletions src/sigil_constants.h
Expand Up @@ -129,6 +129,17 @@ extern const QString PYTHON_MAIN_PATH;
extern const QString PYTHON_MAIN_BIN_PATH;
extern const bool DONT_CHECK_FOR_UPDATES;

extern const QString CLIPS_SETTINGS_FILE;
extern const QString INDEX_SETTINGS_FILE;
extern const QString SEARCHES_SETTINGS_FILE;
extern const QString SEARCHES_V2_SETTINGS_FILE;
extern const QString SIGIL_SETTINGS_FILE;

extern const QString CLIPS_V6_SETTINGS_FILE;
extern const QString INDEX_V6_SETTINGS_FILE;
extern const QString SEARCHES_V6_SETTINGS_FILE;
extern const QString SIGIL_V6_SETTINGS_FILE;

#if defined(__APPLE__)
extern const QString PYTHON_SITE_PACKAGES;
extern const QString PYTHON_MAIN_PREFIX;
Expand Down

0 comments on commit 9806df2

Please sign in to comment.