summaryrefslogtreecommitdiffstats
path: root/khotkeys/kcontrol/action_list_widget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'khotkeys/kcontrol/action_list_widget.cpp')
-rw-r--r--khotkeys/kcontrol/action_list_widget.cpp127
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"