You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
4.0 KiB
137 lines
4.0 KiB
/****************************************************************************
|
|
|
|
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 <tqtabwidget.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( TQWidget* 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 };
|
|
TQWidget* 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
|