From kde-commits Wed Aug 15 11:58:30 2007 From: Krzysztof Lichota Date: Wed, 15 Aug 2007 11:58:30 +0000 To: kde-commits Subject: branches/KDE/3.5/kdelibs Message-Id: <1187179110.642080.2737.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=118717915323499 SVN commit 700380 by klichota: Finally I have found some time to recompile KDE and test the feature again. This is re-commit of implementation of switching language for individual applications. Previous commit (r647712) was reverted as feature was not ported to KDE 4 then. Now it is. For language switching option see menu Help->Switch application language. Feature freeze exception was granted for this feature. See: http://lists.kde.org/?l=kde-devel&m=118096509723997&w=2 Thanks to release team for that :) Also thanks to David Faure for review and providing valuable tips. CCBUG: 24348 FEATURE: 24348 GUI: M +1 -1 kdecore/klocale.h M +2 -2 kdeui/Makefile.am M +29 -1 kdeui/khelpmenu.cpp M +7 -1 kdeui/khelpmenu.h M +2 -0 kdeui/kstdaction.cpp M +2 -1 kdeui/kstdaction.h M +1 -0 kdeui/kstdaction_p.h A kdeui/kswitchlanguagedialog.cpp kdeui/kswitchlanguagedialog.cpp#647712 [License: LGPL (v2+)] A kdeui/kswitchlanguagedialog.h kdeui/kswitchlanguagedialog.h#647712 [License: LGPL (v2+)] M +2 -0 kdeui/ui_standards.rc --- branches/KDE/3.5/kdelibs/kdecore/klocale.h #700379:700380 @@ -1301,7 +1301,7 @@ */ static QString catalogueFileName(const QString & language, const KCatalogue & catalog); - +public: /** * @internal Checks whether or not theFind catalog for given language and given catalog name. * --- branches/KDE/3.5/kdelibs/kdeui/Makefile.am #700379:700380 @@ -55,7 +55,7 @@ kauthicon.h kmessagebox.h ksharedpixmap.h \ kdualcolorbtn.h kdualcolorbutton.h ktoolbarbutton.h \ ktoolbarradiogroup.h ktextbrowser.h \ - kaction.h kactioncollection.h kactionclasses.h khelpmenu.h \ + kaction.h kactioncollection.h kactionclasses.h khelpmenu.h kswitchlanguagedialog.h \ kcmodule.h kcmenumngr.h kpanelmenu.h kpanelappmenu.h \ kactionshortcutlist.h kstdaction.h kcombobox.h \ kiconview.h klistview.h klistbox.h kbugreport.h kpassdlg.h \ @@ -102,7 +102,7 @@ kjanuswidget.cpp kaboutdialog.cpp \ kauthicon.cpp kmessagebox.cpp kdualcolorbutton.cpp \ ktoolbarradiogroup.cpp ktoolbarbutton.cpp \ - ktextbrowser.cpp khelpmenu.cpp \ + ktextbrowser.cpp khelpmenu.cpp kswitchlanguagedialog.cpp \ kcmenumngr.cpp kpanelmenu.cpp \ kiconview.cpp klistbox.cpp kwordwrap.cpp kbugreport.cpp \ kcombobox.cpp kpassdlg.cpp kxmlguiclient.cpp kxmlguifactory.cpp \ --- branches/KDE/3.5/kdelibs/kdeui/khelpmenu.cpp #700379:700380 @@ -42,20 +42,24 @@ #include #include +#include "kswitchlanguagedialog.h" + #include "config.h" #include class KHelpMenuPrivate { public: - KHelpMenuPrivate() + KHelpMenuPrivate():mSwitchApplicationLanguage(NULL) { } ~KHelpMenuPrivate() { + delete mSwitchApplicationLanguage; } const KAboutData *mAboutData; + KSwitchLanguageDialog *mSwitchApplicationLanguage; }; KHelpMenu::KHelpMenu( QWidget *parent, const QString &aboutAppText, @@ -147,6 +151,15 @@ need_separator = true; } + if (kapp->authorizeKAction("switch_application_language")) + { + if (need_separator) + mMenu->insertSeparator(); + mMenu->insertItem( i18n( "Switch application &language..." ), menuSwitchLanguage ); + mMenu->connectItem( menuSwitchLanguage, this, SLOT(switchApplicationLanguage()) ); + need_separator = true; + } + if (need_separator) mMenu->insertSeparator(); @@ -240,7 +253,17 @@ mBugReport->show(); } +void KHelpMenu::switchApplicationLanguage() +{ + if ( !d->mSwitchApplicationLanguage ) + { + d->mSwitchApplicationLanguage = new KSwitchLanguageDialog( mParent, "switchlanguagedialog", false ); + connect( d->mSwitchApplicationLanguage, SIGNAL(finished()), this, SLOT( dialogFinished()) ); + } + d->mSwitchApplicationLanguage->show(); +} + void KHelpMenu::dialogFinished() { QTimer::singleShot( 0, this, SLOT(timerExpired()) ); @@ -263,6 +286,11 @@ { delete mAboutApp; mAboutApp = 0; } + + if (d->mSwitchApplicationLanguage && !d->mSwitchApplicationLanguage->isVisible()) + { + delete d->mSwitchApplicationLanguage; d->mSwitchApplicationLanguage = 0; + } } --- branches/KDE/3.5/kdelibs/kdeui/khelpmenu.h #700379:700380 @@ -139,7 +139,8 @@ menuWhatsThis = 1, menuAboutApp = 2, menuAboutKDE = 3, - menuReportBug = 4 + menuReportBug = 4, + menuSwitchLanguage = 5 }; /** @@ -222,6 +223,11 @@ * Opens the standard "Report Bugs" dialog box. */ void reportBug(); + + /** + * Opens changing default application language dialog box. + */ + void switchApplicationLanguage(); private slots: /** --- branches/KDE/3.5/kdelibs/kdeui/kstdaction.cpp #700379:700380 @@ -313,6 +313,8 @@ { return KStdAction::create( TipofDay, name, recvr, slot, parent ); } KAction *reportBug( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) { return KStdAction::create( ReportBug, name, recvr, slot, parent ); } +KAction *switchApplicationLanguage( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) + { return KStdAction::create( SwitchApplicationLanguage, name, recvr, slot, parent ); } KAction *aboutApp( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) { return KStdAction::create( AboutApp, name, recvr, slot, parent ); } KAction *aboutKDE( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) --- branches/KDE/3.5/kdelibs/kdeui/kstdaction.h #700379:700380 @@ -157,7 +157,8 @@ ConfigureNotifications, FullScreen, ///< @since 3.2 Clear, ///< @since 3.2 - PasteText ///< @since 3.2 + PasteText, ///< @since 3.2 + SwitchApplicationLanguage ///< @since 3.5.8 }; /** --- branches/KDE/3.5/kdelibs/kdeui/kstdaction_p.h #700379:700380 @@ -109,6 +109,7 @@ { WhatsThis, KStdAccel::WhatsThis, "help_whats_this", I18N_NOOP("What's &This?"), 0, "contexthelp" }, { TipofDay, KStdAccel::AccelNone, "help_show_tip", I18N_NOOP("Tip of the &Day"), 0, "idea" }, { ReportBug, KStdAccel::AccelNone, "help_report_bug", I18N_NOOP("&Report Bug..."), 0, 0 }, + { SwitchApplicationLanguage, KStdAccel::AccelNone, "switch_application_language", I18N_NOOP("Switch application &language..."), 0, 0 }, { AboutApp, KStdAccel::AccelNone, "help_about_app", I18N_NOOP("&About %1"), 0, 0 }, { AboutKDE, KStdAccel::AccelNone, "help_about_kde", I18N_NOOP("About &KDE"), 0,"about_kde" }, { ActionNone, KStdAccel::AccelNone, 0, 0, 0, 0 } --- branches/KDE/3.5/kdelibs/kdeui/ui_standards.rc #700379:700380 @@ -176,6 +176,8 @@ + +