diff options
Diffstat (limited to 'khotkeys/kcontrol/condition_list_widget.cpp')
-rw-r--r-- | khotkeys/kcontrol/condition_list_widget.cpp | 103 |
1 files changed, 79 insertions, 24 deletions
diff --git a/khotkeys/kcontrol/condition_list_widget.cpp b/khotkeys/kcontrol/condition_list_widget.cpp index ba3be5e71..f0a43cb93 100644 --- a/khotkeys/kcontrol/condition_list_widget.cpp +++ b/khotkeys/kcontrol/condition_list_widget.cpp @@ -49,10 +49,10 @@ Condition_list_widget::Condition_list_widget( TQWidget* parent_P, const char* na popup->insertItem( i18n( "Not_condition", "Not" ), TYPE_NOT ); popup->insertItem( i18n( "And_condition", "And" ), TYPE_AND ); popup->insertItem( i18n( "Or_condition", "Or" ), TYPE_OR ); - connect( conditions_listview, TQT_SIGNAL( doubleClicked ( TQListViewItem *, const TQPoint &, int ) ), - this, TQT_SLOT( modify_pressed() ) ); + connect( conditions_listview, TQ_SIGNAL( doubleClicked ( TQListViewItem *, const TQPoint &, int ) ), + this, TQ_SLOT( modify_pressed() ) ); - connect( popup, TQT_SIGNAL( activated( int )), TQT_SLOT( new_selected( int ))); + connect( popup, TQ_SIGNAL( activated( int )), TQ_SLOT( new_selected( int ))); new_button->setPopup( popup ); conditions_listview->header()->hide(); conditions_listview->addColumn( "" ); @@ -62,18 +62,18 @@ Condition_list_widget::Condition_list_widget( TQWidget* parent_P, const char* na copy_button->setEnabled( false ); modify_button->setEnabled( false ); delete_button->setEnabled( false ); + move_up_button->setEnabled( false ); + move_down_button->setEnabled( false ); clear_data(); // KHotKeys::Module::changed() - connect( new_button, TQT_SIGNAL( clicked()), - module, TQT_SLOT( changed())); - connect( copy_button, TQT_SIGNAL( clicked()), - module, TQT_SLOT( changed())); - connect( modify_button, TQT_SIGNAL( clicked()), - module, TQT_SLOT( changed())); - connect( delete_button, TQT_SIGNAL( clicked()), - module, TQT_SLOT( changed())); - connect( comment_lineedit, TQT_SIGNAL( textChanged( const TQString& )), - module, TQT_SLOT( changed())); + connect(new_button, TQ_SIGNAL(clicked()), module, TQ_SLOT(changed())); + connect(copy_button, TQ_SIGNAL(clicked()), module, TQ_SLOT(changed())); + connect(modify_button, TQ_SIGNAL(clicked()), module, TQ_SLOT( changed())); + connect(delete_button, TQ_SIGNAL(clicked()), module, TQ_SLOT( changed())); + connect(move_up_button, TQ_SIGNAL(clicked()), module, TQ_SLOT(changed())); + connect(move_down_button, TQ_SIGNAL(clicked()), module, TQ_SLOT(changed())); + connect(comment_lineedit, TQ_SIGNAL(textChanged(const TQString&)), + module, TQ_SLOT(changed())); } Condition_list_widget::~Condition_list_widget() @@ -213,8 +213,11 @@ void Condition_list_widget::new_selected( int type_P ) void Condition_list_widget::copy_pressed() { - if ( !selected_item ) - return; + if ( !selected_item ) + { + return; + } + conditions_listview->setSelected( create_listview_item( selected_item->condition()->copy( selected_item->condition()->parent()), selected_item->parent() ? NULL : conditions_listview, @@ -223,22 +226,72 @@ void Condition_list_widget::copy_pressed() } void Condition_list_widget::delete_pressed() -{ - if ( selected_item ) { - conditions.remove( selected_item->condition()); // we own it - delete selected_item; // CHECKME snad vyvola signaly pro enable() - selected_item = NULL; + if ( !selected_item ) + { + return; + } + Condition_list_item *nextItem = static_cast< Condition_list_item* >(selected_item->nextSibling()); + conditions.remove( selected_item->condition()); // we own it + delete selected_item; + selected_item = NULL; + if (!nextItem) + { + // If the last item of the list was deleted, get the new last item + nextItem = static_cast< Condition_list_item* >(conditions_listview->lastItem()); + } + if (nextItem) + { + conditions_listview->setSelected(nextItem, true); + current_changed(nextItem); + } } -} void Condition_list_widget::modify_pressed() { - if ( !selected_item ) - return; + if ( !selected_item ) + { + return; + } edit_listview_item( selected_item ); } +void Condition_list_widget::move_up_pressed() + { + if ( !selected_item ) + { + return; + } + + Condition_list_item *prevItem = nullptr; + TQListViewItem *currItem = conditions_listview->firstChild(); + while (currItem != selected_item) + { + prevItem = static_cast< Condition_list_item* >(currItem); + currItem = currItem->nextSibling(); + } + if (prevItem) + { + prevItem->moveItem(selected_item); + current_changed(selected_item); + } + } + +void Condition_list_widget::move_down_pressed() + { + if ( !selected_item ) + { + return; + } + + Condition_list_item *nextItem = static_cast< Condition_list_item* >(selected_item->nextSibling()); + if (nextItem) + { + selected_item->moveItem(nextItem); + current_changed(selected_item); + } + } + void Condition_list_widget::current_changed( TQListViewItem* item_P ) { // if( item_P == selected_item ) @@ -260,6 +313,8 @@ void Condition_list_widget::current_changed( TQListViewItem* item_P ) } else modify_button->setEnabled( false ); + move_up_button->setEnabled(selected_item != conditions_listview->firstChild()); + move_down_button->setEnabled(selected_item != conditions_listview->lastChild()); } Condition_list_item* Condition_list_widget::create_listview_item( Condition* condition_P, @@ -268,7 +323,7 @@ Condition_list_item* Condition_list_widget::create_listview_item( Condition* con #ifdef KHOTKEYS_DEBUG kdDebug( 1217 ) << "Condition_list_widget::create_listview_item():" << endl; Condition::debug_list( conditions ); - kdDebug( 1217 ) << kdBacktrace() << endl; + kdDebug( 1217 ) << kdBacktrace() << endl; #endif Condition* new_cond = copy_P ? condition_P->copy( parent2_P ? static_cast< Condition_list_base* >( parent2_P->condition()) : NULL ) : condition_P; |