• 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
  • editor
vocabularycolumnsdialog.cpp
Go to the documentation of this file.
1 /***************************************************************************
2 
3  options to enable/disable columns for the languages
4 
5  -----------------------------------------------------------------------
6  copyright :(C) 2008 Javier goday <jgoday@gmail.com>
7  -----------------------------------------------------------------------
8 
9  ***************************************************************************/
10 
11 /***************************************************************************
12  * *
13  * This program is free software; you can redistribute it and/or modify *
14  * it under the terms of the GNU General Public License as published by *
15  * the Free Software Foundation; either version 2 of the License, or *
16  * (at your option) any later version. *
17  * *
18  ***************************************************************************/
19 
20 #include "vocabularycolumnsdialog.h"
21 
22 // parley imports
23 #include "documentsettings.h"
24 #include "vocabularymodel.h"
25 
26 // Qt imports
27 #include <QGridLayout>
28 #include <QGroupBox>
29 #include <QHeaderView>
30 #include <QStandardItem>
31 #include <QStandardItemModel>
32 #include <QTreeView>
33 #include <QVBoxLayout>
34 
35 // KDE imports
36 #include <keduvocdocument.h>
37 #include <KIcon>
38 #include <KLocale>
39 #include <KTitleWidget>
40 
41 const int COLUMNS_LIMIT = 1; // columns for row
42 
43 using namespace Editor;
44 
45 VocabularyColumnsDialog::VocabularyColumnsDialog(KEduVocDocument *doc, QWidget *parent)
46  : KDialog(parent),
47  m_models()
48 {
49  m_box = new QGridLayout();
50  m_doc = doc;
51  m_settings = new DocumentSettings(m_doc->url().url());
52 
53  setCaption(i18n("Vocabulary Columns"));
54  setButtons(Ok | Cancel);
55 
56  QWidget *main_widget = new QWidget(this);
57  main_widget->setLayout(m_box);
58 
59  setMainWidget(main_widget);
60 
61  KTitleWidget *titleWidget = new KTitleWidget(this);
62  titleWidget->setText(i18n("Enable/Disable the columns for each language"));
63  titleWidget->setPixmap(KIcon("view-file-columns").pixmap(22, 22), KTitleWidget::ImageRight);
64  m_box->addWidget(titleWidget, 0, 0, 1, 2);
65 
66  createLanguagesLayout();
67 }
68 
69 VocabularyColumnsDialog::~VocabularyColumnsDialog()
70 {
71  delete m_settings;
72 }
73 
74 void VocabularyColumnsDialog::accept()
75 {
76  saveVisibleColumns();
77  KDialog::accept();
78 }
79 
80 void VocabularyColumnsDialog::createLanguagesLayout()
81 {
82  int row = 1;
83  int column = 0;
84  for (int i = 0; i < m_doc->identifierCount(); i++) {
85  m_models [i] = new QStandardItemModel(this);
86 
87  QGroupBox *box = new QGroupBox(m_doc->identifier(i).name(), 0);
88  QVBoxLayout *box_layout = new QVBoxLayout(0);
89 
90  m_box->addWidget(box, row, column);
91 
92  if (column < COLUMNS_LIMIT) {
93  column ++;
94  } else {
95  row ++;
96  column = 0;
97  }
98 
99  box->setLayout(box_layout);
100 
101  addLanguage(i, box_layout);
102  }
103 }
104 
105 void VocabularyColumnsDialog::addLanguage(int i, QVBoxLayout *parent)
106 {
107  for (int c = 1; c < VocabularyModel::EntryColumnsMAX; c++) {
108  QStandardItem *item_data = new QStandardItem(VocabularyModel::columnTitle(m_doc, i, c));
109  item_data->setData(QVariant(c - 1), VocabularyColumnsDialog::ColumnRole);
110  item_data->setData(QVariant(i), VocabularyColumnsDialog::LanguageRole);
111  item_data->setCheckable(true);
112  item_data->setEditable(false);
113 
114  // check if the column is active
115  if (m_settings->visibleColumns().size() >= (i * 8 + c)) {
116  item_data->setCheckState(m_settings->visibleColumns().at(i * 8 + c) == 1 ? Qt::Checked : Qt::Unchecked);
117  }
118 
119  m_models [i]->insertRow(c - 1, item_data);
120  }
121 
122  QTreeView *treeView = new QTreeView(this);
123  treeView->header()->hide();
124  treeView->setModel(m_models [i]);
125 
126  parent->addWidget(treeView);
127 }
128 
129 void VocabularyColumnsDialog::saveVisibleColumns()
130 {
131  QList <int> columns;
132 
133  for (int i = 0; i < m_doc->identifierCount(); i++) { // each model for every language
134  columns << 1;
135  for (int row = 0; row < m_models [i]->rowCount(); row++) { // the columns for one language
136  int enabled = (m_models [i]->item(row)->checkState() == Qt::Checked) ? 1 : 0;
137  columns << enabled;
138  }
139  }
140 
141  // i think that this is not the place for this
142  m_settings->setVisibleColumns(columns);
143  m_settings->writeConfig();
144 }
QStandardItemModel
QWidget
QGridLayout::addWidget
void addWidget(QWidget *widget, int row, int column, QFlags< Qt::AlignmentFlag > alignment)
QList::at
const T & at(int i) const
documentsettings.h
DocumentSettings
Definition: documentsettings.h:9
DocumentSettings::visibleColumns
QList< int > visibleColumns() const
Get Visible columns in the main editor window.
Definition: documentsettings.h:53
QGridLayout
KDialog
QList::size
int size() const
QStandardItem::setData
virtual void setData(const QVariant &value, int role)
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
QWidget::setLayout
void setLayout(QLayout *layout)
QGroupBox
Editor::VocabularyColumnsDialog::LanguageRole
Definition: vocabularycolumnsdialog.h:46
QVBoxLayout
QList< int >
QWidget::hide
void hide()
Editor::VocabularyColumnsDialog::ColumnRole
Definition: vocabularycolumnsdialog.h:45
COLUMNS_LIMIT
const int COLUMNS_LIMIT
Definition: vocabularycolumnsdialog.cpp:41
vocabularycolumnsdialog.h
QTreeView
Editor::VocabularyColumnsDialog::~VocabularyColumnsDialog
~VocabularyColumnsDialog()
Definition: vocabularycolumnsdialog.cpp:69
Editor::VocabularyColumnsDialog::VocabularyColumnsDialog
VocabularyColumnsDialog(KEduVocDocument *doc, QWidget *parent)
Definition: vocabularycolumnsdialog.cpp:45
QTreeView::setModel
virtual void setModel(QAbstractItemModel *model)
VocabularyModel::columnTitle
static QString columnTitle(KEduVocDocument *document, int translation, int column)
Returns the name of the entryColumns column.
Definition: vocabularymodel.cpp:283
QTreeView::header
QHeaderView * header() const
QStandardItem::setCheckState
void setCheckState(Qt::CheckState state)
VocabularyModel::EntryColumnsMAX
Definition: vocabularymodel.h:44
QStandardItem
Editor::VocabularyColumnsDialog::accept
void accept()
Definition: vocabularycolumnsdialog.cpp:74
QStandardItem::setCheckable
void setCheckable(bool checkable)
QStandardItem::setEditable
void setEditable(bool editable)
vocabularymodel.h
DocumentSettings::setVisibleColumns
void setVisibleColumns(const QList< int > &v)
Set Visible columns in the main editor window.
Definition: documentsettings.h:44
QVariant
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