1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
/*****************************************************************************
* Copyright (C) 2005 Dirk Eschler <deschler@users.sourceforge.net> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This package is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this package; if not, write to the Free Software *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *
*****************************************************************************/
#include "krresulttabledialog.h"
// QtGui
#include <QFontDatabase>
// QtWidgets
#include <QDialogButtonBox>
#include <QFrame>
#include <QLabel>
#include <QPushButton>
#include <QVBoxLayout>
#include <KConfigWidgets/KHelpClient>
#include <KIconThemes/KIconLoader>
#include "../krglobal.h"
KrResultTableDialog::KrResultTableDialog(QWidget *parent, DialogType type,
const QString& caption, const QString& heading, const QString& headerIcon,
const QString& hint)
: QDialog(parent, 0)
{
setWindowTitle(caption);
setWindowModality(Qt::WindowModal);
QVBoxLayout *mainLayout = new QVBoxLayout;
setLayout(mainLayout);
QVBoxLayout *_topLayout = new QVBoxLayout();
_topLayout->setAlignment(Qt::AlignTop);
// +++ Heading +++
// prepare the icon
QWidget *_iconWidget = new QWidget(this);
QHBoxLayout * _iconBox = new QHBoxLayout(_iconWidget);
QLabel *_iconLabel = new QLabel(_iconWidget);
_iconLabel->setPixmap(krLoader->loadIcon(headerIcon, KIconLoader::Desktop, 32));
_iconLabel->setMinimumWidth(fontMetrics().maxWidth()*20);
_iconLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
_iconLabel->setFixedSize(_iconLabel->sizeHint());
_iconBox->addWidget(_iconLabel);
QLabel *_headingLabel = new QLabel(heading, _iconWidget);
QFont defFont = QFontDatabase::systemFont(QFontDatabase::GeneralFont);
defFont.setBold(true);
_headingLabel->setFont(defFont);
_headingLabel->setIndent(10);
_iconBox->addWidget(_headingLabel);
_topLayout->addWidget(_iconWidget);
// +++ Add some space between heading and table +++
QSpacerItem* hSpacer1 = new QSpacerItem(0, 5);
_topLayout->addItem(hSpacer1);
// +++ Table +++
switch (type) {
case Archiver:
_resultTable = new KrArchiverResultTable(this);
helpAnchor = QStringLiteral("konfig-archives"); // launch handbook at sect1-id via help button
break;
case Tool:
_resultTable = new KrToolResultTable(this);
helpAnchor = QStringLiteral("konfig-dependencies"); // TODO find a good anchor
break;
default:
break;
}
_topLayout->addWidget(_resultTable);
// +++ Separator +++
KSeparator* hSep = new KSeparator(Qt::Horizontal, this);
hSep->setContentsMargins(5, 5, 5, 5);
_topLayout->addWidget(hSep);
// +++ Hint +++
if (!hint.isEmpty()) {
QLabel *_hintLabel = new QLabel(hint, this);
_hintLabel->setIndent(5);
_hintLabel->setAlignment(Qt::AlignRight);
_topLayout->addWidget(_hintLabel);
}
mainLayout->addLayout(_topLayout);
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Help);
mainLayout->addWidget(buttonBox);
QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
okButton->setDefault(true);
okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
connect(buttonBox, &QDialogButtonBox::accepted, this, &KrResultTableDialog::accept);
connect(buttonBox, &QDialogButtonBox::helpRequested, this, &KrResultTableDialog::showHelp);
buttonBox->button(QDialogButtonBox::Ok)->setDefault(true);
this->setFixedSize(this->sizeHint()); // make non-resizeable
}
KrResultTableDialog::~KrResultTableDialog()
{
}
void KrResultTableDialog::showHelp()
{
if(!helpAnchor.isEmpty()) {
KHelpClient::invokeHelp(helpAnchor);
}
}
|