[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: links to bookmarks
From: Tomasz Grobelny <grotk () poczta ! onet ! pl>
Date: 2002-09-21 20:06:17
[Download RAW message or body]
1. This patch adds links to bookmarks. If no objections I will commit.
2. Why links' formatting can't be changed? IMO it would be nice to have links
to certain chapters in TOC but in normal colors and without underlining.
Tomek
["patch" (text/x-diff)]
Index: kword/kwview.cc
===================================================================
RCS file: /home/kde/koffice/kword/kwview.cc,v
retrieving revision 1.842
diff -u -3 -p -r1.842 kwview.cc
--- kword/kwview.cc 2002/09/21 15:07:33 1.842
+++ kword/kwview.cc 2002/09/21 19:57:34
@@ -3132,7 +3132,7 @@ void KWView::insertLink()
return;
QString link;
QString ref;
- if(KoInsertLinkDia::createLinkDia(link, ref))
+ if(KoInsertLinkDia::createLinkDia(link, ref, m_doc->listOfBookmarkName(0)))
{
if(!link.isEmpty() && !ref.isEmpty())
edit->insertLink(link, ref);
@@ -5800,6 +5800,12 @@ void KWView::inlineFrame()
void KWView::openLink()
{
KWTextFrameSetEdit * edit = currentTextEdit();
+ if(edit && edit->refLink().startsWith("bkm://") && \
m_doc->bookMarkByName(edit->refLink().mid(6))) + {
+ edit->cursor()->setParag(m_doc->bookMarkByName(edit->refLink().mid(6))->startParag());
+ edit->ensureCursorVisible();
+ return;
+ }
if ( edit )
edit->openLink();
}
@@ -5816,7 +5822,7 @@ void KWView::changeLink()
QString oldLinkName=var->value();
QString link=oldLinkName;
QString ref=oldhref;
- if(KoInsertLinkDia::createLinkDia(link, ref))
+ if(KoInsertLinkDia::createLinkDia(link, ref, \
m_doc->listOfBookmarkName(0))) {
if(!link.isEmpty() && !ref.isEmpty())
{
Index: lib/kofficeui/koInsertLink.cc
===================================================================
RCS file: /home/kde/koffice/lib/kofficeui/koInsertLink.cc,v
retrieving revision 1.11
diff -u -3 -p -r1.11 koInsertLink.cc
--- lib/kofficeui/koInsertLink.cc 2002/09/15 12:21:53 1.11
+++ lib/kofficeui/koInsertLink.cc 2002/09/21 19:57:34
@@ -50,6 +50,11 @@ KoInsertLinkDia::KoInsertLinkDia( QWidge
page=addVBoxPage(i18n("File"), \
QString::null,BarIcon("filenew",KIcon::SizeMedium)); fileLink = new \
fileLinkPage(page ); \
connect(fileLink,SIGNAL(textChanged()),this,SLOT(slotTextChanged ())); +
+ page=addVBoxPage(i18n("Bookmark"), \
QString::null,BarIcon("bookmark",KIcon::SizeMedium)); + bookmarkLink = new \
bookmarkLinkPage(page ); + \
connect(bookmarkLink,SIGNAL(textChanged()),this,SLOT(slotTextChanged ())); +
slotTextChanged ( );
resize(400,300);
}
@@ -60,12 +65,12 @@ void KoInsertLinkDia::slotTextChanged (
enableButtonOK( !(linkName().isEmpty() || hrefName().isEmpty()));
}
-bool KoInsertLinkDia::createLinkDia(QString & _linkName, QString & _hrefName)
+bool KoInsertLinkDia::createLinkDia(QString & _linkName, QString & _hrefName, \
QStringList bkmlist) {
bool res = false;
KoInsertLinkDia *dlg = new KoInsertLinkDia( 0L, "Insert Link" );
- dlg->setHrefLinkName(_hrefName,_linkName);
+ dlg->setHrefLinkName(_hrefName,_linkName, bkmlist);
if ( dlg->exec() == Accepted )
{
_linkName = dlg->linkName();
@@ -77,8 +82,9 @@ bool KoInsertLinkDia::createLinkDia(QStr
return res;
}
-void KoInsertLinkDia::setHrefLinkName(const QString &_href, const QString &_link)
+void KoInsertLinkDia::setHrefLinkName(const QString &_href, const QString &_link, \
const QStringList & bkmlist) {
+ bookmarkLink->setBookmarkList(bkmlist);
if( _href.isEmpty())
return;
if(_href.find("http://")!=-1 ||_href.find("ftp://")!=-1 )
@@ -99,6 +105,12 @@ void KoInsertLinkDia::setHrefLinkName(co
mailLink->setLinkName(_link);
showPage(1);
}
+ else if(_href.find("bkm://")!=-1)
+ {
+ bookmarkLink->setHrefName(_href.mid(6));
+ bookmarkLink->setLinkName(_link);
+ showPage(3);
+ }
slotTextChanged ( );
}
@@ -116,6 +128,9 @@ QString KoInsertLinkDia::linkName()const
case 2:
result=fileLink->linkName();
break;
+ case 3:
+ result=bookmarkLink->linkName();
+ break;
default:
kdDebug()<<"Error in linkName\n";
}
@@ -136,6 +151,9 @@ QString KoInsertLinkDia::hrefName()
case 2:
result=fileLink->hrefName();
break;
+ case 3:
+ result=bookmarkLink->hrefName();
+ break;
default:
kdDebug()<<"Error in hrefName\n";
}
@@ -216,6 +234,85 @@ QString internetLinkPage::hrefName()
}
void internetLinkPage::textChanged ( const QString & )
+{
+ emit textChanged();
+}
+
+bookmarkLinkPage::bookmarkLinkPage( QWidget *parent , char *name )
+ : QWidget(parent,name)
+{
+ QVBoxLayout *lay1 = new QVBoxLayout( this );
+ lay1->setMargin( KDialog::marginHint() );
+ lay1->setSpacing( KDialog::spacingHint() );
+ QVBoxLayout *lay2 = new QVBoxLayout( lay1);
+ lay2->setSpacing( KDialog::spacingHint() );
+
+ QLabel* tmpQLabel = new QLabel( this);
+
+ lay2->addWidget(tmpQLabel);
+ tmpQLabel->setText(i18n("Comment:"));
+
+ 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);
+
+ 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);
+ m_hrefName->setEditable(true);
+}
+
+QString bookmarkLinkPage::linkName()const
+{
+ return m_linkName->text();
+}
+
+QString bookmarkLinkPage::hrefName()
+{
+ return createBookmarkLink();
+}
+
+void bookmarkLinkPage::textChanged ( const QString & )
{
emit textChanged();
}
Index: lib/kofficeui/koInsertLink.h
===================================================================
RCS file: /home/kde/koffice/lib/kofficeui/koInsertLink.h,v
retrieving revision 1.3
diff -u -3 -p -r1.3 koInsertLink.h
--- lib/kofficeui/koInsertLink.h 2002/09/15 12:21:53 1.3
+++ lib/kofficeui/koInsertLink.h 2002/09/21 19:57:34
@@ -44,6 +44,26 @@ signals:
void textChanged();
};
+class bookmarkLinkPage : public QWidget
+{
+ Q_OBJECT
+public:
+ bookmarkLinkPage( QWidget *parent = 0, char *name = 0 );
+ QString linkName()const;
+ QString hrefName();
+ void setLinkName(const QString & _name);
+ void setHrefName(const QString &_name);
+ void setBookmarkList(const QStringList &bkmlist);
+private:
+ QString createBookmarkLink();
+ QLineEdit* m_linkName;
+ QComboBox *m_hrefName;
+private slots:
+ void textChanged ( const QString & );
+signals:
+ void textChanged();
+};
+
class mailLinkPage : public QWidget
{
Q_OBJECT
@@ -89,12 +109,12 @@ class KoInsertLinkDia : public KDialogBa
Q_OBJECT
public:
KoInsertLinkDia( QWidget *parent, const char *name = 0 );
- static bool createLinkDia(QString & linkName, QString & hrefName);
+ static bool createLinkDia(QString & linkName, QString & hrefName, QStringList \
bkmlist);
//internal
QString linkName()const;
QString hrefName();
- void setHrefLinkName(const QString &_href, const QString &_link);
+ void setHrefLinkName(const QString &_href, const QString &_link, const \
QStringList & bkmlist); protected slots:
virtual void slotOk();
void slotTextChanged ( );
@@ -103,6 +123,7 @@ private:
fileLinkPage *fileLink;
mailLinkPage *mailLink;
internetLinkPage *internetLink;
+ bookmarkLinkPage *bookmarkLink;
};
#endif
_______________________________________________
koffice-devel mailing list
koffice-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic