summaryrefslogtreecommitdiffstats
path: root/src/app/system_linux.h
diff options
context:
space:
mode:
authorPiotr Dziwinski <piotrdz@gmail.com>2013-03-30 15:01:00 +0100
committerPiotr Dziwinski <piotrdz@gmail.com>2013-03-30 15:23:05 +0100
commite218dcfdf2c58f8841e7ebd220527d08e870a6d5 (patch)
treea567db04a8a51e2db87f80e259faf222a7d4becd /src/app/system_linux.h
parentbfc701e286259d9a7aa2ff8240704eab2ba3a237 (diff)
parente607fed265070be8c518d4302d8b76f738421fb3 (diff)
downloadcolobot-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.h76
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;
+};