26#include <tqtoolbutton.h>
27#include <tqwhatsthis.h>
30#include <tdeaboutapplication.h>
31#include <tdeaboutdata.h>
32#include <tdeabouttde.h>
34#include <tdeapplication.h>
35#include <kbugreport.h>
36#include <kdialogbase.h>
38#include <kiconloader.h>
40#include <tdemessagebox.h>
41#include <tdepopupmenu.h>
42#include <tdestdaccel.h>
43#include <kstdaction.h>
44#include <kstandarddirs.h>
46#include "kswitchlanguagedialog.h"
54 KHelpMenuPrivate():mSwitchApplicationLanguage(NULL)
59 delete mSwitchApplicationLanguage;
62 const TDEAboutData *mAboutData;
63 KSwitchLanguageDialog *mSwitchApplicationLanguage;
68 : TQObject(parent), mMenu(0), mAboutApp(0), mAboutKDE(0), mBugReport(0),
69 d(new KHelpMenuPrivate)
72 mAboutAppText = aboutAppText;
73 mShowWhatsThis = showWhatsThis;
79 : TQObject(parent), mMenu(0), mAboutApp(0), mAboutKDE(0), mBugReport(0),
80 d(new KHelpMenuPrivate)
83 mShowWhatsThis = showWhatsThis;
85 d->mAboutData = aboutData;
88 mAboutAppText = TQString::null;
122 TQString appName = (aboutData)? aboutData->
programName() : TQString::fromLatin1(tqApp->name());
125 connect( mMenu, TQ_SIGNAL(destroyed()),
this, TQ_SLOT(menuDestroyed()));
127 bool need_separator =
false;
128 if (kapp->authorizeTDEAction(
"help_contents"))
131 TQString(i18n(
"%1 &Handbook" ).arg( appName)) ,menuHelpContents );
134 need_separator =
true;
137 if( mShowWhatsThis && kapp->authorizeTDEAction(
"help_whats_this") )
139 TQToolButton* wtb = TQWhatsThis::whatsThisButton(0);
140 mMenu->insertItem( wtb->iconSet(),i18n(
"What's &This" ), menuWhatsThis);
143 mMenu->setAccel( SHIFT + Key_F1, menuWhatsThis );
144 need_separator =
true;
147 if (kapp->authorizeTDEAction(
"help_report_bug") && aboutData && !aboutData->
bugAddress().isEmpty() )
150 mMenu->insertSeparator();
151 mMenu->insertItem( SmallIcon(
"bug"), i18n(
"&Report Bug/Request Enhancement..." ), menuReportBug );
152 mMenu->connectItem( menuReportBug,
this, TQ_SLOT(
reportBug()) );
153 need_separator =
true;
156 if (kapp->authorizeTDEAction(
"switch_application_language"))
159 mMenu->insertSeparator();
160 mMenu->insertItem( SmallIcon(
"locale"), i18n(
"Switch application &language..." ), menuSwitchLanguage );
162 need_separator =
true;
166 mMenu->insertSeparator();
168 if (kapp->authorizeTDEAction(
"help_about_app"))
170 mMenu->insertItem( kapp->miniIcon(),
171 TQString(i18n(
"&About %1" ).arg(appName)), menuAboutApp );
175 if (kapp->authorizeTDEAction(
"help_about_kde"))
177 mMenu->insertItem( SmallIcon(
"about_kde"), i18n(
"About &TDE" ), menuAboutKDE );
178 mMenu->connectItem( menuAboutKDE,
this, TQ_SLOT(
aboutKDE() ) );
200 connect( mAboutApp, TQ_SIGNAL(finished()),
this, TQ_SLOT( dialogFinished()) );
204 else if( mAboutAppText.isEmpty() )
215 false,
true, KStdGuiItem::ok() );
216 connect( mAboutApp, TQ_SIGNAL(finished()),
this, TQ_SLOT( dialogFinished()) );
218 TQHBox *hbox =
new TQHBox( mAboutApp );
219 mAboutApp->setMainWidget( hbox );
223 TQLabel *label1 =
new TQLabel(hbox);
224 label1->setPixmap( kapp->icon() );
225 TQLabel *label2 =
new TQLabel(hbox);
226 label2->setText( mAboutAppText );
228 mAboutApp->setPlainCaption( i18n(
"About %1").arg(kapp->caption()) );
229 mAboutApp->disableResize();
241 mAboutKDE =
new TDEAboutKDE( mParent,
"aboutkde",
false );
242 connect( mAboutKDE, TQ_SIGNAL(finished()),
this, TQ_SLOT( dialogFinished()) );
252 mBugReport =
new KBugReport( mParent,
false, d->mAboutData );
253 connect( mBugReport, TQ_SIGNAL(finished()),
this,TQ_SLOT( dialogFinished()) );
260 if ( !d->mSwitchApplicationLanguage )
263 connect( d->mSwitchApplicationLanguage, TQ_SIGNAL(finished()),
this, TQ_SLOT( dialogFinished()) );
265 d->mSwitchApplicationLanguage->show();
269void KHelpMenu::dialogFinished()
271 TQTimer::singleShot( 0,
this, TQ_SLOT(timerExpired()) );
275void KHelpMenu::timerExpired()
277 if( mAboutKDE && !mAboutKDE->isVisible() )
279 delete mAboutKDE; mAboutKDE = 0;
282 if( mBugReport && !mBugReport->isVisible() )
284 delete mBugReport; mBugReport = 0;
287 if( mAboutApp && !mAboutApp->isVisible() )
289 delete mAboutApp; mAboutApp = 0;
292 if (d->mSwitchApplicationLanguage && !d->mSwitchApplicationLanguage->isVisible())
294 delete d->mSwitchApplicationLanguage; d->mSwitchApplicationLanguage = 0;
299void KHelpMenu::menuDestroyed()
307 TQWhatsThis::enterWhatsThisMode();
308 TQWidget* w = TQApplication::widgetAt( TQCursor::pos(),
true );
309 while ( w && !w->isTopLevel() && !w->inherits(
"QXEmbed") )
310 w = w->parentWidget();
312 if ( w && w->inherits(
"QXEmbed") )
313 (( QXEmbed*) w )->enterWhatsThisMode();
317void KHelpMenu::virtual_hook(
int,
void* )
321#include "khelpmenu.moc"
A dialog box for sending bug reports.
A dialog base class with standard buttons and predefined layouts.
static int marginHint()
Return the number of pixels you shall use between a dialog edge and the outermost widget(s) according...
static int spacingHint()
Return the number of pixels you shall use between widgets inside a dialog according to the KDE standa...
Standard "switch application language" dialog box.
Standard "About Application" dialog box.
TQString bugAddress() const
TQString programName() const
Standard "About KDE" dialog box,.
A managed set of TDEAction objects.
static TDEInstance * instance()
const TDEAboutData * aboutData() const
TDEAction * whatsThis(const TQObject *recvr, const char *slot, TDEActionCollection *parent, const char *name)
Trigger the What's This cursor.
TDEAction * aboutKDE(const TQObject *recvr, const char *slot, TDEActionCollection *parent, const char *name)
Display the About KDE dialog.
TDEAction * helpContents(const TQObject *recvr, const char *slot, TDEActionCollection *parent, const char *name)
Display the help contents.
TDEAction * switchApplicationLanguage(const TQObject *recvr, const char *slot, TDEActionCollection *parent, const char *name)
Display "Switch application language" dialog.
TDEAction * aboutApp(const TQObject *recvr, const char *slot, TDEActionCollection *parent, const char *name)
Display the application's About box.
TDEAction * reportBug(const TQObject *recvr, const char *slot, TDEActionCollection *parent, const char *name)
Open up the Report Bug dialog.
const TDEShortcut & shortcut(StdAccel id)