22#include <tdelistview.h>
23#include <ktabwidget.h>
24#include <tdelistbox.h>
25#include <kiconloader.h>
29#include <koproperty/editor.h>
30#include <koproperty/set.h>
31#include <koproperty/property.h>
33#include "editlistviewdialog.h"
43: KDialogBase( Tabbed, i18n( "Edit Listview Contents"), Ok| Cancel, Ok, parent, "editlistview_dialog", true , false)
53 TQToolButton *newRow = new TQToolButton(m_contents);
55 newRow->setTextLabel( i18n( "&Add Item"), true);
57 m_buttons.insert(BNewRow, newRow);
60 TQToolButton * newChild = new TQToolButton(m_contents);
64 m_buttons.insert(BNewChild, newChild);
67 TQToolButton * delRow = new TQToolButton(m_contents);
69 delRow->setTextLabel( i18n( "&Remove Item"), true);
71 m_buttons.insert(BRemRow, delRow);
74 TQToolButton * rowUp = new TQToolButton(m_contents);
76 rowUp->setTextLabel( i18n( "Move Item &Up"), true);
78 m_buttons.insert(BRowUp, rowUp);
81 TQToolButton * rowDown = new TQToolButton(m_contents);
83 rowDown->setTextLabel( i18n( "Move Item &Down"), true);
85 m_buttons.insert(BRowDown, rowDown);
90 m_listview = new TDEListView(m_contents, "editlistview_listview");
91 m_listview->setItemsRenameable( true);
92 m_listview->setItemsMovable( true);
93 m_listview->setDragEnabled( true);
94 m_listview->setAllColumnsShowFocus( true);
95 m_listview->setRootIsDecorated( true);
96 m_listview->setDropVisualizer( true);
97 m_listview->setAcceptDrops( true);
98 m_listview->setSorting(-1);
99 layout->addWidget(m_listview);
100 m_listview->setFocus();
108 m_editor = new KoProperty::Editor(m_column, "editcolumn_propeditor");
109 m_propSet = new KoProperty::Set( this, "columns");
110 m_propSet->addProperty( new KoProperty::Property( "caption", "Caption", i18n( "Caption"), i18n( "Caption")));
111 m_propSet->addProperty( new KoProperty::Property( "width", 100, i18n( "Width"), i18n( "Width")));
112 m_propSet->addProperty( new KoProperty::Property( "clickable", TQVariant( true), i18n( "Clickable"), i18n( "Clickable") ));
113 m_propSet->addProperty( new KoProperty::Property( "resizable", TQVariant( true), i18n( "Resizable"), i18n( "Resizable") ));
114 m_propSet->addProperty( new KoProperty::Property( "fullwidth", TQVariant( false), i18n( "Full Width"), i18n( "Full Width") ));
115 m_editor->changeSet(m_propSet);
116 connect(m_propSet, TQ_SIGNAL(propertyChanged(KoProperty::Set & KoProperty::Property&)),
121 TQToolButton *add = new TQToolButton(m_column);
123 add->setTextLabel( i18n( "&Add Item"), true);
124 vbox->addWidget(add);
125 m_buttons.insert(BColAdd, add);
128 TQToolButton *remove = new TQToolButton(m_column);
129 remove->setIconSet( BarIconSet( "edit_remove"));
130 remove->setTextLabel( i18n( "&Remove Item"), true);
131 vbox->addWidget(remove);
132 m_buttons.insert(BColRem, remove);
135 TQToolButton * up = new TQToolButton(m_column);
137 up->setTextLabel( i18n( "Move Item &Up"), true);
139 m_buttons.insert(BColUp, up);
142 TQToolButton * down = new TQToolButton(m_column);
144 down->setTextLabel( i18n( "Move Item &Down"), true);
146 m_buttons.insert(BColDown, down);
151 m_listbox = new TDEListBox(m_column, "editlistview_columns");
152 m_listbox->setFocus();
153 hbox->insertWidget(0, m_listbox);
154 hbox->addWidget(m_editor);
166 kdDebug() << "EditListViewDialog ERROR: no listview " << endl;
174 m_listview->header()->setClickEnabled( listview->header()->isClickEnabled( i), i);
175 m_listview->header()->setResizeEnabled( listview->header()->isResizeEnabled( i), i);
176 m_listview->header()->setStretchEnabled( listview->header()->isStretchEnabled( i), i);
177 m_listview->setRenameable( i, true);
179 TQListViewItem *item = listview->firstChild();
182 item = item->nextSibling();
185 m_listview->setSelected(m_listview->firstChild(), true);
186 if(!m_listview->firstChild())
190 m_listbox->insertItem( listview->columnText( i));
191 m_listbox->setSelected(0, true);
194 int r = KDialogBase::exec();
195 if( r == TQDialog::Accepted)
199 for( int i = 0; i < m_listview->columns(); i++)
202 listview->addColumn(m_listview->columnText( i), m_listview->columnWidth( i));
205 listview->setColumnText( i, m_listview->columnText( i));
206 listview->setColumnWidth( i, m_listview->columnWidth( i));
208 listview->header()->setClickEnabled(m_listview->header()->isClickEnabled( i), i);
209 listview->header()->setResizeEnabled(m_listview->header()->isResizeEnabled( i), i);
210 listview->header()->setStretchEnabled(m_listview->header()->isStretchEnabled( i), i);
213 TQListViewItem *item = m_listview->firstChild();
217 item = item->nextSibling();
227 if(&set != m_propSet)
230 TQString name = property.name();
231 TQVariant value = property.value();
232 if(name == "caption") {
233 m_propSet->blockSignals( true);
234 m_listbox->changeItem(value.toString(), m_listbox->currentItem());
235 m_listview->setColumnText(m_listbox->currentItem(), value.toString());
236 m_propSet->blockSignals( false);
238 else if(name == "width")
239 m_listview->setColumnWidth(m_listbox->currentItem(), value.toInt());
240 else if(name == "resizable")
241 m_listview->header()->setResizeEnabled(value.toBool(), m_listbox->currentItem());
242 else if(name == "clickable")
243 m_listview->header()->setClickEnabled(value.toBool(), m_listbox->currentItem());
244 else if(name == "fullwidth")
245 m_listview->header()->setStretchEnabled(value.toBool(), m_listbox->currentItem());
254 int id = m_listbox->index(item);
256 m_propSet->blockSignals( true);
257 (*m_propSet)[ "caption"].setValue(m_listview->columnText( id), false);
258 (*m_propSet)[ "width"].setValue(m_listview->columnWidth( id), false);
259 (*m_propSet)[ "clickable"].setValue(TQVariant(m_listview->header()->isClickEnabled( id)), false);
260 (*m_propSet)[ "resizable"].setValue(TQVariant(m_listview->header()->isResizeEnabled( id)), false);
261 (*m_propSet)[ "fullwidth"].setValue(TQVariant(m_listview->header()->isStretchEnabled( id)), false);
262 m_propSet->blockSignals( false);
263 m_editor->changeSet(m_propSet);
266 m_buttons[BColUp]->setEnabled(item->prev());
267 m_buttons[BColDown]->setEnabled(item->next());
271EditListViewDialog::newItem()
273 m_listbox->insertItem( i18n( "New Column"));
274 m_listview->addColumn( i18n( "New Column"));
275 m_listview->setRenameable(m_listview->columns() - 1, true);
276 m_listbox->setCurrentItem(m_listbox->count() - 1);
277 m_buttons[BColRem]->setEnabled( true);
281EditListViewDialog::removeItem()
283 int current = m_listbox->currentItem();
284 if(m_listbox->item(current + 1))
285 m_listbox->setCurrentItem(current +1);
287 m_listbox->setCurrentItem(current - 1);
289 m_listview->removeColumn(current);
290 m_listbox->removeItem(current);
291 if(m_listbox->count() == 0)
292 m_buttons[BColRem]->setEnabled( false);
296EditListViewDialog::MoveItemUp()
298 int current = m_listbox->currentItem();
299 TQString text = m_listbox->text(current);
300 m_listbox->blockSignals( true);
302 m_listbox->changeItem(m_listbox->text(current - 1), current);
303 m_listview->setColumnText(current, m_listview->columnText(current - 1));
304 m_listview->setColumnWidth(current, m_listview->columnWidth(current - 1));
305 m_listview->header()->setClickEnabled(m_listview->header()->isClickEnabled(current - 1), current);
306 m_listview->header()->setResizeEnabled(m_listview->header()->isResizeEnabled(current - 1), current);
307 m_listview->header()->setStretchEnabled(m_listview->header()->isStretchEnabled(current - 1), current);
309 m_listbox->changeItem(text, current - 1);
310 m_listview->setColumnText(current - 1, (*m_propSet)[ "caption"].value().toString());
311 m_listview->setColumnWidth(current - 1,(*m_propSet)[ "width"].value(). toBool());
312 m_listview->header()->setClickEnabled((*m_propSet)[ "clickable"].value(). toBool(), current - 1);
313 m_listview->header()->setResizeEnabled((*m_propSet)[ "resizable"].value(). toBool(), current - 1);
314 m_listview->header()->setStretchEnabled((*m_propSet)[ "fullwidth"].value(). toBool(), current - 1);
316 m_listbox->blockSignals( false);
317 m_listbox->setCurrentItem(current - 1);
321EditListViewDialog::MoveItemDown()
323 int current = m_listbox->currentItem();
324 TQString text = m_listbox->text(current);
325 m_listbox->blockSignals( true);
327 m_listbox->changeItem(m_listbox->text(current+1), current);
328 m_listview->setColumnText(current, m_listview->columnText(current + 1));
329 m_listview->setColumnWidth(current, m_listview->columnWidth(current + 1));
330 m_listview->header()->setClickEnabled(m_listview->header()->isClickEnabled(current + 1), current);
331 m_listview->header()->setResizeEnabled(m_listview->header()->isResizeEnabled(current + 1), current);
332 m_listview->header()->setStretchEnabled(m_listview->header()->isStretchEnabled(current + 1), current);
334 m_listbox->changeItem(text, current+1);
335 m_listview->setColumnText(current + 1, (*m_propSet)[ "caption"].value().toString());
336 m_listview->setColumnWidth(current + 1,(*m_propSet)[ "width"].value(). toBool());
337 m_listview->header()->setClickEnabled((*m_propSet)[ "clickable"].value(). toBool(), current + 1);
338 m_listview->header()->setResizeEnabled((*m_propSet)[ "resizable"].value(). toBool(), current + 1);
339 m_listview->header()->setStretchEnabled((*m_propSet)[ "fullwidth"].value(). toBool(), current + 1);
341 m_listbox->blockSignals( false);
342 m_listbox->setCurrentItem(current + 1);
352 for( int i = BNewChild; i <= BRowDown; i++)
353 m_buttons[ i]->setEnabled( false);
357 m_buttons[BNewChild]->setEnabled( true);
358 m_buttons[BRemRow]->setEnabled( true);
359 m_buttons[BRowUp]->setEnabled( (item->itemAbove() && (item->itemAbove()->parent() == item->parent())) );
360 m_buttons[BRowDown]->setEnabled(item->nextSibling());
366 TQListViewItem *newItem;
367 if( listview->inherits( "TDEListView"))
370 newItem = new TDEListViewItem(parent);
372 newItem = new TDEListViewItem( listview);
377 newItem = new TQListViewItem(parent);
379 newItem = new TQListViewItem( listview);
383 TQListViewItem *last;
385 last = parent->firstChild();
389 while(last->nextSibling())
390 last = last->nextSibling();
391 newItem->moveItem(last);
395 newItem->setText( i, item->text( i));
397 TQListViewItem * child = item->firstChild();
399 newItem->setOpen( true);
407EditListViewDialog::newRow()
409 TDEListViewItem *parent = (TDEListViewItem*)m_listview->selectedItem();
411 parent = (TDEListViewItem*)parent->parent();
412 TDEListViewItem *item;
414 item = new TDEListViewItem(parent, m_listview->selectedItem());
416 item = new TDEListViewItem(m_listview, m_listview->selectedItem());
417 item->setText(0, i18n( "New Item"));
418 m_listview->setCurrentItem(item);
422EditListViewDialog::newChildRow()
424 TDEListViewItem *parent = (TDEListViewItem*)m_listview->currentItem();
425 TDEListViewItem *item;
427 item = new TDEListViewItem(parent);
429 item = new TDEListViewItem(m_listview, m_listview->currentItem());
430 item->setText(0, i18n( "Sub Item"));
432 m_listview->setCurrentItem(item);
433 parent->setOpen( true);
437EditListViewDialog::removeRow()
439 delete m_listview->currentItem();
443EditListViewDialog::MoveRowUp()
445 TQListViewItem *item = m_listview->currentItem()->itemAbove();
446 item->moveItem(m_listview->currentItem());
451EditListViewDialog::MoveRowDown()
453 TQListViewItem * before = m_listview->currentItem();
460#include "editlistviewdialog.moc"
|