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

KDE3Support

  • sources
  • kde-4.14
  • kdelibs
  • kde3support
  • kdeui
k3aboutdialog.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of the KDE Libraries
3  * Copyright (C) 1999-2001 Mirko Boehm <mirko@kde.org> and
4  * Espen Sand <espensa@online.no>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public License
17  * along with this library; see the file COPYING.LIB. If not, write to
18  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  * Boston, MA 02110-1301, USA.
20  *
21  */
22 
23 #include "k3aboutdialog.h"
24 #include "k3aboutdialog_p.h"
25 #include <kdeversion.h>
26 #include <QtGui/QClipboard>
27 #include <QtGui/QImage>
28 #include <QtGui/QLabel>
29 #include <QtCore/QDebug>
30 #include <QtGui/QLayout>
31 #include <QtCore/QObject>
32 #include <QtGui/QPainter>
33 #include <QtCore/QRect>
34 #include <QtGui/QTabWidget>
35 #include <QtGui/QTabBar>
36 #include <QScrollArea>
37 #include <QtGui/QApplication>
38 #include <QtGui/QTextBrowser>
39 #include <QtGui/QStyle>
40 
41 #include <kglobal.h>
42 #include <kglobalsettings.h>
43 #include <klocale.h>
44 #include <kiconloader.h>
45 #include <kdebug.h>
46 #include <ktextedit.h>
47 
48 #ifndef Q_MOC_RUN
49 template class QList<K3AboutContributor *>;
50 #endif
51 
52 #define WORKTEXT_IDENTATION 16
53 #define Grid 3
54 
55 // ##############################################################
56 // MOC OUTPUT FILES:
57 #include "k3aboutdialog.moc"
58 #include "k3aboutdialog_p.moc"
59 // ##############################################################
60 
61 class K3AboutContributor::Private
62 {
63  public:
64  Private(K3AboutContributor *_parent)
65  : parent(_parent)
66  {
67  }
68 
69  K3AboutContributor *parent;
70  QLabel *label[4];
71  QLabel *text[4];
72  bool showHeader;
73  bool showBold;
74 
75  void updateLayout();
76 };
77 
78 void K3AboutContributor::Private::updateLayout()
79 {
80  delete parent->layout();
81 
82  int row = 0;
83  if (!text[0]->text().isEmpty()) { ++row; }
84  if (!text[1]->text().isEmpty()) { ++row; }
85  if (!text[2]->text().isEmpty()) { ++row; }
86  if (!text[3]->text().isEmpty()) { ++row; }
87 
88  QGridLayout *gbox;
89  if (row == 0)
90  {
91  gbox = new QGridLayout(parent);
92  gbox->setSpacing(1);
93  for (int i=0; i<4; ++i)
94  {
95  label[i]->hide();
96  text[i]->hide();
97  }
98  }
99  else
100  {
101  if (text[0]->text().isEmpty() && !showHeader)
102  {
103  gbox = new QGridLayout(parent);
104  gbox->setMargin(parent->frameWidth()+1);
105  gbox->setSpacing(2);
106  }
107  else
108  {
109  gbox = new QGridLayout(parent);
110  gbox->setMargin(parent->frameWidth()+1);
111  gbox->setSpacing(2);
112  if (!showHeader)
113  {
114  gbox->addItem(new QSpacerItem(KDialog::spacingHint()*2, 0), 0, 0);
115  }
116  gbox->setColumnStretch(1, 10);
117  }
118 
119  for (int i=0, r=0; i<4; ++i)
120  {
121  label[i]->setFixedHeight(parent->fontMetrics().lineSpacing());
122  if (i != 3)
123  {
124  text[i]->setFixedHeight(parent->fontMetrics().lineSpacing());
125  }
126 
127  if (!text[i]->text().isEmpty())
128  {
129  if (showHeader)
130  {
131  gbox->addWidget(label[i], r, 0, Qt::AlignLeft);
132  gbox->addWidget(text[i], r, 1, Qt::AlignLeft );
133  label[i]->show();
134  text[i]->show();
135  }
136  else
137  {
138  label[i]->hide();
139  if (!i)
140  {
141  gbox->addWidget(text[i], r, 0, 1, 2, Qt::AlignLeft);
142  }
143  else
144  {
145  gbox->addWidget(text[i], r, 1, Qt::AlignLeft );
146  }
147  text[i]->show();
148  }
149  ++r;
150  }
151  else
152  {
153  label[i]->hide();
154  text[i]->hide();
155  }
156  }
157  }
158 
159  gbox->activate();
160  parent->setMinimumSize(parent->sizeHint());
161 }
162 
163 K3AboutContributor::K3AboutContributor(QWidget *_parent,
164  const QString &_name,const QString &_email,
165  const QString &_url, const QString &_work,
166  bool showHeader, bool showFrame,
167  bool showBold)
168  : QFrame(_parent), d(new Private(this))
169 {
170  if (showFrame)
171  setFrameStyle(QFrame::Panel | QFrame::Plain);
172 
173  d->showHeader = showHeader;
174  d->showBold = showBold;
175  for (int i=0; i < 4; ++i) {
176  d->label[i] = new QLabel(this);
177  d->label[i]->setOpenExternalLinks(true);
178  d->label[i]->setTextInteractionFlags(Qt::LinksAccessibleByMouse);
179  d->text[i] = new QLabel(this);
180  d->text[i]->setOpenExternalLinks(true);
181  d->text[i]->setTextInteractionFlags(Qt::LinksAccessibleByMouse);
182  }
183 
184  setName(_name, i18n("Author"), false);
185  setEmail(_email, i18n("Email"), false);
186  setUrl(_url, i18n("Homepage"), false);
187  setWork(_work, i18n("Task"), false);
188 
189  d->label[3]->setAlignment(Qt::AlignTop);
190 
191  fontChange(font());
192  d->updateLayout();
193 }
194 
195 K3AboutContributor::~K3AboutContributor()
196 {
197  delete d;
198 }
199 
200 void K3AboutContributor::setName(const QString &_text, const QString &_header,
201  bool _update)
202 {
203  d->label[0]->setText(_header);
204  d->text[0]->setText(_text);
205  if (_update) { d->updateLayout(); }
206 }
207 
208 
209 void K3AboutContributor::setEmail(const QString &_text, const QString &_header,
210  bool _update)
211 {
212  if (_text.isEmpty())
213  return;
214  d->label[1]->setText(_header);
215  d->text[1]->setText(QString("<a href=\"mailto:%1\">%1</a>").arg(_text));
216  if (_update) { d->updateLayout(); }
217 }
218 
219 void K3AboutContributor::setUrl(const QString &_text, const QString &_header,
220  bool _update)
221 {
222  if (_text.isEmpty())
223  return;
224  d->label[2]->setText(_header);
225  d->text[2]->setText(QString("<a href=\"%1\">%1</a>").arg(_text));
226  if (_update) { d->updateLayout(); }
227 }
228 
229 void K3AboutContributor::setWork(const QString &_text, const QString &_header,
230  bool _update)
231 {
232  d->label[3]->setText(_header);
233  d->text[3]->setText(_text);
234  if (_update) { d->updateLayout(); }
235 }
236 
237 QString K3AboutContributor::name() const
238 {
239  return d->text[0]->text();
240 }
241 
242 QString K3AboutContributor::email() const
243 {
244  return d->text[1]->text();
245 }
246 
247 QString K3AboutContributor::url() const
248 {
249  return d->text[2]->text();
250 }
251 
252 QString K3AboutContributor::work() const
253 {
254  return d->text[3]->text();
255 }
256 
257 void K3AboutContributor::fontChange(const QFont &/*oldFont*/)
258 {
259  if (d->showBold)
260  {
261  QFont f(font());
262  f.setBold(true);
263  d->text[0]->setFont(f);
264  }
265  update();
266 }
267 
268 QSize K3AboutContributor::sizeHint(void) const
269 {
270  return minimumSizeHint();
271 }
272 
273 //
274 // Internal widget for the K3AboutDialog class.
275 //
276 K3AboutContainerBase::K3AboutContainerBase(int layoutType, QWidget *_parent)
277  : QWidget(_parent),
278  mImageLabel(0), mTitleLabel(0), mIconLabel(0),mVersionLabel(0),
279  mAuthorLabel(0), mImageFrame(0),mPageTab(0),mPlainSpace(0),d(0)
280 {
281  mTopLayout = new QVBoxLayout(this);
282  mTopLayout->setMargin(0);
283  mTopLayout->setSpacing(KDialog::spacingHint());
284 
285  if (layoutType & K3AboutDialog::ImageOnly)
286  {
287  layoutType &= ~(K3AboutDialog::ImageLeft|K3AboutDialog::ImageRight|K3AboutDialog::Tabbed|K3AboutDialog::Plain);
288  }
289  if (layoutType & K3AboutDialog::ImageLeft)
290  {
291  layoutType &= ~K3AboutDialog::ImageRight;
292  }
293 
294  if (layoutType & K3AboutDialog::Title)
295  {
296  mTitleLabel = new QLabel(this);
297  mTitleLabel->setObjectName("title");
298  mTitleLabel->setAlignment(Qt::AlignCenter);
299  mTopLayout->addWidget(mTitleLabel);
300  mTopLayout->addSpacing(KDialog::spacingHint());
301  }
302 
303  if (layoutType & K3AboutDialog::Product)
304  {
305  QFrame* const productArea = new QFrame(this);
306  productArea->setFrameStyle( QFrame::StyledPanel );
307  productArea->setFrameShadow( QFrame::Plain );
308  productArea->setBackgroundRole(QPalette::Base);
309  productArea->setAutoFillBackground(true);
310 
311 
312  QHBoxLayout* const hbox = new QHBoxLayout();
313  hbox->setMargin(3);
314  hbox->setSpacing(KDialog::spacingHint());
315 
316  mIconLabel = new QLabel(productArea);
317  hbox->addWidget(mIconLabel, 0, Qt::AlignLeft|Qt::AlignHCenter);
318 
319  QVBoxLayout* const vbox = new QVBoxLayout();
320  if (!vbox) { return; }
321 
322  mVersionLabel = new QLabel(productArea);
323  mVersionLabel->setObjectName("version");
324  mAuthorLabel = new QLabel(productArea);
325  mAuthorLabel->setObjectName("author");
326  vbox->addWidget(mVersionLabel);
327  vbox->addWidget(mAuthorLabel);
328  vbox->setMargin(3);
329 
330  hbox->addLayout(vbox);
331 
332  if ( QApplication::isRightToLeft() )
333  hbox->insertStretch(0 /* add stretch at start */ , 1);
334  else
335  hbox->insertStretch(-1 /* add stretch at end */ , 1);
336 
337  productArea->setLayout(hbox);
338 
339  mTopLayout->addWidget(productArea, 0);
340  }
341 
342  QHBoxLayout* const hbox = new QHBoxLayout();
343  if (!hbox) { return; }
344  mTopLayout->addLayout(hbox, 10);
345 
346  if (layoutType & K3AboutDialog::ImageLeft)
347  {
348  QVBoxLayout* vbox = new QVBoxLayout();
349  hbox->addLayout(vbox);
350  vbox->addSpacing(1);
351  mImageFrame = new QFrame(this);
352  mImageFrame->setAutoFillBackground(true);
353  setImageFrame(true);
354  vbox->addWidget(mImageFrame);
355  vbox->addSpacing(1);
356 
357  vbox = new QVBoxLayout(mImageFrame);
358  vbox->setSpacing(1);
359  mImageLabel = new QLabel(mImageFrame);
360  vbox->addStretch(10);
361  vbox->addWidget(mImageLabel);
362  vbox->addStretch(10);
363  vbox->activate();
364  }
365 
366  if (layoutType & K3AboutDialog::Tabbed)
367  {
368  mPageTab = new QTabWidget(this);
369  if (!mPageTab) { return; }
370  mPageTab->setUsesScrollButtons(false);
371  hbox->addWidget(mPageTab, 10);
372  }
373  else if (layoutType & K3AboutDialog::ImageOnly)
374  {
375  mImageFrame = new QFrame(this);
376  mImageFrame->setAutoFillBackground(true);
377  setImageFrame(true);
378  hbox->addWidget(mImageFrame, 10);
379 
380  QGridLayout* const gbox = new QGridLayout(mImageFrame);
381  gbox->setMargin(1);
382  gbox->setSpacing(0);
383  gbox->setRowStretch(0, 10);
384  gbox->setRowStretch(2, 10);
385  gbox->setColumnStretch(0, 10);
386  gbox->setColumnStretch(2, 10);
387 
388  mImageLabel = new QLabel(mImageFrame);
389  gbox->addWidget(mImageLabel, 1, 1);
390  gbox->activate();
391  }
392  else
393  {
394  mPlainSpace = new QFrame(this);
395  if (!mPlainSpace) { return; }
396  hbox->addWidget(mPlainSpace, 10);
397  }
398 
399  if (layoutType & K3AboutDialog::ImageRight)
400  {
401  QVBoxLayout *vbox = new QVBoxLayout();
402  hbox->addLayout(vbox);
403  vbox->addSpacing(1);
404  mImageFrame = new QFrame(this);
405  mImageFrame->setAutoFillBackground(true);
406  setImageFrame(true);
407  vbox->addWidget(mImageFrame);
408  vbox->addSpacing(1);
409 
410  vbox = new QVBoxLayout(mImageFrame);
411  vbox->setSpacing(1);
412  mImageLabel = new QLabel(mImageFrame);
413  vbox->addStretch(10);
414  vbox->addWidget(mImageLabel);
415  vbox->addStretch(10);
416  vbox->activate();
417  }
418 
419  fontChange(font());
420 }
421 
422 QSize K3AboutContainerBase::sizeHint() const
423 {
424  return minimumSize().expandedTo(QSize(QWidget::sizeHint().width(), 0));
425 }
426 
427 void K3AboutContainerBase::fontChange(const QFont &/*oldFont*/)
428 {
429  if (mTitleLabel)
430  {
431  QFont f(KGlobalSettings::generalFont());
432  f.setBold(true);
433  int fs = f.pointSize();
434  if (fs == -1)
435  fs = QFontInfo(f).pointSize();
436  f.setPointSize(fs+2); // Lets not make it too big
437  mTitleLabel->setFont(f);
438  }
439 
440  if (mVersionLabel)
441  {
442  QFont f(KGlobalSettings::generalFont());
443  mVersionLabel->setFont(f);
444  mAuthorLabel->setFont(f);
445  mVersionLabel->parentWidget()->layout()->activate();
446  }
447 
448  update();
449 }
450 
451 QFrame *K3AboutContainerBase::addTextPage(const QString &title,
452  const QString &text,
453  bool richText, int numLines)
454 {
455  QFrame *const page = addEmptyPage(title);
456  if (!page) { return 0; }
457  if (numLines <= 0) { numLines = 10; }
458 
459  QVBoxLayout* const vbox = new QVBoxLayout(page);
460  vbox->setSpacing(KDialog::spacingHint());
461 
462  if (richText)
463  {
464  QTextBrowser *browser = new QTextBrowser(page);
465  browser->setFrameStyle( QFrame::NoFrame );
466  browser->setOpenExternalLinks(true);
467  browser->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
468  browser->setHtml(text);
469  browser->setMinimumHeight(fontMetrics().lineSpacing()*numLines);
470 
471  vbox->addWidget(browser);
472  }
473  else
474  {
475  KTextEdit *const textEdit = new KTextEdit(page);
476  textEdit->setFrameStyle( QFrame::NoFrame );
477  textEdit->setObjectName("text");
478  textEdit->setReadOnly(true);
479  textEdit->setMinimumHeight(fontMetrics().lineSpacing()*numLines);
480  textEdit->setLineWrapMode(QTextEdit::NoWrap);
481  vbox->addWidget(textEdit);
482  }
483 
484  return page;
485 }
486 
487 QFrame *K3AboutContainerBase::addLicensePage(const QString &title,
488  const QString &text, int numLines)
489 {
490  QFrame *const page = addEmptyPage(title);
491  if (!page) { return 0; }
492  if (numLines <= 0) { numLines = 10; }
493 
494  QVBoxLayout* const vbox = new QVBoxLayout(page);
495  vbox->setSpacing(KDialog::spacingHint());
496 
497  vbox->setMargin(0);
498 
499  KTextEdit* const textEdit = new KTextEdit(page);
500  textEdit->setFrameStyle(QFrame::NoFrame);
501  textEdit->setObjectName("license");
502  textEdit->setFont(KGlobalSettings::fixedFont());
503  textEdit->setReadOnly(true);
504  textEdit->setLineWrapMode(QTextEdit::NoWrap);
505  textEdit->setPlainText(text);
506  textEdit->setMinimumHeight(fontMetrics().lineSpacing()*numLines);
507  vbox->addWidget(textEdit);
508  return page;
509 }
510 
511 
512 K3AboutContainer *K3AboutContainerBase::addContainerPage(const QString &title,
513  Qt::Alignment childAlignment,
514  Qt::Alignment innerAlignment)
515 {
516  if (!mPageTab)
517  {
518  kDebug(291) << "addPage: " << "Invalid layout";
519  return 0;
520  }
521 
522  K3AboutContainer* const container = new K3AboutContainer(0,
523  KDialog::spacingHint(), KDialog::spacingHint(), childAlignment,
524  innerAlignment);
525  mPageTab->addTab(container, title);
526  return container;
527 }
528 
529 
530 K3AboutContainer *K3AboutContainerBase::addScrolledContainerPage(
531  const QString &title,
532  Qt::Alignment childAlignment,
533  Qt::Alignment innerAlignment)
534 {
535  if (!mPageTab)
536  {
537  kDebug(291) << "addPage: " << "Invalid layout";
538  return 0;
539  }
540 
541  QFrame *const page = addEmptyPage(title);
542  QVBoxLayout* const vbox = new QVBoxLayout(page);
543  vbox->setSpacing(KDialog::spacingHint());
544  vbox->setMargin(0);
545 
546  QScrollArea* const scrollView = new QScrollArea(page);
547  scrollView->setFrameStyle(QFrame::Plain);
548  vbox->addWidget(scrollView);
549 
550  K3AboutContainer* const container = new K3AboutContainer(scrollView,
551  KDialog::spacingHint(), KDialog::spacingHint(), childAlignment,
552  innerAlignment);
553  scrollView->setWidget(container);
554  return container;
555 }
556 
557 
558 QFrame *K3AboutContainerBase::addEmptyPage(const QString &title)
559 {
560  if (!mPageTab)
561  {
562  kDebug(291) << "addPage: " << "Invalid layout";
563  return 0;
564  }
565 
566  QFrame *const page = new QFrame();
567  page->setObjectName(title.toLatin1());
568  page->setFrameStyle(QFrame::NoFrame);
569 
570  mPageTab->addTab(page, title);
571  return page;
572 }
573 
574 
575 K3AboutContainer *K3AboutContainerBase::addContainer(Qt::Alignment childAlignment,
576  Qt::Alignment innerAlignment)
577 {
578  K3AboutContainer* const container = new K3AboutContainer(this,
579  0, KDialog::spacingHint(), childAlignment, innerAlignment);
580  container->setObjectName("container");
581  mTopLayout->addWidget(container, 0, childAlignment);
582  return container;
583 }
584 
585 
586 
587 void K3AboutContainerBase::setTitle(const QString &title)
588 {
589  if (!mTitleLabel)
590  {
591  kDebug(291) << "setTitle: " << "Invalid layout";
592  return;
593  }
594  mTitleLabel->setText(title);
595 }
596 
597 
598 void K3AboutContainerBase::setImage(const QString &fileName)
599 {
600  if (!mImageLabel)
601  {
602  kDebug(291) << "setImage: " << "Invalid layout";
603  return;
604  }
605  if (fileName.isNull())
606  {
607  return;
608  }
609 
610  const QPixmap logo(fileName);
611  if (!logo.isNull())
612  mImageLabel->setPixmap(logo);
613 
614  mImageFrame->layout()->activate();
615 }
616 
617 void K3AboutContainerBase::setProgramLogo(const QString &fileName)
618 {
619  if (fileName.isNull())
620  {
621  return;
622  }
623 
624  const QPixmap logo(fileName);
625  setProgramLogo(logo);
626 }
627 
628 void K3AboutContainerBase::setProgramLogo(const QPixmap &pixmap)
629 {
630  if (!mIconLabel)
631  {
632  kDebug(291) << "setProgramLogo: " << "Invalid layout";
633  return;
634  }
635  if (!pixmap.isNull())
636  {
637  mIconLabel->setPixmap(pixmap);
638  }
639 }
640 
641 void K3AboutContainerBase::setImageBackgroundColor(const QColor &color)
642 {
643  if (mImageFrame)
644  {
645  QPalette palette(mImageFrame->palette());
646  palette.setColor(QPalette::Window, color);
647  mImageFrame->setPalette(palette);
648  }
649 }
650 
651 
652 void K3AboutContainerBase::setImageFrame(bool state)
653 {
654  if (mImageFrame)
655  {
656  if (state)
657  {
658  mImageFrame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
659  mImageFrame->setLineWidth(1);
660  }
661  else
662  {
663  mImageFrame->setFrameStyle(QFrame::NoFrame);
664  mImageFrame->setLineWidth(0);
665  }
666  }
667 }
668 
669 
670 void K3AboutContainerBase::setProduct(const QString &appName,
671  const QString &version,
672  const QString &author,
673  const QString &year)
674 {
675  if (!mIconLabel)
676  {
677  kDebug(291) << "setProduct: " << "Invalid layout";
678  return;
679  }
680 
681  int size = IconSize(KIconLoader::Desktop);
682  mIconLabel->setPixmap(qApp->windowIcon().pixmap(size,size));
683 
684  const QString msg1 = i18n("<html><font size=\"5\">%1</font><br/><b>version %2</b><br/>Using KDE %3</html>", appName, version,
685  QLatin1String(KDE_VERSION_STRING));
686  const QString msg2 = !year.isEmpty() ? i18n("%1 %2, %3", QChar(0xA9), year,
687  author) : QLatin1String("");
688 
689  //if (!year.isEmpty())
690  // msg2 = i18n("%1 %2, %3").arg(QChar(0xA9)).arg(year).arg(author);
691 
692  mVersionLabel->setText(msg1);
693  mAuthorLabel->setText(msg2);
694  if (msg2.isEmpty())
695  {
696  mAuthorLabel->hide();
697  }
698 
699  mIconLabel->parentWidget()->layout()->activate();
700 }
701 
702 class K3AboutContainer::Private
703 {
704  public:
705  QVBoxLayout *vbox;
706  Qt::Alignment alignment;
707 };
708 
709 K3AboutContainer::K3AboutContainer(QWidget *parent,
710  int margin, int spacing,
711  Qt::Alignment childAlignment,
712  Qt::Alignment innerAlignment)
713  : QFrame(parent), d(new Private)
714 {
715  d->alignment = innerAlignment;
716 
717  setFrameStyle(QFrame::NoFrame);
718 
719  QGridLayout* const gbox = new QGridLayout(this);
720  gbox->setMargin(margin);
721  gbox->setMargin(spacing);
722  if (childAlignment & Qt::AlignHCenter)
723  {
724  gbox->setColumnStretch(0, 10);
725  gbox->setColumnStretch(2, 10);
726  }
727  else if (childAlignment & Qt::AlignRight)
728  {
729  gbox->setColumnStretch(0, 10);
730  }
731  else
732  {
733  gbox->setColumnStretch(2, 10);
734  }
735 
736  if (childAlignment & Qt::AlignVCenter)
737  {
738  gbox->setRowStretch(0, 10);
739  gbox->setRowStretch(2, 10);
740  }
741  else if (childAlignment & Qt::AlignRight)
742  {
743  gbox->setRowStretch(0, 10);
744  }
745  else
746  {
747  gbox->setRowStretch(2, 10);
748  }
749 
750  d->vbox = new QVBoxLayout();
751  d->vbox->setSpacing(spacing);
752  gbox->addLayout(d->vbox, 1, 1);
753  gbox->activate();
754 }
755 
756 K3AboutContainer::~K3AboutContainer()
757 {
758  delete d;
759 }
760 
761 QSize K3AboutContainer::sizeHint(void) const
762 {
763  //
764  // The size is computed by adding the sizeHint().height() of all
765  // widget children and taking the width of the widest child and adding
766  // layout()->margin() and layout()->spacing()
767  //
768 
769  QSize total_size;
770 
771  int numChild = 0;
772  const QList<QObject*> l = children(); // silence please
773  foreach (QObject *o, l) {
774  if (o->isWidgetType())
775  {
776  ++numChild;
777  QWidget* const w= static_cast<QWidget *>(o);
778 
779  QSize s = w->minimumSize();
780  if (s.isEmpty())
781  {
782  s = w->minimumSizeHint();
783  if (s.isEmpty())
784  {
785  s = w->sizeHint();
786  if (s.isEmpty())
787  {
788  s = QSize(100, 100); // Default size
789  }
790  }
791  }
792  total_size.setHeight(total_size.height() + s.height());
793  if (s.width() > total_size.width()) { total_size.setWidth(s.width()); }
794  }
795  }
796 
797  if (numChild > 0)
798  {
799  //
800  // Seems I have to add 1 to the height to properly show the border
801  // of the last entry if layout()->margin() is 0
802  //
803 
804  total_size.setHeight(total_size.height() + layout()->spacing()*(numChild-1));
805  total_size += QSize(layout()->margin()*2, layout()->margin()*2 + 1);
806  }
807  else
808  {
809  total_size = QSize(1, 1);
810  }
811  return total_size;
812 }
813 
814 
815 QSize K3AboutContainer::minimumSizeHint(void) const
816 {
817  return sizeHint();
818 }
819 
820 void K3AboutContainer::addWidget(QWidget *widget)
821 {
822  widget->setParent(this);
823 
824  d->vbox->addWidget(widget, 0, d->alignment);
825  const QSize s(sizeHint());
826  setMinimumSize(s);
827 
828  const QList<QObject*> l = children(); // silence please
829  foreach (QObject *o, l) {
830  if (o->isWidgetType())
831  {
832  static_cast<QWidget *>(o)->setMinimumWidth(s.width());
833  }
834  }
835 
836 }
837 
838 void K3AboutContainer::addPerson(const QString &_name, const QString &_email,
839  const QString &_url, const QString &_task,
840  bool showHeader, bool showFrame,bool showBold)
841 {
842 
843  K3AboutContributor* const cont = new K3AboutContributor(this,
844  _name, _email, _url, _task, showHeader, showFrame, showBold);
845  cont->setObjectName("pers");
846  addWidget(cont);
847 }
848 
849 
850 void K3AboutContainer::addTitle(const QString &title, Qt::Alignment alignment,
851  bool showFrame, bool showBold)
852 {
853 
854  QLabel* const label = new QLabel(title, this);
855  label->setObjectName("title");
856  if (showBold )
857  {
858  QFont labelFont(font());
859  labelFont.setBold(true);
860  label->setFont(labelFont);
861  }
862  if (showFrame)
863  label->setFrameStyle(QFrame::Panel | QFrame::Raised);
864 
865  label->setAlignment(alignment);
866  addWidget(label);
867 }
868 
869 
870 void K3AboutContainer::addImage(const QString &fileName, Qt::Alignment alignment)
871 {
872  if (fileName.isNull())
873  {
874  return;
875  }
876 
877  QLabel* const label = new QLabel(this);
878  label->setObjectName("image");
879  const QImage logo(fileName);
880  if (!logo.isNull())
881  {
882  QPixmap pix;
883  pix = QPixmap::fromImage(logo, 0);
884  label->setPixmap(pix);
885  }
886  label->setAlignment(alignment);
887  addWidget(label);
888 }
889 
890 K3AboutWidget::K3AboutWidget(QWidget *_parent)
891  : QWidget(_parent),
892  version(new QLabel(this)),
893  cont(new QLabel(this)),
894  logo(new QLabel(this)),
895  author(new K3AboutContributor(this)),
896  maintainer(new K3AboutContributor(this)),
897  showMaintainer(false),
898  d(0)
899 {
900  cont->setText(i18n("Other Contributors:"));
901  logo->setText(i18n("(No logo available)"));
902  logo->setFrameStyle(QFrame::Panel | QFrame::Raised);
903  version->setAlignment(Qt::AlignCenter);
904 }
905 
906 
907 void K3AboutWidget::adjust()
908 {
909  int cx, cy, tempx;
910  int maintWidth, maintHeight;
911  QSize total_size;
912  // -----
913  if (showMaintainer)
914  {
915  total_size=maintainer->sizeHint();
916  maintWidth=total_size.width();
917  maintHeight=total_size.height();
918  } else {
919  maintWidth=0;
920  maintHeight=0;
921  }
922  total_size=author->sizeHint();
923  logo->adjustSize();
924  cy=version->sizeHint().height()+Grid;
925  cx=logo->width();
926  tempx=qMax(total_size.width(), maintWidth);
927  cx+=Grid+tempx;
928  cx=qMax(cx, version->sizeHint().width());
929  cy+=qMax(logo->height(),
930  total_size.height()+(showMaintainer ? Grid+maintHeight : 0));
931  // -----
932  if (!contributors.isEmpty())
933  {
934  cx=qMax(cx, cont->sizeHint().width());
935  cy+=cont->sizeHint().height()+Grid;
936  foreach(K3AboutContributor* currEntry, contributors)
937  {
938  cy+=currEntry->sizeHint().height();
939  }
940  }
941  // -----
942  setMinimumSize(cx, cy);
943 }
944 
945 void K3AboutWidget::setLogo(const QPixmap& i)
946 {
947  logo->setPixmap(i);
948 }
949 
950 void K3AboutWidget::setAuthor(const QString &_name, const QString &_email,
951  const QString &_url, const QString &_w)
952 {
953  author->setName(_name);
954  author->setEmail(_email);
955  author->setUrl(_url);
956  author->setWork(_w);
957 }
958 
959 void K3AboutWidget::setMaintainer(const QString &_name, const QString &_email,
960  const QString &_url, const QString &_w)
961 {
962  maintainer->setName(_name);
963  maintainer->setEmail(_email);
964  maintainer->setWork(_w);
965  maintainer->setUrl(_url);
966  showMaintainer=true;
967 }
968 
969 void K3AboutWidget::addContributor(const QString &_name, const QString &_email,
970  const QString &_url, const QString &_w)
971 {
972  K3AboutContributor* const c=new K3AboutContributor(this);
973  // -----
974  c->setName(_name);
975  c->setEmail(_email);
976  c->setUrl(_url);
977  c->setWork(_w);
978  contributors.append(c);
979 }
980 
981 void K3AboutWidget::setVersion(const QString &_name)
982 {
983  version->setText(_name);
984 }
985 
986 void K3AboutWidget::resizeEvent(QResizeEvent*)
987 {
988  int _x=0, _y, cx, tempx, tempy;
989  // ----- set version label geometry:
990  version->setGeometry(0, 0, width(), version->sizeHint().height());
991  _y=version->height()+Grid;
992  // ----- move logo to correct position:
993  logo->adjustSize();
994  logo->move(0, _y);
995  // ----- move author and maintainer right to it:
996  tempx=logo->width()+Grid;
997  cx=width()-tempx;
998  author->setGeometry
999  (tempx, _y, cx, author->sizeHint().height());
1000  maintainer->setGeometry
1001  (tempx, _y+author->height()+Grid, cx, maintainer->sizeHint().height());
1002 
1003  _y+=qMax(logo->height(),
1004  author->height()+(showMaintainer ? Grid+maintainer->height() : 0));
1005  // -----
1006  if (!contributors.isEmpty())
1007  {
1008  tempy=cont->sizeHint().height();
1009  cont->setGeometry(0, _y, width(), tempy);
1010  cont->show();
1011  _y+=tempy+Grid;
1012  } else {
1013  cont->hide();
1014  }
1015  foreach(K3AboutContributor *currEntry, contributors)
1016  {
1017  tempy=currEntry->sizeHint().height();
1018  // y+=Grid;
1019  currEntry->setGeometry(_x, _y, width(), tempy);
1020  _y+=tempy;
1021  }
1022  if (showMaintainer)
1023  {
1024  maintainer->show();
1025  } else {
1026  maintainer->hide();
1027  }
1028 }
1029 
1030 K3AboutDialog::K3AboutDialog(QWidget *_parent)
1031  : KDialog(_parent),
1032  mAbout(new K3AboutWidget(this)), mContainerBase(0), d(0)
1033 {
1034  setButtons(Ok);
1035  setModal(true);
1036  setMainWidget(mAbout);
1037 }
1038 
1039 K3AboutDialog::K3AboutDialog(int layoutType, const QString &_caption, QWidget *_parent)
1040  : KDialog(_parent),
1041  mAbout(0), d(0)
1042 {
1043  setModal(true);
1044  setPlainCaption(i18n("About %1", _caption));
1045 
1046  mContainerBase = new K3AboutContainerBase(layoutType, this);
1047  setMainWidget(mContainerBase);
1048 }
1049 
1050 
1051 void K3AboutDialog::show(void)
1052 {
1053  adjust();
1054  if (mContainerBase) { mContainerBase->show(); }
1055  QDialog::show();
1056 }
1057 
1058 
1059 void K3AboutDialog::show(QWidget * /*centerParent*/)
1060 {
1061  adjust();
1062  if (mContainerBase) { mContainerBase->show(); }
1063  QDialog::show();
1064 }
1065 
1066 void K3AboutDialog::adjust()
1067 {
1068  if (!mAbout)
1069  return;
1070 
1071  mAbout->adjust();
1072  resize(sizeHint());
1073 }
1074 
1075 void K3AboutDialog::setLogo(const QPixmap& i)
1076 {
1077  if (!mAbout)
1078  return;
1079 
1080  mAbout->setLogo(i);
1081 }
1082 
1083 void K3AboutDialog::setMaintainer(const QString &_name, const QString &_email,
1084  const QString &_url, const QString &_w)
1085 {
1086  if (!mAbout)
1087  return;
1088 
1089  mAbout->setMaintainer(_name, _email, _url, _w);
1090 }
1091 
1092 void K3AboutDialog::setAuthor(const QString &_name, const QString &_email,
1093  const QString &_url, const QString &_work)
1094 {
1095  if (!mAbout)
1096  return;
1097 
1098  mAbout->setAuthor(_name, _email, _url, _work);
1099 }
1100 
1101 void K3AboutDialog::addContributor(const QString &_name, const QString &_email,
1102  const QString &_url, const QString &_w)
1103 {
1104  if (!mAbout)
1105  return;
1106 
1107  mAbout->addContributor(_name, _email, _url, _w);
1108 }
1109 
1110 void K3AboutDialog::setVersion(const QString &_name)
1111 {
1112  if (!mAbout)
1113  return;
1114 
1115  mAbout->setVersion(_name);
1116 }
1117 
1118 QFrame *K3AboutDialog::addTextPage(const QString &title, const QString &text,
1119  bool richText, int numLines)
1120 {
1121  if (!mContainerBase) { return 0; }
1122  return mContainerBase->addTextPage(title, text, richText, numLines);
1123 }
1124 
1125 QFrame *K3AboutDialog::addLicensePage(const QString &title, const QString &text,
1126  int numLines)
1127 {
1128  if (!mContainerBase) { return 0; }
1129  return mContainerBase->addLicensePage(title, text, numLines);
1130 }
1131 
1132 K3AboutContainer *K3AboutDialog::addContainerPage(const QString &title,
1133  Qt::Alignment childAlignment, Qt::Alignment innerAlignment)
1134 {
1135  if (!mContainerBase) { return 0; }
1136  return mContainerBase->addContainerPage(title, childAlignment,
1137  innerAlignment);
1138 }
1139 
1140 K3AboutContainer *K3AboutDialog::addScrolledContainerPage(const QString &title,
1141  Qt::Alignment childAlignment, Qt::Alignment innerAlignment)
1142 {
1143  if (!mContainerBase) { return 0; }
1144  return mContainerBase->addScrolledContainerPage(title, childAlignment,
1145  innerAlignment);
1146 }
1147 
1148 QFrame *K3AboutDialog::addPage(const QString &title)
1149 {
1150  if (!mContainerBase) { return 0; }
1151  return mContainerBase->addEmptyPage(title);
1152 }
1153 
1154 
1155 K3AboutContainer *K3AboutDialog::addContainer(Qt::Alignment childAlignment,
1156  Qt::Alignment innerAlignment)
1157 {
1158  if (!mContainerBase) { return 0; }
1159  return mContainerBase->addContainer(childAlignment, innerAlignment);
1160 }
1161 
1162 
1163 void K3AboutDialog::setTitle(const QString &title)
1164 {
1165  if (!mContainerBase) { return; }
1166  mContainerBase->setTitle(title);
1167 }
1168 
1169 void K3AboutDialog::setImage(const QString &fileName)
1170 {
1171  if (!mContainerBase) { return; }
1172  mContainerBase->setImage(fileName);
1173 }
1174 
1175 void K3AboutDialog::setProgramLogo(const QString &fileName)
1176 {
1177  if (!mContainerBase) { return; }
1178  mContainerBase->setProgramLogo(fileName);
1179 }
1180 
1181 void K3AboutDialog::setProgramLogo(const QPixmap &pixmap)
1182 {
1183  if (!mContainerBase) { return; }
1184  mContainerBase->setProgramLogo(pixmap);
1185 }
1186 
1187 void K3AboutDialog::setImageBackgroundColor(const QColor &color)
1188 {
1189  if (!mContainerBase) { return; }
1190  mContainerBase->setImageBackgroundColor(color);
1191 }
1192 
1193 void K3AboutDialog::setImageFrame(bool state)
1194 {
1195  if (!mContainerBase) { return; }
1196  mContainerBase->setImageFrame(state);
1197 }
1198 
1199 void K3AboutDialog::setProduct(const QString &appName, const QString &version,
1200  const QString &author, const QString &year)
1201 {
1202  if (!mContainerBase) { return; }
1203  mContainerBase->setProduct(appName, version, author, year);
1204 }
1205 
1206 void K3AboutDialog::imageUrl(QWidget *_parent, const QString &_caption,
1207  const QString &_path, const QColor &_imageColor,
1208  const QString &_url)
1209 {
1210  K3AboutDialog a(ImageOnly, QString(), _parent);
1211  a.setButtons(Close);
1212  a.setDefaultButton(Close);
1213  a.setObjectName("image");
1214  a.setPlainCaption(_caption);
1215  a.setImage(_path);
1216  a.setImageBackgroundColor(_imageColor);
1217 
1218  K3AboutContainer* const c = a.addContainer(Qt::AlignCenter, Qt::AlignCenter);
1219  if (c)
1220  {
1221  c->addPerson(QString(), QString(), _url, QString());
1222  }
1223  a.exec();
1224 }
1225 
QWidget::layout
QLayout * layout() const
K3AboutContributor::setUrl
void setUrl(const QString &text, const QString &header=QString(), bool update=true)
Definition: k3aboutdialog.cpp:219
QSpacerItem
K3AboutContainer::addImage
void addImage(const QString &fileName, Qt::Alignment alignment=Qt::AlignLeft)
Definition: k3aboutdialog.cpp:870
K3AboutContainer
K3AboutContainer can be used to make a application specific AboutDialog.
Definition: k3aboutdialog.h:46
i18n
QString i18n(const char *text)
K3AboutDialog::setProduct
void setProduct(const QString &appName, const QString &version, const QString &author, const QString &year)
(Constructor II only) Prints the application name, KDE version, author, a copyright sign and a year s...
Definition: k3aboutdialog.cpp:1199
K3AboutWidget::setVersion
void setVersion(const QString &name)
Sets the text describing the version.
Definition: k3aboutdialog.cpp:981
QResizeEvent
QWidget
K3AboutDialog::setImage
void setImage(const QString &fileName)
(Constructor II only) Define an image to be shown in the dialog.
Definition: k3aboutdialog.cpp:1169
K3AboutWidget::author
K3AboutContributor * author
The application developer.
Definition: k3aboutdialog.h:202
QFont::setPointSize
void setPointSize(int pointSize)
QSize::setHeight
void setHeight(int height)
QApplication::isRightToLeft
bool isRightToLeft()
K3AboutDialog::addPage
QFrame * addPage(const QString &title)
(Constructor II only) Adds an empty page to a tab box.
Definition: k3aboutdialog.cpp:1148
QScrollArea::setWidget
void setWidget(QWidget *widget)
QWidget::palette
const QPalette & palette() const
QSize::width
int width() const
k3aboutdialog_p.h
QDialog::setModal
void setModal(bool modal)
QBoxLayout::insertStretch
void insertStretch(int index, int stretch)
K3AboutContributor::setEmail
void setEmail(const QString &text, const QString &header=QString(), bool update=true)
Definition: k3aboutdialog.cpp:209
K3AboutDialog::addTextPage
QFrame * addTextPage(const QString &title, const QString &text, bool richText=false, int numLines=10)
(Constructor II only) Adds a text page to a tab box.
Definition: k3aboutdialog.cpp:1118
IconSize
int IconSize(KIconLoader::Group group)
kdebug.h
K3AboutDialog::setVersion
void setVersion(const QString &name)
(Constructor I only) Sets the text describing the version.
Definition: k3aboutdialog.cpp:1110
K3AboutContainerBase::addScrolledContainerPage
K3AboutContainer * addScrolledContainerPage(const QString &title, Qt::Alignment childAlignment=Qt::AlignCenter, Qt::Alignment innerAlignment=Qt::AlignCenter)
Definition: k3aboutdialog.cpp:530
K3AboutWidget::logo
QLabel * logo
The frame showing the logo.
Definition: k3aboutdialog.h:197
K3AboutContainerBase::addContainerPage
K3AboutContainer * addContainerPage(const QString &title, Qt::Alignment childAlignment=Qt::AlignCenter, Qt::Alignment innerAlignment=Qt::AlignCenter)
Definition: k3aboutdialog.cpp:512
QPalette::setColor
void setColor(ColorGroup group, ColorRole role, const QColor &color)
QGridLayout::addWidget
void addWidget(QWidget *widget, int row, int column, QFlags< Qt::AlignmentFlag > alignment)
K3AboutWidget::resizeEvent
void resizeEvent(QResizeEvent *)
The resize event.
Definition: k3aboutdialog.cpp:986
kglobalsettings.h
QSize::isEmpty
bool isEmpty() const
K3AboutWidget::K3AboutWidget
K3AboutWidget(QWidget *parent=0)
Creates a new about widget.
Definition: k3aboutdialog.cpp:890
K3AboutDialog::show
virtual void show()
Makes a modeless dialog visible.
Definition: k3aboutdialog.cpp:1051
K3AboutContributor::sizeHint
virtual QSize sizeHint() const
Definition: k3aboutdialog.cpp:268
QChar
K3AboutWidget::showMaintainer
bool showMaintainer
Show the maintainer?
Definition: k3aboutdialog.h:212
QTextEdit::setHtml
void setHtml(const QString &text)
K3AboutContainerBase::setProduct
void setProduct(const QString &appName, const QString &version, const QString &author, const QString &year)
Definition: k3aboutdialog.cpp:670
K3AboutContainer::K3AboutContainer
K3AboutContainer(QWidget *parent=0, int margin=0, int spacing=0, Qt::Alignment childAlignment=Qt::AlignCenter, Qt::Alignment innerAlignment=Qt::AlignCenter)
Definition: k3aboutdialog.cpp:709
QFont
label
QString label(StandardShortcut id)
QLabel::setPixmap
void setPixmap(const QPixmap &)
K3AboutWidget::adjust
void adjust()
Adjust the minimum size (after setting the properties of the image and the labels.
Definition: k3aboutdialog.cpp:907
QWidget::setMinimumWidth
void setMinimumWidth(int minw)
QObject::children
const QObjectList & children() const
K3AboutDialog::mContainerBase
K3AboutContainerBase * mContainerBase
The main widget (Constructor II)
Definition: k3aboutdialog.h:529
K3AboutContainerBase
Used internally by K3AboutDialog.
Definition: k3aboutdialog_p.h:39
Grid
#define Grid
Definition: k3aboutdialog.cpp:53
K3AboutDialog::ImageOnly
Definition: k3aboutdialog.h:271
QHBoxLayout
QDialog::exec
int exec()
QLabel::setAlignment
void setAlignment(QFlags< Qt::AlignmentFlag >)
QPixmap::fromImage
QPixmap fromImage(const QImage &image, QFlags< Qt::ImageConversionFlag > flags)
K3AboutDialog::setMaintainer
void setMaintainer(const QString &name, const QString &email, const QString &url, const QString &work)
(Constructor I only) Sets the maintainer's name and email address.
Definition: k3aboutdialog.cpp:1083
QWidget::minimumSizeHint
virtual QSize minimumSizeHint() const
K3AboutWidget::addContributor
void addContributor(const QString &name, const QString &email, const QString &url, const QString &work)
Shows this person as one of the major contributors.
Definition: k3aboutdialog.cpp:969
kiconloader.h
QGridLayout
K3AboutContainerBase::addLicensePage
QFrame * addLicensePage(const QString &title, const QString &text, int numLines=10)
Definition: k3aboutdialog.cpp:487
KDialog
K3AboutContainer::minimumSizeHint
virtual QSize minimumSizeHint() const
Definition: k3aboutdialog.cpp:815
K3AboutContainerBase::setTitle
void setTitle(const QString &title)
Definition: k3aboutdialog.cpp:587
QImage::isNull
bool isNull() const
QFrame::setFrameStyle
void setFrameStyle(int style)
QTextEdit::setPlainText
void setPlainText(const QString &text)
QBoxLayout::addSpacing
void addSpacing(int size)
QFrame::setLineWidth
void setLineWidth(int)
kDebug
static QDebug kDebug(bool cond, int area=KDE_DEFAULT_DEBUG_AREA)
Qt::Alignment
typedef Alignment
klocale.h
QWidget::adjustSize
void adjustSize()
KDE_VERSION_STRING
#define KDE_VERSION_STRING
K3AboutDialog::Product
Definition: k3aboutdialog.h:272
QWidget::setParent
void setParent(QWidget *parent)
KIconLoader::Desktop
K3AboutDialog::ImageLeft
Definition: k3aboutdialog.h:269
QWidget::update
void update()
QTabWidget
QGridLayout::setSpacing
void setSpacing(int spacing)
QWidget::setGeometry
void setGeometry(int x, int y, int w, int h)
QString::isNull
bool isNull() const
K3AboutContainerBase::setProgramLogo
void setProgramLogo(const QString &fileName)
Definition: k3aboutdialog.cpp:617
K3AboutContributor::K3AboutContributor
K3AboutContributor(QWidget *parent=0, const QString &username=QString(), const QString &email=QString(), const QString &url=QString(), const QString &work=QString(), bool showHeader=false, bool showFrame=true, bool showBold=false)
Definition: k3aboutdialog.cpp:163
K3AboutDialog::setTitle
void setTitle(const QString &title)
(Constructor II only) Sets a title (not caption) in the uppermost area of the dialog.
Definition: k3aboutdialog.cpp:1163
QWidget::width
int width() const
QFont::setBold
void setBold(bool enable)
Ok
QWidget::size
QSize size() const
QWidget::minimumSize
QSize minimumSize() const
QFontInfo::pointSize
int pointSize() const
kglobal.h
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
K3AboutDialog
A KDialog with predefined main widget.
Definition: k3aboutdialog.h:255
K3AboutDialog::Tabbed
Definition: k3aboutdialog.h:267
QList::append
void append(const T &value)
K3AboutDialog::setImageBackgroundColor
void setImageBackgroundColor(const QColor &color)
(Constructor II only) The image has a minimum size, but is centered within an area if the dialog box ...
Definition: k3aboutdialog.cpp:1187
Close
K3AboutWidget::setMaintainer
void setMaintainer(const QString &name, const QString &email, const QString &url, const QString &work)
Sets the maintainers name and email address.
Definition: k3aboutdialog.cpp:959
K3AboutContainerBase::fontChange
void fontChange(const QFont &oldFont)
Definition: k3aboutdialog.cpp:427
K3AboutDialog::addContainer
K3AboutContainer * addContainer(Qt::Alignment childAlignment, Qt::Alignment innerAlignment)
(Constructor II only) Adds a container.
Definition: k3aboutdialog.cpp:1155
K3AboutContributor
Used internally by K3AboutWidget.
Definition: k3aboutdialog.h:82
QGridLayout::setRowStretch
void setRowStretch(int row, int stretch)
QWidget::setLayout
void setLayout(QLayout *layout)
K3AboutWidget::setAuthor
void setAuthor(const QString &name, const QString &email, const QString &url, const QString &work)
Sets the author's name and email address.
Definition: k3aboutdialog.cpp:950
K3AboutDialog::Title
Definition: k3aboutdialog.h:268
QObject
K3AboutDialog::K3AboutDialog
K3AboutDialog(QWidget *parent=0)
The standard Qt constructor (Constructor I).
Definition: k3aboutdialog.cpp:1030
K3AboutDialog::addLicensePage
QFrame * addLicensePage(const QString &title, const QString &text, int numLines=10)
(Constructor II only) Adds a license page to a tab box.
Definition: k3aboutdialog.cpp:1125
K3AboutContainerBase::setImage
void setImage(const QString &fileName)
Definition: k3aboutdialog.cpp:598
QAbstractScrollArea::setHorizontalScrollBarPolicy
void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy)
QSize::setWidth
void setWidth(int width)
K3AboutContainerBase::K3AboutContainerBase
K3AboutContainerBase(int layoutType, QWidget *parent=0)
Definition: k3aboutdialog.cpp:276
QList::isEmpty
bool isEmpty() const
K3AboutWidget::contributors
QList< K3AboutContributor * > contributors
A set of people who contributed to the application.
Definition: k3aboutdialog.h:217
QObject::setObjectName
void setObjectName(const QString &name)
QString::isEmpty
bool isEmpty() const
K3AboutDialog::addScrolledContainerPage
K3AboutContainer * addScrolledContainerPage(const QString &title, Qt::Alignment childAlignment=Qt::AlignCenter, Qt::Alignment innerAlignment=Qt::AlignCenter)
(Constructor II only) Adds a container inside a QScrollView to a tab box.
Definition: k3aboutdialog.cpp:1140
QTabWidget::addTab
int addTab(QWidget *page, const QString &label)
K3AboutContainerBase::sizeHint
QSize sizeHint(void) const
Definition: k3aboutdialog.cpp:422
QWidget::move
void move(int x, int y)
K3AboutWidget::maintainer
K3AboutContributor * maintainer
The application maintainer.
Definition: k3aboutdialog.h:207
QVBoxLayout
K3AboutContributor::setName
void setName(const QString &text, const QString &header=QString(), bool update=true)
Definition: k3aboutdialog.cpp:200
K3AboutDialog::imageUrl
static void imageUrl(QWidget *parent, const QString &caption, const QString &path, const QColor &imageColor, const QString &url)
Create a modal dialog with an image in the upper area with a URL link below.
Definition: k3aboutdialog.cpp:1206
QLabel::setText
void setText(const QString &)
QDialog::sizeHint
virtual QSize sizeHint() const
QString
QList< K3AboutContributor * >
QWidget::hide
void hide()
K3AboutContainer::~K3AboutContainer
~K3AboutContainer()
Definition: k3aboutdialog.cpp:756
QColor
K3AboutDialog::adjust
void adjust()
Adjusts the dialog.
Definition: k3aboutdialog.cpp:1066
QLayout::setMargin
void setMargin(int margin)
K3AboutDialog::setProgramLogo
void setProgramLogo(const QString &fileName)
Overloaded version of setProgramLogo(const QPixmap& pixmap).
Definition: k3aboutdialog.cpp:1175
K3AboutDialog::Plain
Definition: k3aboutdialog.h:266
K3AboutWidget::setLogo
void setLogo(const QPixmap &logo)
Sets the image as the application logo.
Definition: k3aboutdialog.cpp:945
QPixmap
QFontInfo
QTextBrowser::setOpenExternalLinks
void setOpenExternalLinks(bool open)
QPixmap::isNull
bool isNull() const
QSize
QWidget::font
const QFont & font() const
QFrame
K3AboutDialog::addContainerPage
K3AboutContainer * addContainerPage(const QString &title, Qt::Alignment childAlignment=Qt::AlignCenter, Qt::Alignment innerAlignment=Qt::AlignCenter)
(Constructor II only) Adds a container to a tab box.
Definition: k3aboutdialog.cpp:1132
K3AboutDialog::mAbout
K3AboutWidget * mAbout
The main widget (Constructor I)
Definition: k3aboutdialog.h:524
QWidget::sizeHint
virtual QSize sizeHint() const
QImage
QFrame::setFrameShadow
void setFrameShadow(Shadow)
K3AboutContainerBase::setImageFrame
void setImageFrame(bool state)
Definition: k3aboutdialog.cpp:652
QTextEdit::setLineWrapMode
void setLineWrapMode(LineWrapMode mode)
QGridLayout::addLayout
void addLayout(QLayout *layout, int row, int column, QFlags< Qt::AlignmentFlag > alignment)
K3AboutContainer::addTitle
void addTitle(const QString &title, Qt::Alignment alignment=Qt::AlignLeft, bool showframe=false, bool showBold=false)
Definition: k3aboutdialog.cpp:850
K3AboutContainerBase::setImageBackgroundColor
void setImageBackgroundColor(const QColor &color)
Definition: k3aboutdialog.cpp:641
QLayout::activate
bool activate()
QString::toLatin1
QByteArray toLatin1() const
KGlobalSettings::generalFont
static QFont generalFont()
QWidget::fontMetrics
QFontMetrics fontMetrics() const
K3AboutDialog::addContributor
void addContributor(const QString &name, const QString &email, const QString &url, const QString &work)
(Constructor I only) Show this person as one of the major contributors.
Definition: k3aboutdialog.cpp:1101
QTabWidget::setUsesScrollButtons
void setUsesScrollButtons(bool useButtons)
QLatin1String
K3AboutContributor::url
QString url() const
Definition: k3aboutdialog.cpp:247
QBoxLayout::addStretch
void addStretch(int stretch)
QSize::expandedTo
QSize expandedTo(const QSize &otherSize) const
K3AboutWidget
K3AboutWidget is the main widget for K3AboutDialog.
Definition: k3aboutdialog.h:131
QGridLayout::setColumnStretch
void setColumnStretch(int column, int stretch)
k3aboutdialog.h
version
unsigned int version()
ktextedit.h
QWidget::parentWidget
QWidget * parentWidget() const
K3AboutContainerBase::addTextPage
QFrame * addTextPage(const QString &title, const QString &text, bool richText=false, int numLines=10)
Definition: k3aboutdialog.cpp:451
QGridLayout::addItem
void addItem(QLayoutItem *item, int row, int column, int rowSpan, int columnSpan, QFlags< Qt::AlignmentFlag > alignment)
QLabel::sizeHint
virtual QSize sizeHint() const
QSize::height
int height() const
QTextBrowser
QWidget::setMinimumHeight
void setMinimumHeight(int minh)
K3AboutContainer::addWidget
void addWidget(QWidget *widget)
Definition: k3aboutdialog.cpp:820
K3AboutContributor::setWork
void setWork(const QString &text, const QString &header=QString(), bool update=true)
Definition: k3aboutdialog.cpp:229
K3AboutContributor::~K3AboutContributor
~K3AboutContributor()
Definition: k3aboutdialog.cpp:195
K3AboutDialog::setImageFrame
void setImageFrame(bool state)
(Constructor II only) Enables or disables a frame around the image.
Definition: k3aboutdialog.cpp:1193
QLayout::spacing
spacing
K3AboutDialog::setAuthor
void setAuthor(const QString &name, const QString &email, const QString &url, const QString &work)
(Constructor I only) Sets the author's name and email address.
Definition: k3aboutdialog.cpp:1092
cont
KGuiItem cont()
QWidget::setAutoFillBackground
void setAutoFillBackground(bool enabled)
QWidget::show
void show()
K3AboutDialog::setLogo
void setLogo(const QPixmap &logo)
(Constructor I only) Sets the image as the application logo.
Definition: k3aboutdialog.cpp:1075
K3AboutContributor::email
QString email() const
Definition: k3aboutdialog.cpp:242
QTextEdit::setReadOnly
void setReadOnly(bool ro)
K3AboutContainer::sizeHint
virtual QSize sizeHint() const
Definition: k3aboutdialog.cpp:761
QObject::isWidgetType
bool isWidgetType() const
QWidget::setBackgroundRole
void setBackgroundRole(QPalette::ColorRole role)
QScrollArea
K3AboutWidget::version
QLabel * version
The label showing the program version.
Definition: k3aboutdialog.h:187
QLabel
K3AboutContainerBase::addContainer
K3AboutContainer * addContainer(Qt::Alignment childAlignment, Qt::Alignment innerAlignment)
Definition: k3aboutdialog.cpp:575
K3AboutContainer::addPerson
void addPerson(const QString &name, const QString &email, const QString &url, const QString &task, bool showHeader=false, bool showframe=false, bool showBold=false)
Definition: k3aboutdialog.cpp:838
QPalette
QBoxLayout::setSpacing
void setSpacing(int spacing)
QFont::pointSize
int pointSize() const
QWidget::height
height
K3AboutWidget::cont
QLabel * cont
The label showing the text "Other contributors:".
Definition: k3aboutdialog.h:192
K3AboutDialog::ImageRight
Definition: k3aboutdialog.h:270
K3AboutContributor::work
QString work() const
Definition: k3aboutdialog.cpp:252
KGlobalSettings::fixedFont
static QFont fixedFont()
K3AboutContributor::name
QString name() const
Definition: k3aboutdialog.cpp:237
KTextEdit
QBoxLayout::addLayout
void addLayout(QLayout *layout, int stretch)
K3AboutContributor::fontChange
virtual void fontChange(const QFont &oldFont)
Definition: k3aboutdialog.cpp:257
K3AboutContainerBase::addEmptyPage
QFrame * addEmptyPage(const QString &title)
Definition: k3aboutdialog.cpp:558
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:26:47 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDE3Support

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

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

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