diff options
Diffstat (limited to 'khotkeys/kcontrol/action_list_widget.cpp')
-rw-r--r-- | khotkeys/kcontrol/action_list_widget.cpp | 127 |
1 files changed, 106 insertions, 21 deletions
diff --git a/khotkeys/kcontrol/action_list_widget.cpp b/khotkeys/kcontrol/action_list_widget.cpp index 79744a09e..2f87132d8 100644 --- a/khotkeys/kcontrol/action_list_widget.cpp +++ b/khotkeys/kcontrol/action_list_widget.cpp @@ -32,6 +32,7 @@ #include "dcop_widget.h" #include "keyboard_input_widget.h" #include "activate_window_widget.h" +#include "waiting_widget.h" #include "kcmkhotkeys.h" namespace KHotKeys @@ -48,7 +49,8 @@ Action_list_widget::Action_list_widget( TQWidget* parent_P, const char* name_P ) popup->insertItem( i18n( "DCOP Call..." ), TYPE_DCOP_ACTION ); popup->insertItem( i18n( "Keyboard Input..." ), TYPE_KEYBOARD_INPUT_ACTION ); popup->insertItem( i18n( "Activate Window..." ), TYPE_ACTIVATE_WINDOW_ACTION ); - connect( popup, TQT_SIGNAL( activated( int )), TQT_SLOT( new_selected( int ))); + popup->insertItem( i18n( "Waiting..." ), TYPE_WAITING_ACTION ); + connect( popup, TQ_SIGNAL( activated( int )), TQ_SLOT( new_selected( int ))); new_button->setPopup( popup ); actions_listview->header()->hide(); actions_listview->addColumn( "" ); @@ -58,20 +60,17 @@ Action_list_widget::Action_list_widget( TQWidget* parent_P, const char* name_P ) modify_button->setEnabled( false ); delete_button->setEnabled( false ); clear_data(); - connect( actions_listview, TQT_SIGNAL( doubleClicked ( TQListViewItem *, const TQPoint &, int ) ), - this, TQT_SLOT( modify_pressed() ) ); + connect( actions_listview, TQ_SIGNAL( doubleClicked ( TQListViewItem *, const TQPoint &, int ) ), + this, TQ_SLOT( modify_pressed() ) ); // 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())); } Action_list_widget::~Action_list_widget() @@ -132,6 +131,9 @@ void Action_list_widget::new_selected( int type_P ) case TYPE_ACTIVATE_WINDOW_ACTION: // Activate_window_action_dialog dlg = new Activate_window_action_dialog( NULL ); break; + case TYPE_WAITING_ACTION: // Waiting_action_dialog + dlg = new Waiting_action_dialog( NULL ); + break; default: assert( false ); } @@ -148,24 +150,81 @@ void Action_list_widget::new_selected( int type_P ) void Action_list_widget::copy_pressed() { - if ( !selected_item ) - return; + if ( !selected_item ) + { + return; + } + actions_listview->setSelected( create_listview_item( selected_item->action(), - selected_item->parent() ? NULL : actions_listview, selected_item->parent(), - selected_item, true ), true ); + selected_item->parent() ? NULL : actions_listview, selected_item->parent(), + selected_item, true ), true ); } void Action_list_widget::delete_pressed() { - delete selected_item; // CHECKME snad vyvola signaly pro enable() + if ( !selected_item ) + { + return; + } + + Action_list_item *nextItem = static_cast< Action_list_item* >(selected_item->nextSibling()); + 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< Action_list_item* >(actions_listview->lastItem()); + } + if (nextItem) + { + actions_listview->setSelected(nextItem, true); + current_changed(nextItem); + } } void Action_list_widget::modify_pressed() { - if ( !selected_item ) - return; - edit_listview_item( selected_item ); + if ( !selected_item ) + { + return; + } + edit_listview_item( selected_item ); + } + +void Action_list_widget::move_up_pressed() + { + if ( !selected_item ) + { + return; + } + + Action_list_item *prevItem = nullptr; + TQListViewItem *currItem = actions_listview->firstChild(); + while (currItem != selected_item) + { + prevItem = static_cast< Action_list_item* >(currItem); + currItem = currItem->nextSibling(); + } + if (prevItem) + { + prevItem->moveItem(selected_item); + current_changed(selected_item); + } + } + +void Action_list_widget::move_down_pressed() + { + if ( !selected_item ) + { + return; + } + + Action_list_item *nextItem = static_cast< Action_list_item* >(selected_item->nextSibling()); + if (nextItem) + { + selected_item->moveItem(nextItem); + current_changed(selected_item); + } } void Action_list_widget::current_changed( TQListViewItem* item_P ) @@ -177,6 +236,8 @@ void Action_list_widget::current_changed( TQListViewItem* item_P ) copy_button->setEnabled( item_P != NULL ); modify_button->setEnabled( item_P != NULL ); delete_button->setEnabled( item_P != NULL ); + move_up_button->setEnabled(selected_item != actions_listview->firstChild()); + move_down_button->setEnabled(selected_item != actions_listview->lastChild()); } Action_list_item* Action_list_widget::create_listview_item( Action* action_P, @@ -215,6 +276,8 @@ void Action_list_widget::edit_listview_item( Action_list_item* item_P ) else if( Activate_window_action* action = dynamic_cast< Activate_window_action* >( item_P->action())) dlg = new Activate_window_action_dialog( action ); + else if( Waiting_action* action = dynamic_cast< Waiting_action* >( item_P->action())) + dlg = new Waiting_action_dialog( action ); else // CHECKME TODO pridat dalsi assert( false ); Action* new_action = dlg->edit_action(); @@ -349,6 +412,28 @@ void Activate_window_action_dialog::accept() action = new Activate_window_action( NULL, widget->get_data()); // CHECKME NULL ? } +// Waiting_action_dialog + +Waiting_action_dialog::Waiting_action_dialog( Waiting_action* action_P ) + : KDialogBase( NULL, NULL, true, "", Ok | Cancel ), action( NULL ) + { + widget = new Waiting_widget( this ); + widget->set_data( action_P ); + setMainWidget( widget ); + } + +Action* Waiting_action_dialog::edit_action() + { + exec(); + return action; + } + +void Waiting_action_dialog::accept() + { + KDialogBase::accept(); + action = widget->get_data( NULL ); + } + } // namespace KHotKeys #include "action_list_widget.moc" |