diff options
Diffstat (limited to 'tdeui/kwhatsthismanager.cpp')
-rw-r--r-- | tdeui/kwhatsthismanager.cpp | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/tdeui/kwhatsthismanager.cpp b/tdeui/kwhatsthismanager.cpp new file mode 100644 index 000000000..b7873ed0e --- /dev/null +++ b/tdeui/kwhatsthismanager.cpp @@ -0,0 +1,121 @@ +/* This file is part of the KDE Libraries + * Copyright (C) 2004 Peter Rockai (mornfall) <mornfall@danill.sk> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ +#include "kwhatsthismanager_p.h" +#include "tqwhatsthis.h" +#include <tqvariant.h> +#include <kdebug.h> +#include <tqtextedit.h> +#include <klocale.h> +#include <kapplication.h> + +KWhatsThisManager *KWhatsThisManager::s_instance = 0; + +class KWhatsThisUndefined : public TQWhatsThis +{ + public: + KWhatsThisUndefined (TQWidget *); + TQString text (const TQPoint &); + public slots: + bool clicked (const TQString &); + protected: + TQWidget *m_widget; +}; + +KWhatsThisUndefined::KWhatsThisUndefined (TQWidget *w) + : TQWhatsThis (w) +{ + m_widget = w; +} + +TQString KWhatsThisUndefined::text (const TQPoint &) +{ + if (!m_widget) + return ""; + TQString txt = i18n ("<b>Not Defined</b><br>There is no \"What's This?\"" + " help assigned to this widget. If you want to help us to " + " describe the widget, you are welcome to <a href=\"submit" + "-whatsthis\">send us your own \"What's This?\" help</a> for it."); + TQString parent; + if (m_widget -> parentWidget ()) + parent = TQWhatsThis::textFor (m_widget -> parentWidget ()); + if (parent != txt) + if (! parent . isEmpty ()) + return parent; + return txt; +} + +bool KWhatsThisUndefined::clicked (const TQString& href) +{ + if (href == "submit-whatsthis") { + TQWidget *w = m_widget; + TQString body; + body . append ("Widget text: '" + (m_widget -> property ("text") . toString ()) + "'\n"); + TQString dsc = TQString ("current --> ") + m_widget -> name (); + dsc . append (TQString (" (") + m_widget -> className () + ")\n"); + for (w = m_widget; w && w != m_widget -> tqtopLevelWidget (); w = w -> parentWidget ()) { + dsc . append (w -> name ()); + dsc . append (TQString (" (") + w -> className () + ")\n"); + } + w = m_widget -> tqtopLevelWidget (); + if (w) { + dsc . append ("toplevel --> "); + dsc . append (w -> name ()); + dsc . append (TQString (" (") + w -> className () + ")\n"); + } + body . append (dsc); + TQString subj ("What's This submission: "); + subj . append (tqApp -> argv () [0]); + body . append ("\nPlease type in your what's this help between these lines: " + "\n--%-----------------------------------------------------------------------\n" + "\n--%-----------------------------------------------------------------------"); + kapp -> invokeMailer ("quality-whatsthis@kde.org", "", "", subj, body); + } + return TRUE; +} + +void KWhatsThisManager::init () +{ + if (s_instance) + return; + s_instance = new KWhatsThisManager; +} + +KWhatsThisManager::KWhatsThisManager () +{ + // go away... + // tqApp -> installEventFilter (this); +} + +bool KWhatsThisManager::eventFilter (TQObject * /*o*/, TQEvent *e) +{ + if (e -> type () == TQEvent::ChildInserted) { + TQChildEvent *ce = (TQChildEvent *)e; + // kdDebug () << "new qobject:" << ce -> child () << endl; + if (ce -> child () -> isWidgetType ()) { + TQWidget *w = (TQWidget *) (ce -> child ()); + // kdDebug () << "new qwidget:" << w << endl; + if (TQWhatsThis::textFor (w) . isEmpty ()) + new KWhatsThisUndefined (w); + } + } + return false; +} + +#include "kwhatsthismanager_p.moc" + |