diff options
Diffstat (limited to 'klipper/configdialog.h')
| -rw-r--r-- | klipper/configdialog.h | 263 | 
1 files changed, 263 insertions, 0 deletions
diff --git a/klipper/configdialog.h b/klipper/configdialog.h new file mode 100644 index 000000000..be64b8335 --- /dev/null +++ b/klipper/configdialog.h @@ -0,0 +1,263 @@ +// -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8; -*- +/* This file is part of the KDE project +   Copyright (C) 2000 by Carsten Pfeiffer <pfeiffer@kde.org> + +   This program is free software; you can redistribute it and/or +   modify it under the terms of the GNU General Public +   License as published by the Free Software Foundation; either +   version 2 of the License, or (at your option) any later version. + +   This program is distributed in the hope that it will be useful, +   but WITHOUT ANY WARRANTY; without even the implied warranty of +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +    General Public License for more details. + +   You should have received a copy of the GNU General Public License +   along with this program; see the file COPYING.  If not, write to +   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +   Boston, MA 02110-1301, USA. +*/ +#ifndef CONFIGDIALOG_H +#define CONFIGDIALOG_H + +#include <qcheckbox.h> +#include <qevent.h> +#include <qgroupbox.h> +#include <qheader.h> +#include <qradiobutton.h> +#include <qvbox.h> + +#include <kdialogbase.h> +#include <keditlistbox.h> +#include <kkeydialog.h> +#include <klistview.h> +#include <knuminput.h> + +#include "urlgrabber.h" + +class KGlobalAccel; +class KKeyChooser; +class KListView; +class QPushButton; +class QDialog; +class ConfigDialog; + +class GeneralWidget : public QVBox +{ +    Q_OBJECT + +    friend class ConfigDialog; + +public: +    GeneralWidget( QWidget *parent, const char *name ); +    ~GeneralWidget(); + +private slots: +    void historySizeChanged( int value ); +    void slotClipConfigChanged(); + +private: +    QCheckBox *cbMousePos, *cbSaveContents, *cbReplayAIH, *cbNoNull; +    QCheckBox *cbIgnoreSelection, *cbStripWhitespace; +    QRadioButton *cbSynchronize, *cbImplicitSelection, *cbSeparate; +    KIntNumInput *popupTimeout, *maxItems; + +}; + + +// only for use inside ActionWidget +class AdvancedWidget : public QVBox +{ +    Q_OBJECT + +public: +    AdvancedWidget( QWidget *parent = 0L, const char *name = 0L ); +    ~AdvancedWidget(); + +    void setWMClasses( const QStringList& items ); +    QStringList wmClasses() const { return editListBox->items(); } + +private: +    KEditListBox *editListBox; +}; + +class ActionWidget : public QVBox +{ +    Q_OBJECT + +    friend class ConfigDialog; + +public: +    ActionWidget( const ActionList *list, ConfigDialog* configWidget, QWidget *parent, const char *name ); +    ~ActionWidget(); + +    /** +     * Creates a list of actions from the listView and returns a pointer to +     * the list. +     * Make sure to free that pointer when you don't need it anymore. +     */ +    ActionList * actionList(); + +    void setWMClasses( const QStringList& items ) { m_wmClasses = items; } +    QStringList wmClasses() const                 { return m_wmClasses; } + +private slots: +    void slotAddAction(); +    void slotDeleteAction(); +    void slotItemChanged( QListViewItem *, const QPoint& , int ); +    void slotAdvanced(); +    void slotContextMenu( KListView *, QListViewItem *, const QPoint& ); +    void selectionChanged ( QListViewItem *); + +private: +    KListView *listView; +    QStringList m_wmClasses; +    AdvancedWidget *advancedWidget; +    QPushButton *delActionButton; +    QCheckBox *cbUseGUIRegExpEditor; +}; + +/*class KeysWidget : public QVBox +{ +    Q_OBJECT + +    friend class ConfigDialog; + +public: +    KeysWidget( KAccelActions &keyMap, QWidget *parent, const char *name ); +    ~KeysWidget(); + +private: +    KKeyChooser *keyChooser; +};*/ + + +class ConfigDialog : public KDialogBase +{ +    Q_OBJECT + +public: +    ConfigDialog( const ActionList *list, KGlobalAccel *accel, bool isApplet ); +    ~ConfigDialog(); + +    ActionList * actionList() const { return actionWidget->actionList(); } + +    bool keepContents()    const { +	return generalWidget->cbSaveContents->isChecked(); +    } +    bool popupAtMousePos() const { +	return generalWidget->cbMousePos->isChecked(); +    } +    bool stripWhiteSpace() const { +        return generalWidget->cbStripWhitespace->isChecked(); +    } +    bool replayActionInHistory() const { +	return generalWidget->cbReplayAIH->isChecked(); +    } +    bool noNullClipboard() const { +        return generalWidget->cbNoNull->isChecked(); +    } + +    int popupTimeout() const { +	return generalWidget->popupTimeout->value(); +    } +    int maxItems() const { +	return generalWidget->maxItems->value(); +    } +    bool ignoreSelection() const +    { +        return generalWidget->cbIgnoreSelection->isChecked(); +    } +    QStringList noActionsFor() const { +	return actionWidget->wmClasses(); +    } +    bool useGUIRegExpEditor() const +    { +      return actionWidget->cbUseGUIRegExpEditor->isChecked(); +    } + +    bool synchronize() const { +        return generalWidget->cbSynchronize->isChecked(); +    } +    bool implicitSelection() const { +        return generalWidget->cbImplicitSelection->isChecked(); +    } + +    void setKeepContents( bool enable ) { +	generalWidget->cbSaveContents->setChecked( enable ); +    } +    void setPopupAtMousePos( bool enable ) { +	generalWidget->cbMousePos->setChecked( enable ); +    } +    void setStripWhiteSpace( bool enable ) { +        generalWidget->cbStripWhitespace->setChecked( enable ); +    } +    void setReplayActionInHistory( bool enable ) { +	generalWidget->cbReplayAIH->setChecked( enable ); +    } +    void setNoNullClipboard( bool enable ) { +        generalWidget->cbNoNull->setChecked( enable ); +    } +    void setPopupTimeout( int timeout ) { +	generalWidget->popupTimeout->setValue( timeout ); +    } +    void setMaxItems( int items ) { +	generalWidget->maxItems->setValue( items ); +    } +    void setIgnoreSelection( bool ignore ) { +        generalWidget->cbIgnoreSelection->setChecked( ignore ); +    } +    void setSynchronize( bool synchronize ) { +        generalWidget->cbSynchronize->setChecked( synchronize ); +    } +    void setNoActionsFor( const QStringList& items ) { +	actionWidget->setWMClasses( items ); +    } +    void setUseGUIRegExpEditor( bool enabled ) +    { +	// the checkbox is only hidden explicitly when there's no +	// regexp editor component available. +	if ( !actionWidget->cbUseGUIRegExpEditor->isHidden() ) +            actionWidget->cbUseGUIRegExpEditor->setChecked( enabled ); +    } + +    virtual void show(); +    void commitShortcuts(); + +private: +    GeneralWidget *generalWidget; +    ActionWidget *actionWidget; +    KKeyChooser *keysWidget; + +}; + +class ListView : public KListView +{ +public: +    ListView( ConfigDialog* configWidget, QWidget *parent, const char *name ) +	: KListView( parent, name ), _configWidget( configWidget ), +          _regExpEditor(0L) {} +    // QListView has a weird idea of a sizeHint... +    virtual QSize sizeHint () const { +	int w = minimumSizeHint().width(); +	int h = header()->height(); +	h += viewport()->sizeHint().height(); +	h += horizontalScrollBar()->height(); +	 +	QListViewItem *item = firstChild(); +	while ( item ) { +	    h += item->totalHeight(); +	    item = item->nextSibling(); +	} + +	return QSize( w, h ); +    } + +protected: +    virtual void rename( QListViewItem* item, int c ); +private: +    ConfigDialog* _configWidget; +    QDialog* _regExpEditor; +}; + +#endif // CONFIGDIALOG_H  | 
