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"