Lomiri
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 }
23 
24 void CursorImageInfo::setCursorName(const QString &cursorName)
25 {
26  if (cursorName != m_cursorName) {
27  m_cursorName = cursorName;
28  update();
29  Q_EMIT cursorNameChanged();
30  }
31 
32 }
33 void CursorImageInfo::setCursorHeight(qreal cursorHeight)
34 {
35  if (cursorHeight != m_cursorHeight) {
36  m_cursorHeight = cursorHeight;
37  update();
38  Q_EMIT cursorHeightChanged();
39  }
40 }
41 
42 void CursorImageInfo::setThemeName(const QString &themeName)
43 {
44  if (m_themeName != themeName) {
45  m_themeName = themeName;
46  update();
47  Q_EMIT themeNameChanged();
48  }
49 }
50 
51 void CursorImageInfo::update()
52 {
53  m_cursorImage = CursorImageProvider::instance()->fetchCursor(m_themeName, m_cursorName, (int) m_cursorHeight);
54 
55  Q_EMIT hotspotChanged();
56  Q_EMIT frameWidthChanged();
57  Q_EMIT frameHeightChanged();
58  Q_EMIT frameCountChanged();
59  Q_EMIT frameDurationChanged();
60  Q_EMIT imageSourceChanged();
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 }
107 
108 QUrl CursorImageInfo::imageSource() const
109 {
110  auto urlString = QString("image://cursor/%1/%2/%3")
111  .arg(m_themeName, m_cursorName)
112  .arg(m_cursorHeight);
113 
114  return QUrl(urlString);
115 }