From 4aed2c8219774f5d797760606b8489a92ddc5163 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- ksplashml/themeengine/default/Makefile.am | 17 ++ .../themeengine/default/ksplashdefault.desktop | 97 +++++++ ksplashml/themeengine/default/main.cpp | 17 ++ ksplashml/themeengine/default/themelegacy.cpp | 310 +++++++++++++++++++++ ksplashml/themeengine/default/themelegacy.h | 103 +++++++ 5 files changed, 544 insertions(+) create mode 100644 ksplashml/themeengine/default/Makefile.am create mode 100644 ksplashml/themeengine/default/ksplashdefault.desktop create mode 100644 ksplashml/themeengine/default/main.cpp create mode 100644 ksplashml/themeengine/default/themelegacy.cpp create mode 100644 ksplashml/themeengine/default/themelegacy.h (limited to 'ksplashml/themeengine/default') diff --git a/ksplashml/themeengine/default/Makefile.am b/ksplashml/themeengine/default/Makefile.am new file mode 100644 index 000000000..e3f522751 --- /dev/null +++ b/ksplashml/themeengine/default/Makefile.am @@ -0,0 +1,17 @@ + +INCLUDES = -I$(srcdir)/.. -I$(srcdir)/../.. $(all_includes) + +noinst_LTLIBRARIES = libthemedefault.la +libthemedefault_la_SOURCES = themelegacy.cpp +libthemedefault_la_LDFLAGS = $(all_libraries) $(KDE_RPATH) +libthemedefault_la_LIBADD = $(LIB_KDEUI) ../libksplashthemes.la + +kde_module_LTLIBRARIES = ksplashdefault.la + +ksplashdefault_la_SOURCES = main.cpp +ksplashdefault_la_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(KDE_PLUGIN) -module +ksplashdefault_la_LIBADD = $(LIB_KDEUI) ../libksplashthemes.la libthemedefault.la +METASOURCES = AUTO + +servicesdir = $(kde_servicesdir) +services_DATA = ksplashdefault.desktop diff --git a/ksplashml/themeengine/default/ksplashdefault.desktop b/ksplashml/themeengine/default/ksplashdefault.desktop new file mode 100644 index 000000000..66244d5d4 --- /dev/null +++ b/ksplashml/themeengine/default/ksplashdefault.desktop @@ -0,0 +1,97 @@ +[Desktop Entry] +Type=Service +Comment=KSplash Plugin +Comment[af]=KSplash Inprop module +Comment[ar]=ملحق للشاشة الافتتاحية +Comment[az]=KSplash Əlavəsi +Comment[be]=Утулка KSplash +Comment[bg]=Приставка KSplash +Comment[bn]=কে-স্প্ল্যাশ প্লাগ-ইন +Comment[br]=Lugent KSplash +Comment[bs]=KSplash dodatak +Comment[ca]=Connector per a KSplash +Comment[cs]=Modul aplikaci KSplash +Comment[csb]=Plugins KSplash +Comment[cy]=Ategyn KCroeso +Comment[da]=KSplash-plugin +Comment[de]=KSplash-Plugin +Comment[el]=Πρόσθετο KSplash +Comment[eo]=Ksalutŝilda kromaĵo +Comment[es]=Complemento KSplash +Comment[et]=KSplashi plugin +Comment[eu]=KSplash plugina +Comment[fa]=وصلۀ KSplash +Comment[fi]=KSplash-liitännäinen +Comment[fr]=Modules de KSplash +Comment[fy]=KSplash-plugin +Comment[ga]=Breiseán KSplash +Comment[gl]=Plugin de KSplash +Comment[he]=תוסף KSplash +Comment[hi]=के-स्प्लैश प्लगइन +Comment[hr]=KSplash dodatak +Comment[hu]=KSplash bővítőmodul +Comment[is]=KSplash íforrit +Comment[it]=Plugin KSplash +Comment[ja]=KSplash プラグイン +Comment[ka]=KSplash პლაგინი +Comment[kk]=KSplash модулі +Comment[km]=កម្មវិធី​ជំនួយ​ខាង​ក្នុង​របស់ KSplash +Comment[lt]=KSplash įskiepis +Comment[lv]=KSplash spraudnis +Comment[mk]=Приклучок за KSplash +Comment[ms]=Plugin KSplash +Comment[mt]=Plugin ta' KSplash +Comment[nb]=Programtillegg Ksplash +Comment[ne]=के स्प्लयास प्लगइन +Comment[nl]=KSplash-plugin +Comment[nn]=KSplash-programtillegg +Comment[pa]=ਕੇ-ਸਪਲੇਸ ਪਲੱਗਇਨ +Comment[pl]=Wtyczka KSplash +Comment[pt]='Plugin' do KSplash +Comment[pt_BR]=Plug-in do KSplash +Comment[ro]=Modul KSplash +Comment[ru]=Модуль KSplash +Comment[rw]=Icomeka rya K-Gukwiza +Comment[se]=KSplash-lassemoduvla +Comment[sk]=Modul KSplash +Comment[sl]=Vstavek KSplash +Comment[sr]=KSplash прикључак +Comment[sr@Latn]=KSplash priključak +Comment[sv]=Insticksprogram för startskärm +Comment[ta]=Kஸ்ப்ளாஷ் செருகு பொருள் +Comment[tg]=Мутассалкунандаи KSplash +Comment[th]=ปลั๊กอิน KSplash +Comment[tr]=KSplash Eklentisi +Comment[tt]=KSplash atlı Östämä +Comment[uk]=Втулок KSplash +Comment[uz]=KSplash plagini +Comment[uz@cyrillic]=KSplash плагини +Comment[vi]=Trình bổ sung Chào mừng KDE +Comment[wa]=Tchôke-divins KSplash (waitroûle d' enondaedje) +Comment[zh_CN]=KSplash 插件 +Comment[zh_TW]=KSplash 外掛程式 +Name=KSplashLegacy +Name[af]=KSplash Verouders +Name[be]=Старая тэма +Name[ca]=KSplash heretat +Name[cs]=Staré +Name[cy]=KCroesoEtifeddiaeth +Name[de]=KSplash mit älterem Programm +Name[eo]=Ksalutŝildotestamento +Name[et]=KSplahs Legacy +Name[hi]=के-स्प्लैश-लीजेसी +Name[it]=KSplashVecchio +Name[ne]=के स्प्लयास अवस्था +Name[pa]=ਕੇਸਪਲੇਸਲੀਜੈਂਸੀ +Name[pt_BR]=Herança do KSplash +Name[rw]=K-GukwizaUmurage +Name[sv]=Klassisk startskärm +Name[ta]=Kஸ்ப்ளாஷ் Legacy +Name[tg]=МеросиKSplash +Name[vi]=Chào mừng KDE Gia tài +Name[wa]=KSplashTayons +ServiceTypes=KSplash/Plugin +X-KDE-Library=ksplashdefault +X-KSplash-Default=true +X-KSplash-PluginName=Default +X-KSplash-ObjectName=ThemeLegacy diff --git a/ksplashml/themeengine/default/main.cpp b/ksplashml/themeengine/default/main.cpp new file mode 100644 index 000000000..e1382dd37 --- /dev/null +++ b/ksplashml/themeengine/default/main.cpp @@ -0,0 +1,17 @@ +/*************************************************************************** + * Copyright Brian Ledbetter 2001-2003 * + * Copyright Ravikiran Rajagopal 2003 * + * ravi@ee.eng.ohio-state.edu * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License (version 2) as * + * published by the Free Software Foundation. (The original KSplash/ML * + * codebase (upto version 0.95.3) is BSD-licensed.) * + * * + ***************************************************************************/ + +#include + +#include "themelegacy.h" + +K_EXPORT_COMPONENT_FACTORY( ksplashdefault, KGenericFactory( "ksplash" ) ) diff --git a/ksplashml/themeengine/default/themelegacy.cpp b/ksplashml/themeengine/default/themelegacy.cpp new file mode 100644 index 000000000..35d47241b --- /dev/null +++ b/ksplashml/themeengine/default/themelegacy.cpp @@ -0,0 +1,310 @@ +/*************************************************************************** + * Copyright Brian Ledbetter 2001-2003 * + * Copyright Ravikiran Rajagopal 2003 * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License (version 2) as * + * published by the Free Software Foundation. (The original KSplash/ML * + * codebase (upto version 0.95.3) is BSD-licensed.) * + * * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "objkstheme.h" +#include "themeengine.h" +#include "themelegacy.h" +#include "themelegacy.moc" + +DefaultConfig::DefaultConfig( QWidget *parent, KConfig *config ) + :ThemeEngineConfig( parent, config ) +{ + mConfig->setGroup( QString("KSplash Theme: Default") ); + QVBox *hbox = new QVBox( this ); + mFlash = new QCheckBox( i18n("Icons flash while they are starting"), hbox ); + mFlash->setChecked( mConfig->readBoolEntry("Icons Flashing",true) ); + mAlwaysShow = new QCheckBox( i18n("Always show progress bar"), hbox ); + mAlwaysShow->setChecked( mConfig->readBoolEntry("Always Show Progress",true) ); +} + +void DefaultConfig::save() +{ + kdDebug() << "DefaultConfig::save()" << endl; + mConfig->setGroup( QString("KSplash Theme: Default") ); + mConfig->writeEntry( "Icons Flashing", mFlash->isChecked() ); + mConfig->writeEntry( "Always Show Progress", mAlwaysShow->isChecked() ); + mConfig->sync(); +} + +#define BIDI 0 + +ThemeDefault::ThemeDefault( QWidget *parent, const char *name, const QStringList &args ) + :ThemeEngine( parent, name, args ) +{ + + mActivePixmap = mInactivePixmap = 0L; + mState = 0; + + _readSettings(); + _initUi(); + + if( mIconsFlashing ) + { + mFlashTimer = new QTimer( this ); + connect( mFlashTimer, SIGNAL(timeout()), this, SLOT(flash()) ); + mFlashPixmap1 = new QPixmap(); + mFlashPixmap2 = new QPixmap(); + + } + else + { + mFlashTimer = 0L; + mFlashPixmap1 = 0L; + mFlashPixmap2 = 0L; + } +} + +ThemeDefault::~ThemeDefault() +{ + delete mFlashPixmap1; + delete mFlashPixmap2; +} + +void ThemeDefault::_initUi() +{ + QString resource_prefix; + + QVBox *vbox = new QVBox( this ); + vbox->setBackgroundMode(NoBackground); + + + QString activePix, inactivePix; +#if BIDI + if ( QApplication::reverseLayout() ) + { + activePix = _findPicture(QString("splash_active_bar_bidi.png")); + inactivePix = _findPicture(QString("splash_inactive_bar_bidi.png")); + } + else +#endif + { + activePix = _findPicture(QString("splash_active_bar.png")); + inactivePix = _findPicture(QString("splash_inactive_bar.png")); + } + kdDebug() << "Inactive pixmap: " << inactivePix << endl; + kdDebug() << "Active pixmap: " << activePix << endl; + + mActivePixmap = new QPixmap( activePix ); + mInactivePixmap = new QPixmap( inactivePix ); + + if (mActivePixmap->isNull()) + { + mActivePixmap->resize(200,100); + mActivePixmap->fill(Qt::blue); + } + if (mInactivePixmap->isNull()) + { + mInactivePixmap->resize(200,100); + mInactivePixmap->fill(Qt::black); + } + + QPixmap tlimage( _findPicture(QString("splash_top.png")) ); + if (tlimage.isNull()) + { + tlimage.resize(200,100); + tlimage.fill(Qt::blue); + } + QLabel *top_label = new QLabel( vbox ); + top_label->setPixmap( tlimage ); + top_label->setFixedSize( tlimage.width(), tlimage.height() ); + top_label->setBackgroundMode(NoBackground); + + mBarLabel = new QLabel( vbox ); + mBarLabel->setPixmap(*mInactivePixmap); + mBarLabel->setBackgroundMode(NoBackground); + + QPixmap blimage( _findPicture(QString("splash_bottom.png")) ); + if (blimage.isNull()) + { + blimage.resize(200,100); + blimage.fill(Qt::black); + } + QLabel *bottom_label = new QLabel( vbox ); + bottom_label->setPaletteBackgroundPixmap( blimage ); + + + mLabel = new QLabel( bottom_label ); + mLabel->setBackgroundOrigin( QWidget::ParentOrigin ); + mLabel->setPaletteForegroundColor( mLabelForeground ); + mLabel->setPaletteBackgroundPixmap( blimage ); + QFont f(mLabel->font()); + f.setBold(TRUE); + mLabel->setFont(f); + + mProgressBar = new KProgress( mLabel ); + int h, s, v; + mLabelForeground.getHsv( &h, &s, &v ); + mProgressBar->setPalette( QPalette( v > 128 ? black : white )); + mProgressBar->setBackgroundOrigin( QWidget::ParentOrigin ); + mProgressBar->setPaletteBackgroundPixmap( blimage ); + + bottom_label->setFixedWidth( QMAX(blimage.width(),tlimage.width()) ); + bottom_label->setFixedHeight( mLabel->sizeHint().height()+4 ); + + // 3 pixels of whitespace between the label and the progressbar. + mLabel->resize( bottom_label->width(), bottom_label->height() ); + + mProgressBar->setFixedSize( 120, mLabel->height() ); + + if (QApplication::reverseLayout()){ + mProgressBar->move( 2, 0 ); +// mLabel->move( mProgressBar->width() + 4, 0); + } + else{ + mProgressBar->move( bottom_label->width() - mProgressBar->width() - 4, 0); + mLabel->move( 2, 0 ); + } + + mProgressBar->hide(); + + setFixedWidth( mInactivePixmap->width() ); + setFixedHeight( mInactivePixmap->height() + + top_label->height() + bottom_label->height() ); + + const QRect rect = kapp->desktop()->screenGeometry( mTheme->xineramaScreen() ); + // KGlobalSettings::splashScreenDesktopGeometry(); cannot be used here. + // kdDebug() << "ThemeDefault::_initUi" << rect << endl; + + move( rect.x() + (rect.width() - size().width())/2, + rect.y() + (rect.height() - size().height())/2 ); +} + +// Attempt to find overrides elsewhere? +void ThemeDefault::_readSettings() +{ + if( !mTheme ) + return; + + KConfig *cfg = mTheme->themeConfig(); + if( !cfg ) + return; + + cfg->setGroup( QString("KSplash Theme: %1").arg(mTheme->theme()) ); + + mIconsFlashing = cfg->readBoolEntry( "Icons Flashing", true ); + QColor df(Qt::white); + mLabelForeground = cfg->readColorEntry( "Label Foreground", &df ); +} + +/* + * ThemeDefault::slotUpdateState(): IF in Default mode, THEN adjust the bar + * pixmap label. Whee, phun! + * + * A similar method exists in the old KSplash. + */ +void ThemeDefault::slotUpdateState() +{ + if( mState > 8 ) + mState = 8; + + if( mIconsFlashing ) + { + + *mFlashPixmap1 = updateBarPixmap( mState ); + *mFlashPixmap2 = updateBarPixmap( mState+1 ); + mBarLabel->setPixmap(*mFlashPixmap2); + mFlashTimer->stop(); + + if( mState < 8 ) + mFlashTimer->start(400); + } + else + mBarLabel->setPixmap( updateBarPixmap( mState ) ); + + mState++; +} + +/* + * ThemeDefault::updateBarPixmap(): IF in Default mode, THEN adjust the + * bar pixmap to reflect the current state. WARNING! KSplash Default + * does NOT support our "Restoring Session..." state. We will need + * to reflect that somehow. + */ +QPixmap ThemeDefault::updateBarPixmap( int state ) +{ + int offs; + + QPixmap x; + if( !mActivePixmap ) return( x ); +#if BIDI + + + if( QApplication::reverseLayout() ) + { + if ( state > 7 ) + return ( x ); + } +#endif + + offs = state * 58; + if (state == 3) + offs += 8; + else if (state == 6) + offs -= 8; + + QPixmap tmp(*mActivePixmap); + QPainter p(&tmp); +#if BIDI + if ( QApplication::reverseLayout() ) + p.drawPixmap(0, 0, *mInactivePixmap, 0, 0, tmp.width()-offs ); + else +#endif + p.drawPixmap(offs, 0, *mInactivePixmap, offs, 0); + return tmp ; +} + +void ThemeDefault::flash() +{ + if( !mIconsFlashing ) + return; + QPixmap *swap = mFlashPixmap1; + mFlashPixmap1 = mFlashPixmap2; + mFlashPixmap2 = swap; + mBarLabel->setPixmap(*mFlashPixmap2); +} + +QString ThemeDefault::_findPicture( const QString &pic ) +{ + // Don't use ObjKsTheme::locateThemeData here for compatibility reasons. + QString f = pic; + if (mTheme->loColor()) + f = QString("locolor/")+f; + //kdDebug() << "Searching for " << f << endl; + //kdDebug() << "Theme directory: " << mTheme->themeDir() << endl; + //kdDebug() << "Theme name: " << mTheme->theme() << endl; + QString p = QString::null; + if ((p = locate("appdata",mTheme->themeDir()+f)).isEmpty()) + if ((p = locate("appdata",mTheme->themeDir()+"pics/"+f)).isEmpty()) + if ((p = locate("appdata", QString("pics/")+mTheme->theme()+"/"+f)).isEmpty()) + if ((p = locate("appdata",f)).isEmpty()) + if ((p = locate("appdata",QString("pics/")+f)).isEmpty()) + if ((p = locate("data",QString("pics/")+f)).isEmpty()) { + ; // No more places to search + } + return p; +} diff --git a/ksplashml/themeengine/default/themelegacy.h b/ksplashml/themeengine/default/themelegacy.h new file mode 100644 index 000000000..b0a6138a9 --- /dev/null +++ b/ksplashml/themeengine/default/themelegacy.h @@ -0,0 +1,103 @@ +/*************************************************************************** + * Copyright Brian Ledbetter 2001-2003 * + * Copyright Ravikiran Rajagopal 2003 * + * ravi@ee.eng.ohio-state.edu * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License (version 2) as * + * published by the Free Software Foundation. (The original KSplash/ML * + * codebase (upto version 0.95.3) is BSD-licensed.) * + * * + ***************************************************************************/ + +#ifndef __THEMELEGACY_H__ +#define __THEMELEGACY_H__ + +#include + +#include +#include + +#include "themeengine.h" +class QPixmap; +class QTimer; + +class QCheckBox; + +class DefaultConfig: public ThemeEngineConfig +{ + Q_OBJECT +public: + DefaultConfig( QWidget *, KConfig * ); + void save(); +protected: + QCheckBox *mFlash, *mAlwaysShow; +}; + +/** + * @short Traditional KDE splash screen. + */ +class ObjKsTheme; +class KDE_EXPORT ThemeDefault : public ThemeEngine +{ + Q_OBJECT +public: + ThemeDefault( QWidget *, const char *, const QStringList& ); + virtual ~ThemeDefault(); + + inline const DefaultConfig *config( QWidget *p, KConfig *c ) + { + return new DefaultConfig( p, c ); + }; + + static QStringList names() + { + QStringList Names; + Names << "Default"; + Names << "Classic"; + Names << "Klassic"; + return( Names ); + } + +public slots: + inline void slotSetText( const QString& s ) + { + if( mLabel ) + mLabel->setText( s ); + slotUpdateState(); + }; + inline void slotUpdateSteps( int s ) + { + mProgressBar->show(); + mProgressBar->setTotalSteps( s ); + } + inline void slotUpdateProgress( int i ) + { + mProgressBar->setProgress( i ); + } + + +private slots: + void slotUpdateState(); + QPixmap updateBarPixmap( int ); + void flash(); + +private: + void _initUi(); + void _readSettings(); + QString _findPicture( const QString &pic ); + + // Configurable Options + bool mIconsFlashing; + QColor mLabelForeground; + + // Internals. + KProgress *mProgressBar; + QLabel *mLabel, *mBarLabel; + QPixmap *mActivePixmap, *mInactivePixmap; + int mState; + QTimer *mFlashTimer; + QPixmap *mFlashPixmap1, *mFlashPixmap2; +}; + +#endif -- cgit v1.2.1