File indexing completed on 2024-09-22 04:48:56

0001 /*
0002     SPDX-FileCopyrightText: 2010 Casey Link <unnamedrambler@gmail.com>
0003     SPDX-FileCopyrightText: 2009-2010 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.net>
0004 
0005     Refactored from earlier code by:
0006     SPDX-FileCopyrightText: 2010 Volker Krause <vkrause@kde.org>
0007     SPDX-FileCopyrightText: 2004 Cornelius Schumacher <schumacher@kde.org>
0008 
0009     SPDX-License-Identifier: LGPL-2.0-or-later
0010 */
0011 
0012 #include "multiplyinglineeditor.h"
0013 #include "multiplyinglineview_p.h"
0014 
0015 #include <QHBoxLayout>
0016 using namespace KPIM;
0017 MultiplyingLineEditor::MultiplyingLineEditor(MultiplyingLineFactory *factory, QWidget *parent)
0018     : QWidget(parent)
0019     , mMultiplyingLineFactory(factory)
0020 {
0021     auto topLayout = new QHBoxLayout(this);
0022     topLayout->setContentsMargins(0, 0, 0, 0);
0023 
0024     mView = new MultiplyingLineView(mMultiplyingLineFactory, this);
0025     topLayout->addWidget(mView);
0026     connect(mView, &MultiplyingLineView::focusUp, this, &MultiplyingLineEditor::focusUp);
0027     connect(mView, &MultiplyingLineView::focusDown, this, &MultiplyingLineEditor::focusDown);
0028     connect(mView, &MultiplyingLineView::completionModeChanged, this, &MultiplyingLineEditor::completionModeChanged);
0029     connect(mView, &MultiplyingLineView::lineDeleted, this, &MultiplyingLineEditor::lineDeleted);
0030     connect(mView, &MultiplyingLineView::lineAdded, this, &MultiplyingLineEditor::lineAdded);
0031     connect(mView, &MultiplyingLineView::sizeHintChanged, this, &MultiplyingLineEditor::sizeHintChanged);
0032 }
0033 
0034 MultiplyingLineEditor::~MultiplyingLineEditor()
0035 {
0036     delete mMultiplyingLineFactory;
0037 }
0038 
0039 bool MultiplyingLineEditor::addData(const MultiplyingLineData::Ptr &data, bool showDialogBox)
0040 {
0041     MultiplyingLine *line = mView->emptyLine();
0042     bool tooManyAddress = false;
0043     if (!line) {
0044         line = mView->addLine(showDialogBox);
0045     }
0046     if (!line) {
0047         tooManyAddress = true;
0048     }
0049     if (line && data) {
0050         line->setData(data);
0051     }
0052     return tooManyAddress;
0053 }
0054 
0055 void MultiplyingLineEditor::removeData(const MultiplyingLineData::Ptr &data)
0056 {
0057     mView->removeData(data);
0058 }
0059 
0060 void MultiplyingLineEditor::clear()
0061 {
0062     const auto lstLines = mView->lines();
0063     for (MultiplyingLine *line : lstLines) {
0064         line->slotPropagateDeletion();
0065     }
0066 }
0067 
0068 bool MultiplyingLineEditor::isModified()
0069 {
0070     return mModified || mView->isModified();
0071 }
0072 
0073 void MultiplyingLineEditor::clearModified()
0074 {
0075     mModified = false;
0076     mView->clearModified();
0077 }
0078 
0079 void MultiplyingLineEditor::setFocus()
0080 {
0081     mView->setFocus();
0082 }
0083 
0084 void MultiplyingLineEditor::setFocusTop()
0085 {
0086     mView->setFocusTop();
0087 }
0088 
0089 void MultiplyingLineEditor::setFocusBottom()
0090 {
0091     mView->setFocusBottom();
0092 }
0093 
0094 int MultiplyingLineEditor::setFirstColumnWidth(int w)
0095 {
0096     return mView->setFirstColumnWidth(w);
0097 }
0098 
0099 void MultiplyingLineEditor::setCompletionMode(KCompletion::CompletionMode mode)
0100 {
0101     mView->setCompletionMode(mode);
0102 }
0103 
0104 MultiplyingLineFactory *MultiplyingLineEditor::factory() const
0105 {
0106     return mMultiplyingLineFactory;
0107 }
0108 
0109 QList<MultiplyingLineData::Ptr> MultiplyingLineEditor::allData() const
0110 {
0111     return mView->allData();
0112 }
0113 
0114 MultiplyingLineData::Ptr MultiplyingLineEditor::activeData() const
0115 {
0116     return mView->activeLine()->data();
0117 }
0118 
0119 QList<MultiplyingLine *> MultiplyingLineEditor::lines() const
0120 {
0121     return mView->lines();
0122 }
0123 
0124 MultiplyingLine *MultiplyingLineEditor::activeLine() const
0125 {
0126     return mView->activeLine();
0127 }
0128 
0129 void MultiplyingLineEditor::setFrameStyle(int shape)
0130 {
0131     mView->setFrameStyle(shape);
0132 }
0133 
0134 void MultiplyingLineEditor::setAutoResizeView(bool resize)
0135 {
0136     mView->setAutoResize(resize);
0137 }
0138 
0139 bool MultiplyingLineEditor::autoResizeView()
0140 {
0141     return mView->autoResize();
0142 }
0143 
0144 void MultiplyingLineEditor::setDynamicSizeHint(bool dynamic)
0145 {
0146     mView->setDynamicSizeHint(dynamic);
0147 }
0148 
0149 bool MultiplyingLineEditor::dynamicSizeHint() const
0150 {
0151     return mView->dynamicSizeHint();
0152 }
0153 
0154 #include "moc_multiplyinglineeditor.cpp"