• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

parley

  • sources
  • kde-4.14
  • kdeedu
  • parley
  • src
  • practice
statustoggle.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  Copyright 2010 Daniel Laidig <laidig@kde.org>
3  ***************************************************************************/
4 
5 /***************************************************************************
6  * *
7  * This program is free software; you can redistribute it and/or modify *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation; either version 2 of the License, or *
10  * (at your option) any later version. *
11  * *
12  ***************************************************************************/
13 
14 #include "statustoggle.h"
15 #include "themedbackgroundrenderer.h"
16 #include "abstractfrontend.h"
17 #include "statustogglebutton.h"
18 
19 #include <klocale.h>
20 
21 #include <QAction>
22 
23 using namespace Practice;
24 
25 StatusToggle::StatusToggle(QWidget* parent)
26  : ImageWidget(parent), m_renderer(0), m_resultState(AbstractFrontend::QuestionState)
27 {
28  setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
29  setScalingEnabled(false);
30  setMinimumSize(minimumSizeHint());
31  setMaximumSize(minimumSizeHint());
32 
33  QSize size = minimumSizeHint();
34  size *= 0.4;
35  m_toggle = new StatusToggleButton(this);
36  m_toggle->setMinimumSize(size);
37  m_toggle->setMaximumSize(size);
38  m_toggle->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
39  m_toggle->setScalingEnabled(false);
40  m_toggle->move(width() - m_toggle->width(), height() - m_toggle->height());
41 
42  connect(m_toggle, SIGNAL(clicked()), this, SIGNAL(toggle()));
43 }
44 
45 void StatusToggle::setRenderer(ThemedBackgroundRenderer *renderer)
46 {
47  m_renderer = renderer;
48 
49  QSize size = minimumSizeHint();
50 
51  m_defaultStatus = m_renderer->getPixmapForId("status-default", size);
52  m_correctStatus = m_renderer->getPixmapForId("status-correct", size);
53  m_wrongStatus = m_renderer->getPixmapForId("status-wrong", size);
54 
55  size = size * 0.4;
56 
57  m_toggleCorrect = m_renderer->getPixmapForId("toggle-correct", size);
58  m_toggleCorrectHover = m_renderer->getPixmapForId("toggle-correct-hover", size);
59  m_toggleCorrectPressed = m_renderer->getPixmapForId("toggle-correct-pressed", size);
60 
61  m_toggleWrong = m_renderer->getPixmapForId("toggle-wrong", size);
62  m_toggleWrongHover = m_renderer->getPixmapForId("toggle-wrong-hover", size);
63  m_toggleWrongPressed = m_renderer->getPixmapForId("toggle-wrong-pressed", size);
64 
65  updatePixmap();
66  updateToggle();
67 }
68 
69 QSize StatusToggle::minimumSizeHint() const
70 {
71  return QSize(128, 128);
72 }
73 
74 void StatusToggle::setResultState(AbstractFrontend::ResultState state)
75 {
76  if (m_resultState == state)
77  return;
78  m_resultState = state;
79  switch (m_resultState) {
80  case AbstractFrontend::QuestionState:
81  case AbstractFrontend::AnswerSynonym:
82  setToolTip(QString());
83  m_toggle->setToolTip(QString());
84  break;
85  case AbstractFrontend::AnswerCorrect:
86  setToolTip(i18n("This answer will be counted as correct.\nWords will only be counted as correct if they are answered correctly on the first attempt."));
87  m_toggle->setToolTip(i18n("Count this answer as wrong"));
88  break;
89  case AbstractFrontend::AnswerWrong:
90  setToolTip(i18n("This answer will be counted as wrong.\nWords will only be counted as correct if they are answered correctly on the first attempt."));
91  m_toggle->setToolTip(i18n("Count this answer as correct"));
92  break;
93  default:
94  setPixmap(QPixmap());
95  }
96  updatePixmap();
97  updateToggle();
98 }
99 
100 void StatusToggle::updatePixmap()
101 {
102  switch (m_resultState) {
103  case AbstractFrontend::QuestionState:
104  case AbstractFrontend::AnswerSynonym:
105  setPixmap(m_defaultStatus);
106  break;
107  case AbstractFrontend::AnswerCorrect:
108  setPixmap(m_correctStatus);
109  break;
110  case AbstractFrontend::AnswerWrong:
111  setPixmap(m_wrongStatus);
112  break;
113  default:
114  setPixmap(QPixmap());
115  }
116 }
117 
118 void StatusToggle::updateToggle()
119 {
120  switch (m_resultState) {
121  case AbstractFrontend::AnswerCorrect:
122  m_toggle->setPixmaps(m_toggleWrong, m_toggleWrongHover, m_toggleWrongPressed);
123  break;
124  case AbstractFrontend::AnswerWrong:
125  m_toggle->setPixmaps(m_toggleCorrect, m_toggleCorrectHover, m_toggleCorrectPressed);
126  break;
127  default:
128  m_toggle->setPixmaps(QPixmap(), QPixmap(), QPixmap());
129  }
130 }
131 
132 #include "statustoggle.moc"
QWidget
statustoggle.h
Practice::AbstractFrontend::QuestionState
Definition: abstractfrontend.h:42
Practice::StatusToggle::StatusToggle
StatusToggle(QWidget *parent=0)
Definition: statustoggle.cpp:25
Practice::ImageWidget::setScalingEnabled
void setScalingEnabled(bool scaling, bool onlyDownscaling=true)
Definition: imagewidget.cpp:224
Practice::StatusToggle::updatePixmap
void updatePixmap()
Definition: statustoggle.cpp:100
QWidget::width
int width() const
QWidget::size
QSize size() const
QWidget::setMinimumSize
void setMinimumSize(const QSize &)
Practice::AbstractFrontend::AnswerWrong
Definition: abstractfrontend.h:45
Practice::StatusToggle::setResultState
void setResultState(AbstractFrontend::ResultState state)
Definition: statustoggle.cpp:74
Practice::AbstractFrontend::ResultState
ResultState
Definition: abstractfrontend.h:41
QWidget::move
void move(int x, int y)
Practice::ImageWidget::setPixmap
void setPixmap(const QPixmap &pixmap)
Definition: imagewidget.cpp:200
Practice::StatusToggleButton
Definition: statustogglebutton.h:23
QString
QWidget::setSizePolicy
void setSizePolicy(QSizePolicy)
QPixmap
Practice::StatusToggle::setRenderer
void setRenderer(ThemedBackgroundRenderer *renderer)
Definition: statustoggle.cpp:45
QSize
Practice::StatusToggle::minimumSizeHint
virtual QSize minimumSizeHint() const
Definition: statustoggle.cpp:69
QWidget::setMaximumSize
void setMaximumSize(const QSize &)
Practice::ThemedBackgroundRenderer
Definition: themedbackgroundrenderer.h:31
Practice::AbstractFrontend::AnswerSynonym
Definition: abstractfrontend.h:44
Practice::AbstractFrontend::AnswerCorrect
Definition: abstractfrontend.h:43
Practice::StatusToggle::toggle
void toggle()
Practice::ThemedBackgroundRenderer::getPixmapForId
QPixmap getPixmapForId(const QString &id, QSize size=QSize())
Definition: themedbackgroundrenderer.cpp:168
abstractfrontend.h
Practice::AbstractFrontend
Definition: abstractfrontend.h:26
Practice::ImageWidget
Definition: imagewidget.h:24
QWidget::setToolTip
void setToolTip(const QString &)
statustogglebutton.h
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Practice::StatusToggle::updateToggle
void updateToggle()
Definition: statustoggle.cpp:118
themedbackgroundrenderer.h
QWidget::height
int height() const
Practice::StatusToggleButton::setPixmaps
void setPixmaps(QPixmap defaultPixmap, QPixmap hoverPixmap, QPixmap pressedPixmap)
Definition: statustogglebutton.cpp:20
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:15:56 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

parley

Skip menu "parley"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal