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

libs/libkexiv2/libkexiv2

  • sources
  • kde-4.14
  • kdegraphics
  • libs
  • libkexiv2
  • libkexiv2
altlangstredit.cpp
Go to the documentation of this file.
1 
26 #include "altlangstredit.moc"
27 
28 // Qt includes
29 
30 #include <QEvent>
31 #include <QStyle>
32 #include <QLabel>
33 #include <QMap>
34 #include <QToolButton>
35 #include <QGridLayout>
36 
37 // KDE includes
38 
39 #include <kdialog.h>
40 #include <kglobal.h>
41 #include <kiconloader.h>
42 #include <klocale.h>
43 #include <ktextedit.h>
44 #include <kcombobox.h>
45 #include <kdebug.h>
46 
47 // Local includes
48 
49 #include "msgtextedit.h"
50 
51 namespace KExiv2Iface
52 {
53 
54 class AltLangStrEdit::Private
55 {
56 public:
57 
58  Private()
59  {
60  valueEdit = 0;
61  titleLabel = 0;
62  delValueButton = 0;
63  languageCB = 0;
64  linesVisible = 0;
65  currentLanguage = "x-default";
66 
67  // We cannot use KLocale::allLanguagesList() here because KDE only
68  // support 2 characters country codes. XMP require 2+2 characters language+country
69  // following ISO 3066 (http://babelwiki.babelzilla.org/index.php?title=Language_codes)
70 
71  // The first one from the list is the Default Language code specified by XMP paper
72  languageCodeMap.insert( "x-default", i18n("Default Language") );
73 
74  // Standard ISO 3066 country codes.
75 
76  languageCodeMap.insert( "af-ZA", i18n("Afrikaans (South Africa)") );
77  languageCodeMap.insert( "am-ET", i18n("Amharic (Ethiopia)") );
78  languageCodeMap.insert( "ar-AE", i18n("Arabic (UAE)") );
79  languageCodeMap.insert( "ar-BH", i18n("Arabic (Bahrain)") );
80  languageCodeMap.insert( "ar-DZ", i18n("Arabic (Algeria)") );
81  languageCodeMap.insert( "ar-EG", i18n("Arabic (Egypt)") );
82  languageCodeMap.insert( "ar-IQ", i18n("Arabic (Iraq)") );
83  languageCodeMap.insert( "ar-JO", i18n("Arabic (Jordan)") );
84  languageCodeMap.insert( "ar-KW", i18n("Arabic (Kuwait)") );
85  languageCodeMap.insert( "ar-LB", i18n("Arabic (Lebanon)") );
86  languageCodeMap.insert( "ar-LY", i18n("Arabic (Libya)") );
87  languageCodeMap.insert( "ar-MA", i18n("Arabic (Morocco)") );
88  languageCodeMap.insert( "ar-OM", i18n("Arabic (Oman)") );
89  languageCodeMap.insert( "ar-QA", i18n("Arabic (Qatar)") );
90  languageCodeMap.insert( "ar-SA", i18n("Arabic (Saudi Arabia)") );
91  languageCodeMap.insert( "ar-SY", i18n("Arabic (Syria)") );
92  languageCodeMap.insert( "ar-TN", i18n("Arabic (Tunisia)") );
93  languageCodeMap.insert( "ar-YE", i18n("Arabic (Yemen)") );
94  languageCodeMap.insert( "as-IN", i18n("Assamese (India)") );
95  languageCodeMap.insert( "ba-RU", i18n("Bashkir (Russia)") );
96  languageCodeMap.insert( "be-BY", i18n("Belarusian (Belarus)") );
97  languageCodeMap.insert( "bg-BG", i18n("Bulgarian (Bulgaria)") );
98  languageCodeMap.insert( "bn-IN", i18n("Bengali (India)") );
99  languageCodeMap.insert( "bo-BT", i18n("Tibetan (Bhutan)") );
100  languageCodeMap.insert( "bo-CN", i18n("Tibetan (PRC)") );
101  languageCodeMap.insert( "br-FR", i18n("Breton (France)") );
102  languageCodeMap.insert( "ca-AD", i18n("Catalan (Andorra)") );
103  languageCodeMap.insert( "ca-ES", i18n("Catalan (Spain)") );
104  languageCodeMap.insert( "ca-FR", i18n("Catalan (France)") );
105  languageCodeMap.insert( "co-FR", i18n("Corsican (France)") );
106  languageCodeMap.insert( "cs-CZ", i18n("Czech (Czech Republic)") );
107  languageCodeMap.insert( "cy-GB", i18n("Welsh (United Kingdom)") );
108  languageCodeMap.insert( "da-DK", i18n("Danish (Denmark)") );
109  languageCodeMap.insert( "de-AT", i18n("German (Austria)") );
110  languageCodeMap.insert( "de-CH", i18n("German (Switzerland)") );
111  languageCodeMap.insert( "de-DE", i18n("German (Germany)") );
112  languageCodeMap.insert( "de-LI", i18n("German (Liechtenstein)") );
113  languageCodeMap.insert( "de-LU", i18n("German (Luxembourg)") );
114  languageCodeMap.insert( "el-GR", i18n("Greek (Greece)") );
115  languageCodeMap.insert( "en-AU", i18n("English (Australia)") );
116  languageCodeMap.insert( "en-BZ", i18n("English (Belize)") );
117  languageCodeMap.insert( "en-CA", i18n("English (Canada)") );
118  languageCodeMap.insert( "en-CB", i18n("English (Caribbean)") );
119  languageCodeMap.insert( "en-GB", i18n("English (United Kingdom)") );
120  languageCodeMap.insert( "en-IE", i18n("English (Ireland)") );
121  languageCodeMap.insert( "en-IN", i18n("English (India)") );
122  languageCodeMap.insert( "en-JA", i18n("English (Jamaica)") );
123  languageCodeMap.insert( "en-MY", i18n("English (Malaysia)") );
124  languageCodeMap.insert( "en-NZ", i18n("English (New Zealand)") );
125  languageCodeMap.insert( "en-PH", i18n("English (Philippines)") );
126  languageCodeMap.insert( "en-SG", i18n("English (Singapore)") );
127  languageCodeMap.insert( "en-TT", i18n("English (Trinidad)") );
128  languageCodeMap.insert( "en-US", i18n("English (United States)") );
129  languageCodeMap.insert( "en-ZA", i18n("English (South Africa)") );
130  languageCodeMap.insert( "en-ZW", i18n("English (Zimbabwe)") );
131  languageCodeMap.insert( "es-AR", i18n("Spanish (Argentina)") );
132  languageCodeMap.insert( "es-BO", i18n("Spanish (Bolivia)") );
133  languageCodeMap.insert( "es-CL", i18n("Spanish (Chile)") );
134  languageCodeMap.insert( "es-CO", i18n("Spanish (Colombia)") );
135  languageCodeMap.insert( "es-CR", i18n("Spanish (Costa Rica)") );
136  languageCodeMap.insert( "es-DO", i18n("Spanish (Dominican Republic)") );
137  languageCodeMap.insert( "es-EC", i18n("Spanish (Ecuador)") );
138  languageCodeMap.insert( "es-ES", i18n("Spanish (Spain)") );
139  languageCodeMap.insert( "es-GT", i18n("Spanish (Guatemala)") );
140  languageCodeMap.insert( "es-HN", i18n("Spanish (Honduras)") );
141  languageCodeMap.insert( "es-MX", i18n("Spanish (Mexico)") );
142  languageCodeMap.insert( "es-NI", i18n("Spanish (Nicaragua)") );
143  languageCodeMap.insert( "es-PA", i18n("Spanish (Panama)") );
144  languageCodeMap.insert( "es-PE", i18n("Spanish (Peru)") );
145  languageCodeMap.insert( "es-PR", i18n("Spanish (Puerto Rico)") );
146  languageCodeMap.insert( "es-PY", i18n("Spanish (Paraguay)") );
147  languageCodeMap.insert( "es-SV", i18n("Spanish (El Salvador)") );
148  languageCodeMap.insert( "es-UR", i18n("Spanish (Uruguay)") );
149  languageCodeMap.insert( "es-US", i18n("Spanish (United States)") );
150  languageCodeMap.insert( "es-VE", i18n("Spanish (Venezuela)") );
151  languageCodeMap.insert( "et-EE", i18n("Estonian (Estonia)") );
152  languageCodeMap.insert( "eu-ES", i18n("Basque (Basque Country)") );
153  languageCodeMap.insert( "fa-IR", i18n("Persian (Iran)") );
154  languageCodeMap.insert( "fi-FI", i18n("Finnish (Finland)") );
155  languageCodeMap.insert( "fo-FO", i18n("Faeroese (Faero Islands)") );
156  languageCodeMap.insert( "fr-BE", i18n("French (Belgium)") );
157  languageCodeMap.insert( "fr-CA", i18n("French (Canada)") );
158  languageCodeMap.insert( "fr-CH", i18n("French (Switzerland)") );
159  languageCodeMap.insert( "fr-FR", i18n("French (France)") );
160  languageCodeMap.insert( "fr-LU", i18n("French (Luxembourg)") );
161  languageCodeMap.insert( "fr-MC", i18n("French (Monaco)") );
162  languageCodeMap.insert( "fy-NL", i18n("Frisian (Netherlands)") );
163  languageCodeMap.insert( "ga-IE", i18n("Irish (Ireland)") );
164  languageCodeMap.insert( "gl-ES", i18n("Galician (Galicia)") );
165  languageCodeMap.insert( "gu-IN", i18n("Gujarati (India)") );
166  languageCodeMap.insert( "he-IL", i18n("Hebrew (Israel)") );
167  languageCodeMap.insert( "hi-IN", i18n("Hindi (India)") );
168  languageCodeMap.insert( "hr-BA", i18n("Croatian (Bosnia and Herzegovina, Latin)") );
169  languageCodeMap.insert( "hr-HR", i18n("Croatian (Croatia)") );
170  languageCodeMap.insert( "hu-HU", i18n("Hungarian (Hungary)") );
171  languageCodeMap.insert( "hy-AM", i18n("Armenian (Armenia)") );
172  languageCodeMap.insert( "id-ID", i18n("(Indonesian)") );
173  languageCodeMap.insert( "ii-CN", i18n("Yi (PRC)") );
174  languageCodeMap.insert( "is-IS", i18n("Icelandic (Iceland)") );
175  languageCodeMap.insert( "it-CH", i18n("Italian (Switzerland)") );
176  languageCodeMap.insert( "it-IT", i18n("Italian (Italy)") );
177  languageCodeMap.insert( "ja-JP", i18n("Japanese (Japan)") );
178  languageCodeMap.insert( "ka-GE", i18n("Georgian (Georgia)") );
179  languageCodeMap.insert( "kk-KZ", i18n("Kazakh (Kazakhstan)") );
180  languageCodeMap.insert( "kl-GL", i18n("Greenlandic (Greenland)") );
181  languageCodeMap.insert( "km-KH", i18n("Khmer (Cambodia)") );
182  languageCodeMap.insert( "kn-IN", i18n("Kannada (India)") );
183  languageCodeMap.insert( "ko-KR", i18n("Korean (South Korea)") );
184  languageCodeMap.insert( "ky-KG", i18n("Kyrgyz (Kyrgyzstan)") );
185  languageCodeMap.insert( "lb-LU", i18n("Luxembourgish (Luxembourg)") );
186  languageCodeMap.insert( "lo-LA", i18n("Lao (Lao PDR)") );
187  languageCodeMap.insert( "lt-LT", i18n("Lithuanian (Lithuania)") );
188  languageCodeMap.insert( "lv-LV", i18n("Latvian (Latvia)") );
189  languageCodeMap.insert( "mi-NZ", i18n("Maori (New Zealand)") );
190  languageCodeMap.insert( "mk-MK", i18n("Macedonian (Macedonia)") );
191  languageCodeMap.insert( "ml-IN", i18n("Malayalam (India)") );
192  languageCodeMap.insert( "mn-CN", i18n("Mongolian (PRC)") );
193  languageCodeMap.insert( "mn-MN", i18n("Mongolian (Mongolia)") );
194  languageCodeMap.insert( "mr-IN", i18n("Marathi (India)") );
195  languageCodeMap.insert( "ms-BN", i18n("Malay (Brunei Darussalam)") );
196  languageCodeMap.insert( "ms-MY", i18n("Malay (Malaysia)") );
197  languageCodeMap.insert( "mt-MT", i18n("Maltese (Malta)") );
198  languageCodeMap.insert( "nb-NO", i18n("Norwegian BokmÃ¥l (Norway)") );
199  languageCodeMap.insert( "ne-NP", i18n("Nepali (Nepal)") );
200  languageCodeMap.insert( "nl-BE", i18n("Dutch (Belgium)") );
201  languageCodeMap.insert( "nl-NL", i18n("Dutch (Netherlands)") );
202  languageCodeMap.insert( "nn-NO", i18n("Norwegian Nynorsk (Norway)") );
203  languageCodeMap.insert( "ns-ZA", i18n("Sesotho sa Leboa (South Africa)") );
204  languageCodeMap.insert( "oc-FR", i18n("Occitan (France)") );
205  languageCodeMap.insert( "or-IN", i18n("Oriya (India)") );
206  languageCodeMap.insert( "pa-IN", i18n("Punjabi (India)") );
207  languageCodeMap.insert( "pl-PL", i18n("Polish (Poland)") );
208  languageCodeMap.insert( "ps-AF", i18n("Pashto (Afghanistan)") );
209  languageCodeMap.insert( "pt-BR", i18n("Portuguese (Brazil)") );
210  languageCodeMap.insert( "pt-PT", i18n("Portuguese (Portugal)") );
211  languageCodeMap.insert( "rm-CH", i18n("Romansh (Switzerland)") );
212  languageCodeMap.insert( "ro-RO", i18n("Romanian (Romania)") );
213  languageCodeMap.insert( "ru-RU", i18n("Russian (Russia)") );
214  languageCodeMap.insert( "rw-RW", i18n("Kinyarwanda (Rwanda)") );
215  languageCodeMap.insert( "sa-IN", i18n("Sanskrit (India)") );
216  languageCodeMap.insert( "se-FI", i18n("Sami (Northern, Finland)") );
217  languageCodeMap.insert( "se-NO", i18n("Sami (Northern, Norway)") );
218  languageCodeMap.insert( "se-SE", i18n("Sami (Northern, Sweden)") );
219  languageCodeMap.insert( "si-LK", i18n("Sinhala (Sri Lanka)") );
220  languageCodeMap.insert( "sk-SK", i18n("Slovak (Slovakia)") );
221  languageCodeMap.insert( "sl-SI", i18n("Slovenian (Slovenia)") );
222  languageCodeMap.insert( "sq-AL", i18n("Albanian (Albania)") );
223  languageCodeMap.insert( "sv-FI", i18n("Swedish (Finland)") );
224  languageCodeMap.insert( "sv-SE", i18n("Swedish (Sweden)") );
225  languageCodeMap.insert( "sw-KE", i18n("Swahili (Kenya)") );
226  languageCodeMap.insert( "ta-IN", i18n("Tamil (India)") );
227  languageCodeMap.insert( "te-IN", i18n("Telugu (India)") );
228  languageCodeMap.insert( "th-TH", i18n("Thai (Thailand)") );
229  languageCodeMap.insert( "tk-TM", i18n("Turkmen (Turkmenistan)") );
230  languageCodeMap.insert( "tn-ZA", i18n("Setswana Tswana (South Africa)") );
231  languageCodeMap.insert( "tr-IN", i18n("Urdu (India)") );
232  languageCodeMap.insert( "tr-TR", i18n("Turkish (Turkey)") );
233  languageCodeMap.insert( "tt-RU", i18n("Tatar (Russia)") );
234  languageCodeMap.insert( "ug-CN", i18n("Uighur (PRC)") );
235  languageCodeMap.insert( "uk-UA", i18n("Ukrainian (Ukraine)") );
236  languageCodeMap.insert( "ur-PK", i18n("Urdu (Pakistan)") );
237  languageCodeMap.insert( "vi-VN", i18n("Vietnamese (Vietnam)") );
238  languageCodeMap.insert( "wo-SN", i18n("Wolof (Senegal)") );
239  languageCodeMap.insert( "xh-ZA", i18n("isiXhosa Xhosa (South Africa)") );
240  languageCodeMap.insert( "yo-NG", i18n("Yoruba (Nigeria)") );
241  languageCodeMap.insert( "zh-CN", i18n("Chinese (PRC)") );
242  languageCodeMap.insert( "zh-HK", i18n("Chinese (Hong Kong SAR, PRC)") );
243  languageCodeMap.insert( "zh-MO", i18n("Chinese (Macao SAR)") );
244  languageCodeMap.insert( "zh-SG", i18n("Chinese (Singapore)") );
245  languageCodeMap.insert( "zh-TW", i18n("Chinese (Taiwan)") );
246  languageCodeMap.insert( "zu-ZA", i18n("isiZulu Zulu (South Africa)") );
247  }
248 
249  ~Private()
250  {
251  languageCodeMap.clear();
252  }
253 
254 public:
255 
256  typedef QMap<QString, QString> LanguageCodeMap;
257 
258  LanguageCodeMap languageCodeMap;
259 
260  QString currentLanguage;
261 
262  uint linesVisible;
263 
264  QLabel* titleLabel;
265 
266  QToolButton* delValueButton;
267 
268  MsgTextEdit* valueEdit;
269 
270  KComboBox* languageCB;
271 
272  KExiv2::AltLangMap values;
273 };
274 
275 AltLangStrEdit::AltLangStrEdit(QWidget* parent)
276  : QWidget(parent), d(new Private)
277 {
278  QGridLayout* const grid = new QGridLayout(this);
279  d->titleLabel = new QLabel(this);
280  d->delValueButton = new QToolButton(this);
281  d->delValueButton->setIcon(SmallIcon("edit-clear"));
282  d->delValueButton->setToolTip(i18n("Remove entry for this language"));
283  d->delValueButton->setEnabled(false);
284 
285  d->languageCB = new KComboBox(this);
286  d->languageCB->setSizeAdjustPolicy(KComboBox::AdjustToContents);
287  d->languageCB->setWhatsThis(i18n("Select item language here."));
288 
289  d->valueEdit = new MsgTextEdit(this);
290  d->valueEdit->setCheckSpellingEnabled(true);
291 
292  // --------------------------------------------------------
293 
294  grid->setAlignment( Qt::AlignTop );
295  grid->addWidget(d->titleLabel, 0, 0, 1, 1);
296  grid->addWidget(d->languageCB, 0, 2, 1, 1);
297  grid->addWidget(d->delValueButton, 0, 3, 1, 1);
298  grid->addWidget(d->valueEdit, 1, 0, 1,-1);
299  grid->setColumnStretch(1, 10);
300  grid->setMargin(0);
301  grid->setSpacing(KDialog::spacingHint());
302 
303  loadLangAltListEntries();
304 
305  // --------------------------------------------------------
306 
307  connect(d->languageCB, SIGNAL(currentIndexChanged(int)),
308  this, SLOT(slotSelectionChanged()));
309 
310  connect(d->delValueButton, SIGNAL(clicked()),
311  this, SLOT(slotDeleteValue()));
312 
313  connect(d->valueEdit, SIGNAL(textChanged()),
314  this, SLOT(slotTextChanged()));
315 }
316 
317 AltLangStrEdit::~AltLangStrEdit()
318 {
319  delete d;
320 }
321 
322 QString AltLangStrEdit::currentLanguageCode() const
323 {
324  return d->currentLanguage;
325 }
326 
327 void AltLangStrEdit::setCurrentLanguageCode(const QString& lang)
328 {
329  if(d->currentLanguage.isEmpty())
330  {
331  d->currentLanguage = "x-default";
332  }
333  else
334  {
335  d->currentLanguage = lang;
336  }
337 }
338 
339 QString AltLangStrEdit::languageCode(int index) const
340 {
341  return d->languageCB->itemText(index);
342 }
343 
344 void AltLangStrEdit::setTitle(const QString& title)
345 {
346  d->titleLabel->setText(title);
347 }
348 
349 void AltLangStrEdit::setClickMessage(const QString& msg)
350 {
351  d->valueEdit->setClickMessage(msg);
352 }
353 
354 void AltLangStrEdit::reset()
355 {
356  setValues(KExiv2::AltLangMap());
357 }
358 
359 void AltLangStrEdit::slotDeleteValue()
360 {
361  d->values.remove(d->currentLanguage);
362  setValues(d->values);
363  emit signalValueDeleted(d->currentLanguage);
364 }
365 
366 void AltLangStrEdit::slotSelectionChanged()
367 {
368  d->currentLanguage = d->languageCB->currentText();
369 
370  // There are bogus signals caused by spell checking, see bug #141663.
371  // so we must block signals here.
372 
373  d->valueEdit->blockSignals(true);
374 
375  QString langISO3066 = d->currentLanguage;
376  langISO3066.replace('-', '_');
377  d->valueEdit->setSpellCheckingLanguage(langISO3066);
378 
379  QString text = d->values.value(d->currentLanguage);
380  d->valueEdit->setText(text);
381  d->delValueButton->setEnabled(!text.isNull());
382 
383  d->valueEdit->blockSignals(false);
384 
385  d->languageCB->setToolTip(d->languageCodeMap.value(d->currentLanguage));
386 
387  emit signalSelectionChanged(d->currentLanguage);
388 }
389 
390 void AltLangStrEdit::setValues(const KExiv2::AltLangMap& values)
391 {
392  d->values = values;
393  loadLangAltListEntries();
394 
395  d->valueEdit->blockSignals(true);
396 
397  QString text = d->values.value(d->currentLanguage);
398  d->valueEdit->setText(text);
399  d->delValueButton->setEnabled(!text.isNull());
400 
401  d->valueEdit->blockSignals(false);
402 }
403 
404 KExiv2::AltLangMap& AltLangStrEdit::values()
405 {
406  return d->values;
407 }
408 
409 void AltLangStrEdit::loadLangAltListEntries()
410 {
411  d->languageCB->blockSignals(true);
412 
413  d->languageCB->clear();
414 
415  // In first we fill already assigned languages.
416 
417  QStringList list = d->values.keys();
418 
419  if (!list.isEmpty())
420  {
421  foreach(const QString& item, list)
422  {
423  d->languageCB->addItem(item);
424  d->languageCB->setItemIcon(d->languageCB->count()-1, SmallIcon("dialog-ok"));
425  }
426 
427  d->languageCB->insertSeparator(d->languageCB->count());
428  }
429 
430  // ...and now, all the rest...
431 
432  for (Private::LanguageCodeMap::Iterator it = d->languageCodeMap.begin();
433  it != d->languageCodeMap.end(); ++it)
434  {
435  if (!list.contains(it.key()))
436  {
437  d->languageCB->addItem(it.key());
438  }
439  }
440 
441  d->languageCB->setCurrentItem(d->currentLanguage);
442 
443  d->languageCB->blockSignals(false);
444 }
445 
446 QString AltLangStrEdit::defaultAltLang() const
447 {
448  return d->values.value(QString("x-default"));
449 }
450 
451 bool AltLangStrEdit::asDefaultAltLang() const
452 {
453  return !defaultAltLang().isNull();
454 }
455 
456 void AltLangStrEdit::slotTextChanged()
457 {
458  QString editedText = d->valueEdit->toPlainText();
459  QString previousText = d->values.value(d->currentLanguage);
460 
461  // Special case : if edited and previous strings are empty, do nothing.
462  // See bug #152948.
463  if (editedText.isEmpty() && previousText.isNull())
464  {
465  return;
466  }
467 
468  if (editedText.isEmpty())
469  {
470  slotDeleteValue();
471  }
472  else if (previousText.isNull())
473  {
474  addCurrent();
475  }
476  else if (editedText != previousText)
477  {
478  // we cannot trust that the text actually changed
479  // (there are bogus signals caused by spell checking, see bug #141663)
480  // so we have to check before marking the metadata as modified.
481  d->values.insert(d->currentLanguage, editedText);
482  emit signalModified(d->currentLanguage, editedText);
483  }
484 }
485 
486 void AltLangStrEdit::addCurrent()
487 {
488  QString text = d->valueEdit->toPlainText();
489 
490  d->values.insert(d->currentLanguage, text);
491  loadLangAltListEntries();
492  d->delValueButton->setEnabled(true);
493  emit signalValueAdded(d->currentLanguage, text);
494 }
495 
496 void AltLangStrEdit::setLinesVisible(uint lines)
497 {
498  d->linesVisible = lines;
499 
500  if (d->linesVisible == 0)
501  {
502  d->valueEdit->setFixedHeight(QWIDGETSIZE_MAX); // reset
503  }
504  else
505  {
506  d->valueEdit->setFixedHeight(d->valueEdit->fontMetrics().lineSpacing() * d->linesVisible +
507  d->valueEdit->contentsMargins().top() +
508  d->valueEdit->contentsMargins().bottom() +
509  1 +
510  2*(d->valueEdit->style()->pixelMetric(QStyle::PM_DefaultFrameWidth) +
511  d->valueEdit->style()->pixelMetric(QStyle::PM_FocusFrameVMargin))
512  );
513  }
514 
515  // It's not possible to display scrollbar properlly if size is too small
516  if (d->linesVisible < 3)
517  {
518  d->valueEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
519  }
520 }
521 
522 uint AltLangStrEdit::linesVisible() const
523 {
524  return d->linesVisible;
525 }
526 
527 void AltLangStrEdit::changeEvent(QEvent* e)
528 {
529  if (e->type() == QEvent::FontChange)
530  {
531  setLinesVisible(linesVisible());
532  }
533 
534  QWidget::changeEvent(e);
535 }
536 
537 } // namespace KExiv2Iface
KExiv2Iface::AltLangStrEdit::reset
void reset()
Reset widget, clear all entries.
Definition: altlangstredit.cpp:354
QEvent
QWidget
KExiv2Iface::AltLangStrEdit::currentLanguageCode
QString currentLanguageCode() const
Definition: altlangstredit.cpp:322
KExiv2Iface::AltLangStrEdit::slotSelectionChanged
void slotSelectionChanged()
Definition: altlangstredit.cpp:366
QEvent::type
Type type() const
KExiv2Iface::AltLangStrEdit::defaultAltLang
QString defaultAltLang() const
Definition: altlangstredit.cpp:446
KExiv2Iface::AltLangStrEdit::signalModified
void signalModified(const QString &lang, const QString &text)
Emitted when the user changes the text for the current language.
KExiv2Iface::AltLangStrEdit::setLinesVisible
void setLinesVisible(uint lines)
Fix lines visibile in text editor to lines.
Definition: altlangstredit.cpp:496
QGridLayout::addWidget
void addWidget(QWidget *widget, int row, int column, QFlags< Qt::AlignmentFlag > alignment)
KExiv2Iface::AltLangStrEdit::AltLangStrEdit
AltLangStrEdit(QWidget *parent)
Definition: altlangstredit.cpp:275
QMap< QString, QString >
QStringList::contains
bool contains(const QString &str, Qt::CaseSensitivity cs) const
KExiv2Iface::AltLangStrEdit::addCurrent
void addCurrent()
Ensure that the current language is added to the list of entries, even if the text is empty...
Definition: altlangstredit.cpp:486
QGridLayout
KExiv2Iface::AltLangStrEdit::setCurrentLanguageCode
void setCurrentLanguageCode(const QString &lang)
Definition: altlangstredit.cpp:327
KExiv2Iface::AltLangStrEdit::signalSelectionChanged
void signalSelectionChanged(const QString &lang)
Emitted when the current language changed.
KExiv2Iface::AltLangStrEdit::signalValueAdded
void signalValueAdded(const QString &lang, const QString &text)
Emitted when an entry for a new language is added.
QGridLayout::setSpacing
void setSpacing(int spacing)
KExiv2Iface::AltLangStrEdit::setValues
void setValues(const KExiv2::AltLangMap &values)
Definition: altlangstredit.cpp:390
QString::isNull
bool isNull() const
KExiv2Iface::AltLangStrEdit::~AltLangStrEdit
~AltLangStrEdit()
Definition: altlangstredit.cpp:317
KExiv2Iface::AltLangStrEdit::loadLangAltListEntries
void loadLangAltListEntries()
Definition: altlangstredit.cpp:409
KExiv2Iface::AltLangStrEdit::setTitle
void setTitle(const QString &title)
Definition: altlangstredit.cpp:344
KExiv2Iface::AltLangStrEdit::asDefaultAltLang
bool asDefaultAltLang() const
Definition: altlangstredit.cpp:451
KExiv2Iface::AltLangStrEdit::linesVisible
uint linesVisible() const
Definition: altlangstredit.cpp:522
QList::isEmpty
bool isEmpty() const
QString::isEmpty
bool isEmpty() const
QString
QLayout::setMargin
void setMargin(int margin)
QWidget::changeEvent
virtual void changeEvent(QEvent *event)
QStringList
QToolButton
KExiv2Iface::MsgTextEdit
Definition: msgtextedit.h:45
KExiv2Iface::AltLangStrEdit::values
KExiv2::AltLangMap & values()
Definition: altlangstredit.cpp:404
QLayout::setAlignment
bool setAlignment(QWidget *w, QFlags< Qt::AlignmentFlag > alignment)
QString::replace
QString & replace(int position, int n, QChar after)
KExiv2Iface::AltLangStrEdit::signalValueDeleted
void signalValueDeleted(const QString &lang)
Emitted when the entry for a language is removed.
KExiv2Iface::AltLangStrEdit::slotTextChanged
void slotTextChanged()
Definition: altlangstredit.cpp:456
QGridLayout::setColumnStretch
void setColumnStretch(int column, int stretch)
KComboBox
KExiv2Iface::AltLangStrEdit::languageCode
QString languageCode(int index) const
Definition: altlangstredit.cpp:339
KExiv2Iface::AltLangStrEdit::slotDeleteValue
void slotDeleteValue()
Definition: altlangstredit.cpp:359
QMap< QString, QString >::Iterator
typedef Iterator
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QLabel
KExiv2Iface::AltLangStrEdit::changeEvent
virtual void changeEvent(QEvent *e)
Definition: altlangstredit.cpp:527
KExiv2Iface::AltLangStrEdit::setClickMessage
void setClickMessage(const QString &msg)
Definition: altlangstredit.cpp:349
msgtextedit.h
===========================================================This file is a part of digiKam project htt...
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:19:39 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

libs/libkexiv2/libkexiv2

Skip menu "libs/libkexiv2/libkexiv2"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdegraphics API Reference

Skip menu "kdegraphics API Reference"
  •     libkdcraw
  •     libkexiv2
  •     libkipi
  •     libksane
  • okular

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