File indexing completed on 2024-04-28 05:51:10
0001 /* 0002 * SPDX-FileCopyrightText: 2002-2003 Jesper K. Pedersen <blackie@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-only 0005 **/ 0006 0007 #include "widgetwindow.h" 0008 0009 #include <QHBoxLayout> 0010 #include <QVBoxLayout> 0011 0012 #include <KLocalizedString> 0013 #include <QListWidget> 0014 0015 #include <QDialogButtonBox> 0016 0017 #include "kmultiformlistboxentry.h" 0018 #include "kmultiformlistboxfactory.h" 0019 #include "windowlistboxitem.h" 0020 0021 WidgetWindow::WidgetWindow(KMultiFormListBoxFactory *factory, QListWidget *lb) 0022 : QDialog(nullptr) 0023 { 0024 init(factory, lb); 0025 } 0026 0027 WidgetWindow::WidgetWindow(KMultiFormListBoxFactory *factory, KMultiFormListBoxEntry *widget, QListWidget *lb) 0028 : QDialog(nullptr) 0029 { 0030 init(factory, lb, widget); 0031 } 0032 0033 void WidgetWindow::init(KMultiFormListBoxFactory *factory, QListWidget *lb, KMultiFormListBoxEntry *widget) 0034 { 0035 setWindowTitle(i18n("Widget Configuration")); 0036 setLayout(new QVBoxLayout); 0037 0038 listbox = lb; 0039 myFact = factory; 0040 0041 QFrame *frame = new QFrame; 0042 QHBoxLayout *lay = new QHBoxLayout; 0043 frame->setLayout(lay); 0044 lay->setObjectName(QStringLiteral("WidgetWindow::init::lay")); 0045 lay->setSpacing(-1); 0046 lay->setContentsMargins(0, 0, 0, 0); 0047 0048 if (widget != nullptr) { 0049 myWidget = widget; 0050 widget->setParent(frame); 0051 } else { 0052 myWidget = factory->create(frame); 0053 } 0054 QDataStream stream(&_backup, QIODeviceBase::WriteOnly); 0055 0056 stream.setVersion(QDataStream::Qt_3_1); 0057 myFact->toStream(myWidget, stream); 0058 0059 lay->addWidget(myWidget); 0060 0061 if (widget != nullptr) { 0062 initialShow = false; 0063 myListboxItem = new WindowListboxItem(listbox, myWidget->idxString(), this); 0064 } else { 0065 initialShow = true; 0066 } 0067 0068 QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); 0069 connect(buttonBox, &QDialogButtonBox::accepted, this, &WidgetWindow::slotOk); 0070 connect(buttonBox, &QDialogButtonBox::rejected, this, &WidgetWindow::slotCancel); 0071 layout()->addWidget(frame); 0072 layout()->addWidget(buttonBox); 0073 } 0074 0075 WidgetWindow::~WidgetWindow() 0076 { 0077 delete myWidget; 0078 } 0079 0080 void WidgetWindow::slotOk() 0081 { 0082 if (initialShow) { 0083 myListboxItem = new WindowListboxItem(listbox, myWidget->idxString(), this); 0084 } else { 0085 myListboxItem->setText(myWidget->idxString()); 0086 } 0087 initialShow = false; 0088 QDialog::accept(); 0089 } 0090 0091 void WidgetWindow::slotCancel() 0092 { 0093 if (initialShow) { 0094 deleteLater(); 0095 } else { 0096 QDataStream stream(&_backup, QIODeviceBase::ReadOnly); 0097 0098 stream.setVersion(QDataStream::Qt_3_1); 0099 myFact->fromStream(stream, myWidget); 0100 } 0101 QDialog::reject(); 0102 } 0103 0104 WidgetWindow *WidgetWindow::clone() 0105 { 0106 WidgetWindow *item = new WidgetWindow(myFact, listbox); 0107 QByteArray data; 0108 QDataStream ws(&data, QIODeviceBase::WriteOnly); 0109 0110 ws.setVersion(QDataStream::Qt_3_1); 0111 myFact->toStream(myWidget, ws); 0112 QDataStream rs(&data, QIODeviceBase::ReadOnly); 0113 0114 rs.setVersion(QDataStream::Qt_3_1); 0115 myFact->fromStream(rs, item->myWidget); 0116 0117 item->slotOk(); 0118 return item; 0119 } 0120 0121 void WidgetWindow::display() 0122 { 0123 QDataStream stream(&_backup, QIODeviceBase::WriteOnly); 0124 0125 stream.setVersion(QDataStream::Qt_3_1); 0126 myFact->toStream(myWidget, stream); 0127 show(); 0128 } 0129 0130 KMultiFormListBoxEntry *WidgetWindow::entry() 0131 { 0132 return myWidget; 0133 }