summaryrefslogtreecommitdiffstats
path: root/khotkeys/kcontrol/tab_widget.h
diff options
context:
space:
mode:
Diffstat (limited to 'khotkeys/kcontrol/tab_widget.h')
-rw-r--r--khotkeys/kcontrol/tab_widget.h136
1 files changed, 136 insertions, 0 deletions
diff --git a/khotkeys/kcontrol/tab_widget.h b/khotkeys/kcontrol/tab_widget.h
new file mode 100644
index 000000000..eedaa541a
--- /dev/null
+++ b/khotkeys/kcontrol/tab_widget.h
@@ -0,0 +1,136 @@
+/****************************************************************************
+
+ KHotKeys
+
+ Copyright (C) 1999-2001 Lubos Lunak <l.lunak@kde.org>
+
+ Distributed under the terms of the GNU General Public License version 2.
+
+****************************************************************************/
+
+#ifndef _TAB_WIDGET_H_
+#define _TAB_WIDGET_H_
+
+#include <qtabwidget.h>
+
+#include <actions.h>
+
+namespace KHotKeys
+{
+
+class Tab_widget
+ : public QTabWidget
+ {
+ Q_OBJECT
+ public:
+ enum action_type_t
+ {
+ TYPE_FIRST,
+ TYPE_GENERIC = TYPE_FIRST,
+ TYPE_COMMAND_URL_SHORTCUT,
+ TYPE_MENUENTRY_SHORTCUT,
+ TYPE_DCOP_SHORTCUT,
+ TYPE_KEYBOARD_INPUT_SHORTCUT,
+ TYPE_KEYBOARD_INPUT_GESTURE,
+ TYPE_ACTIVATE_WINDOW_SHORTCUT,
+ TYPE_END
+ };
+ Tab_widget( QWidget* parent_P = NULL, const char* name_P = NULL );
+ virtual ~Tab_widget();
+ void set_action_type( action_type_t type_P, bool force_P = false );
+ void save_current_action_changes();
+ void load_current_action();
+ void clear_pages();
+ static action_type_t type( const Action_data* data_P );
+ signals: // internal
+ void clear_pages_signal();
+ protected slots:
+ void set_action_type_slot( int type_P );
+ protected:
+ void check_action_type();
+ class Pages_set;
+ void show_pages( const Pages_set& pages_P );
+ enum tab_pos_t { TAB_FIRST, TAB_INFO = TAB_FIRST, TAB_GENERAL_SETTINGS, TAB_GESTURES_SETTINGS,
+ TAB_GENERAL, TAB_GROUP_GENERAL,
+ TAB_TRIGGERS, TAB_SHORTCUT_TRIGGER, TAB_GESTURE_TRIGGER, TAB_ACTIONS, TAB_COMMAND_URL,
+ TAB_MENUENTRY, TAB_DCOP, TAB_KEYBOARD_INPUT, TAB_WINDOW, TAB_CONDITIONS, TAB_VOICE_SETTINGS, TAB_END };
+ QWidget* pages[ TAB_END ];
+ enum tab_show_type_t { NONE, DATA, GROUP };
+ tab_show_type_t current_type;
+ action_type_t current_data_type;
+ static const char* const tab_labels[];
+ class Pages_set // that main reason for existence of this class is the fact that
+ { // I was very curious if overloading operator, ( = comma ) really
+ public: // works ( it does, but not exactly as I expected :( )
+ Pages_set( tab_pos_t page_P );
+ Pages_set& operator,( tab_pos_t page_P );
+ bool is_set( tab_pos_t page_P ) const;
+ protected:
+ bool set[ TAB_END ];
+ };
+ friend Pages_set operator,( tab_pos_t page1_P, tab_pos_t page2_P ); // CHECKME
+ friend tab_pos_t& operator++( tab_pos_t& val_P ); // CHECKME
+ };
+
+//***************************************************************************
+// Inline
+//***************************************************************************
+
+// Tab_widget
+
+// grrrr
+inline
+Tab_widget::tab_pos_t& operator++( Tab_widget::tab_pos_t& val_P )
+ {
+ val_P = static_cast< Tab_widget::tab_pos_t >( val_P + 1 );
+ return val_P;
+ }
+
+inline
+void Tab_widget::clear_pages()
+ {
+ emit clear_pages_signal();
+ }
+
+// Tab_widget::Pages_set
+
+inline
+Tab_widget::Pages_set::Pages_set( tab_pos_t page_P )
+ {
+ for( tab_pos_t i = TAB_FIRST;
+ i < TAB_END;
+ ++i )
+ set[ i ] = false;
+ set[ page_P ] = true;
+ }
+
+inline
+bool Tab_widget::Pages_set::is_set( tab_pos_t page_P ) const
+ {
+ return set[ page_P ];
+ }
+
+inline
+Tab_widget::Pages_set& Tab_widget::Pages_set::operator,( tab_pos_t page_P )
+ {
+ set[ page_P ] = true;
+ return *this;
+ }
+
+inline
+Tab_widget::Pages_set operator,( Tab_widget::tab_pos_t page1_P, Tab_widget::tab_pos_t page2_P )
+ {
+ return Tab_widget::Pages_set( page1_P ), page2_P;
+ }
+
+// grrrr
+inline
+Tab_widget::action_type_t& operator++( Tab_widget::action_type_t& val_P )
+ {
+ val_P = static_cast< Tab_widget::action_type_t >( val_P + 1 );
+ return val_P;
+ }
+
+} // namespace KHotKeys
+
+#endif