00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include <klocale.h>
00021
00022
#include <qlayout.h>
00023
#include <qvbox.h>
00024
#include <kdebug.h>
00025
#include <qlabel.h>
00026
#include <qcombobox.h>
00027
00028
#include <klineedit.h>
00029
#include <kurlrequester.h>
00030
#include <kseparator.h>
00031
#include <kiconloader.h>
00032
#include "koInsertLink.h"
00033
#include <kdesktopfile.h>
00034
#include <krecentdocument.h>
00035
00036
00037 KoInsertLinkDia::KoInsertLinkDia(
QWidget *,
const char *,
bool displayBookmarkLink )
00038 : KDialogBase( KDialogBase::IconList, i18n("Insert Link"),
00039 KDialogBase::Ok | KDialogBase::Cancel,
00040 KDialogBase::Ok)
00041 {
00042 bookmarkLink = 0L;
00043
QVBox *page=addVBoxPage(i18n(
"Internet"), QString::null,BarIcon(
"html",KIcon::SizeMedium));
00044 internetLink =
new internetLinkPage(page );
00045 connect(internetLink,SIGNAL(textChanged()),
this,SLOT(slotTextChanged ( )));
00046
00047 page=addVBoxPage(i18n(
"Mail & News"), QString::null,BarIcon(
"mail_generic",KIcon::SizeMedium));
00048 mailLink =
new mailLinkPage(page );
00049 connect(mailLink,SIGNAL(textChanged()),
this,SLOT(slotTextChanged ()));
00050
00051 page=addVBoxPage(i18n(
"File"), QString::null,BarIcon(
"filenew",KIcon::SizeMedium));
00052 fileLink =
new fileLinkPage(page );
00053 connect(fileLink,SIGNAL(textChanged()),
this,SLOT(slotTextChanged ()));
00054
00055
if ( displayBookmarkLink)
00056 {
00057 page=addVBoxPage(i18n(
"Bookmark"), QString::null,BarIcon(
"bookmark",KIcon::SizeMedium));
00058 bookmarkLink =
new bookmarkLinkPage(page );
00059 connect(bookmarkLink,SIGNAL(textChanged()),
this,SLOT(slotTextChanged ()));
00060 }
00061
00062 slotTextChanged ( );
00063 resize(400,300);
00064 }
00065
00066
00067
void KoInsertLinkDia::slotTextChanged ( )
00068 {
00069 enableButtonOK( !(linkName().isEmpty() || hrefName().isEmpty()));
00070 }
00071
00072
bool KoInsertLinkDia::createLinkDia(
QString & _linkName,
QString & _hrefName,
QStringList bkmlist,
bool displayBookmarkLink)
00073 {
00074
bool res =
false;
00075
00076
KoInsertLinkDia *dlg =
new KoInsertLinkDia( 0L,
"Insert Link", displayBookmarkLink );
00077 dlg->
setHrefLinkName(_hrefName,_linkName, bkmlist);
00078
if ( dlg->exec() == Accepted )
00079 {
00080 _linkName = dlg->
linkName();
00081 _hrefName = dlg->
hrefName();
00082 res =
true;
00083 }
00084
delete dlg;
00085
00086
return res;
00087 }
00088
00089
void KoInsertLinkDia::setHrefLinkName(
const QString &_href,
const QString &_link,
const QStringList & bkmlist)
00090 {
00091
if ( bookmarkLink)
00092 bookmarkLink->setBookmarkList(bkmlist);
00093
if( _href.isEmpty())
00094
return;
00095
if(_href.find(
"http://")!=-1 || _href.find(
"https://")!=-1 ||_href.find(
"ftp://")!=-1 )
00096 {
00097 internetLink->setHrefName(_href);
00098 internetLink->setLinkName(_link);
00099 showPage(0);
00100 }
00101
else if(_href.find(
"file:/")!=-1)
00102 {
00103 fileLink->setHrefName(_href);
00104 fileLink->setLinkName(_link);
00105 showPage(2);
00106 }
00107
else if(_href.find(
"mailto:")!=-1 || _href.find(
"news:")!=-1)
00108 {
00109 mailLink->setHrefName(_href);
00110 mailLink->setLinkName(_link);
00111 showPage(1);
00112 }
00113
else if(_href.find(
"bkm://")!=-1)
00114 {
00115
if ( bookmarkLink )
00116 {
00117 bookmarkLink->setHrefName(_href.mid(6));
00118 bookmarkLink->setLinkName(_link);
00119 showPage(3);
00120 }
00121 }
00122 slotTextChanged ( );
00123 }
00124
00125
QString KoInsertLinkDia::linkName()const
00126 {
00127
QString result;
00128
switch(activePageIndex())
00129 {
00130
case 0:
00131 result=internetLink->linkName();
00132
break;
00133
case 1:
00134 result=mailLink->linkName();
00135
break;
00136
case 2:
00137 result=fileLink->linkName();
00138
break;
00139
case 3:
00140 {
00141
if ( bookmarkLink)
00142 result=bookmarkLink->linkName();
00143 }
00144
break;
00145
default:
00146 kdDebug()<<
"Error in linkName\n";
00147 }
00148
return result;
00149 }
00150
00151
QString KoInsertLinkDia::hrefName()
00152 {
00153
QString result;
00154
switch(activePageIndex())
00155 {
00156
case 0:
00157 result=internetLink->hrefName();
00158
break;
00159
case 1:
00160 result=mailLink->hrefName();
00161
break;
00162
case 2:
00163 result=fileLink->hrefName();
00164
break;
00165
case 3:
00166 {
00167
if ( bookmarkLink )
00168 result=bookmarkLink->hrefName();
00169 }
00170
break;
00171
default:
00172 kdDebug()<<
"Error in hrefName\n";
00173 }
00174
return result;
00175 }
00176
00177
void KoInsertLinkDia::slotOk()
00178 {
00179 KDialogBase::slotOk();
00180 }
00181
00182
00183 internetLinkPage::internetLinkPage(
QWidget *parent ,
char *name )
00184 :
QWidget(parent,name)
00185 {
00186
QVBoxLayout *lay1 =
new QVBoxLayout(
this );
00187 lay1->setMargin( KDialog::marginHint() );
00188 lay1->setSpacing( KDialog::spacingHint() );
00189 QVBoxLayout *lay2 =
new QVBoxLayout( lay1);
00190 lay2->setSpacing( KDialog::spacingHint() );
00191
00192
QLabel* tmpQLabel =
new QLabel(
this);
00193
00194 lay2->addWidget(tmpQLabel);
00195 tmpQLabel->setText(i18n(
"Comment:"));
00196
00197 m_linkName =
new QLineEdit(
this );
00198 lay2->addWidget(m_linkName);
00199
00200 tmpQLabel =
new QLabel(
this);
00201 lay2->addWidget(tmpQLabel);
00202
00203 tmpQLabel->setText(i18n(
"Internet address:"));
00204 m_hrefName =
new QLineEdit(
this );
00205
00206 lay2->addWidget(m_hrefName);
00207
00208 m_linkName->setFocus();
00209
00210 connect(m_linkName,SIGNAL(textChanged (
const QString & )),
this,SLOT(textChanged (
const QString & )));
00211 connect(m_hrefName,SIGNAL(textChanged (
const QString & )),
this,SLOT(textChanged (
const QString & )));
00212 KSeparator* bar1 =
new KSeparator( KSeparator::HLine,
this);
00213 bar1->setFixedHeight( 10 );
00214 lay2->addWidget( bar1 );
00215 }
00216
00217 QString internetLinkPage::createInternetLink()
00218 {
00219 QString result=m_hrefName->text();
00220
00221
if(result.isEmpty())
00222
return result;
00223
00224
if(result.find(
"http://")==-1 && result.find(
"https://")==-1 && result.find(
"ftp://")==-1)
00225 result =
"http://"+result;
00226
return result;
00227 }
00228
00229
00230
void internetLinkPage::setLinkName(
const QString & _name)
00231 {
00232 m_linkName->setText(_name);
00233 }
00234
00235
void internetLinkPage::setHrefName(
const QString &_name)
00236 {
00237 m_hrefName->setText(_name);
00238 }
00239
00240 QString internetLinkPage::linkName()const
00241 {
00242
return m_linkName->text();
00243 }
00244
00245 QString internetLinkPage::hrefName()
00246 {
00247
return createInternetLink();
00248 }
00249
00250
void internetLinkPage::textChanged (
const QString & )
00251 {
00252 emit textChanged();
00253 }
00254
00255 bookmarkLinkPage::bookmarkLinkPage(
QWidget *parent ,
char *name )
00256 :
QWidget(parent,name)
00257 {
00258 QVBoxLayout *lay1 =
new QVBoxLayout(
this );
00259 lay1->setMargin( KDialog::marginHint() );
00260 lay1->setSpacing( KDialog::spacingHint() );
00261 QVBoxLayout *lay2 =
new QVBoxLayout( lay1);
00262 lay2->setSpacing( KDialog::spacingHint() );
00263
00264 QLabel* tmpQLabel =
new QLabel(
this);
00265
00266 lay2->addWidget(tmpQLabel);
00267 tmpQLabel->setText(i18n(
"Comment:"));
00268
00269 m_linkName =
new QLineEdit(
this );
00270 lay2->addWidget(m_linkName);
00271
00272 tmpQLabel =
new QLabel(
this);
00273 lay2->addWidget(tmpQLabel);
00274
00275 tmpQLabel->setText(i18n(
"Bookmark name:"));
00276 m_hrefName =
new QComboBox(
this );
00277
00278 lay2->addWidget(m_hrefName);
00279
00280 m_linkName->setFocus();
00281
00282 connect(m_linkName,SIGNAL(textChanged (
const QString & )),
this,SLOT(textChanged (
const QString & )));
00283 connect(m_hrefName,SIGNAL(textChanged (
const QString & )),
this,SLOT(textChanged (
const QString & )));
00284 KSeparator* bar1 =
new KSeparator( KSeparator::HLine,
this);
00285 bar1->setFixedHeight( 10 );
00286 lay2->addWidget( bar1 );
00287 }
00288
00289 QString bookmarkLinkPage::createBookmarkLink()
00290 {
00291 QString result=m_hrefName->currentText();
00292
00293
if(result.isEmpty())
00294
return result;
00295
00296
if(result.find(
"bkm://")==-1)
00297 result =
"bkm://"+result;
00298
return result;
00299 }
00300
00301
00302
void bookmarkLinkPage::setLinkName(
const QString & _name)
00303 {
00304 m_linkName->setText(_name);
00305 }
00306
00307
void bookmarkLinkPage::setHrefName(
const QString &_name)
00308 {
00309 m_hrefName->setCurrentText(_name);
00310 }
00311
00312
void bookmarkLinkPage::setBookmarkList(
const QStringList & bkmlist)
00313 {
00314 m_hrefName->clear();
00315 m_hrefName->insertStringList(bkmlist, 0);
00316
if ( bkmlist.isEmpty())
00317 m_linkName->setEnabled(
false);
00318
00319 }
00320
00321 QString bookmarkLinkPage::linkName()const
00322 {
00323
return m_linkName->text();
00324 }
00325
00326 QString bookmarkLinkPage::hrefName()
00327 {
00328
return createBookmarkLink();
00329 }
00330
00331
void bookmarkLinkPage::textChanged (
const QString & )
00332 {
00333 emit textChanged();
00334 }
00335
00336 mailLinkPage::mailLinkPage(
QWidget *parent ,
char *name )
00337 :
QWidget(parent,name)
00338 {
00339 QVBoxLayout *lay1 =
new QVBoxLayout(
this );
00340 lay1->setMargin( KDialog::marginHint() );
00341 lay1->setSpacing( KDialog::spacingHint() );
00342 QVBoxLayout *lay2 =
new QVBoxLayout( lay1);
00343 lay2->setSpacing( KDialog::spacingHint() );
00344
00345 QLabel* tmpQLabel =
new QLabel(
this);
00346
00347 lay2->addWidget(tmpQLabel);
00348 tmpQLabel->setText(i18n(
"Comment:"));
00349
00350 m_linkName =
new QLineEdit(
this );
00351 lay2->addWidget(m_linkName);
00352
00353 tmpQLabel =
new QLabel(
this);
00354 lay2->addWidget(tmpQLabel);
00355
00356 tmpQLabel->setText(i18n(
"Target:"));
00357 m_hrefName =
new QLineEdit(
this );
00358
00359 lay2->addWidget(m_hrefName);
00360 connect(m_linkName,SIGNAL(textChanged (
const QString & )),
this,SLOT(textChanged (
const QString & )));
00361 connect(m_hrefName,SIGNAL(textChanged (
const QString & )),
this,SLOT(textChanged (
const QString & )));
00362 KSeparator* bar1 =
new KSeparator( KSeparator::HLine,
this);
00363 bar1->setFixedHeight( 10 );
00364 lay2->addWidget( bar1 );
00365 }
00366
00367 QString mailLinkPage::createMailLink()
00368 {
00369 QString result=m_hrefName->text();
00370
00371
if(result.isEmpty())
00372
return result;
00373
00374
if(result.find(
"mailto:")==-1 && result.find(
"news:")==-1)
00375 result =
"mailto:"+result;
00376
return result;
00377 }
00378
00379
00380
void mailLinkPage::setLinkName(
const QString & _name)
00381 {
00382 m_linkName->setText(_name);
00383 }
00384
00385
void mailLinkPage::setHrefName(
const QString &_name)
00386 {
00387 m_hrefName->setText(_name);
00388 }
00389
00390 QString mailLinkPage::linkName()const
00391 {
00392
return m_linkName->text();
00393 }
00394
00395 QString mailLinkPage::hrefName()
00396 {
00397
return createMailLink();
00398 }
00399
00400
void mailLinkPage::textChanged (
const QString & )
00401 {
00402 emit textChanged();
00403 }
00404
00405 fileLinkPage::fileLinkPage(
QWidget *parent ,
char *name )
00406 :
QWidget(parent,name)
00407 {
00408 QVBoxLayout *lay1 =
new QVBoxLayout(
this );
00409 lay1->setMargin( KDialog::marginHint() );
00410 lay1->setSpacing( KDialog::spacingHint() );
00411 QVBoxLayout *lay2 =
new QVBoxLayout( lay1);
00412 lay2->setSpacing( KDialog::spacingHint() );
00413
00414 QLabel* tmpQLabel =
new QLabel(
this);
00415
00416 lay2->addWidget(tmpQLabel);
00417 tmpQLabel->setText(i18n(
"Comment:"));
00418
00419 m_linkName =
new QLineEdit(
this );
00420 lay2->addWidget(m_linkName);
00421
00422 tmpQLabel =
new QLabel(
this);
00423 lay2->addWidget(tmpQLabel);
00424 tmpQLabel->setText(i18n(
"Recent file:"));
00425
00426
00427 QComboBox * recentFile =
new QComboBox(
this );
00428 lay2->addWidget(recentFile);
00429
00430
QStringList fileList = KRecentDocument::recentDocuments();
00431
QStringList lst;
00432 lst <<
"";
00433
for (QStringList::ConstIterator it = fileList.begin();it != fileList.end(); ++it)
00434 {
00435 KDesktopFile f(*it,
true );
00436
if ( !f.readURL().isEmpty())
00437 lst.append( f.readURL());
00438 }
00439
if ( lst.count()<= 1 )
00440 {
00441 recentFile->clear();
00442 recentFile->insertItem( i18n(
"No Entries") );
00443 recentFile->setEnabled(
false );
00444 }
00445
else
00446 recentFile->insertStringList( lst);
00447 connect( recentFile , SIGNAL(highlighted (
const QString &)),
this, SLOT( slotSelectRecentFile(
const QString & )));
00448
00449 tmpQLabel =
new QLabel(
this);
00450 lay2->addWidget(tmpQLabel);
00451
00452 tmpQLabel->setText(i18n(
"File location:"));
00453 m_hrefName =
new KURLRequester(
this );
00454
00455 lay2->addWidget(m_hrefName);
00456
00457 connect(m_linkName,SIGNAL(textChanged (
const QString & )),
this,SLOT(textChanged (
const QString & )));
00458 connect(m_hrefName,SIGNAL(textChanged (
const QString & )),
this,SLOT(textChanged (
const QString & )));
00459
00460 KSeparator* bar1 =
new KSeparator( KSeparator::HLine,
this);
00461 bar1->setFixedHeight( 10 );
00462 lay2->addWidget( bar1 );
00463 }
00464
00465
void fileLinkPage::slotSelectRecentFile(
const QString &_file )
00466 {
00467 m_hrefName->lineEdit()->setText(_file );
00468 }
00469
00470 QString fileLinkPage::createFileLink()
00471 {
00472 QString result=m_hrefName->lineEdit()->text();
00473
if(result.isEmpty())
00474
return result;
00475
00476
if(result.find(
"file:/")==-1)
00477 result =
"file:/"+result;
00478
return result;
00479 }
00480
00481
void fileLinkPage::setLinkName(
const QString & _name)
00482 {
00483 m_linkName->setText(_name);
00484 }
00485
00486
void fileLinkPage::setHrefName(
const QString &_name)
00487 {
00488 m_hrefName->lineEdit()->setText(_name);
00489 }
00490
00491 QString fileLinkPage::linkName()const
00492 {
00493
return m_linkName->text();
00494 }
00495
00496 QString fileLinkPage::hrefName()
00497 {
00498
return createFileLink();
00499 }
00500
00501
void fileLinkPage::textChanged (
const QString & )
00502 {
00503 emit textChanged();
00504 }
00505
00506
#include "koInsertLink.moc"