Fix clipping/eliding of multi-line task descriptions.
[kdepim.git] / libkdepim / multiplyinglineeditor.cpp
blobf4e4b3202f7b9fa54bc20f485340b3a0eb4f48bb
1 /*
2 Copyright (C) 2010 Casey Link <unnamedrambler@gmail.com>
3 Copyright (C) 2009-2010 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.net>
5 Refactored from earlier code by:
6 Copyright (c) 2010 Volker Krause <vkrause@kde.org>
7 Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org>
9 This library is free software; you can redistribute it and/or modify it
10 under the terms of the GNU Library General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or (at your
12 option) any later version.
14 This library is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
17 License for more details.
19 You should have received a copy of the GNU Library General Public License
20 along with this library; see the file COPYING.LIB. If not, write to the
21 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22 02110-1301, USA.
25 #include "multiplyinglineeditor.h"
26 #include "multiplyinglineview_p.h"
28 #include <KDebug>
29 #include <KDialog>
31 #include <QHBoxLayout>
32 using namespace KPIM;
33 MultiplyingLineEditor::MultiplyingLineEditor( MultiplyingLineFactory* factory, QWidget *parent )
34 : QWidget( parent ), mModified( false ), mMultiplyingLineFactory( factory )
36 QBoxLayout *topLayout = new QHBoxLayout();
37 topLayout->setSpacing( KDialog::spacingHint() );
38 topLayout->setMargin( 0 );
39 setLayout( topLayout );
41 mView = new MultiplyingLineView( mMultiplyingLineFactory, this );
42 topLayout->addWidget( mView );
43 connect( mView, SIGNAL(focusUp()), SIGNAL(focusUp()) );
44 connect( mView, SIGNAL(focusDown()), SIGNAL(focusDown()) );
45 connect( mView, SIGNAL(completionModeChanged(KGlobalSettings::Completion)),
46 SIGNAL(completionModeChanged(KGlobalSettings::Completion)) );
47 connect( mView, SIGNAL(lineDeleted(int)), SIGNAL(lineDeleted(int)) );
48 connect( mView, SIGNAL(lineAdded(KPIM::MultiplyingLine*)), SIGNAL(lineAdded(KPIM::MultiplyingLine*)) );
49 connect( mView, SIGNAL(sizeHintChanged()),
50 SIGNAL(sizeHintChanged()) );
53 MultiplyingLineEditor::~MultiplyingLineEditor()
55 delete mMultiplyingLineFactory;
58 void MultiplyingLineEditor::addData( const MultiplyingLineData::Ptr &data )
60 MultiplyingLine* line = mView->emptyLine();
61 if( !line )
62 line = mView->addLine();
63 if( data )
64 line->setData( data );
67 void MultiplyingLineEditor::removeData( const MultiplyingLineData::Ptr &data )
69 mView->removeData( data );
72 void MultiplyingLineEditor::clear()
74 foreach ( MultiplyingLine *line, mView->lines() )
75 line->slotPropagateDeletion();
78 bool MultiplyingLineEditor::isModified()
80 return mModified || mView->isModified();
83 void MultiplyingLineEditor::clearModified()
85 mModified = false;
86 mView->clearModified();
89 void MultiplyingLineEditor::setFocus()
91 mView->setFocus();
94 void MultiplyingLineEditor::setFocusTop()
96 mView->setFocusTop();
99 void MultiplyingLineEditor::setFocusBottom()
101 mView->setFocusBottom();
104 int MultiplyingLineEditor::setFirstColumnWidth( int w )
106 return mView->setFirstColumnWidth( w );
109 void MultiplyingLineEditor::setCompletionMode( KGlobalSettings::Completion mode )
111 mView->setCompletionMode( mode );
114 MultiplyingLineFactory* MultiplyingLineEditor::factory() const
116 return mMultiplyingLineFactory;
119 QList< MultiplyingLineData::Ptr > MultiplyingLineEditor::allData() const
121 return mView->allData();
124 MultiplyingLineData::Ptr MultiplyingLineEditor::activeData() const
126 return mView->activeLine()->data();
130 QList< MultiplyingLine* > MultiplyingLineEditor::lines() const
132 return mView->lines();
135 MultiplyingLine* MultiplyingLineEditor::activeLine() const
137 return mView->activeLine();
140 void MultiplyingLineEditor::setFrameStyle( int shape )
142 mView->setFrameStyle( shape );
145 void MultiplyingLineEditor::setAutoResizeView( bool resize )
147 mView->setAutoResize( resize );
150 bool MultiplyingLineEditor::autoResizeView()
152 return mView->autoResize();
155 void MultiplyingLineEditor::setDynamicSizeHint( bool dynamic )
157 mView->setDynamicSizeHint( dynamic );
160 bool MultiplyingLineEditor::dynamicSizeHint() const
162 return mView->dynamicSizeHint();
165 #include "multiplyinglineeditor.moc"