diff options
author | Piotr Dziwinski <piotrdz@gmail.com> | 2013-03-30 15:01:00 +0100 |
---|---|---|
committer | Piotr Dziwinski <piotrdz@gmail.com> | 2013-03-30 15:23:05 +0100 |
commit | e218dcfdf2c58f8841e7ebd220527d08e870a6d5 (patch) | |
tree | a567db04a8a51e2db87f80e259faf222a7d4becd /src/app/system_linux.h | |
parent | bfc701e286259d9a7aa2ff8240704eab2ba3a237 (diff) | |
parent | e607fed265070be8c518d4302d8b76f738421fb3 (diff) | |
download | colobot-e218dcfdf2c58f8841e7ebd220527d08e870a6d5.tar.gz colobot-e218dcfdf2c58f8841e7ebd220527d08e870a6d5.tar.bz2 colobot-e218dcfdf2c58f8841e7ebd220527d08e870a6d5.zip |
Merge branch 'dev'
Merging content from dev
Diffstat (limited to 'src/app/system_linux.h')
-rw-r--r-- | src/app/system_linux.h | 76 |
1 files changed, 13 insertions, 63 deletions
diff --git a/src/app/system_linux.h b/src/app/system_linux.h index 69893de..a9a5a52 100644 --- a/src/app/system_linux.h +++ b/src/app/system_linux.h @@ -20,20 +20,11 @@ * \brief Linux-specific implementation of system functions */ -/* NOTE: code is contained in this header; - * there is no separate .cpp module for simplicity */ +#include "app/system.h" #include <sys/time.h> -#include <time.h> -#include <stdlib.h> -SystemDialogResult SystemDialog_Linux(SystemDialogType type, const std::string& title, const std::string& message); - -void GetCurrentTimeStamp_Linux(SystemTimeStamp *stamp); -long long GetTimeStampExactResolution_Linux(); -long long TimeStampExactDiff_Linux(SystemTimeStamp *before, SystemTimeStamp *after); - struct SystemTimeStamp { timespec clockTime; @@ -44,61 +35,20 @@ struct SystemTimeStamp } }; - -SystemDialogResult SystemDialog_Linux(SystemDialogType type, const std::string& title, const std::string& message) +class CSystemUtilsLinux : public CSystemUtils { - std::string options = ""; - switch (type) - { - case SDT_INFO: - default: - options = "--info"; - break; - case SDT_WARNING: - options = "--warning"; - break; - case SDT_ERROR: - options = "--error"; - break; - case SDT_YES_NO: - options = "--question --ok-label=\"Yes\" --cancel-label=\"No\""; - break; - case SDT_OK_CANCEL: - options = "--question --ok-label=\"OK\" --cancel-label=\"Cancel\""; - break; - } +public: + virtual void Init() override; - std::string command = "zenity " + options + " --text=\"" + message + "\" --title=\"" + title + "\""; - int code = system(command.c_str()); + virtual SystemDialogResult SystemDialog(SystemDialogType type, const std::string& title, const std::string& message) override; - SystemDialogResult result = SDR_OK; - switch (type) - { - case SDT_YES_NO: - result = code ? SDR_NO : SDR_YES; - break; - case SDT_OK_CANCEL: - result = code ? SDR_CANCEL : SDR_OK; - break; - default: - break; - } + virtual void GetCurrentTimeStamp(SystemTimeStamp *stamp) override; + virtual long long GetTimeStampExactResolution() override; + virtual long long TimeStampExactDiff(SystemTimeStamp *before, SystemTimeStamp *after) override; - return result; -} + virtual std::string profileFileLocation() override; + virtual std::string savegameDirectoryLocation() override; -void GetCurrentTimeStamp_Linux(SystemTimeStamp *stamp) -{ - clock_gettime(CLOCK_MONOTONIC, &stamp->clockTime); -} - -long long GetTimeStampExactResolution_Linux() -{ - return 1ll; -} - -long long TimeStampExactDiff_Linux(SystemTimeStamp *before, SystemTimeStamp *after) -{ - return (after->clockTime.tv_nsec - before->clockTime.tv_nsec) + - (after->clockTime.tv_sec - before->clockTime.tv_sec) * 1000000000ll; -} +private: + bool m_zenityAvailable; +}; |