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.
koffice/kword/KWCreateBookmarkDia.cpp

156 lines
5.0 KiB

/* This file is part of the KDE project
Copyright (C) 2002 Montel Laurent <lmontel@mandrakesoft.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include <klocale.h>
#include "KWDocument.h"
#include <qvbox.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qlistbox.h>
#include <kmessagebox.h>
#include "KWCommand.h"
#include "KWCreateBookmarkDia.h"
#include "KWCreateBookmarkDiaBase.h"
#include "KWFrame.h"
#include "KWFrameSet.h"
KWCreateBookmarkDia::KWCreateBookmarkDia( const QStringList & _list, QWidget *parent, const char *name )
: KDialogBase( parent, name , true, "", Ok|Cancel, Ok, true )
{
setCaption( i18n("Create New Bookmark") );
listBookMark = _list;
init();
}
KWCreateBookmarkDia::KWCreateBookmarkDia( const QStringList & _list, const QString & _name, QWidget *parent, const char *name )
: KDialogBase( parent, name , true, "", Ok|Cancel, Ok, true )
{
setCaption( i18n("Rename Bookmark") );
listBookMark = _list;
init();
m_bookmarkName->setText(_name);
}
void KWCreateBookmarkDia::init()
{
KWCreateBookmarkDiaBase *dia = new KWCreateBookmarkDiaBase( this );
m_bookmarkName = dia->m_bookmarkName;
enableButtonOK( false );
connect( m_bookmarkName, SIGNAL(textChanged ( const QString & )), this, SLOT(nameChanged( const QString &)));
setMainWidget( dia );
m_bookmarkName->setFocus();
}
void KWCreateBookmarkDia::slotOk()
{
if ( listBookMark.findIndex(m_bookmarkName->text() ) != -1 )
{
KMessageBox::error(this, i18n("That name already exists, please choose another name."));
}
else
KDialogBase::slotOk();
}
QString KWCreateBookmarkDia::bookmarkName()const
{
return m_bookmarkName->text();
}
void KWCreateBookmarkDia::nameChanged( const QString &text)
{
enableButtonOK( !text.isEmpty() );
}
/* **************************** */
KWSelectBookmarkDia::KWSelectBookmarkDia( const QStringList & _list, KWDocument *_doc, QWidget *parent, const char *name )
: KDialogBase( parent, name , true, "", Ok|Cancel, Ok, true )
{
m_doc=_doc;
setCaption( i18n("Select Bookmark") );
QWidget *page = new QWidget( this );
setMainWidget(page);
QGridLayout * grid = new QGridLayout(page, 5, 2, KDialog::marginHint(), KDialog::spacingHint());
m_bookmarkList = new QListBox( page );
grid->addMultiCellWidget(m_bookmarkList, 0, 4, 0, 0);
m_bookmarkList->insertStringList(_list);
connect(m_bookmarkList, SIGNAL( selectionChanged ()), this, SLOT(slotSelectionChanged()));
connect(m_bookmarkList, SIGNAL(doubleClicked ( QListBoxItem * )), this, SLOT(slotOk()));
connect(m_bookmarkList, SIGNAL(returnPressed ( QListBoxItem * )), this, SLOT(slotOk()));
m_pbRename = new QPushButton( i18n("Rename Bookmark"), page );
grid->addWidget( m_pbRename, 0, 1);
connect( m_pbRename, SIGNAL(clicked()), this, SLOT(slotRenameBookmark()));
m_pbDelete = new QPushButton( i18n("Delete Bookmark"), page );
grid->addWidget( m_pbDelete, 1, 1);
connect( m_pbDelete, SIGNAL(clicked()), this, SLOT(slotDeleteBookmark()));
m_bookmarkList->setFocus();
slotSelectionChanged();
}
void KWSelectBookmarkDia::slotRenameBookmark()
{
QString tmp =m_bookmarkList->currentText();
if ( tmp.isEmpty() )
return;
//all bookmark name
QStringList lst =m_doc->listOfBookmarkName(0L);
lst.remove( tmp );
KWCreateBookmarkDia dia( lst, tmp, this, 0 );
if ( dia.exec() ) {
QString newName = dia.bookmarkName();
KWRenameBookmarkCommand *cmd = new KWRenameBookmarkCommand( i18n("Rename Bookmark"), tmp, newName, m_doc);
m_doc->addCommand( cmd );
cmd->execute();
m_bookmarkList->changeItem ( newName, m_bookmarkList->currentItem() );
}
}
void KWSelectBookmarkDia::slotDeleteBookmark()
{
QString tmp =m_bookmarkList->currentText();
if ( !tmp.isEmpty())
{
m_doc->deleteBookmark(tmp);
m_bookmarkList->removeItem(m_bookmarkList->currentItem());
}
}
QString KWSelectBookmarkDia::bookmarkSelected()const
{
return m_bookmarkList->currentText();
}
void KWSelectBookmarkDia::slotSelectionChanged()
{
bool state =!m_bookmarkList->currentText().isEmpty();
enableButtonOK( state );
m_pbRename->setEnabled( state);
m_pbDelete->setEnabled( state && m_doc->isReadWrite());
}
#include "KWCreateBookmarkDia.moc"