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

Kate

  • kde-4.14
  • applications
  • kate
  • part
  • variableeditor
variablelistview.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE project
2 
3  Copyright (C) 2011 Dominik Haumann <dhaumann kde org>
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License as published by the Free Software Foundation; either
8  version 2 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Library General Public License for more details.
14 
15  You should have received a copy of the GNU Library General Public License
16  along with this library; see the file COPYING.LIB. If not, write to
17  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  Boston, MA 02110-1301, USA.
19 */
20 
21 #include "variableeditor.h"
22 #include "variablelistview.h"
23 #include "variableitem.h"
24 
25 #include <QtGui/QResizeEvent>
26 
27 VariableListView::VariableListView(const QString& variableLine, QWidget* parent)
28  : QScrollArea(parent)
29 {
30  setBackgroundRole(QPalette::Base);
31 
32  setWidget(new QWidget(this));
33 
34  parseVariables(variableLine);
35 }
36 
37 VariableListView::~VariableListView()
38 {
39 }
40 
41 void VariableListView::parseVariables(const QString& line)
42 {
43  QString tmp = line.trimmed();
44  if (tmp.startsWith("kate:")) {
45  tmp.remove(0, 5);
46  }
47 
48  QStringList variables = tmp.split(';', QString::SkipEmptyParts);
49 
50  QRegExp sep("\\s+");
51  for (int i = 0; i < variables.size(); ++i) {
52  QStringList pair = variables[i].split(sep, QString::SkipEmptyParts);
53  if (pair.size() < 2) {
54  continue;
55  }
56  if (pair.size() > 2) { // e.g. fonts have spaces in the value. Hence, join all value items again
57  QString key = pair[0];
58  pair.removeAt(0);
59  QString value = pair.join(" ");
60  pair.clear();
61  pair << key << value;
62  }
63 
64  m_variables[pair[0]] = pair[1];
65  }
66 }
67 
68 void VariableListView::addItem(VariableItem* item)
69 {
70  // overwrite default value when variable exists in modeline
71  if (m_variables.contains(item->variable())) {
72  item->setValueByString(m_variables[item->variable()]);
73  item->setActive(true);
74  }
75 
76  VariableEditor* editor = item->createEditor(widget());
77  editor->setBackgroundRole((m_editors.size() % 2) ? QPalette::AlternateBase : QPalette::Base);
78 
79  m_editors << editor;
80  m_items << item;
81 
82  connect(editor, SIGNAL(valueChanged()), this, SIGNAL(changed()));
83 }
84 
85 void VariableListView::resizeEvent(QResizeEvent* event)
86 {
87  QScrollArea::resizeEvent(event);
88 
89  // calculate sum of all editor heights
90  int listHeight = 0;
91  foreach (QWidget* w, m_editors) {
92  listHeight += w->sizeHint().height();
93  }
94 
95  // resize scroll area widget
96  QWidget* top = widget();
97  top->resize(event->size().width(), listHeight);
98 
99  // set client geometries correctly
100  int h = 0;
101  foreach (QWidget* w, m_editors) {
102  w->setGeometry(0, h, top->width(), w->sizeHint().height());
103  h += w->sizeHint().height();
104  }
105 }
106 
107 void VariableListView::hideEvent(QHideEvent* event)
108 {
109  if (!event->spontaneous()) {
110  emit aboutToHide();
111  }
112  QScrollArea::hideEvent(event);
113 }
114 
115 QString VariableListView::variableLine()
116 {
117  for (int i = 0; i < m_items.size(); ++i) {
118  VariableItem* item = m_items[i];
119 
120  if (item->isActive()) {
121  m_variables[item->variable()] = item->valueAsString();
122  } else if (m_variables.contains(item->variable())) {
123  m_variables.remove(item->variable());
124  }
125  }
126 
127  QString line;
128  QMap<QString, QString>::const_iterator it = m_variables.constBegin();
129  while (it != m_variables.constEnd()) {
130  if (!line.isEmpty()) {
131  line += " ";
132  }
133  line += it.key() + ' ' + it.value() + ';';
134 
135  ++it;
136  }
137 
138  line.prepend("kate: ");
139 
140  return line;
141 }
142 // kate: indent-width 2; replace-tabs on;
QHideEvent
QList::clear
void clear()
QResizeEvent
QWidget
QScrollArea::setWidget
void setWidget(QWidget *widget)
variableeditor.h
QSize::width
int width() const
VariableListView::hideEvent
virtual void hideEvent(QHideEvent *event)
Definition: variablelistview.cpp:107
QMap::contains
bool contains(const Key &key) const
VariableItem::setActive
void setActive(bool active)
Definition: variableitem.cpp:56
QString::split
QStringList split(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs) const
QScrollArea::widget
QWidget * widget() const
QString::prepend
QString & prepend(QChar ch)
QMap::constBegin
const_iterator constBegin() const
QMap
VariableItem::createEditor
virtual VariableEditor * createEditor(QWidget *parent)=0
VariableListView::variableLine
QString variableLine()
always returns the up-to-date variables line
Definition: variablelistview.cpp:115
QList::removeAt
void removeAt(int i)
VariableListView::aboutToHide
void aboutToHide()
VariableListView::addItem
void addItem(VariableItem *item)
Definition: variablelistview.cpp:68
QStringList::join
QString join(const QString &separator) const
VariableListView::m_editors
QVector< VariableEditor * > m_editors
Definition: variablelistview.h:54
QString::remove
QString & remove(int position, int n)
QList::size
int size() const
QWidget::setGeometry
void setGeometry(int x, int y, int w, int h)
VariableItem::setValueByString
virtual void setValueByString(const QString &value)=0
VariableListView::parseVariables
void parseVariables(const QString &line)
Definition: variablelistview.cpp:41
QWidget::width
width
QWidget::resize
void resize(int w, int h)
QRegExp
VariableItem
Definition: variableitem.h:32
QScrollArea::resizeEvent
virtual void resizeEvent(QResizeEvent *)
QWidget::hideEvent
virtual void hideEvent(QHideEvent *event)
VariableListView::VariableListView
VariableListView(const QString &variableLine, QWidget *parent=0)
Definition: variablelistview.cpp:27
QString::isEmpty
bool isEmpty() const
QString::trimmed
QString trimmed() const
QMap::constEnd
const_iterator constEnd() const
QString::startsWith
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const
QEvent::spontaneous
bool spontaneous() const
VariableItem::variable
QString variable() const
Definition: variableitem.cpp:36
QString
QStringList
QResizeEvent::size
const QSize & size() const
variablelistview.h
QWidget::sizeHint
sizeHint
QMap::key
const Key key(const T &value) const
VariableListView::changed
void changed()
VariableEditor
Definition: variableeditor.h:50
VariableItem::isActive
bool isActive() const
Definition: variableitem.cpp:51
QWidget::QWidget
QWidget(QWidget *parent, QFlags< Qt::WindowType > f)
VariableListView::m_variables
QMap< QString, QString > m_variables
Definition: variablelistview.h:56
QStringList::split
QStringList split(const QString &sep, const QString &str, bool allowEmptyEntries)
VariableListView::resizeEvent
virtual void resizeEvent(QResizeEvent *event)
Definition: variablelistview.cpp:85
VariableListView::~VariableListView
virtual ~VariableListView()
Definition: variablelistview.cpp:37
VariableListView::m_items
QVector< VariableItem * > m_items
Definition: variablelistview.h:53
QWidget::setBackgroundRole
void setBackgroundRole(QPalette::ColorRole role)
QScrollArea
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QVector::size
int size() const
VariableItem::valueAsString
virtual QString valueAsString() const =0
variableitem.h
QMap::value
const T value(const Key &key) const
QMap::remove
int remove(const Key &key)
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Sat May 9 2020 03:56:59 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Kate

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

applications API Reference

Skip menu "applications API Reference"
  •   kate
  •       kate
  •   KTextEditor
  •   Kate
  • Konsole

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