浏览代码

ENH: Improved ctkFittedTextBrowser API

setText methods were not virtual in base class, which made method calls from Python unpredictable.
Introduced new methods for setting collapsible text.

Also fixed const-correctness in ctkFittedTextBrowserPrivate class.
Andras Lasso 8 年之前
父节点
当前提交
3b8b142ae8

+ 5 - 8
Libs/Widgets/Testing/Cpp/ctkFittedTextBrowserTest1.cpp

@@ -51,31 +51,28 @@ int ctkFittedTextBrowserTest1(int argc, char * argv [] )
   layout->addWidget(&textBrowserWidget);
   layout->addWidget(&textBrowserWidget);
 
 
   ctkFittedTextBrowser textBrowserWidgetCollapsibleText(&widget);
   ctkFittedTextBrowser textBrowserWidgetCollapsibleText(&widget);
-  textBrowserWidgetCollapsibleText.setCollapsible(true);
-  textBrowserWidgetCollapsibleText.setText(
+  textBrowserWidgetCollapsibleText.setCollapsibleText(
     "This is the teaser for auto-text.\n More details are here.\n"
     "This is the teaser for auto-text.\n More details are here.\n"
     "This is a very very, very very very, very very, very very very, very very, very very very long line\n"
     "This is a very very, very very very, very very, very very very, very very, very very very long line\n"
     "Some more lines 1.\n"
     "Some more lines 1.\n"
     "Some more lines 2.\n"
     "Some more lines 2.\n"
     "Some more, some more.");
     "Some more, some more.");
-  textBrowserWidgetCollapsibleText.setShowMoreText(">>>");
-  textBrowserWidgetCollapsibleText.setShowLessText("<<<");
+  textBrowserWidgetCollapsibleText.setShowDetailsText(">>>");
+  textBrowserWidgetCollapsibleText.setHideDetailsText("<<<");
   layout->addWidget(&textBrowserWidgetCollapsibleText);
   layout->addWidget(&textBrowserWidgetCollapsibleText);
 
 
   ctkFittedTextBrowser textBrowserWidgetCollapsibleHtml(&widget);
   ctkFittedTextBrowser textBrowserWidgetCollapsibleHtml(&widget);
-  textBrowserWidgetCollapsibleHtml.setHtml(
+  textBrowserWidgetCollapsibleHtml.setCollapsibleHtml(
     "This is the teaser for html.<br>"
     "This is the teaser for html.<br>"
     "More details are here."
     "More details are here."
     "This is a very very, very very very, very very, very very very, very very, very very very long line\n"
     "This is a very very, very very very, very very, very very very, very very, very very very long line\n"
     "Some more lines 1."
     "Some more lines 1."
     "Some more lines 2."
     "Some more lines 2."
     "Some more, some more.");
     "Some more, some more.");
-  textBrowserWidgetCollapsibleHtml.setCollapsible(true);
   layout->addWidget(&textBrowserWidgetCollapsibleHtml);
   layout->addWidget(&textBrowserWidgetCollapsibleHtml);
 
 
   ctkFittedTextBrowser textBrowserWidgetCollapsibleComplexHtml(&widget);
   ctkFittedTextBrowser textBrowserWidgetCollapsibleComplexHtml(&widget);
-  textBrowserWidgetCollapsibleComplexHtml.setCollapsible(true);
-  textBrowserWidgetCollapsibleComplexHtml.setHtml(
+  textBrowserWidgetCollapsibleComplexHtml.setCollapsibleHtml(
     "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\"><html>"
     "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\"><html>"
     "<head><meta name=\"qrichtext\" content=\"1\" /> <style type=\"text/css\"> p, li { white-space: pre-wrap; } </style></head>"
     "<head><meta name=\"qrichtext\" content=\"1\" /> <style type=\"text/css\"> p, li { white-space: pre-wrap; } </style></head>"
     "<body style=\" font-family:'MS Shell Dlg 2'; font-size:12.25pt; font-weight:400; font-style:normal;\">"
     "<body style=\" font-family:'MS Shell Dlg 2'; font-size:12.25pt; font-weight:400; font-style:normal;\">"

+ 67 - 125
Libs/Widgets/ctkFittedTextBrowser.cpp

@@ -28,19 +28,18 @@
 #include "ctkFittedTextBrowser.h"
 #include "ctkFittedTextBrowser.h"
 #include "ctkFittedTextBrowser_p.h"
 #include "ctkFittedTextBrowser_p.h"
 
 
-static const char moreAnchor[] = "more";
-static const char lessAnchor[] = "less";
+static const char moreAnchor[] = "show_details";
+static const char lessAnchor[] = "hide_details";
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 ctkFittedTextBrowserPrivate::ctkFittedTextBrowserPrivate(ctkFittedTextBrowser& object)
 ctkFittedTextBrowserPrivate::ctkFittedTextBrowserPrivate(ctkFittedTextBrowser& object)
   :q_ptr(&object)
   :q_ptr(&object)
 {
 {
-  this->Collapsible = false;
   this->Collapsed = true;
   this->Collapsed = true;
-  this->FullTextSetter = ctkFittedTextBrowserPrivate::Text;
-  this->ShowMoreText = object.tr("More...");
-  this->ShowLessText = object.tr("Hide details.");
-  QString ShowLessText;
+  this->CollapsibleTextSetter = ctkFittedTextBrowserPrivate::Text;
+  this->ShowDetailsText = object.tr("Show details...");
+  this->HideDetailsText = object.tr("Hide details.");
+  QString HideDetailsText;
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -49,46 +48,32 @@ ctkFittedTextBrowserPrivate::~ctkFittedTextBrowserPrivate()
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-QString ctkFittedTextBrowserPrivate::collapsibleText()
+void ctkFittedTextBrowserPrivate::updateCollapsedText()
 {
 {
   Q_Q(ctkFittedTextBrowser);
   Q_Q(ctkFittedTextBrowser);
-  bool html = (this->FullTextSetter == ctkFittedTextBrowserPrivate::Html || this->FullText.indexOf("<html>") >= 0);
+  bool html = (this->CollapsibleTextSetter == ctkFittedTextBrowserPrivate::Html || this->CollapsibleText.indexOf("<html>") >= 0);
   if (html)
   if (html)
   {
   {
-    return this->collapsibleHtml();
+    q->setHtml(this->collapsedTextFromHtml());
   }
   }
   else
   else
   {
   {
-    return this->collapsiblePlainText();
+    q->setHtml(this->collapsedTextFromPlainText());
   }
   }
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-QString ctkFittedTextBrowserPrivate::collapseLinkText()
+QString ctkFittedTextBrowserPrivate::collapsedTextFromPlainText() const
 {
 {
-  Q_Q(ctkFittedTextBrowser);
-  if (this->Collapsed)
-  {
-    return QString(" <a href=\"#") + moreAnchor + "\">" + this->ShowMoreText + "</a>";
-  }
-  else
-  {
-    return QString(" <a href=\"#") + lessAnchor + "\">" + this->ShowLessText + "</a>";
-  }
-}
-
-//-----------------------------------------------------------------------------
-QString ctkFittedTextBrowserPrivate::collapsiblePlainText()
-{
-  Q_Q(ctkFittedTextBrowser);
-  int teaserEndPosition = this->FullText.indexOf("\n");
+  Q_Q(const ctkFittedTextBrowser);
+  int teaserEndPosition = this->CollapsibleText.indexOf("\n");
   if (teaserEndPosition < 0)
   if (teaserEndPosition < 0)
   {
   {
-    return this->FullText;
+    return this->CollapsibleText;
   }
   }
   QString finalText;
   QString finalText;
   finalText.append("<html>");
   finalText.append("<html>");
-  finalText.append(this->Collapsed ? this->FullText.left(teaserEndPosition) : this->FullText);
+  finalText.append(this->Collapsed ? this->CollapsibleText.left(teaserEndPosition) : this->CollapsibleText);
   finalText.append(this->collapseLinkText());
   finalText.append(this->collapseLinkText());
   finalText.append("</html>");
   finalText.append("</html>");
   // Remove line break to allow continuation of line.
   // Remove line break to allow continuation of line.
@@ -100,17 +85,17 @@ QString ctkFittedTextBrowserPrivate::collapsiblePlainText()
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-QString ctkFittedTextBrowserPrivate::collapsibleHtml()
+QString ctkFittedTextBrowserPrivate::collapsedTextFromHtml() const
 {
 {
-  Q_Q(ctkFittedTextBrowser);
+  Q_Q(const ctkFittedTextBrowser);
   const QString lineBreak("<br>");
   const QString lineBreak("<br>");
-  int teaserEndPosition = this->FullText.indexOf(lineBreak);
+  int teaserEndPosition = this->CollapsibleText.indexOf(lineBreak);
   if (teaserEndPosition < 0)
   if (teaserEndPosition < 0)
   {
   {
-    return this->FullText;
+    return this->CollapsibleText;
   }
   }
 
 
-  QString finalText = this->FullText;
+  QString finalText = this->CollapsibleText;
   if (this->Collapsed)
   if (this->Collapsed)
   {
   {
     finalText = finalText.left(teaserEndPosition) + this->collapseLinkText();
     finalText = finalText.left(teaserEndPosition) + this->collapseLinkText();
@@ -144,6 +129,20 @@ QString ctkFittedTextBrowserPrivate::collapsibleHtml()
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
+QString ctkFittedTextBrowserPrivate::collapseLinkText() const
+{
+  Q_Q(const ctkFittedTextBrowser);
+  if (this->Collapsed)
+  {
+    return QString(" <a href=\"#") + moreAnchor + "\">" + this->ShowDetailsText + "</a>";
+  }
+  else
+  {
+    return QString(" <a href=\"#") + lessAnchor + "\">" + this->HideDetailsText + "</a>";
+  }
+}
+
+//-----------------------------------------------------------------------------
 ctkFittedTextBrowser::ctkFittedTextBrowser(QWidget* _parent)
 ctkFittedTextBrowser::ctkFittedTextBrowser(QWidget* _parent)
   : QTextBrowser(_parent)
   : QTextBrowser(_parent)
   , d_ptr(new ctkFittedTextBrowserPrivate(*this))
   , d_ptr(new ctkFittedTextBrowserPrivate(*this))
@@ -228,53 +227,38 @@ void ctkFittedTextBrowser::resizeEvent(QResizeEvent* e)
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-void ctkFittedTextBrowser::setText(const QString &text)
+void ctkFittedTextBrowser::setCollapsibleText(const QString &text)
 {
 {
   Q_D(ctkFittedTextBrowser);
   Q_D(ctkFittedTextBrowser);
-  d->FullTextSetter = ctkFittedTextBrowserPrivate::Text;
-  if (d->Collapsible)
-    {
-    d->FullText = text;
-    QTextBrowser::setHtml(d->collapsibleText());
-    }
-  else
-    {
-    QTextBrowser::setText(text);
-    }
+  d->CollapsibleTextSetter = ctkFittedTextBrowserPrivate::Text;
+  d->CollapsibleText = text;
+  d->updateCollapsedText();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-void ctkFittedTextBrowser::setPlainText(const QString &text)
+QString ctkFittedTextBrowser::collapsibleText() const
+{
+  Q_D(const ctkFittedTextBrowser);
+  return d->CollapsibleText;
+}
+
+
+//-----------------------------------------------------------------------------
+void ctkFittedTextBrowser::setCollapsiblePlainText(const QString &text)
 {
 {
   Q_D(ctkFittedTextBrowser);
   Q_D(ctkFittedTextBrowser);
-  d->FullTextSetter = ctkFittedTextBrowserPrivate::PlainText;
-  if (d->Collapsible)
-  {
-    d->FullText = text;
-    QTextBrowser::setHtml(d->collapsibleText());
-  }
-  else
-  {
-    QTextBrowser::setPlainText(text);
-  }
+  d->CollapsibleTextSetter = ctkFittedTextBrowserPrivate::PlainText;
+  d->CollapsibleText = text;
+  d->updateCollapsedText();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-void ctkFittedTextBrowser::setHtml(const QString &text)
+void ctkFittedTextBrowser::setCollapsibleHtml(const QString &text)
 {
 {
   Q_D(ctkFittedTextBrowser);
   Q_D(ctkFittedTextBrowser);
-  d->FullTextSetter = ctkFittedTextBrowserPrivate::Html;
-  // always save the original text as well because use may make the widget
-  // collapsible at any time
-  d->FullText = text;
-  if (d->Collapsible)
-  {
-    QTextBrowser::setHtml(d->collapsibleText());
-  }
-  else
-  {
-    QTextBrowser::setHtml(text);
-  }
+  d->CollapsibleTextSetter = ctkFittedTextBrowserPrivate::Html;
+  d->CollapsibleText = text;
+  d->updateCollapsedText();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -304,10 +288,7 @@ void ctkFittedTextBrowser::setCollapsed(bool collapsed)
     return;
     return;
   }
   }
   d->Collapsed = collapsed;
   d->Collapsed = collapsed;
-  if (d->Collapsible)
-  {
-    QTextBrowser::setHtml(d->collapsibleText());
-  }
+  d->updateCollapsedText();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -318,80 +299,41 @@ bool ctkFittedTextBrowser::collapsed() const
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-void ctkFittedTextBrowser::setCollapsible(bool collapsible)
+void ctkFittedTextBrowser::setShowDetailsText(const QString &text)
 {
 {
   Q_D(ctkFittedTextBrowser);
   Q_D(ctkFittedTextBrowser);
-  if (d->Collapsible == collapsible)
+  if (d->ShowDetailsText == text)
   {
   {
     // no change
     // no change
     return;
     return;
   }
   }
-  d->Collapsible = collapsible;
-  if (collapsible)
-  {
-    QTextBrowser::setHtml(d->collapsibleText());
-  }
-  else
-  {
-    switch (d->FullTextSetter)
-    {
-    case ctkFittedTextBrowserPrivate::Text: QTextBrowser::setText(d->FullText); break;
-    case ctkFittedTextBrowserPrivate::PlainText: QTextBrowser::setPlainText(d->FullText); break;
-    case ctkFittedTextBrowserPrivate::Html: QTextBrowser::setHtml(d->FullText); break;
-    default: QTextBrowser::setText(d->FullText); break;
-    }
-  }
+  d->ShowDetailsText = text;
+  d->updateCollapsedText();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-bool ctkFittedTextBrowser::collapsible() const
+QString ctkFittedTextBrowser::showDetailsText() const
 {
 {
   Q_D(const ctkFittedTextBrowser);
   Q_D(const ctkFittedTextBrowser);
-  return d->Collapsible;
+  return d->ShowDetailsText;
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-void ctkFittedTextBrowser::setShowMoreText(const QString &text)
+void ctkFittedTextBrowser::setHideDetailsText(const QString &text)
 {
 {
   Q_D(ctkFittedTextBrowser);
   Q_D(ctkFittedTextBrowser);
-  if (d->ShowMoreText == text)
+  if (d->HideDetailsText == text)
   {
   {
     // no change
     // no change
     return;
     return;
   }
   }
-  d->ShowMoreText = text;
-  if (d->Collapsible)
-  {
-    QTextBrowser::setHtml(d->collapsibleText());
-  }
-}
-
-//-----------------------------------------------------------------------------
-QString ctkFittedTextBrowser::showMoreText() const
-{
-  Q_D(const ctkFittedTextBrowser);
-  return d->ShowMoreText;
-}
-
-//-----------------------------------------------------------------------------
-void ctkFittedTextBrowser::setShowLessText(const QString &text)
-{
-  Q_D(ctkFittedTextBrowser);
-  if (d->ShowLessText == text)
-  {
-    // no change
-    return;
-  }
-  d->ShowLessText = text;
-  if (d->Collapsible)
-  {
-    QTextBrowser::setHtml(d->collapsibleText());
-  }
+  d->HideDetailsText = text;
+  d->updateCollapsedText();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-QString ctkFittedTextBrowser::showLessText() const
+QString ctkFittedTextBrowser::hideDetailsText() const
 {
 {
   Q_D(const ctkFittedTextBrowser);
   Q_D(const ctkFittedTextBrowser);
-  return d->ShowLessText;
+  return d->HideDetailsText;
 }
 }

+ 35 - 24
Libs/Widgets/ctkFittedTextBrowser.h

@@ -42,49 +42,35 @@ class ctkFittedTextBrowserPrivate;
 class CTK_WIDGETS_EXPORT ctkFittedTextBrowser : public QTextBrowser
 class CTK_WIDGETS_EXPORT ctkFittedTextBrowser : public QTextBrowser
 {
 {
   Q_OBJECT
   Q_OBJECT
-  Q_PROPERTY(bool collapsible READ collapsible WRITE setCollapsible)
   Q_PROPERTY(bool collapsed READ collapsed WRITE setCollapsed)
   Q_PROPERTY(bool collapsed READ collapsed WRITE setCollapsed)
-  Q_PROPERTY(QString showMoreText READ showMoreText WRITE setShowMoreText)
-  Q_PROPERTY(QString showLessText READ showLessText WRITE setShowLessText)
+  Q_PROPERTY(QString showDetailsText READ showDetailsText WRITE setShowDetailsText)
+  Q_PROPERTY(QString hideDetailsText READ hideDetailsText WRITE setHideDetailsText)
+
 
 
 public:
 public:
   ctkFittedTextBrowser(QWidget* parent = 0);
   ctkFittedTextBrowser(QWidget* parent = 0);
   virtual ~ctkFittedTextBrowser();
   virtual ~ctkFittedTextBrowser();
 
 
-  /// Show only first line with "More..." link to save space.
-  /// When the user clicks on the link then the full text is displayed
-  /// (and a "Less..." link).
-  /// The teaser is the beginning of the text up to the first newline character
-  /// (for plain text) or <br> tag (for html). The separator is removed when
-  /// the text is expanded so that the full text can continue on the same line
-  /// as the teaser.
-  void setCollapsible(bool collapsible);
-  /// Show only first line with "More..." link to save space.
-  bool collapsible() const;
-
   /// Show only first line/the full text.
   /// Show only first line/the full text.
   /// Only has effect if collapsible = true.
   /// Only has effect if collapsible = true.
   void setCollapsed(bool collapsed);
   void setCollapsed(bool collapsed);
   /// Show only first line/the full text.
   /// Show only first line/the full text.
   bool collapsed() const;
   bool collapsed() const;
 
 
-  void setPlainText(const QString &text);
-#ifndef QT_NO_TEXTHTMLPARSER
-  void setHtml(const QString &text);
-#endif
-  void setText(const QString &text);
-
   /// Text that is displayed at the end of collapsed text.
   /// Text that is displayed at the end of collapsed text.
   /// Clicking on the text expands the widget.
   /// Clicking on the text expands the widget.
-  void setShowMoreText(const QString &text);
+  void setShowDetailsText(const QString &text);
   /// Text that is displayed at the end of collapsed text.
   /// Text that is displayed at the end of collapsed text.
-  QString showMoreText()const;
+  QString showDetailsText()const;
 
 
   /// Text that is displayed at the end of non-collapsed text.
   /// Text that is displayed at the end of non-collapsed text.
   /// Clicking on the text collapses the widget.
   /// Clicking on the text collapses the widget.
-  void setShowLessText(const QString &text);
+  void setHideDetailsText(const QString &text);
   /// Text that is displayed at the end of non-collapsed text.
   /// Text that is displayed at the end of non-collapsed text.
-  QString showLessText()const;
+  QString hideDetailsText()const;
+
+  /// Return text set by setCollapsibleText.
+  Q_INVOKABLE QString collapsibleText() const;
 
 
   /// Reimplemented for internal reasons
   /// Reimplemented for internal reasons
   virtual QSize sizeHint() const;
   virtual QSize sizeHint() const;
@@ -93,6 +79,31 @@ public:
   /// Reimplemented for internal reasons
   /// Reimplemented for internal reasons
   virtual int heightForWidth(int width) const;
   virtual int heightForWidth(int width) const;
 
 
+public Q_SLOTS:
+
+  /// Set text that can be displayed in a shortened form (collapsed) for saving space,
+  /// by only showing first line with "More..." link appended.
+  /// When the user clicks on the link then the full text is displayed
+  /// (and a "Less..." link).
+  /// The teaser is the beginning of the text up to the first newline character
+  /// (for plain text) or <br> tag (for html). The separator is removed when
+  /// the text is expanded so that the full text can continue on the same line
+  /// as the teaser.
+  /// 
+  /// The text can be plain text or HTML and the the right format will be guessed.
+  /// Use setCollapsedHtml() or setCollapsedPlainText() directly to avoid guessing.
+  void setCollapsibleText(const QString &text);
+
+#ifndef QT_NO_TEXTHTMLPARSER
+  /// Set text that can be displayed in a shortened form (collapsed) for saving space.
+  /// \sa setCollapsibleText
+  void setCollapsibleHtml(const QString &text);
+#endif
+
+  /// Set text that can be displayed in a shortened form (collapsed) for saving space.
+  /// \sa setCollapsibleText
+  void setCollapsiblePlainText(const QString &text);
+
 protected Q_SLOTS:
 protected Q_SLOTS:
   void heightForWidthMayHaveChanged();
   void heightForWidthMayHaveChanged();
   void anchorClicked(const QUrl &url);
   void anchorClicked(const QUrl &url);

+ 24 - 25
Libs/Widgets/ctkFittedTextBrowser_p.h

@@ -1,22 +1,22 @@
 /*=========================================================================
 /*=========================================================================
 
 
-  Library:   CTK
+Library:   CTK
 
 
-  Copyright (c) Kitware Inc.
+Copyright (c) Kitware Inc.
 
 
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
 
 
-  http://www.apache.org/licenses/LICENSE-2.0.txt
+http://www.apache.org/licenses/LICENSE-2.0.txt
 
 
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
 
 
-  =========================================================================*/
+=========================================================================*/
 
 
 #ifndef __ctkFittedTextBrowser_p_h
 #ifndef __ctkFittedTextBrowser_p_h
 #define __ctkFittedTextBrowser_p_h
 #define __ctkFittedTextBrowser_p_h
@@ -37,27 +37,26 @@ public:
   ctkFittedTextBrowserPrivate(ctkFittedTextBrowser& object);
   ctkFittedTextBrowserPrivate(ctkFittedTextBrowser& object);
   virtual ~ctkFittedTextBrowserPrivate();
   virtual ~ctkFittedTextBrowserPrivate();
 
 
-  // Get collapsed/expanded text in html format.
-  // Calls collapsiblePlainText or collapsibleHtml.
-  QString collapsibleText();
+  // Update collapsed/expanded text in the widget.
+  void updateCollapsedText();
+
   // Get collapsed/expanded text in html format from plain text.
   // Get collapsed/expanded text in html format from plain text.
-  QString collapsiblePlainText();
+  QString collapsedTextFromPlainText() const;
   // Get collapsed/expanded text in html format from html.
   // Get collapsed/expanded text in html format from html.
-  QString collapsibleHtml();
+  QString collapsedTextFromHtml() const;
 
 
   // Get more/less link in html format
   // Get more/less link in html format
-  QString collapseLinkText();
+  QString collapseLinkText() const;
 
 
-  bool Collapsible;
   bool Collapsed;
   bool Collapsed;
 
 
-  QString ShowMoreText;
-  QString ShowLessText;
+  QString ShowDetailsText;
+  QString HideDetailsText;
 
 
   // Stores the text that the user originally set.
   // Stores the text that the user originally set.
-  QString FullText;
-  
-  enum FullTextSetMethod
+  QString CollapsibleText;
+
+  enum CollapsibleTextSetMethod
   {
   {
     Text,
     Text,
     PlainText,
     PlainText,
@@ -65,7 +64,7 @@ public:
   };
   };
 
 
   // Stores what method the user called to set text
   // Stores what method the user called to set text
-  FullTextSetMethod FullTextSetter;
+  CollapsibleTextSetMethod CollapsibleTextSetter;
 };
 };
 
 
 #endif
 #endif