/***************************************************************************
 *   Copyright (C) 2006 by Ian Reinhart Geiser   *
 *   geiseri@yahoo.com   *
 *                                                                         *
 *   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; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
#ifndef SPELLCHECKER_H
#define SPELLCHECKER_H

#include <QDialog>
#include <QTextCursor>

class QTextDocumentSpellChecker;
class QTextDocument;
class QLineEdit;
class QModelIndex;

namespace Ui
{
	class SpellChecker;
}

/**
A GUI interface for spellchecking a QTextDocument.

	@author Ian Reinhart Geiser <geiseri@yahoo.com>
*/
class SpellChecker : public QDialog
{
	Q_OBJECT
public:
	SpellChecker(QWidget *parent = 0);
	~SpellChecker();

	void changeCurrentDocument( QTextDocument *document );

	static int checkDocument( QTextDocument *document, QWidget *parent = 0 );
	static int checkLineEdit( QLineEdit *edit );

public slots:
	void on_replaceWord_clicked();
	void on_replaceAll_clicked();
	void on_ignoreWord_clicked();
	void on_ignoreAll_clicked();
	void on_newWord_editingFinished( );
	void on_suggestions_activated( const QModelIndex & index );
	void on_suggestions_clicked( const QModelIndex & index );
	void next();

signals:
	void checkNext();

private:
	Ui::SpellChecker *m_ui;
	QTextDocumentSpellChecker *m_documentChecker;
	QTextCursor m_current;
	QString m_currentWord;
	int m_index;  // QTextCursor is broken.
};

#endif

