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 |