• 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
  • welcomescreen
welcomescreen.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  Copyright 2008-2010 Daniel Laidig <d.laidig@gmx.de>
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 "welcomescreen.h"
15 #include "buttondelegate.h"
16 #include "parleymainwindow.h"
17 #include "parleydocument.h"
18 #include "practice/themedbackgroundrenderer.h"
19 #include "practice/imagewidget.h"
20 
21 #include <KMimeType>
22 
23 #include <QStandardItemModel>
24 #include <QTimer>
25 
26 WelcomeScreen::WelcomeScreen(ParleyMainWindow *parent)
27  :KXmlGuiWindow(parent)
28  ,m_mainWindow(parent)
29 {
30  // KXmlGui
31  setXMLFile("welcomescreenui.rc");
32  setObjectName("WelcomeScreen");
33 
34  m_widget = new Practice::ImageWidget(this);
35  m_widget->setScalingEnabled(false, false);
36  m_widget->setKeepAspectRatio(Qt::IgnoreAspectRatio);
37  m_widget->setFadingEnabled(false);
38 
39  ui = new Ui::WelcomeScreen();
40  ui->setupUi(m_widget);
41  setCentralWidget(m_widget);
42 
43  QFont font = ui->recentLabel->font();
44  font.setBold(true);
45  ui->recentLabel->setFont(font);
46 
47  ui->newButton->setIcon(KIcon("document-new"));
48  ui->openButton->setIcon(KIcon("document-open"));
49  ui->ghnsButton->setIcon(KIcon("get-hot-new-stuff"));
50 
51  m_recentFilesModel = new QStandardItemModel(this);
52  updateRecentFilesModel();
53  ui->recentFiles->setModel(m_recentFilesModel);
54  ui->recentFiles->setSelectionMode(QAbstractItemView::NoSelection);
55 
56  ButtonDelegate* delegate = new ButtonDelegate(ui->recentFiles, this);
57  ui->recentFiles->setItemDelegate(delegate);
58 
59  ParleyDocument* doc = m_mainWindow->parleyDocument();
60  connect(ui->newButton, SIGNAL(clicked()), doc, SLOT(slotFileNew()));
61  connect(ui->openButton, SIGNAL(clicked()), doc, SLOT(slotFileOpen()));
62  connect(ui->ghnsButton, SIGNAL(clicked()), doc, SLOT(slotGHNS()));
63  if (KGlobalSettings::singleClick()) {
64  connect(ui->recentFiles, SIGNAL(clicked(const QModelIndex&)), this, SLOT(slotDoubleClicked(const QModelIndex&)));
65  } else {
66  connect(ui->recentFiles, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(slotDoubleClicked(const QModelIndex&)));
67  }
68 
69  connect(m_mainWindow, SIGNAL(recentFilesChanged()), this, SLOT(updateRecentFilesModel()));
70 
71  KConfigGroup cfg(KSharedConfig::openConfig("parleyrc"), objectName());
72  applyMainWindowSettings(cfg);
73 
74  m_themedBackgroundRenderer = new Practice::ThemedBackgroundRenderer(this, "startpagethemecache.bin");
75 
76  connect(Prefs::self(), SIGNAL(configChanged()), this, SLOT(setTheme()));
77  setTheme();
78 
79  connect(m_themedBackgroundRenderer, SIGNAL(backgroundChanged(QPixmap)), this, SLOT(backgroundChanged(QPixmap)));
80  connect(m_widget, SIGNAL(sizeChanged()), this, SLOT(updateBackground()));
81 }
82 
83 WelcomeScreen::~WelcomeScreen()
84 {
85  KConfigGroup cfg(KSharedConfig::openConfig("parleyrc"), objectName());
86  saveMainWindowSettings(cfg);
87 }
88 
89 void WelcomeScreen::updateRecentFilesModel()
90 {
91  KConfig parleyConfig("parleyrc");
92  KConfigGroup recentFilesGroup(&parleyConfig, "Recent Files");
93 
94  m_recentFilesModel->clear();
95  for (int i = recentFilesGroup.keyList().count() / 2; i > 0 ; i--) {
96  QString urlString = recentFilesGroup.readPathEntry("File"+QString::number(i), QString());
97  QString nameString = recentFilesGroup.readEntry("Name"+QString::number(i), QString());
98 
99  KUrl url(urlString);
100 
101  QStandardItem* item = new QStandardItem;
102  item->setEditable(false);
103  item->setText(nameString+" ("+url.fileName()+')');
104  item->setToolTip(nameString+" ("+url.pathOrUrl()+')');
105  item->setData(QVariant(url), Qt::UserRole);
106 
107  item->setIcon(KIcon("practice-start"));
108 
109  m_recentFilesModel->appendRow(item);
110  }
111  if (m_recentFilesModel->rowCount(QModelIndex())) {
112  ui->recentLabel->setText(i18n("Last Opened Collections"));
113  } else {
114  ui->recentLabel->clear();
115  }
116 }
117 
118 void WelcomeScreen::slotOpenUrl(const KUrl& url)
119 {
120  if (!m_mainWindow->parleyDocument()->open(url)) {
121  return;
122  }
123  m_mainWindow->showEditor();
124 }
125 
126 void WelcomeScreen::slotDoubleClicked(const QModelIndex& index)
127 {
128  KUrl url = index.data(Qt::UserRole).toUrl();
129  m_openUrl = url;
130  QTimer::singleShot(0, this, SLOT(slotDoubleClickOpen()));
131 }
132 
133 void WelcomeScreen::slotDoubleClickOpen()
134 {
135  slotPracticeUrl(m_openUrl);
136 }
137 
138 void WelcomeScreen::slotPracticeUrl(const KUrl & url)
139 {
140  if (!m_mainWindow->parleyDocument()->open(url)) {
141  return;
142  }
143  m_mainWindow->showPracticeConfiguration();
144 }
145 
146 void WelcomeScreen::backgroundChanged(const QPixmap &pixmap)
147 {
148  m_widget->setPixmap(pixmap);
149 }
150 
151 void WelcomeScreen::setTheme()
152 {
153  m_themedBackgroundRenderer->setTheme(Prefs::theme());
154  updateFontColors();
155  updateBackground();
156  m_widget->setContentsMargins(m_themedBackgroundRenderer->contentMargins());
157 }
158 
159 void WelcomeScreen::updateFontColors()
160 {
161  QPalette p(QApplication::palette());
162  QColor c = m_themedBackgroundRenderer->fontColor("Start", p.color(QPalette::Active, QPalette::WindowText));
163  p.setColor(QPalette::Base, Qt::transparent);
164  p.setColor(QPalette::Text, c);
165  p.setColor(QPalette::WindowText, c);
166  m_widget->setPalette(p);
167 }
168 
169 void WelcomeScreen::updateBackground()
170 {
171  m_themedBackgroundRenderer->clearRects();
172  m_themedBackgroundRenderer->addRect("startbackground", QRect(QPoint(), m_widget->size()));
173  QRect headerRect = ui->headingLabel->frameGeometry();
174  headerRect.setBottom(ui->recentFiles->frameGeometry().top()-1);
175  m_themedBackgroundRenderer->addRect("startheader", headerRect);
176  m_themedBackgroundRenderer->addRect("recentfiles", ui->recentFiles->frameGeometry());
177  QPixmap pixmap = m_themedBackgroundRenderer->getScaledBackground();
178  if (!pixmap.isNull()) {
179  m_widget->setPixmap(pixmap);
180  }
181  m_themedBackgroundRenderer->updateBackground();
182 }
183 
184 #include "welcomescreen.moc"
WelcomeScreen::slotPracticeUrl
void slotPracticeUrl(const KUrl &url)
Definition: welcomescreen.cpp:138
ButtonDelegate
Definition: buttondelegate.h:24
ParleyMainWindow::showEditor
void showEditor()
Definition: parleymainwindow.cpp:266
buttondelegate.h
ParleyMainWindow
Definition: parleymainwindow.h:68
Practice::ThemedBackgroundRenderer::getScaledBackground
QPixmap getScaledBackground()
Definition: themedbackgroundrenderer.cpp:78
WelcomeScreen::~WelcomeScreen
~WelcomeScreen()
Definition: welcomescreen.cpp:83
WelcomeScreen::slotDoubleClickOpen
void slotDoubleClickOpen()
Definition: welcomescreen.cpp:133
Practice::ThemedBackgroundRenderer::contentMargins
QMargins contentMargins()
Definition: themedbackgroundrenderer.cpp:190
welcomescreen.h
Prefs::theme
static QString theme()
Get Theme to use for practice and welcome screen.
Definition: prefs.h:46
Practice::ImageWidget::setScalingEnabled
void setScalingEnabled(bool scaling, bool onlyDownscaling=true)
Definition: imagewidget.cpp:224
Prefs::self
static Prefs * self()
Definition: prefs.cpp:17
Practice::ThemedBackgroundRenderer::fontColor
QColor fontColor(const QString &context, const QColor &fallback)
Definition: themedbackgroundrenderer.cpp:106
parleydocument.h
WelcomeScreen::slotOpenUrl
void slotOpenUrl(const KUrl &url)
Definition: welcomescreen.cpp:118
ParleyDocument
Definition: parleydocument.h:29
WelcomeScreen::updateRecentFilesModel
void updateRecentFilesModel()
Definition: welcomescreen.cpp:89
KXmlGuiWindow
Practice::ImageWidget::setKeepAspectRatio
void setKeepAspectRatio(Qt::AspectRatioMode mode)
Definition: imagewidget.cpp:230
ParleyMainWindow::showPracticeConfiguration
void showPracticeConfiguration()
Definition: parleymainwindow.cpp:271
Practice::ThemedBackgroundRenderer::addRect
void addRect(const QString &name, const QRect &rect)
Definition: themedbackgroundrenderer.cpp:69
Practice::ImageWidget::setPixmap
void setPixmap(const QPixmap &pixmap)
Definition: imagewidget.cpp:200
WelcomeScreen::WelcomeScreen
WelcomeScreen(ParleyMainWindow *parent)
Definition: welcomescreen.cpp:26
Practice::ThemedBackgroundRenderer::setTheme
void setTheme(const QString &theme)
Definition: themedbackgroundrenderer.cpp:50
Practice::ThemedBackgroundRenderer
Definition: themedbackgroundrenderer.h:30
parleymainwindow.h
Practice::ThemedBackgroundRenderer::updateBackground
void updateBackground()
Definition: themedbackgroundrenderer.cpp:119
imagewidget.h
Practice::ImageWidget::setFadingEnabled
void setFadingEnabled(bool fading)
Definition: imagewidget.cpp:235
Practice::ImageWidget
Definition: imagewidget.h:23
Practice::ThemedBackgroundRenderer::clearRects
void clearRects()
Definition: themedbackgroundrenderer.cpp:63
ParleyDocument::open
bool open(const KUrl &)
Opens the given url, displays an error message and returns false on failure.
Definition: parleydocument.cpp:182
ParleyMainWindow::parleyDocument
ParleyDocument * parleyDocument()
Return the ParleyDocument member object.
Definition: parleymainwindow.cpp:412
themedbackgroundrenderer.h
WelcomeScreen::slotDoubleClicked
void slotDoubleClicked(const QModelIndex &index)
Definition: welcomescreen.cpp:126
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