20#include <tdeapplication.h>
27#include <tqcombobox.h>
30#include <kurlrequester.h>
31#include <kseparator.h>
32#include <kiconloader.h>
33#include "KoInsertLink.h"
34#include <kdesktopfile.h>
35#include <tderecentdocument.h>
37using namespace KOfficePrivate;
39KoInsertLinkDia::KoInsertLinkDia( TQWidget *parent,
const char *name,
bool displayBookmarkLink )
45 TQVBox *page=addVBoxPage(i18n(
"Internet"), TQString(),BarIcon(
"text-html",TDEIcon::SizeMedium));
46 internetLink =
new internetLinkPage(page );
47 connect(internetLink,TQ_SIGNAL(textChanged()),
this,TQ_SLOT(slotTextChanged ( )));
49 page=addVBoxPage(i18n(
"Mail & News"), TQString(),BarIcon(
"mail_generic",TDEIcon::SizeMedium));
50 mailLink =
new mailLinkPage(page );
51 connect(mailLink,TQ_SIGNAL(textChanged()),
this,TQ_SLOT(slotTextChanged ()));
53 page=addVBoxPage(i18n(
"File"), TQString(),BarIcon(
"document-new",TDEIcon::SizeMedium));
54 fileLink =
new fileLinkPage(page );
55 connect(fileLink,TQ_SIGNAL(textChanged()),
this,TQ_SLOT(slotTextChanged ()));
57 if ( displayBookmarkLink)
59 page=addVBoxPage(i18n(
"Bookmark"), TQString(),BarIcon(
"bookmark",TDEIcon::SizeMedium));
60 bookmarkLink =
new bookmarkLinkPage(page );
61 connect(bookmarkLink,TQ_SIGNAL(textChanged()),
this,TQ_SLOT(slotTextChanged ()));
64 connect(
this, TQ_SIGNAL( aboutToShowPage(TQWidget *) ),
this, TQ_SLOT( tabChanged(TQWidget *) ) );
70void KoInsertLinkDia::tabChanged(TQWidget *)
75 internetLink->setLinkName( currentText );
78 mailLink->setLinkName( currentText );
81 fileLink->setLinkName( currentText );
86 bookmarkLink->setLinkName( currentText );
90 kdDebug()<<
"Error in linkName\n";
95void KoInsertLinkDia::slotTextChanged ( )
98 currentText = linkName();
101bool KoInsertLinkDia::createLinkDia(TQString & _linkName, TQString & _hrefName,
const TQStringList& bkmlist,
bool displayBookmarkLink, TQWidget* parent,
const char* name)
106 dlg->setHrefLinkName(_hrefName,_linkName, bkmlist);
107 if ( dlg->exec() == Accepted )
109 _linkName = dlg->linkName();
110 _hrefName = dlg->hrefName();
118void KoInsertLinkDia::setHrefLinkName(
const TQString &_href,
const TQString &_link,
const TQStringList & bkmlist)
121 bookmarkLink->setBookmarkList(bkmlist);
122 if ( _href.isEmpty())
124 if ( !_link.isEmpty() )
126 internetLink->setLinkName(_link);
132 if(_href.find(
"http://")!=-1 || _href.find(
"https://")!=-1 ||_href.find(
"ftp://")!=-1 )
134 internetLink->setHrefName(_href);
135 internetLink->setLinkName(_link);
138 else if(_href.find(
"file:/")!=-1)
140 fileLink->setHrefName(_href);
141 fileLink->setLinkName(_link);
144 else if(_href.find(
"mailto:")!=-1 || _href.find(
"news:")!=-1)
146 mailLink->setHrefName(_href);
147 mailLink->setLinkName(_link);
150 else if(_href.find(
"bkm://")!=-1)
154 bookmarkLink->setHrefName(_href.mid(6));
155 bookmarkLink->setLinkName(_link);
162TQString KoInsertLinkDia::linkName()
const
168 result=internetLink->linkName();
171 result=mailLink->linkName();
174 result=fileLink->linkName();
179 result=bookmarkLink->linkName();
183 kdDebug()<<
"Error in linkName\n";
188TQString KoInsertLinkDia::hrefName()
const
194 result=internetLink->hrefName();
197 result=mailLink->hrefName();
200 result=fileLink->hrefName();
205 result=bookmarkLink->hrefName();
209 kdDebug()<<
"Error in hrefName\n";
214void KoInsertLinkDia::slotOk()
220internetLinkPage::internetLinkPage( TQWidget *parent ,
char *name )
221 : TQWidget(parent,
name)
223 TQVBoxLayout *lay1 =
new TQVBoxLayout(
this );
225 TQVBoxLayout *lay2 =
new TQVBoxLayout( lay1);
228 TQLabel* tmpTQLabel =
new TQLabel(
this);
230 lay2->addWidget(tmpTQLabel);
231 tmpTQLabel->setText(i18n(
"Text to display:"));
233 m_linkName =
new TQLineEdit(
this );
234 lay2->addWidget(m_linkName);
236 tmpTQLabel =
new TQLabel(
this);
237 lay2->addWidget(tmpTQLabel);
239 tmpTQLabel->setText(i18n(
"Internet address:"));
240 m_hrefName =
new TQLineEdit(
this );
242 lay2->addWidget(m_hrefName);
244 lay2->addStretch( 1 );
246 m_linkName->setFocus();
248 connect(m_linkName,TQ_SIGNAL(textChanged (
const TQString & )),
this,TQ_SLOT(textChanged (
const TQString & )));
249 connect(m_hrefName,TQ_SIGNAL(textChanged (
const TQString & )),
this,TQ_SLOT(textChanged (
const TQString & )));
251 bar1->setFixedHeight( 10 );
252 lay2->addWidget( bar1 );
255TQString internetLinkPage::createInternetLink()
257 TQString result=m_hrefName->text();
262 if(result.find(
"http://")==-1 && result.find(
"https://")==-1 && result.find(
"ftp://")==-1)
263 result =
"http://"+result;
268void internetLinkPage::setLinkName(
const TQString & _name)
270 m_linkName->setText(_name);
273void internetLinkPage::setHrefName(
const TQString &_name)
275 m_hrefName->setText(_name);
278TQString internetLinkPage::linkName()
const
280 return m_linkName->text();
283TQString internetLinkPage::hrefName()
285 return createInternetLink();
288void internetLinkPage::textChanged (
const TQString & )
293bookmarkLinkPage::bookmarkLinkPage( TQWidget *parent ,
char *name )
294 : TQWidget(parent,
name)
296 TQVBoxLayout *lay1 =
new TQVBoxLayout(
this );
298 TQVBoxLayout *lay2 =
new TQVBoxLayout( lay1);
301 TQLabel* tmpTQLabel =
new TQLabel(
this);
303 lay2->addWidget(tmpTQLabel);
304 tmpTQLabel->setText(i18n(
"Text to display:"));
306 m_linkName =
new TQLineEdit(
this );
307 lay2->addWidget(m_linkName);
309 tmpTQLabel =
new TQLabel(
this);
310 lay2->addWidget(tmpTQLabel);
312 tmpTQLabel->setText(i18n(
"Bookmark name:"));
313 m_hrefName =
new TQComboBox(
this );
315 lay2->addWidget(m_hrefName);
317 lay2->addStretch( 1 );
319 m_linkName->setFocus();
321 connect(m_linkName,TQ_SIGNAL(textChanged (
const TQString & )),
this,TQ_SLOT(textChanged (
const TQString & )));
322 connect(m_hrefName,TQ_SIGNAL(textChanged (
const TQString & )),
this,TQ_SLOT(textChanged (
const TQString & )));
324 bar1->setFixedHeight( 10 );
325 lay2->addWidget( bar1 );
328TQString bookmarkLinkPage::createBookmarkLink()
330 TQString result=m_hrefName->currentText();
335 if(result.find(
"bkm://")==-1)
336 result =
"bkm://"+result;
341void bookmarkLinkPage::setLinkName(
const TQString & _name)
343 m_linkName->setText(_name);
346void bookmarkLinkPage::setHrefName(
const TQString &_name)
348 m_hrefName->setCurrentText(_name);
351void bookmarkLinkPage::setBookmarkList(
const TQStringList & bkmlist)
354 m_hrefName->insertStringList(bkmlist, 0);
355 if ( bkmlist.isEmpty())
356 m_linkName->setEnabled(
false);
360TQString bookmarkLinkPage::linkName()
const
362 return m_linkName->text();
365TQString bookmarkLinkPage::hrefName()
367 return createBookmarkLink();
370void bookmarkLinkPage::textChanged (
const TQString & )
375mailLinkPage::mailLinkPage( TQWidget *parent ,
char *name )
376 : TQWidget(parent,
name)
378 TQVBoxLayout *lay1 =
new TQVBoxLayout(
this );
380 TQVBoxLayout *lay2 =
new TQVBoxLayout( lay1);
383 TQLabel* tmpTQLabel =
new TQLabel(
this);
385 lay2->addWidget(tmpTQLabel);
386 tmpTQLabel->setText(i18n(
"Text to display:"));
388 m_linkName =
new TQLineEdit(
this );
389 lay2->addWidget(m_linkName);
391 tmpTQLabel =
new TQLabel(
this);
392 lay2->addWidget(tmpTQLabel);
394 tmpTQLabel->setText(i18n(
"Target:"));
395 m_hrefName =
new TQLineEdit(
this );
397 lay2->addWidget(m_hrefName);
398 lay2->addStretch( 1 );
400 connect(m_linkName,TQ_SIGNAL(textChanged (
const TQString & )),
this,TQ_SLOT(textChanged (
const TQString & )));
401 connect(m_hrefName,TQ_SIGNAL(textChanged (
const TQString & )),
this,TQ_SLOT(textChanged (
const TQString & )));
403 bar1->setFixedHeight( 10 );
404 lay2->addWidget( bar1 );
407TQString mailLinkPage::createMailLink()
409 TQString result=m_hrefName->text();
414 if(result.find(
"mailto:")==-1 && result.find(
"news:")==-1)
415 result =
"mailto:"+result;
420void mailLinkPage::setLinkName(
const TQString & _name)
422 m_linkName->setText(_name);
425void mailLinkPage::setHrefName(
const TQString &_name)
427 m_hrefName->setText(_name);
430TQString mailLinkPage::linkName()
const
432 return m_linkName->text();
435TQString mailLinkPage::hrefName()
437 return createMailLink();
440void mailLinkPage::textChanged (
const TQString & )
445fileLinkPage::fileLinkPage( TQWidget *parent ,
char *name )
446 : TQWidget(parent,
name)
448 TQVBoxLayout *lay1 =
new TQVBoxLayout(
this );
450 TQVBoxLayout *lay2 =
new TQVBoxLayout( lay1);
453 TQLabel* tmpTQLabel =
new TQLabel(
this);
455 lay2->addWidget(tmpTQLabel);
456 tmpTQLabel->setText(i18n(
"Text to display:"));
458 m_linkName =
new TQLineEdit(
this );
459 lay2->addWidget(m_linkName);
461 tmpTQLabel =
new TQLabel(
this);
462 lay2->addWidget(tmpTQLabel);
463 tmpTQLabel->setText(i18n(
"Recent file:"));
465 TQComboBox * recentFile =
new TQComboBox(
this );
466 recentFile->setMaximumWidth( kapp->desktop()->width()*3/4 );
467 lay2->addWidget(recentFile);
469 TQStringList fileList = TDERecentDocument::recentDocuments();
472 for (TQStringList::ConstIterator it = fileList.begin();it != fileList.end(); ++it)
474 KDesktopFile f(*it,
true );
475 if ( !f.readURL().isEmpty())
476 lst.append( f.readURL());
478 if ( lst.count()<= 1 )
481 recentFile->insertItem( i18n(
"No Entries") );
482 recentFile->setEnabled(
false );
485 recentFile->insertStringList( lst);
487 recentFile->setSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed );
489 connect( recentFile , TQ_SIGNAL(highlighted (
const TQString &)),
this, TQ_SLOT( slotSelectRecentFile(
const TQString & )));
491 tmpTQLabel =
new TQLabel(
this);
492 lay2->addWidget(tmpTQLabel);
494 tmpTQLabel->setText(i18n(
"File location:"));
495 m_hrefName =
new KURLRequester(
this );
497 lay2->addWidget(m_hrefName);
498 lay2->addStretch( 1 );
500 connect(m_linkName,TQ_SIGNAL(textChanged (
const TQString & )),
this,TQ_SLOT(textChanged (
const TQString & )));
501 connect(m_hrefName,TQ_SIGNAL(textChanged (
const TQString & )),
this,TQ_SLOT(textChanged (
const TQString & )));
504 bar1->setFixedHeight( 10 );
505 lay2->addWidget( bar1 );
508void fileLinkPage::slotSelectRecentFile(
const TQString &_file )
510 m_hrefName->lineEdit()->setText(_file );
513TQString fileLinkPage::createFileLink()
515 TQString result=m_hrefName->lineEdit()->text();
519 if(result.find(
"file:/")==-1)
520 result =
"file://"+result;
524void fileLinkPage::setLinkName(
const TQString & _name)
526 m_linkName->setText(_name);
529void fileLinkPage::setHrefName(
const TQString &_name)
531 m_hrefName->lineEdit()->setText(_name);
534TQString fileLinkPage::linkName()
const
536 return m_linkName->text();
539TQString fileLinkPage::hrefName()
541 return createFileLink();
544void fileLinkPage::textChanged (
const TQString & )
549#include "KoInsertLink.moc"
void enableButtonOK(bool state)
int activePageIndex() const
Dialog to insert links to various sources (file, Internet, mail and bookmarks).
const char * name(StdAction id)