Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -147,10 +147,16 @@ if( ${GUI} STREQUAL QT5 )
FIND_PACKAGE( Qt5Core REQUIRED )
FIND_PACKAGE( Qt5Widgets REQUIRED )
FIND_PACKAGE( Qt5LinguistTools REQUIRED )
FIND_PACKAGE( Qt5Xdg QUIET)
include_directories(${Qt5Widgets_INCLUDE_DIRS})
add_definitions(${Qt5Widgets_DEFINITIONS})
include_directories(${Qt5Core_INCLUDE_DIRS})
add_definitions(${Qt5Core_DEFINITIONS})
if(NOT Qt5Xdg_FOUND)
message("Qt5Xdg not found: xdg-basedirs-spec support disabled.\n")
else()
message("Qt5Xdg(${Qt5Xdg_VERSION}) found, xdg-basedirs-spec support enabled.\n")
endif(NOT Qt5Xdg_FOUND)
endif( ${GUI} STREQUAL QT5 )

# thirdparty sources definitions
Expand Down
9 changes: 9 additions & 0 deletions cr3qt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ ELSE()
ADD_DEFINITIONS(-DCR3_DATA_DIR="")
ENDIF(MAC)

if(Qt5Xdg_FOUND)
ADD_DEFINITIONS(-DUSE_QT5_XDG=1)
ENDIF(Qt5Xdg_FOUND)

ADD_DEFINITIONS("${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")

#IF (WIN32)
Expand Down Expand Up @@ -174,6 +178,11 @@ IF(MAC)
ELSE()
SET (EXTRA_LIBS ${STD_LIBS} ${QT_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Widgets_LIBRARIES} )
ENDIF(MAC)

IF(Qt5Xdg_FOUND)
SET (EXTRA_LIBS ${EXTRA_LIBS} Qt5Xdg )
ENDIF(Qt5Xdg_FOUND)

TARGET_LINK_LIBRARIES(cr3 crengine tinydict ${EXTRA_LIBS})

IF (MAC)
Expand Down
41 changes: 39 additions & 2 deletions cr3qt/src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@
#include <QtGui/QStyleFactory>
#endif

#if USE_QT5_XDG
#include <XdgDirs>
#endif

#include <QClipboard>
#include <QTranslator>
#include <QLibraryInfo>
Expand Down Expand Up @@ -97,20 +101,49 @@ MainWindow::MainWindow(QWidget *parent)
addAction(ui->actionNextSentence);
addAction(ui->actionPrevSentence);


#if _LINUX
# ifdef USE_QT5_XDG
bool use_xdg_dir = ! QDir(QDir::homePath() + "/.cr3").exists();
QString xdgCfgDir = QDir::toNativeSeparators(XdgDirs::configHome() + "/cr3/");
QString xdgDataDir = QDir::toNativeSeparators(XdgDirs::dataHome() + "/cr3/");
QString xdgCacheDir = QDir::toNativeSeparators(XdgDirs::cacheHome() + "/cr3/");
# else
bool use_xdg_dir = false;
QString xdgCfgDir = "";
QString xdgDataDir = "";
QString xdgCacheDir = "";
# endif
#endif

#ifdef _LINUX
QString homeDir = QDir::toNativeSeparators(QDir::homePath() + "/.cr3/");
QString homeDir = use_xdg_dir ? xdgCfgDir : QDir::toNativeSeparators(QDir::homePath() + "/.cr3/");
#else
QString homeDir = QDir::toNativeSeparators(QDir::homePath() + "/cr3/");
#endif

#ifdef _LINUX
QString exeDir = QString(CR3_DATA_DIR);
#else
QString exeDir = QDir::toNativeSeparators(qApp->applicationDirPath() + "/"); //QDir::separator();
#endif


#ifdef _LINUX
QString cacheDir = use_xdg_dir ? xdgCacheDir : (homeDir + "cache");
QString bookmarksDir = (use_xdg_dir? xdgDataDir:homeDir) + "bookmarks";
#else
QString cacheDir = homeDir + "cache";
QString bookmarksDir = homeDir + "bookmarks";
#endif

QString histFile2 = exeDir + "cr3hist.bmk";
#ifdef _LINUX
QString histFile = (use_xdg_dir? xdgDataDir:homeDir) + "cr3hist.bmk";
#else
QString histFile = homeDir + "cr3hist.bmk";
#endif

QString iniFile2 = exeDir + "cr3.ini";
QString iniFile = homeDir + "cr3.ini";
QString cssFile = homeDir + "fb2.css";
Expand All @@ -119,8 +152,12 @@ MainWindow::MainWindow(QWidget *parent)
//CRLog::info("Translations directory: %s", LCSTR(qt2cr(translations)) );
QString hyphDir = exeDir + "hyph" + QDir::separator();
ui->view->setHyphDir(hyphDir);
ui->view->setHyphDir(homeDir + "hyph" + QDir::separator(), false);

#ifdef _LINUX
ui->view->setHyphDir((use_xdg_dir?xdgDataDir:homeDir) + "hyph" + QDir::separator(), false);
#else
ui->view->setHyphDir(homeDir + "hyph" + QDir::separator(), false);
#endif
ldomDocCache::init( qt2cr( cacheDir ), DOC_CACHE_SIZE );
ui->view->setPropsChangeCallback( this );
if (!ui->view->loadSettings( iniFile )) {
Expand Down