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

parley

  • sources
  • kde-4.12
  • kdeedu
  • parley
  • src
  • statistics
lessonstatistics.cpp
Go to the documentation of this file.
1 /***************************************************************************
2 
3  Copyright 2008 Frederik Gladhorn <frederik.gladhorn@kdemail.net>
4 
5  ***************************************************************************/
6 
7 /***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #include "lessonstatistics.h"
17 
18 #include "statisticsmodel.h"
19 #include "keduvoclesson.h"
20 #include "prefs.h"
21 #include <KLocalizedString>
22 #include <KMessageBox>
23 #include <KInputDialog>
24 #include <KAction>
25 #include <KActionCollection>
26 
27 #include <QApplication>
28 #include <QHeaderView>
29 
30 #include <QPainter>
31 
32 #include <QItemDelegate>
33 
34 using namespace Editor;
35 
36 class GradeDelegate: public QItemDelegate
37 {
38 public:
39  GradeDelegate(QObject* parent = 0)
40  :QItemDelegate(parent)
41  {}
42 
43  virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const {
44  QApplication::style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter, 0);
45 
46  // empty lesson
47  if (!index.data(StatisticsModel::TotalCount).toInt()) {
48  return;
49  }
50  drawBackground(painter, option, index);
51  painter->drawText(option.rect, Qt::AlignCenter, QString("%1%").arg(index.data(StatisticsModel::TotalPercent).toInt()));
52  }
53 
54 protected:
55  void drawBackground ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const {
56  QLinearGradient linearGrad(QPointF(option.rect.x(), 0), QPointF(option.rect.x() + option.rect.width(), 0));
57 
58  int total = index.data(StatisticsModel::TotalCount).toInt();
59  linearGrad.setColorAt(0.0, QColor(255, 255, 255, 0));
60 
61  int sum = 0;
62  for (int i = 7; i >= 1; i--) {
63  int count = index.data(StatisticsModel::Grade0 + i).toInt();
64  if (count) {
65  sum += count;
66  linearGrad.setColorAt(((double)(total-sum))/total, Prefs::gradeColor(i));
67  }
68  }
69 
70 
71  QRect rect(option.rect);
72  rect.adjust(1, 1, -1, -1);
73 
74  QPainterPath path;
75  path.addRoundedRect( rect, 2.0, 2.0 );
76  painter->setBrush(QBrush(linearGrad));
77  painter->drawPath(path);
78  }
79 };
80 
81 
82 
83 LessonStatisticsView::LessonStatisticsView(QWidget * parent)
84  :ContainerView(parent)
85 {
86  header()->setVisible(true);
87 
88  // inherits context menu policy - so action will show up in right click menu
89  KAction *removeGradesAction = new KAction(this);
90  removeGradesAction->setText(i18n("Remove &Grades"));
91  removeGradesAction->setIcon(KIcon("edit-clear"));
92  removeGradesAction->setWhatsThis(i18n("Remove all grades from this lesson"));
93  removeGradesAction->setToolTip(removeGradesAction->whatsThis());
94  removeGradesAction->setStatusTip(removeGradesAction->whatsThis());
95 
96  connect(removeGradesAction, SIGNAL(triggered()), SLOT(removeGrades()));
97  addAction(removeGradesAction);
98 }
99 
100 void LessonStatisticsView::setModel(Editor::ContainerModel *model)
101 {
102  ContainerView::setModel(model);
103  GradeDelegate* delegate = new GradeDelegate(this);
104  for (int i = 2; i < model->columnCount(QModelIndex()); i++) {
105  setItemDelegateForColumn(i, delegate);
106  setColumnWidth(i, 150);
107  }
108 // header()->resizeSections(QHeaderView::ResizeToContents);
109  header()->setResizeMode(QHeaderView::Interactive);
110  header()->setStretchLastSection(true);
111 }
112 
113 void LessonStatisticsView::removeGrades()
114 {
115  QModelIndex selectedIndex = selectionModel()->currentIndex();
116  KEduVocLesson* lesson = static_cast<KEduVocLesson*>(selectedIndex.internalPointer());
117  lesson->resetGrades(-1, KEduVocContainer::NotRecursive);
118 }
119 
120 #include "lessonstatistics.moc"
121 
122 
QWidget
StatisticsModel::TotalCount
Definition: statisticsmodel.h:30
prefs.h
QObject
lessonstatistics.h
StatisticsModel::TotalPercent
Definition: statisticsmodel.h:29
Editor::ContainerModel
Model for the tree of containers (lessons, word types).
Definition: containermodel.h:33
LessonStatisticsView::LessonStatisticsView
LessonStatisticsView(QWidget *parent)
Definition: lessonstatistics.cpp:83
Editor::ContainerModel::columnCount
virtual int columnCount(const QModelIndex &parent=QModelIndex()) const
Definition: containermodel.cpp:187
Editor::ContainerView
View for containers (KEduVocContainer).
Definition: containerview.h:31
StatisticsModel::Grade0
Definition: statisticsmodel.h:31
QItemDelegate
Prefs::gradeColor
static QColor gradeColor(int i)
Get Colors used to display different grades.
Definition: prefs.h:977
LessonStatisticsView::setModel
void setModel(Editor::ContainerModel *model)
Set the model for the view.
Definition: lessonstatistics.cpp:100
statisticsmodel.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:42:06 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
  • kstars
  • libkdeedu
  •   keduvocdocument
  • 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