Unity 8
CursorImageInfo.cpp
1 /*
2  * Copyright (C) 2016 Canonical, Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #include "CursorImageInfo.h"
18 
19 CursorImageInfo::CursorImageInfo(QObject *parent)
20  : QObject(parent)
21 {
22  m_updateTimer.setInterval(0);
23  m_updateTimer.setSingleShot(true);
24  connect(&m_updateTimer, &QTimer::timeout, this, &CursorImageInfo::update);
25 }
26 
27 void CursorImageInfo::setCursorName(const QString &cursorName)
28 {
29  if (cursorName != m_cursorName) {
30  m_cursorName = cursorName;
31  Q_EMIT cursorNameChanged();
32  scheduleUpdate();
33  }
34 }
35 
36 void CursorImageInfo::setThemeName(const QString &themeName)
37 {
38  if (m_themeName != themeName) {
39  m_themeName = themeName;
40  Q_EMIT themeNameChanged();
41  scheduleUpdate();
42  }
43 }
44 
45 void CursorImageInfo::scheduleUpdate()
46 {
47  if (!m_updateTimer.isActive()) {
48  m_updateTimer.start();
49  }
50 }
51 
52 void CursorImageInfo::update()
53 {
54  m_cursorImage = CursorImageProvider::instance()->fetchCursor(m_themeName, m_cursorName);
55 
56  Q_EMIT hotspotChanged();
57  Q_EMIT frameWidthChanged();
58  Q_EMIT frameHeightChanged();
59  Q_EMIT frameCountChanged();
60  Q_EMIT frameDurationChanged();
61 }
62 
63 QPoint CursorImageInfo::hotspot() const
64 {
65  if (m_cursorImage) {
66  return m_cursorImage->hotspot;
67  } else {
68  return QPoint();
69  }
70 }
71 
72 qreal CursorImageInfo::frameWidth() const
73 {
74  if (m_cursorImage) {
75  return m_cursorImage->frameWidth;
76  } else {
77  return 0;
78  }
79 }
80 
81 qreal CursorImageInfo::frameHeight() const
82 {
83  if (m_cursorImage) {
84  return m_cursorImage->frameHeight;
85  } else {
86  return 0;
87  }
88 }
89 
90 int CursorImageInfo::frameCount() const
91 {
92  if (m_cursorImage) {
93  return m_cursorImage->frameCount;
94  } else {
95  return 0;
96  }
97 }
98 
99 int CursorImageInfo::frameDuration() const
100 {
101  if (m_cursorImage) {
102  return m_cursorImage->frameDuration;
103  } else {
104  return 0;
105  }
106 }