diff options
Diffstat (limited to 'khotkeys/kcontrol/actions_listview_widget.h')
-rw-r--r-- | khotkeys/kcontrol/actions_listview_widget.h | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/khotkeys/kcontrol/actions_listview_widget.h b/khotkeys/kcontrol/actions_listview_widget.h new file mode 100644 index 000000000..4b0d937a3 --- /dev/null +++ b/khotkeys/kcontrol/actions_listview_widget.h @@ -0,0 +1,151 @@ +/**************************************************************************** + + KHotKeys + + Copyright (C) 1999-2001 Lubos Lunak <[email protected]> + + Distributed under the terms of the GNU General Public License version 2. + +****************************************************************************/ + +#ifndef _ACTIONS_LISTVIEW_WIDGET_H_ +#define _ACTIONS_LISTVIEW_WIDGET_H_ + +#include <khlistview.h> + +#include <action_data.h> + +#include <actions_listview_widget_ui.h> + +class QDragObject; + +namespace KHotKeys +{ + +class Action_listview_item; +class Action_data_base; + +class Actions_listview_widget + : public Actions_listview_widget_ui + { + Q_OBJECT + public: + Actions_listview_widget( QWidget* parent_P = NULL, const char* name_P = NULL ); + Action_listview_item* current_action() const; + void set_current_action( Action_listview_item* item ); + Action_data_base* current_action_data() const; + void set_action_data( Action_data_base* data_P, bool recent_action_P = false ); + void action_name_changed( const QString& name_P ); + void clear(); + void build_up(); + void new_action( Action_data_base* data_P ); + void delete_action(); + private: + Action_listview_item* create_item( QListViewItem* parent_P, QListViewItem* after_P, Action_data_base* data_P ); + void build_up_recursively( Action_data_group* parent_P, + Action_listview_item* item_parent_P ); + Action_listview_item* recent_item; + Action_listview_item* saved_current_item; + private slots: + void item_moved( QListViewItem* item_P, QListViewItem* was_after_P, QListViewItem* after_P ); + void current_changed( QListViewItem* item_P ); + signals: + void current_action_changed(); + }; + +class Actions_listview + : public KHListView + { + Q_OBJECT + public: + Actions_listview( QWidget* parent_P = NULL, const char* name_P = NULL ); + Actions_listview_widget* widget(); + private: + Actions_listview_widget* _widget; + }; + +// CHECKME a jak to bude s parent itemu, kdyz Action_data uz maji vlastni parent ? +class Action_listview_item + : public QListViewItem + { + public: + virtual QString text( int column_P ) const; + Action_data_base* data() const; + void set_data( Action_data_base* data_P ); + Action_listview_item( QListView* parent_P, QListViewItem* after_P, + Action_data_base* data_P ); + Action_listview_item( QListViewItem* parent_P, QListViewItem* after_P, + Action_data_base* data_P ); + protected: + Action_data_base* _data; // CHECKME doesn't own !!! + }; + +//*************************************************************************** +// Inline +//*************************************************************************** + +// Actions_listview_widget + +inline +Action_listview_item* Actions_listview_widget::current_action() const + { + return saved_current_item; + } + +inline +Action_data_base* Actions_listview_widget::current_action_data() const + { + return current_action() != NULL ? current_action()->data() : NULL; + } + +inline +void Actions_listview_widget::clear() + { + actions_listview->clear(); + recent_item = 0; + saved_current_item = 0; + } + +// Actions_listview + +inline +Actions_listview_widget* Actions_listview::widget() + { + return _widget; + } + +// Action_listview_item + +inline +Action_listview_item::Action_listview_item( QListView* parent_P, QListViewItem* after_P, + Action_data_base* data_P ) + : QListViewItem( parent_P, after_P ), _data( data_P ) + { + if( dynamic_cast< Action_data_group* >( data_P )) + setExpandable( true ); + } + +inline +Action_listview_item::Action_listview_item( QListViewItem* parent_P, QListViewItem* after_P, + Action_data_base* data_P ) + : QListViewItem( parent_P, after_P ), _data( data_P ) + { + if( dynamic_cast< Action_data_group* >( data_P )) + setExpandable( true ); + } + +inline +Action_data_base* Action_listview_item::data() const + { + return _data; + } + +inline +void Action_listview_item::set_data( Action_data_base* data_P ) + { + _data = data_P; + } + +} // namespace KHotKeys + +#endif |