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

KDE3Support

  • 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
49template 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
61class 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
78void 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
163K3AboutContributor::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
195K3AboutContributor::~K3AboutContributor()
196{
197 delete d;
198}
199
200void 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
209void 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
219void 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
229void 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
237QString K3AboutContributor::name() const
238{
239 return d->text[0]->text();
240}
241
242QString K3AboutContributor::email() const
243{
244 return d->text[1]->text();
245}
246
247QString K3AboutContributor::url() const
248{
249 return d->text[2]->text();
250}
251
252QString K3AboutContributor::work() const
253{
254 return d->text[3]->text();
255}
256
257void 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
268QSize K3AboutContributor::sizeHint(void) const
269{
270 return minimumSizeHint();
271}
272
273//
274// Internal widget for the K3AboutDialog class.
275//
276K3AboutContainerBase::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
422QSize K3AboutContainerBase::sizeHint() const
423{
424 return minimumSize().expandedTo(QSize(QWidget::sizeHint().width(), 0));
425}
426
427void 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
451QFrame *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
487QFrame *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
512K3AboutContainer *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
530K3AboutContainer *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
558QFrame *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
575K3AboutContainer *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
587void 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
598void 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
617void 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
628void 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
641void 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
652void 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
670void 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
702class K3AboutContainer::Private
703{
704 public:
705 QVBoxLayout *vbox;
706 Qt::Alignment alignment;
707};
708
709K3AboutContainer::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
756K3AboutContainer::~K3AboutContainer()
757{
758 delete d;
759}
760
761QSize 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
815QSize K3AboutContainer::minimumSizeHint(void) const
816{
817 return sizeHint();
818}
819
820void 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
838void 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
850void 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
870void 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
890K3AboutWidget::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
907void 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
945void K3AboutWidget::setLogo(const QPixmap& i)
946{
947 logo->setPixmap(i);
948}
949
950void 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
959void 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
969void 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
981void K3AboutWidget::setVersion(const QString &_name)
982{
983 version->setText(_name);
984}
985
986void 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
1030K3AboutDialog::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
1039K3AboutDialog::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
1051void K3AboutDialog::show(void)
1052{
1053 adjust();
1054 if (mContainerBase) { mContainerBase->show(); }
1055 QDialog::show();
1056}
1057
1058
1059void K3AboutDialog::show(QWidget * /*centerParent*/)
1060{
1061 adjust();
1062 if (mContainerBase) { mContainerBase->show(); }
1063 QDialog::show();
1064}
1065
1066void K3AboutDialog::adjust()
1067{
1068 if (!mAbout)
1069 return;
1070
1071 mAbout->adjust();
1072 resize(sizeHint());
1073}
1074
1075void K3AboutDialog::setLogo(const QPixmap& i)
1076{
1077 if (!mAbout)
1078 return;
1079
1080 mAbout->setLogo(i);
1081}
1082
1083void 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
1092void 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
1101void 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
1110void K3AboutDialog::setVersion(const QString &_name)
1111{
1112 if (!mAbout)
1113 return;
1114
1115 mAbout->setVersion(_name);
1116}
1117
1118QFrame *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
1125QFrame *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
1132K3AboutContainer *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
1140K3AboutContainer *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
1148QFrame *K3AboutDialog::addPage(const QString &title)
1149{
1150 if (!mContainerBase) { return 0; }
1151 return mContainerBase->addEmptyPage(title);
1152}
1153
1154
1155K3AboutContainer *K3AboutDialog::addContainer(Qt::Alignment childAlignment,
1156 Qt::Alignment innerAlignment)
1157{
1158 if (!mContainerBase) { return 0; }
1159 return mContainerBase->addContainer(childAlignment, innerAlignment);
1160}
1161
1162
1163void K3AboutDialog::setTitle(const QString &title)
1164{
1165 if (!mContainerBase) { return; }
1166 mContainerBase->setTitle(title);
1167}
1168
1169void K3AboutDialog::setImage(const QString &fileName)
1170{
1171 if (!mContainerBase) { return; }
1172 mContainerBase->setImage(fileName);
1173}
1174
1175void K3AboutDialog::setProgramLogo(const QString &fileName)
1176{
1177 if (!mContainerBase) { return; }
1178 mContainerBase->setProgramLogo(fileName);
1179}
1180
1181void K3AboutDialog::setProgramLogo(const QPixmap &pixmap)
1182{
1183 if (!mContainerBase) { return; }
1184 mContainerBase->setProgramLogo(pixmap);
1185}
1186
1187void K3AboutDialog::setImageBackgroundColor(const QColor &color)
1188{
1189 if (!mContainerBase) { return; }
1190 mContainerBase->setImageBackgroundColor(color);
1191}
1192
1193void K3AboutDialog::setImageFrame(bool state)
1194{
1195 if (!mContainerBase) { return; }
1196 mContainerBase->setImageFrame(state);
1197}
1198
1199void 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
1206void 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
K3AboutContainerBase
Used internally by K3AboutDialog.
Definition: k3aboutdialog_p.h:40
K3AboutContainerBase::addLicensePage
QFrame * addLicensePage(const QString &title, const QString &text, int numLines=10)
Definition: k3aboutdialog.cpp:487
K3AboutContainerBase::setProgramLogo
void setProgramLogo(const QString &fileName)
Definition: k3aboutdialog.cpp:617
K3AboutContainerBase::setImageBackgroundColor
void setImageBackgroundColor(const QColor &color)
Definition: k3aboutdialog.cpp:641
K3AboutContainerBase::addContainer
K3AboutContainer * addContainer(Qt::Alignment childAlignment, Qt::Alignment innerAlignment)
Definition: k3aboutdialog.cpp:575
K3AboutContainerBase::addContainerPage
K3AboutContainer * addContainerPage(const QString &title, Qt::Alignment childAlignment=Qt::AlignCenter, Qt::Alignment innerAlignment=Qt::AlignCenter)
Definition: k3aboutdialog.cpp:512
K3AboutContainerBase::setTitle
void setTitle(const QString &title)
Definition: k3aboutdialog.cpp:587
K3AboutContainerBase::setImage
void setImage(const QString &fileName)
Definition: k3aboutdialog.cpp:598
K3AboutContainerBase::setImageFrame
void setImageFrame(bool state)
Definition: k3aboutdialog.cpp:652
K3AboutContainerBase::sizeHint
QSize sizeHint(void) const
Definition: k3aboutdialog.cpp:422
K3AboutContainerBase::setProduct
void setProduct(const QString &appName, const QString &version, const QString &author, const QString &year)
Definition: k3aboutdialog.cpp:670
K3AboutContainerBase::fontChange
void fontChange(const QFont &oldFont)
Definition: k3aboutdialog.cpp:427
K3AboutContainerBase::addEmptyPage
QFrame * addEmptyPage(const QString &title)
Definition: k3aboutdialog.cpp:558
K3AboutContainerBase::addScrolledContainerPage
K3AboutContainer * addScrolledContainerPage(const QString &title, Qt::Alignment childAlignment=Qt::AlignCenter, Qt::Alignment innerAlignment=Qt::AlignCenter)
Definition: k3aboutdialog.cpp:530
K3AboutContainerBase::addTextPage
QFrame * addTextPage(const QString &title, const QString &text, bool richText=false, int numLines=10)
Definition: k3aboutdialog.cpp:451
K3AboutContainerBase::K3AboutContainerBase
K3AboutContainerBase(int layoutType, QWidget *parent=0)
Definition: k3aboutdialog.cpp:276
K3AboutContainer
K3AboutContainer can be used to make a application specific AboutDialog.
Definition: k3aboutdialog.h:47
K3AboutContainer::minimumSizeHint
virtual QSize minimumSizeHint() const
Definition: k3aboutdialog.cpp:815
K3AboutContainer::~K3AboutContainer
~K3AboutContainer()
Definition: k3aboutdialog.cpp:756
K3AboutContainer::addWidget
void addWidget(QWidget *widget)
Definition: k3aboutdialog.cpp:820
K3AboutContainer::addImage
void addImage(const QString &fileName, Qt::Alignment alignment=Qt::AlignLeft)
Definition: k3aboutdialog.cpp:870
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
K3AboutContainer::sizeHint
virtual QSize sizeHint() const
Definition: k3aboutdialog.cpp:761
K3AboutContainer::addTitle
void addTitle(const QString &title, Qt::Alignment alignment=Qt::AlignLeft, bool showframe=false, bool showBold=false)
Definition: k3aboutdialog.cpp:850
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
K3AboutContributor
Used internally by K3AboutWidget.
Definition: k3aboutdialog.h:83
K3AboutContributor::setUrl
void setUrl(const QString &text, const QString &header=QString(), bool update=true)
Definition: k3aboutdialog.cpp:219
K3AboutContributor::setWork
void setWork(const QString &text, const QString &header=QString(), bool update=true)
Definition: k3aboutdialog.cpp:229
K3AboutContributor::url
QString url() const
Definition: k3aboutdialog.cpp:247
K3AboutContributor::sizeHint
virtual QSize sizeHint() const
Definition: k3aboutdialog.cpp:268
K3AboutContributor::work
QString work() const
Definition: k3aboutdialog.cpp:252
K3AboutContributor::email
QString email() const
Definition: k3aboutdialog.cpp:242
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
K3AboutContributor::name
QString name() const
Definition: k3aboutdialog.cpp:237
K3AboutContributor::setEmail
void setEmail(const QString &text, const QString &header=QString(), bool update=true)
Definition: k3aboutdialog.cpp:209
K3AboutContributor::setName
void setName(const QString &text, const QString &header=QString(), bool update=true)
Definition: k3aboutdialog.cpp:200
K3AboutContributor::fontChange
virtual void fontChange(const QFont &oldFont)
Definition: k3aboutdialog.cpp:257
K3AboutContributor::~K3AboutContributor
~K3AboutContributor()
Definition: k3aboutdialog.cpp:195
K3AboutDialog
A KDialog with predefined main widget.
Definition: k3aboutdialog.h:256
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::mContainerBase
K3AboutContainerBase * mContainerBase
The main widget (Constructor II)
Definition: k3aboutdialog.h:529
K3AboutDialog::setImage
void setImage(const QString &fileName)
(Constructor II only) Define an image to be shown in the dialog.
Definition: k3aboutdialog.cpp:1169
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
K3AboutDialog::show
virtual void show()
Makes a modeless dialog visible.
Definition: k3aboutdialog.cpp:1051
K3AboutDialog::mAbout
K3AboutWidget * mAbout
The main widget (Constructor I)
Definition: k3aboutdialog.h:524
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
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
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
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
K3AboutDialog::adjust
void adjust()
Adjusts the dialog.
Definition: k3aboutdialog.cpp:1066
K3AboutDialog::addContainer
K3AboutContainer * addContainer(Qt::Alignment childAlignment, Qt::Alignment innerAlignment)
(Constructor II only) Adds a container.
Definition: k3aboutdialog.cpp:1155
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
K3AboutDialog::addPage
QFrame * addPage(const QString &title)
(Constructor II only) Adds an empty page to a tab box.
Definition: k3aboutdialog.cpp:1148
K3AboutDialog::setVersion
void setVersion(const QString &name)
(Constructor I only) Sets the text describing the version.
Definition: k3aboutdialog.cpp:1110
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
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
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
K3AboutDialog::setLogo
void setLogo(const QPixmap &logo)
(Constructor I only) Sets the image as the application logo.
Definition: k3aboutdialog.cpp:1075
K3AboutDialog::setProgramLogo
void setProgramLogo(const QString &fileName)
Overloaded version of setProgramLogo(const QPixmap& pixmap).
Definition: k3aboutdialog.cpp:1175
K3AboutDialog::ImageOnly
@ ImageOnly
Definition: k3aboutdialog.h:271
K3AboutDialog::Tabbed
@ Tabbed
Definition: k3aboutdialog.h:267
K3AboutDialog::Product
@ Product
Definition: k3aboutdialog.h:272
K3AboutDialog::ImageLeft
@ ImageLeft
Definition: k3aboutdialog.h:269
K3AboutDialog::Title
@ Title
Definition: k3aboutdialog.h:268
K3AboutDialog::ImageRight
@ ImageRight
Definition: k3aboutdialog.h:270
K3AboutDialog::Plain
@ Plain
Definition: k3aboutdialog.h:266
K3AboutDialog::setImageFrame
void setImageFrame(bool state)
(Constructor II only) Enables or disables a frame around the image.
Definition: k3aboutdialog.cpp:1193
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
K3AboutDialog::K3AboutDialog
K3AboutDialog(QWidget *parent=0)
The standard Qt constructor (Constructor I).
Definition: k3aboutdialog.cpp:1030
K3AboutWidget
K3AboutWidget is the main widget for K3AboutDialog.
Definition: k3aboutdialog.h:132
K3AboutWidget::author
K3AboutContributor * author
The application developer.
Definition: k3aboutdialog.h:202
K3AboutWidget::contributors
QList< K3AboutContributor * > contributors
A set of people who contributed to the application.
Definition: k3aboutdialog.h:217
K3AboutWidget::maintainer
K3AboutContributor * maintainer
The application maintainer.
Definition: k3aboutdialog.h:207
K3AboutWidget::K3AboutWidget
K3AboutWidget(QWidget *parent=0)
Creates a new about widget.
Definition: k3aboutdialog.cpp:890
K3AboutWidget::resizeEvent
void resizeEvent(QResizeEvent *)
The resize event.
Definition: k3aboutdialog.cpp:986
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
K3AboutWidget::cont
QLabel * cont
The label showing the text "Other contributors:".
Definition: k3aboutdialog.h:192
K3AboutWidget::version
QLabel * version
The label showing the program version.
Definition: k3aboutdialog.h:187
K3AboutWidget::adjust
void adjust()
Adjust the minimum size (after setting the properties of the image and the labels.
Definition: k3aboutdialog.cpp:907
K3AboutWidget::setVersion
void setVersion(const QString &name)
Sets the text describing the version.
Definition: k3aboutdialog.cpp:981
K3AboutWidget::logo
QLabel * logo
The frame showing the logo.
Definition: k3aboutdialog.h:197
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
K3AboutWidget::showMaintainer
bool showMaintainer
Show the maintainer?
Definition: k3aboutdialog.h:212
K3AboutWidget::setLogo
void setLogo(const QPixmap &logo)
Sets the image as the application logo.
Definition: k3aboutdialog.cpp:945
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
KDialog
KDialog::setMainWidget
void setMainWidget(QWidget *widget)
KDialog::setPlainCaption
virtual void setPlainCaption(const QString &caption)
KDialog::sizeHint
virtual QSize sizeHint() const
KDialog::spacingHint
static int spacingHint()
KDialog::setButtons
void setButtons(ButtonCodes buttonMask)
KDialog::Ok
Ok
KDialog::Close
Close
KDialog::setDefaultButton
void setDefaultButton(ButtonCode id)
KGlobalSettings::generalFont
static QFont generalFont()
KGlobalSettings::fixedFont
static QFont fixedFont()
KIconLoader::Desktop
Desktop
KTextEdit
KTextEdit::setReadOnly
virtual void setReadOnly(bool readOnly)
QFrame
QLabel
QList
QObject
QTabWidget
QTextBrowser
QWidget
kDebug
#define kDebug
Grid
#define Grid
Definition: k3aboutdialog.cpp:53
k3aboutdialog.h
k3aboutdialog_p.h
kdebug.h
kglobal.h
kglobalsettings.h
IconSize
int IconSize(KIconLoader::Group group)
kiconloader.h
klocale.h
i18n
QString i18n(const char *text)
ktextedit.h
cont
KGuiItem cont()
label
QString label(StandardShortcut id)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 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-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 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
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