ArkApplication.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #include "ArkApplication.h"
  2. #include <QDebug>
  3. #include <QStringList>
  4. #include <QTranslator>
  5. #include <QTimer>
  6. #include <time.h>
  7. class ArkApplicationPrivate
  8. {
  9. Q_DISABLE_COPY(ArkApplicationPrivate)
  10. public:
  11. explicit ArkApplicationPrivate(int &argc, char **argv, ArkApplication* parent);
  12. ~ArkApplicationPrivate();
  13. QStringList m_Arguments;
  14. void initializeTranslator();
  15. QTranslator* m_Translator;
  16. QTimer* m_Timer;
  17. private:
  18. ArkApplication* m_Parent;
  19. };
  20. ArkApplication::ArkApplication(int &argc, char **argv)
  21. : QApplication(argc, argv)
  22. , m_Private(new ArkApplicationPrivate(argc, argv, this))
  23. {
  24. }
  25. ArkApplication::~ArkApplication()
  26. {
  27. }
  28. bool ArkApplication::installTranslatorPath(const QString &path)
  29. {
  30. bool ret(false);
  31. if (NULL != m_Private->m_Translator) {
  32. ret = m_Private->m_Translator->load(path);
  33. if (ret) {
  34. installTranslator(m_Private->m_Translator);
  35. }
  36. }
  37. return ret;
  38. }
  39. void ArkApplication::arkAppRemoveTranslator()
  40. {
  41. removeTranslator(m_Private->m_Translator);
  42. }
  43. int ArkApplication::size() const
  44. {
  45. return m_Private->m_Arguments.size();
  46. }
  47. QStringList ArkApplication::arguments() const
  48. {
  49. return m_Private->m_Arguments;
  50. }
  51. void ArkApplication::startTimer(const int second)
  52. {
  53. if (NULL == m_Private->m_Timer) {
  54. m_Private->m_Timer = new QTimer(this);
  55. m_Private->m_Timer->setSingleShot(false);
  56. m_Private->m_Timer->start(second * 1000);
  57. Qt::ConnectionType type = static_cast<Qt::ConnectionType>(Qt::UniqueConnection | Qt::AutoConnection);
  58. QObject::connect(m_Private->m_Timer, SIGNAL(timeout()),
  59. this, SLOT(onTimeout()),
  60. type);
  61. }
  62. }
  63. void ArkApplication::onTimeout()
  64. {
  65. emit currentDateTime(QDateTime::currentDateTime());
  66. }
  67. void ArkApplication::resetTimer(const int second)
  68. {
  69. if(NULL != m_Private->m_Timer)
  70. {
  71. m_Private->m_Timer->stop();
  72. m_Private->m_Timer->setSingleShot(false);
  73. m_Private->m_Timer->start(second * 1000);
  74. }
  75. }
  76. void ArkApplication::setCurrentTime(const QDateTime dateTime)
  77. {
  78. emit currentDateTime(dateTime);
  79. }
  80. ArkApplicationPrivate::ArkApplicationPrivate(int &argc, char **argv, ArkApplication* parent)
  81. : m_Parent(parent)
  82. {
  83. m_Translator = NULL;
  84. m_Timer = NULL;
  85. for (int i = 0; i < argc; ++i) {
  86. m_Arguments << QString(argv[i]);
  87. }
  88. initializeTranslator();
  89. }
  90. ArkApplicationPrivate::~ArkApplicationPrivate()
  91. {
  92. }
  93. void ArkApplicationPrivate::initializeTranslator()
  94. {
  95. if (NULL == m_Translator) {
  96. m_Translator = new QTranslator(m_Parent);
  97. }
  98. }