[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