File indexing completed on 2024-05-19 04:07:54
0001 /* 0002 SPDX-FileCopyrightText: 2015 Jakob Gruber <jakob.gruber@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "streakitem.h" 0008 0009 #include "src/constants.h" 0010 #include "src/logic/settings.h" 0011 0012 StreakItem::StreakItem(int x, int y, QSharedPointer<Picmi> game, QGraphicsItem *parent) : 0013 QGraphicsTextItem(parent), ReloadableItem(x, y), m_game(game) 0014 { 0015 setEnabled(false); 0016 setZValue(ZVALUE_STREAKTEXT); 0017 setFont(Renderer::instance()->getFont(Renderer::Regular)); 0018 0019 connect(Settings::instance(), &Settings::settingChanged, 0020 this, &StreakItem::settingChanged); 0021 } 0022 0023 void StreakItem::settingChanged(Settings::SettingsType type) 0024 { 0025 switch (type) { 0026 case Settings::FontColorSolved: 0027 case Settings::FontColorUnsolved: setFontColors(); break; 0028 default: break; 0029 } 0030 } 0031 0032 void StreakItem::setFontColors() 0033 { 0034 m_color_solved = Settings::instance()->fontColorSolved(); 0035 m_color_unsolved = Settings::instance()->fontColorUnsolved(); 0036 refresh(); 0037 } 0038 0039 int StreakItem::padding(int tilesize) const { 0040 return tilesize / 5; 0041 } 0042 0043 RowStreakItem::RowStreakItem(QSharedPointer<Picmi> game, int y, QGraphicsItem *parent) : 0044 StreakItem(0, y, game, parent) 0045 { 0046 setFontColors(); 0047 } 0048 0049 void RowStreakItem::refresh() { 0050 QList<Streaks::Streak> streak = m_game->getRowStreak(m_y); 0051 QString text; 0052 0053 for (int i = 0; i < (int)streak.size(); i++) { 0054 QString color = (streak[i].solved ? m_color_solved : m_color_unsolved); 0055 text.append(QStringLiteral("<font color=\"%1\">%2</font>").arg(color).arg(streak[i].value)); 0056 if (i != (int)streak.size() - 1) { 0057 text.append(QStringLiteral(" ")); 0058 } 0059 } 0060 0061 setHtml(text); 0062 reload(QSize()); 0063 } 0064 0065 void RowStreakItem::reload(const QSize &size) { 0066 Q_UNUSED(size); 0067 const int tilesize = Renderer::instance()->getTilesize(); 0068 0069 setFont(Renderer::instance()->getFont(Renderer::Regular)); 0070 0071 QRectF rect = boundingRect(); 0072 0073 /* right align + a little padding */ 0074 const int x = 0 - rect.width() - padding(tilesize); 0075 0076 /* one per row, center text */ 0077 const int y = tilesize * m_y + (tilesize - rect.height()) / 2; 0078 0079 setPos(x, y); 0080 } 0081 0082 ColStreakItem::ColStreakItem(QSharedPointer<Picmi> game, int x, QGraphicsItem *parent) : 0083 StreakItem(x, 0, game, parent) 0084 { 0085 setFontColors(); 0086 } 0087 0088 void ColStreakItem::refresh() { 0089 QList<Streaks::Streak> streak = m_game->getColStreak(m_x); 0090 QString text; 0091 0092 for (int i = 0; i < (int)streak.size(); i++) { 0093 QString color = (streak[i].solved ? m_color_solved : m_color_unsolved); 0094 text.append(QStringLiteral("<font color=\"%1\">%2</font>").arg(color).arg(streak[i].value)); 0095 if (i != (int)streak.size() - 1) { 0096 text.append(QStringLiteral("<br/>")); 0097 } 0098 } 0099 0100 setHtml(text); 0101 reload(QSize()); 0102 } 0103 0104 void ColStreakItem::reload(const QSize &size) { 0105 Q_UNUSED(size); 0106 const int tilesize = Renderer::instance()->getTilesize(); 0107 0108 setFont(Renderer::instance()->getFont(Renderer::Regular)); 0109 0110 QRectF rect = boundingRect(); 0111 0112 const int x = tilesize * m_x + (tilesize - rect.width()) / 2; 0113 const int y = 0 - rect.height() - padding(tilesize); 0114 0115 setPos(x, y); 0116 } 0117 0118 #include "moc_streakitem.cpp"