diff options
Diffstat (limited to 'opensuse/core/tdelibs/textcompletion-editor.diff')
-rw-r--r-- | opensuse/core/tdelibs/textcompletion-editor.diff | 344 |
1 files changed, 344 insertions, 0 deletions
diff --git a/opensuse/core/tdelibs/textcompletion-editor.diff b/opensuse/core/tdelibs/textcompletion-editor.diff new file mode 100644 index 000000000..d14776149 --- /dev/null +++ b/opensuse/core/tdelibs/textcompletion-editor.diff @@ -0,0 +1,344 @@ +Index: khtml/khtmlview.h +=================================================================== +--- khtml/khtmlview.h.orig ++++ khtml/khtmlview.h +@@ -314,6 +314,7 @@ private: + QStringList formCompletionItems(const QString &name) const; + void clearCompletionHistory(const QString& name); + void addFormCompletionItem(const QString &name, const QString &value); ++ void removeFormCompletionItem(const QString &name, const QString &value); + + void addNonPasswordStorableSite( const QString& host ); + bool nonPasswordStorableSite( const QString& host ) const; +Index: khtml/khtmlview.cpp +=================================================================== +--- khtml/khtmlview.cpp.orig ++++ khtml/khtmlview.cpp +@@ -3088,6 +3088,16 @@ void KHTMLView::addFormCompletionItem(co + d->formCompletions->writeEntry(name, items); + } + ++void KHTMLView::removeFormCompletionItem(const QString &name, const QString &value) ++{ ++ if (!m_part->settings()->isFormCompletionEnabled()) ++ return; ++ ++ QStringList items = formCompletionItems(name); ++ if (items.remove(value)) ++ d->formCompletions->writeEntry(name, items); ++} ++ + void KHTMLView::addNonPasswordStorableSite(const QString& host) + { + if (!d->formCompletions) { +Index: khtml/rendering/render_form.h +=================================================================== +--- khtml/rendering/render_form.h.orig ++++ khtml/rendering/render_form.h +@@ -272,10 +272,12 @@ private slots: + void spellCheckerMisspelling( const QString &text, const QStringList &, unsigned int pos); + void spellCheckerCorrected( const QString &, const QString &, unsigned int ); + void spellCheckerFinished(); ++ void slotRemoveFromHistory( const QString & ); + + private: + enum LineEditMenuID { +- ClearHistory ++ ClearHistory, ++ EditHistory + }; + DOM::HTMLInputElementImpl* m_input; + KHTMLView* m_view; +Index: khtml/rendering/render_form.cpp +=================================================================== +--- khtml/rendering/render_form.cpp.orig ++++ khtml/rendering/render_form.cpp +@@ -385,7 +385,9 @@ QPopupMenu *LineEditWidget::createPopupM + + if (m_input->autoComplete()) { + popup->insertSeparator(); +- int id = popup->insertItem( SmallIconSet("history_clear"), i18n("Clear &History"), ClearHistory ); ++ int id = popup->insertItem( SmallIconSet("edit"), i18n("&Edit History..."), EditHistory ); ++ popup->setItemEnabled( id, (compObj() && !compObj()->isEmpty()) ); ++ id = popup->insertItem( SmallIconSet("history_clear"), i18n("Clear &History"), ClearHistory ); + popup->setItemEnabled( id, (compObj() && !compObj()->isEmpty()) ); + } + +@@ -409,11 +411,25 @@ void LineEditWidget::extendedMenuActivat + m_view->clearCompletionHistory(m_input->name().string()); + if (compObj()) + compObj()->clear(); ++ case EditHistory: ++ { ++ KHistoryComboEditor dlg( compObj() ? compObj()->items() : QStringList(), this ); ++ connect( &dlg, SIGNAL( removeFromHistory(const QString&) ), SLOT( slotRemoveFromHistory(const QString&)) ); ++ dlg.exec(); ++ } + default: + break; + } + } + ++void LineEditWidget::slotRemoveFromHistory(const QString &entry) ++{ ++ m_view->removeFormCompletionItem(m_input->name().string(), entry); ++ if (compObj()) ++ compObj()->removeItem(entry); ++} ++ ++ + bool LineEditWidget::event( QEvent *e ) + { + if (KLineEdit::event(e)) +Index: kdeui/kcombobox.h +=================================================================== +--- kdeui/kcombobox.h.orig ++++ kdeui/kcombobox.h +@@ -24,8 +24,15 @@ + + #include <qlineedit.h> + #include <qcombobox.h> ++#include <qvbox.h> ++#include <qlabel.h> ++#include <qlayout.h> ++#include <qtoolbutton.h> ++#include <qheader.h> + + #include <kcompletion.h> ++#include <kdialogbase.h> ++#include <klistview.h> + + class QListBoxItem; + class QPopupMenu; +@@ -669,6 +676,12 @@ public: + */ + void reset() { slotReset(); } + ++ /** ++ * When enabling it you have to connect to "removed" signal and save changes ++ */ ++ void setHistoryEditorEnabled( bool enable ); ++ bool isHistoryEditorEnabled() const; ++ + public slots: + /** + * Adds an item to the end of the history list and to the completion list. +@@ -702,6 +715,8 @@ signals: + */ + void cleared(); + ++ void removed( const QString& item ); ++ + protected: + /** + * Handling key-events, the shortcuts to rotate the items. +@@ -741,10 +756,17 @@ private slots: + void slotClear(); + + /** ++ * Called from the popupmenu, ++ */ ++ void slotEdit(); ++ ++ /** + * Appends our own context menu entry. + */ + void addContextMenuItems( QPopupMenu* ); + ++ void slotRemoveFromHistory( const QString & ); ++ + private: + void init( bool useCompletion ); + void rotateUp(); +@@ -774,6 +796,30 @@ private: + KHistoryComboPrivate* const d; + }; + ++class KDEUI_EXPORT KHistoryComboEditor : public KDialogBase ++{ ++ Q_OBJECT ++ ++public: ++ KHistoryComboEditor( const QStringList& entries, QWidget *parent = 0L ); ++ ~KHistoryComboEditor(); ++ ++signals: ++ void removeFromHistory( const QString& ); ++ ++protected slots: ++ virtual void slotUser1(); // User1 is "Delete Entry" button ++ void slotSelectionChanged( QListViewItem * item ); ++ ++protected: ++ virtual void virtual_hook( int id, void* data ); ++ ++private: ++ KListView *m_pListView; ++ ++ class KHistoryComboEditorPrivate; ++ KHistoryComboEditorPrivate* const d; ++}; + + #endif + +Index: kdeui/kcombobox.cpp +=================================================================== +--- kdeui/kcombobox.cpp.orig ++++ kdeui/kcombobox.cpp +@@ -29,6 +29,7 @@ + #include <kcursor.h> + #include <kiconloader.h> + #include <kicontheme.h> ++#include <klistviewsearchline.h> + #include <klineedit.h> + #include <klocale.h> + #include <knotifyclient.h> +@@ -343,10 +344,22 @@ void KComboBox::lineEditDeleted() + // ********************************************************************* + // ********************************************************************* + ++class KHistoryCombo::KHistoryComboPrivate ++{ ++public: ++ KHistoryComboPrivate() : bHistoryEditorEnabled(false) ++ { ++ } ++ ~KHistoryComboPrivate() ++ { ++ } ++ ++ bool bHistoryEditorEnabled; ++}; + + // we are always read-write + KHistoryCombo::KHistoryCombo( QWidget *parent, const char *name ) +- : KComboBox( true, parent, name ), d(0) ++ : KComboBox( true, parent, name ), d(new KHistoryComboPrivate) + { + init( true ); // using completion + } +@@ -354,7 +367,7 @@ KHistoryCombo::KHistoryCombo( QWidget *p + // we are always read-write + KHistoryCombo::KHistoryCombo( bool useCompletion, + QWidget *parent, const char *name ) +- : KComboBox( true, parent, name ), d(0) ++ : KComboBox( true, parent, name ), d(new KHistoryComboPrivate) + { + init( useCompletion ); + } +@@ -441,6 +454,10 @@ void KHistoryCombo::addContextMenuItems( + if ( menu ) + { + menu->insertSeparator(); ++ if (d->bHistoryEditorEnabled) { ++ int idedit = menu->insertItem( SmallIconSet("edit"), i18n("&Edit History..."), this, SLOT( slotEdit()) ); ++ menu->setItemEnabled(idedit, count()); ++ } + int id = menu->insertItem( SmallIconSet("history_clear"), i18n("Clear &History"), this, SLOT( slotClear())); + if (!count()) + menu->setItemEnabled(id, false); +@@ -677,10 +694,104 @@ void KHistoryCombo::slotClear() + emit cleared(); + } + ++void KHistoryCombo::slotEdit() ++{ ++ KHistoryComboEditor dlg( historyItems(), this ); ++ connect( &dlg, SIGNAL( removeFromHistory(const QString&) ), SLOT( slotRemoveFromHistory(const QString&)) ); ++ dlg.exec(); ++} ++ ++void KHistoryCombo::slotRemoveFromHistory(const QString &entry) ++{ ++ removeFromHistory(entry); ++ emit removed(entry); ++} ++ ++void KHistoryCombo::setHistoryEditorEnabled( bool enable ) ++{ ++ d->bHistoryEditorEnabled = enable; ++} ++ ++bool KHistoryCombo::isHistoryEditorEnabled() const ++{ ++ return d->bHistoryEditorEnabled; ++} ++ + void KComboBox::virtual_hook( int id, void* data ) + { KCompletionBase::virtual_hook( id, data ); } + + void KHistoryCombo::virtual_hook( int id, void* data ) + { KComboBox::virtual_hook( id, data ); } + ++void KHistoryComboEditor::virtual_hook( int id, void* data ) ++{ KDialogBase::virtual_hook( id, data ); } ++ ++KHistoryComboEditor::KHistoryComboEditor( const QStringList& entries, QWidget *parent ) ++: KDialogBase( parent, "khistorycomboeditor", true, i18n( "History Editor" ), ++ KDialogBase::Close | KDialogBase::User1, KDialogBase::User1, true, ++ KGuiItem( i18n( "&Delete Entry" ), "editdelete") ), d(0) ++{ ++ QVBox* box = new QVBox( this ); ++ box->setSpacing( KDialog::spacingHint() ); ++ setMainWidget( box ); ++ ++ new QLabel( i18n( "This dialog allows you to delete unwanted history items." ), box ); ++ ++ // Add searchline ++ QHBox* searchbox = new QHBox( box ); ++ searchbox->setSpacing( KDialog::spacingHint() ); ++ ++ QToolButton *clearSearch = new QToolButton(searchbox); ++ clearSearch->setTextLabel(i18n("Clear Search"), true); ++ clearSearch->setIconSet(SmallIconSet(QApplication::reverseLayout() ? "clear_left" : "locationbar_erase")); ++ QLabel* slbl = new QLabel(i18n("&Search:"), searchbox); ++ KListViewSearchLine* listViewSearch = new KListViewSearchLine(searchbox); ++ slbl->setBuddy(listViewSearch); ++ connect(clearSearch, SIGNAL(pressed()), listViewSearch, SLOT(clear())); ++ ++ // Add ListView ++ m_pListView = new KListView( box ); ++ listViewSearch->setListView(m_pListView); ++ m_pListView->setAllColumnsShowFocus(true); ++ m_pListView->header()->hide(); ++ m_pListView->addColumn(""); ++ m_pListView->setRenameable( 0 ); ++ ++ box->setStretchFactor( m_pListView, 1 ); ++ ++ QStringList newlist = entries; ++ for ( QStringList::Iterator it = newlist.begin(); it != newlist.end(); ++it ) { ++ new QListViewItem( m_pListView, *it ); ++ } ++ ++ m_pListView->setMinimumSize( m_pListView->sizeHint() ); ++ ++ connect( m_pListView, SIGNAL( selectionChanged( QListViewItem * ) ), ++ this, SLOT( slotSelectionChanged( QListViewItem * ) ) ); ++ ++ enableButton( KDialogBase::User1, false ); ++ ++ resize( sizeHint() ); ++} ++ ++KHistoryComboEditor::~KHistoryComboEditor() ++{ ++} ++ ++void KHistoryComboEditor::slotUser1() // Delete button ++{ ++ QListViewItem *item = m_pListView->selectedItem(); ++ ++ if ( item ) { ++ emit removeFromHistory( item->text(0) ); ++ m_pListView->takeItem( item ); ++ enableButton( KDialogBase::User1, false ); ++ } ++} ++ ++void KHistoryComboEditor::slotSelectionChanged( QListViewItem * item ) ++{ ++ enableButton( KDialogBase::User1, item ); ++} ++ + #include "kcombobox.moc" |