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.
264 lines
7.0 KiB
264 lines
7.0 KiB
15 years ago
|
// -*- 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
|