X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=platform.cpp;h=ee7f5d9bc56ec8358c31de6e5dcb81afcd2e94ab;hb=c88b9707625d40c905e88c8099499981c77ec807;hp=d93c63d41313c3863e6a1e5f815e34d7ac604217;hpb=ab12e26d07ddb568b83a4115e2cab297524a7037;p=dorian diff --git a/platform.cpp b/platform.cpp index d93c63d..ee7f5d9 100644 --- a/platform.cpp +++ b/platform.cpp @@ -1,4 +1,10 @@ +#include #include +#include + +#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) +# include +#endif #include "platform.h" @@ -8,12 +14,42 @@ # define DORIAN_BASE ".dorian" #endif -#ifdef Q_WS_MAC +#if defined(Q_WS_MAC) # define DORIAN_ICON_PREFIX ":/icons/mac/" +#elif defined(Q_OS_SYMBIAN) +# define DORIAN_ICON_PREFIX ":/icons/symbian/" #else # define DORIAN_ICON_PREFIX ":/icons/" #endif +static const char *DORIAN_VERSION = +#include "pkg/version.txt" +; + +#define DORIAN_LOG "dorian.txt" + +#ifdef Q_WS_MAEMO_5 +# include +#else +# include +#endif + +static Platform *theInstance; + +Platform *Platform::instance() +{ + if (!theInstance) { + theInstance = new Platform(); + } + return theInstance; +} + +void Platform::close() +{ + delete theInstance; + theInstance = 0; +} + QString Platform::dbPath() { QString base(QDir::home().absoluteFilePath(DORIAN_BASE)); @@ -22,5 +58,90 @@ QString Platform::dbPath() QString Platform::icon(const QString &name) { - return QString(DORIAN_ICON_PREFIX) + name + ".png"; + QString iconName = QString(DORIAN_ICON_PREFIX) + name + ".png"; + if (QFile(iconName).exists()) { + return iconName; + } else { + return QString(":/icons/") + name + ".png"; + } +} + +void Platform::restart(char *argv[]) +{ +#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) + extern char **environ; + execve(argv[0], argv, environ); +#else + Q_UNUSED(argv); +#endif +} + +QString Platform::version() +{ + return QString(DORIAN_VERSION); +} + +QString Platform::downloadDir() +{ +#ifdef Q_OS_SYMBIAN + if (QDir("E:/").exists()) { + return "E:/Books"; + } + return "C:/Books"; +#else + return QDir::home().absoluteFilePath("Books"); +#endif +} + +QString Platform::defaultFont() +{ +#if defined(Q_WS_MAEMO_5) || defined(Q_WS_X11) + return QString("Serif"); +#elif defined(Q_WS_MAC) + return QString("Hoefler Text"); +#elif defined Q_WS_S60 + return QString("Nokia Sans S60"); +#else + return QString("Times New Roman"); +#endif +} + +void Platform::information(const QString &label, QWidget *parent) +{ +#ifdef Q_WS_MAEMO_5 + QMaemo5InformationBox::information(parent, label, + QMaemo5InformationBox::DefaultTimeout); +#else + (void)QMessageBox::information(parent, QObject::tr("Dorian"), label, + QMessageBox::Ok); +#endif +} + +void Platform::showBusy(QWidget *w, bool isBusy) +{ +#ifdef Q_WS_MAEMO_5 + w->setAttribute(Qt::WA_Maemo5ShowProgressIndicator, isBusy); +#else + Q_UNUSED(w); + Q_UNUSED(isBusy); +#endif +} + +QString Platform::traceFileName() +{ + return QDir::home().absoluteFilePath(DORIAN_LOG); +} + +int Platform::defaultZoom() +{ + return 150; +} + +QString Platform::defaultOrientation() +{ +#ifdef Q_OS_SYMBIAN + return QString("portrait"); +#else + return QString("landscape"); +#endif }