diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /lib/kofficeui/KoInsertLink.cpp | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'lib/kofficeui/KoInsertLink.cpp')
-rw-r--r-- | lib/kofficeui/KoInsertLink.cpp | 549 |
1 files changed, 549 insertions, 0 deletions
diff --git a/lib/kofficeui/KoInsertLink.cpp b/lib/kofficeui/KoInsertLink.cpp new file mode 100644 index 00000000..56c19081 --- /dev/null +++ b/lib/kofficeui/KoInsertLink.cpp @@ -0,0 +1,549 @@ +/* This file is part of the KDE project + Copyright (C) 2001 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 <kapplication.h> +#include <klocale.h> + +#include <qlayout.h> +#include <qvbox.h> +#include <kdebug.h> +#include <qlabel.h> +#include <qcombobox.h> + +#include <klineedit.h> +#include <kurlrequester.h> +#include <kseparator.h> +#include <kiconloader.h> +#include "KoInsertLink.h" +#include <kdesktopfile.h> +#include <krecentdocument.h> + +using namespace KOfficePrivate; + +KoInsertLinkDia::KoInsertLinkDia( QWidget *parent, const char *name, bool displayBookmarkLink ) + : KDialogBase( KDialogBase::IconList, i18n("Insert Link"), + KDialogBase::Ok | KDialogBase::Cancel, + KDialogBase::Ok, parent, name ) +{ + bookmarkLink = 0L; + QVBox *page=addVBoxPage(i18n("Internet"), QString::null,BarIcon("html",KIcon::SizeMedium)); + internetLink = new internetLinkPage(page ); + connect(internetLink,SIGNAL(textChanged()),this,SLOT(slotTextChanged ( ))); + + page=addVBoxPage(i18n("Mail & News"), QString::null,BarIcon("mail_generic",KIcon::SizeMedium)); + mailLink = new mailLinkPage(page ); + connect(mailLink,SIGNAL(textChanged()),this,SLOT(slotTextChanged ())); + + page=addVBoxPage(i18n("File"), QString::null,BarIcon("filenew",KIcon::SizeMedium)); + fileLink = new fileLinkPage(page ); + connect(fileLink,SIGNAL(textChanged()),this,SLOT(slotTextChanged ())); + + if ( displayBookmarkLink) + { + page=addVBoxPage(i18n("Bookmark"), QString::null,BarIcon("bookmark",KIcon::SizeMedium)); + bookmarkLink = new bookmarkLinkPage(page ); + connect(bookmarkLink,SIGNAL(textChanged()),this,SLOT(slotTextChanged ())); + } + + connect( this, SIGNAL( aboutToShowPage(QWidget *) ), this, SLOT( tabChanged(QWidget *) ) ); + + slotTextChanged ( ); + resize(400,300); +} + +void KoInsertLinkDia::tabChanged(QWidget *) +{ + switch( activePageIndex() ) + { + case 0: + internetLink->setLinkName( currentText ); + break; + case 1: + mailLink->setLinkName( currentText ); + break; + case 2: + fileLink->setLinkName( currentText ); + break; + case 3: + { + if ( bookmarkLink) + bookmarkLink->setLinkName( currentText ); + } + break; + default: + kdDebug()<<"Error in linkName\n"; + } + enableButtonOK( !(linkName().isEmpty() || hrefName().isEmpty()) ); +} + +void KoInsertLinkDia::slotTextChanged ( ) +{ + enableButtonOK( !(linkName().isEmpty() || hrefName().isEmpty())); + currentText = linkName(); +} + +bool KoInsertLinkDia::createLinkDia(QString & _linkName, QString & _hrefName, const QStringList& bkmlist, bool displayBookmarkLink, QWidget* parent, const char* name) +{ + bool res = false; + + KoInsertLinkDia *dlg = new KoInsertLinkDia( parent, name, displayBookmarkLink ); + dlg->setHrefLinkName(_hrefName,_linkName, bkmlist); + if ( dlg->exec() == Accepted ) + { + _linkName = dlg->linkName(); + _hrefName = dlg->hrefName(); + res = true; + } + delete dlg; + + return res; +} + +void KoInsertLinkDia::setHrefLinkName(const QString &_href, const QString &_link, const QStringList & bkmlist) +{ + if ( bookmarkLink) + bookmarkLink->setBookmarkList(bkmlist); + if ( _href.isEmpty()) + { + if ( !_link.isEmpty() ) + { + internetLink->setLinkName(_link); + showPage(0); + slotTextChanged ( ); + } + return; + } + if(_href.find("http://")!=-1 || _href.find("https://")!=-1 ||_href.find("ftp://")!=-1 ) + { + internetLink->setHrefName(_href); + internetLink->setLinkName(_link); + showPage(0); + } + else if(_href.find("file:/")!=-1) + { + fileLink->setHrefName(_href); + fileLink->setLinkName(_link); + showPage(2); + } + else if(_href.find("mailto:")!=-1 || _href.find("news:")!=-1) + { + mailLink->setHrefName(_href); + mailLink->setLinkName(_link); + showPage(1); + } + else if(_href.find("bkm://")!=-1) + { + if ( bookmarkLink ) + { + bookmarkLink->setHrefName(_href.mid(6)); + bookmarkLink->setLinkName(_link); + showPage(3); + } + } + slotTextChanged ( ); +} + +QString KoInsertLinkDia::linkName() const +{ + QString result; + switch(activePageIndex()) + { + case 0: + result=internetLink->linkName(); + break; + case 1: + result=mailLink->linkName(); + break; + case 2: + result=fileLink->linkName(); + break; + case 3: + { + if ( bookmarkLink) + result=bookmarkLink->linkName(); + } + break; + default: + kdDebug()<<"Error in linkName\n"; + } + return result; +} + +QString KoInsertLinkDia::hrefName() const +{ + QString result; + switch(activePageIndex()) + { + case 0: + result=internetLink->hrefName(); + break; + case 1: + result=mailLink->hrefName(); + break; + case 2: + result=fileLink->hrefName(); + break; + case 3: + { + if ( bookmarkLink ) + result=bookmarkLink->hrefName(); + } + break; + default: + kdDebug()<<"Error in hrefName\n"; + } + return result; +} + +void KoInsertLinkDia::slotOk() +{ + KDialogBase::slotOk(); +} + + +internetLinkPage::internetLinkPage( QWidget *parent , char *name ) + : QWidget(parent,name) +{ + QVBoxLayout *lay1 = new QVBoxLayout( this ); + lay1->setSpacing( KDialog::spacingHint() ); + QVBoxLayout *lay2 = new QVBoxLayout( lay1); + lay2->setSpacing( KDialog::spacingHint() ); + + QLabel* tmpQLabel = new QLabel( this); + + lay2->addWidget(tmpQLabel); + tmpQLabel->setText(i18n("Text to display:")); + + m_linkName = new QLineEdit( this ); + lay2->addWidget(m_linkName); + + tmpQLabel = new QLabel( this); + lay2->addWidget(tmpQLabel); + + tmpQLabel->setText(i18n("Internet address:")); + m_hrefName = new QLineEdit( this ); + + lay2->addWidget(m_hrefName); + + lay2->addStretch( 1 ); + + m_linkName->setFocus(); + + connect(m_linkName,SIGNAL(textChanged ( const QString & )),this,SLOT(textChanged ( const QString & ))); + connect(m_hrefName,SIGNAL(textChanged ( const QString & )),this,SLOT(textChanged ( const QString & ))); + KSeparator* bar1 = new KSeparator( KSeparator::HLine, this); + bar1->setFixedHeight( 10 ); + lay2->addWidget( bar1 ); +} + +QString internetLinkPage::createInternetLink() +{ + QString result=m_hrefName->text(); + + if(result.isEmpty()) + return result; + + if(result.find("http://")==-1 && result.find("https://")==-1 && result.find("ftp://")==-1) + result = "http://"+result; + return result; +} + + +void internetLinkPage::setLinkName(const QString & _name) +{ + m_linkName->setText(_name); +} + +void internetLinkPage::setHrefName(const QString &_name) +{ + m_hrefName->setText(_name); +} + +QString internetLinkPage::linkName()const +{ + return m_linkName->text(); +} + +QString internetLinkPage::hrefName() +{ + return createInternetLink(); +} + +void internetLinkPage::textChanged ( const QString & ) +{ + emit textChanged(); +} + +bookmarkLinkPage::bookmarkLinkPage( QWidget *parent , char *name ) + : QWidget(parent,name) +{ + QVBoxLayout *lay1 = new QVBoxLayout( this ); + lay1->setSpacing( KDialog::spacingHint() ); + QVBoxLayout *lay2 = new QVBoxLayout( lay1); + lay2->setSpacing( KDialog::spacingHint() ); + + QLabel* tmpQLabel = new QLabel( this); + + lay2->addWidget(tmpQLabel); + tmpQLabel->setText(i18n("Text to display:")); + + m_linkName = new QLineEdit( this ); + lay2->addWidget(m_linkName); + + tmpQLabel = new QLabel( this); + lay2->addWidget(tmpQLabel); + + tmpQLabel->setText(i18n("Bookmark name:")); + m_hrefName = new QComboBox( this ); + + lay2->addWidget(m_hrefName); + + lay2->addStretch( 1 ); + + m_linkName->setFocus(); + + connect(m_linkName,SIGNAL(textChanged ( const QString & )),this,SLOT(textChanged ( const QString & ))); + connect(m_hrefName,SIGNAL(textChanged ( const QString & )),this,SLOT(textChanged ( const QString & ))); + KSeparator* bar1 = new KSeparator( KSeparator::HLine, this); + bar1->setFixedHeight( 10 ); + lay2->addWidget( bar1 ); +} + +QString bookmarkLinkPage::createBookmarkLink() +{ + QString result=m_hrefName->currentText(); + + if(result.isEmpty()) + return result; + + if(result.find("bkm://")==-1) + result = "bkm://"+result; + return result; +} + + +void bookmarkLinkPage::setLinkName(const QString & _name) +{ + m_linkName->setText(_name); +} + +void bookmarkLinkPage::setHrefName(const QString &_name) +{ + m_hrefName->setCurrentText(_name); +} + +void bookmarkLinkPage::setBookmarkList(const QStringList & bkmlist) +{ + m_hrefName->clear(); + m_hrefName->insertStringList(bkmlist, 0); + if ( bkmlist.isEmpty()) + m_linkName->setEnabled( false); + //m_hrefName->setEditable(true); +} + +QString bookmarkLinkPage::linkName()const +{ + return m_linkName->text(); +} + +QString bookmarkLinkPage::hrefName() +{ + return createBookmarkLink(); +} + +void bookmarkLinkPage::textChanged ( const QString & ) +{ + emit textChanged(); +} + +mailLinkPage::mailLinkPage( QWidget *parent , char *name ) + : QWidget(parent,name) +{ + QVBoxLayout *lay1 = new QVBoxLayout( this ); + lay1->setSpacing( KDialog::spacingHint() ); + QVBoxLayout *lay2 = new QVBoxLayout( lay1); + lay2->setSpacing( KDialog::spacingHint() ); + + QLabel* tmpQLabel = new QLabel( this); + + lay2->addWidget(tmpQLabel); + tmpQLabel->setText(i18n("Text to display:")); + + m_linkName = new QLineEdit( this ); + lay2->addWidget(m_linkName); + + tmpQLabel = new QLabel( this); + lay2->addWidget(tmpQLabel); + + tmpQLabel->setText(i18n("Target:")); + m_hrefName = new QLineEdit( this ); + + lay2->addWidget(m_hrefName); + lay2->addStretch( 1 ); + + connect(m_linkName,SIGNAL(textChanged ( const QString & )),this,SLOT(textChanged ( const QString & ))); + connect(m_hrefName,SIGNAL(textChanged ( const QString & )),this,SLOT(textChanged ( const QString & ))); + KSeparator* bar1 = new KSeparator( KSeparator::HLine, this); + bar1->setFixedHeight( 10 ); + lay2->addWidget( bar1 ); +} + +QString mailLinkPage::createMailLink() +{ + QString result=m_hrefName->text(); + + if(result.isEmpty()) + return result; + + if(result.find("mailto:")==-1 && result.find("news:")==-1) + result = "mailto:"+result; + return result; +} + + +void mailLinkPage::setLinkName(const QString & _name) +{ + m_linkName->setText(_name); +} + +void mailLinkPage::setHrefName(const QString &_name) +{ + m_hrefName->setText(_name); +} + +QString mailLinkPage::linkName()const +{ + return m_linkName->text(); +} + +QString mailLinkPage::hrefName() +{ + return createMailLink(); +} + +void mailLinkPage::textChanged ( const QString & ) +{ + emit textChanged(); +} + +fileLinkPage::fileLinkPage( QWidget *parent , char *name ) + : QWidget(parent,name) +{ + QVBoxLayout *lay1 = new QVBoxLayout( this ); + lay1->setSpacing( KDialog::spacingHint() ); + QVBoxLayout *lay2 = new QVBoxLayout( lay1); + lay2->setSpacing( KDialog::spacingHint() ); + + QLabel* tmpQLabel = new QLabel( this); + + lay2->addWidget(tmpQLabel); + tmpQLabel->setText(i18n("Text to display:")); + + m_linkName = new QLineEdit( this ); + lay2->addWidget(m_linkName); + + tmpQLabel = new QLabel( this); + lay2->addWidget(tmpQLabel); + tmpQLabel->setText(i18n("Recent file:")); + + QComboBox * recentFile = new QComboBox( this ); + recentFile->setMaximumWidth( kapp->desktop()->width()*3/4 ); + lay2->addWidget(recentFile); + + QStringList fileList = KRecentDocument::recentDocuments(); + QStringList lst; + lst <<""; + for (QStringList::ConstIterator it = fileList.begin();it != fileList.end(); ++it) + { + KDesktopFile f(*it, true /* read only */); + if ( !f.readURL().isEmpty()) + lst.append( f.readURL()); + } + if ( lst.count()<= 1 ) + { + recentFile->clear(); + recentFile->insertItem( i18n("No Entries") ); + recentFile->setEnabled( false ); + } + else + recentFile->insertStringList( lst); + + recentFile->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); + + connect( recentFile , SIGNAL(highlighted ( const QString &)), this, SLOT( slotSelectRecentFile( const QString & ))); + + tmpQLabel = new QLabel( this); + lay2->addWidget(tmpQLabel); + + tmpQLabel->setText(i18n("File location:")); + m_hrefName = new KURLRequester( this ); + + lay2->addWidget(m_hrefName); + lay2->addStretch( 1 ); + + connect(m_linkName,SIGNAL(textChanged ( const QString & )),this,SLOT(textChanged ( const QString & ))); + connect(m_hrefName,SIGNAL(textChanged ( const QString & )),this,SLOT(textChanged ( const QString & ))); + + KSeparator* bar1 = new KSeparator( KSeparator::HLine, this); + bar1->setFixedHeight( 10 ); + lay2->addWidget( bar1 ); +} + +void fileLinkPage::slotSelectRecentFile( const QString &_file ) +{ + m_hrefName->lineEdit()->setText(_file ); +} + +QString fileLinkPage::createFileLink() +{ + QString result=m_hrefName->lineEdit()->text(); + if(result.isEmpty()) + return result; + + if(result.find("file:/")==-1) + result = "file://"+result; + return result; +} + +void fileLinkPage::setLinkName(const QString & _name) +{ + m_linkName->setText(_name); +} + +void fileLinkPage::setHrefName(const QString &_name) +{ + m_hrefName->lineEdit()->setText(_name); +} + +QString fileLinkPage::linkName()const +{ + return m_linkName->text(); +} + +QString fileLinkPage::hrefName() +{ + return createFileLink(); +} + +void fileLinkPage::textChanged ( const QString & ) +{ + emit textChanged(); +} + +#include "KoInsertLink.moc" |