Merge remote-tracking branch 'origin/KDE/4.7'

Conflicts:
	plasma/CMakeLists.txt
This commit is contained in:
David Faure 2011-11-16 13:33:47 +01:00
commit 7f2b0b44c0
9 changed files with 103 additions and 15 deletions

View File

@ -7,6 +7,8 @@ if(KDE_PLATFORM_FEATURE_BINARY_COMPATIBLE_FEATURE_REDUCTION)
set(PLASMA_NO_SOLID TRUE) set(PLASMA_NO_SOLID TRUE)
set(PLASMA_NO_KIO TRUE) set(PLASMA_NO_KIO TRUE)
set(PLASMA_NO_PACKAGEKIT TRUE) set(PLASMA_NO_PACKAGEKIT TRUE)
set(PLASMA_NO_KUTILS TRUE)
set(PLASMA_NO_GLOBAL_SHORTCUTS TRUE)
endif(KDE_PLATFORM_FEATURE_BINARY_COMPATIBLE_FEATURE_REDUCTION) endif(KDE_PLATFORM_FEATURE_BINARY_COMPATIBLE_FEATURE_REDUCTION)
if(NOT Q_WS_X11) if(NOT Q_WS_X11)
@ -18,7 +20,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${KDE4_KDEUI_INCLUDES} ${KDE4_KDEUI_INCLUDES}
${CMAKE_SOURCE_DIR}/experimental/libkdeclarative ${CMAKE_SOURCE_DIR}/experimental/libkdeclarative
${CMAKE_BINARY_DIR}/experimental/libkdeclarative ${CMAKE_BINARY_DIR}/experimental/libkdeclarative
${CMAKE_SOURCE_DIR}/threadweaver/ ${CMAKE_SOURCE_DIR}/threadweaver
${CMAKE_SOURCE_DIR}/plasma/extenders ${CMAKE_SOURCE_DIR}/plasma/extenders
${CMAKE_SOURCE_DIR}/plasma/remote ${CMAKE_SOURCE_DIR}/plasma/remote
${CMAKE_SOURCE_DIR}/plasma/private/qtjolie-branch/qtjolie ${CMAKE_SOURCE_DIR}/plasma/private/qtjolie-branch/qtjolie
@ -47,10 +49,17 @@ if(NOT PLASMA_NO_SOLID)
set(PLASMA_EXTRA_LIBS ${PLASMA_EXTRA_LIBS} ${KDE4_SOLID_LIBS}) set(PLASMA_EXTRA_LIBS ${PLASMA_EXTRA_LIBS} ${KDE4_SOLID_LIBS})
endif(NOT PLASMA_NO_SOLID) endif(NOT PLASMA_NO_SOLID)
<<<<<<< HEAD
if(NOT PLASMA_NO_PACKAGEKIT) if(NOT PLASMA_NO_PACKAGEKIT)
add_definitions(-DPLASMA_ENABLE_PACKAGEKIT_SUPPORT=1) add_definitions(-DPLASMA_ENABLE_PACKAGEKIT_SUPPORT=1)
set(PLASMA_EXTRA_LIBS ${PLASMA_EXTRA_LIBS} ${QT_QTDBUS_LIBRARY}) set(PLASMA_EXTRA_LIBS ${PLASMA_EXTRA_LIBS} ${QT_QTDBUS_LIBRARY})
endif(NOT PLASMA_NO_PACKAGEKIT) endif(NOT PLASMA_NO_PACKAGEKIT)
=======
if (NOT PLASMA_NO_KUTILS)
include_directories(${CMAKE_SOURCE_DIR}/kutils)
set(PLASMA_EXTRA_LIBS ${PLASMA_EXTRA_LIBS} ${KDE4_KUTILS_LIBS})
endif(NOT PLASMA_NO_KUTILS)
>>>>>>> origin/KDE/4.7
if(QCA2_FOUND) if(QCA2_FOUND)
include_directories(${QCA2_INCLUDE_DIR}) include_directories(${QCA2_INCLUDE_DIR})
@ -272,7 +281,7 @@ kde4_add_library(plasma ${LIBRARY_TYPE} ${plasma_LIB_SRCS})
#add kdeclarative after the 4.7 release #add kdeclarative after the 4.7 release
target_link_libraries(plasma ${QT_QTUITOOLS_LIBRARY} ${QT_QTWEBKIT_LIBRARY} target_link_libraries(plasma ${QT_QTUITOOLS_LIBRARY} ${QT_QTWEBKIT_LIBRARY}
${QT_QTSCRIPT_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTSQL_LIBRARY} ${QT_QTDECLARATIVE_LIBRARY} ${QT_QTSCRIPT_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTSQL_LIBRARY} ${QT_QTDECLARATIVE_LIBRARY}
${KDE4_KDEUI_LIBS} kdnssd threadweaver ${PLASMA_EXTRA_LIBS}) ${KDE4_KDEUI_LIBS} ${KDE4_KDNSSD_LIBS} ${KDE4_THREADWEAVER_LIBS} ${PLASMA_EXTRA_LIBS})
if(QCA2_FOUND) if(QCA2_FOUND)
target_link_libraries(plasma ${QCA2_LIBRARIES}) target_link_libraries(plasma ${QCA2_LIBRARIES})

View File

@ -54,6 +54,7 @@
#include <kauthorized.h> #include <kauthorized.h>
#include <kcolorscheme.h> #include <kcolorscheme.h>
#include <kdialog.h> #include <kdialog.h>
#include <kdesktopfile.h>
#include <kicon.h> #include <kicon.h>
#include <kiconloader.h> #include <kiconloader.h>
#include <kkeysequencewidget.h> #include <kkeysequencewidget.h>
@ -65,6 +66,13 @@
#include <kwindowsystem.h> #include <kwindowsystem.h>
#include <kpushbutton.h> #include <kpushbutton.h>
#ifndef PLASMA_NO_KUTILS
#include <kcmoduleinfo.h>
#include <kcmoduleproxy.h>
#else
#include <kcmodule.h>
#endif
#ifndef PLASMA_NO_SOLID #ifndef PLASMA_NO_SOLID
#include <solid/powermanagement.h> #include <solid/powermanagement.h>
#endif #endif
@ -1882,22 +1890,62 @@ void Applet::showConfigurationInterface()
} }
d->publishUI.publishCheckbox = 0; d->publishUI.publishCheckbox = 0;
if (d->package && d->configLoader) { if (d->package) {
KConfigDialog *dialog = 0; KConfigDialog *dialog = 0;
QString uiFile = d->package->filePath("mainconfigui"); const QString uiFile = d->package->filePath("mainconfigui");
if (!uiFile.isEmpty()) { KDesktopFile df(d->package->path() + "/metadata.desktop");
const QStringList kcmPlugins = df.desktopGroup().readEntry("X-Plasma-ConfigPlugins", QStringList());
if (!uiFile.isEmpty() || !kcmPlugins.isEmpty()) {
KConfigSkeleton *configLoader = d->configLoader ? d->configLoader : new KConfigSkeleton(0);
dialog = new AppletConfigDialog(0, d->configDialogId(), configLoader);
dialog->setWindowTitle(d->configWindowTitle());
dialog->setAttribute(Qt::WA_DeleteOnClose, true);
bool hasPages = false;
QFile f(uiFile); QFile f(uiFile);
QUiLoader loader; QUiLoader loader;
QWidget *w = loader.load(&f); QWidget *w = loader.load(&f);
if (w) { if (w) {
dialog = new AppletConfigDialog(0, d->configDialogId(), d->configLoader);
dialog->setWindowTitle(d->configWindowTitle());
dialog->setAttribute(Qt::WA_DeleteOnClose, true);
dialog->addPage(w, i18n("Settings"), icon(), i18n("%1 Settings", name())); dialog->addPage(w, i18n("Settings"), icon(), i18n("%1 Settings", name()));
hasPages = true;
}
foreach (const QString &kcm, kcmPlugins) {
#ifndef PLASMA_NO_KUTILS
KCModuleProxy *module = new KCModuleProxy(kcm);
if (module->realModule()) {
dialog->addPage(module, module->moduleInfo().moduleName(), module->moduleInfo().icon());
hasPages = true;
} else {
delete module;
}
#else
KService::Ptr service = KService::serviceByStorageId(kcm);
if (service) {
QString error;
KCModule *module = service->createInstance<KCModule>(dialog, QVariantList(), &error);
if (module) {
connect(module, SIGNAL(changed(bool)), dialog, SLOT(settingsModified(bool)));
dialog->addPage(module, service->name(), service->icon());
hasPages = true;
} else {
#ifndef NDEBUG
kDebug() << "failed to load kcm" << kcm << "for" << name();
#endif
}
}
#endif
}
if (hasPages) {
d->addGlobalShortcutsPage(dialog); d->addGlobalShortcutsPage(dialog);
d->addPublishPage(dialog); d->addPublishPage(dialog);
dialog->show(); dialog->show();
} else {
delete dialog;
dialog = 0;
} }
} }
@ -1987,6 +2035,7 @@ void AppletPrivate::addStandardConfigurationPages(KConfigDialog *dialog)
void AppletPrivate::addGlobalShortcutsPage(KConfigDialog *dialog) void AppletPrivate::addGlobalShortcutsPage(KConfigDialog *dialog)
{ {
#ifndef PLASMA_NO_GLOBAL_SHORTCUTS
if (isContainment) { if (isContainment) {
return; return;
} }
@ -2006,6 +2055,7 @@ void AppletPrivate::addGlobalShortcutsPage(KConfigDialog *dialog)
QObject::connect(dialog, SIGNAL(applyClicked()), q, SLOT(configDialogFinished()), Qt::UniqueConnection); QObject::connect(dialog, SIGNAL(applyClicked()), q, SLOT(configDialogFinished()), Qt::UniqueConnection);
QObject::connect(dialog, SIGNAL(okClicked()), q, SLOT(configDialogFinished()), Qt::UniqueConnection); QObject::connect(dialog, SIGNAL(okClicked()), q, SLOT(configDialogFinished()), Qt::UniqueConnection);
#endif
} }
void AppletPrivate::addPublishPage(KConfigDialog *dialog) void AppletPrivate::addPublishPage(KConfigDialog *dialog)

View File

@ -5,4 +5,6 @@
#cmakedefine PLASMA_NO_KNEWSTUFF #cmakedefine PLASMA_NO_KNEWSTUFF
#cmakedefine PLASMA_NO_SOLID #cmakedefine PLASMA_NO_SOLID
#cmakedefine PLASMA_NO_KIO #cmakedefine PLASMA_NO_KIO
#cmakedefine PLASMA_NO_KUTILS
#cmakedefine PLASMA_NO_GLOBAL_SHORTCUTS

View File

@ -304,6 +304,18 @@ void FocusIndicator::syncGeometry()
} }
} }
void FocusIndicator::setFrameSvg(FrameSvg *frameSvg)
{
if (m_background != frameSvg) {
m_background = frameSvg;
}
}
FrameSvg *FocusIndicator::frameSvg() const
{
return m_background;
}
} }
#include <focusindicator_p.moc> #include <focusindicator_p.moc>

View File

@ -43,6 +43,9 @@ public:
void animateVisibility(const bool visible); void animateVisibility(const bool visible);
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
void setFrameSvg(FrameSvg *svg);
FrameSvg *frameSvg() const;
protected: protected:
bool eventFilter(QObject *watched, QEvent *event); bool eventFilter(QObject *watched, QEvent *event);
void resizeEvent(QGraphicsSceneResizeEvent *event); void resizeEvent(QGraphicsSceneResizeEvent *event);

View File

@ -56,6 +56,7 @@ public:
FrameSvg *background; FrameSvg *background;
FrameSvg *lineEditBackground; FrameSvg *lineEditBackground;
FocusIndicator *focusIndicator;
int animId; int animId;
qreal opacity; qreal opacity;
QRectF activeRect; QRectF activeRect;
@ -99,6 +100,13 @@ void ComboBoxPrivate::syncBorders()
q->setFont(Theme::defaultTheme()->font(Theme::DefaultFont)); q->setFont(Theme::defaultTheme()->font(Theme::DefaultFont));
customFont = false; customFont = false;
} }
if (q->nativeWidget()->isEditable()) {
focusIndicator->setFrameSvg(lineEditBackground);
} else {
focusIndicator->setFrameSvg(background);
}
focusIndicator->setFlag(QGraphicsItem::ItemStacksBehindParent, !q->nativeWidget()->isEditable() || !lineEditBackground->hasElement("hint-focus-over-base"));
} }
@ -119,7 +127,7 @@ ComboBox::ComboBox(QGraphicsWidget *parent)
d->style = Style::sharedStyle(); d->style = Style::sharedStyle();
new FocusIndicator(this, d->background); d->focusIndicator = new FocusIndicator(this, d->background);
setNativeWidget(new KComboBox); setNativeWidget(new KComboBox);
connect(d->background, SIGNAL(repaintNeeded()), SLOT(syncBorders())); connect(d->background, SIGNAL(repaintNeeded()), SLOT(syncBorders()));
d->initTheming(); d->initTheming();

View File

@ -94,13 +94,14 @@ void DeclarativeWidgetPrivate::execute(const QString &fileName)
return; return;
} }
component->loadUrl(fileName);
KDeclarative kdeclarative; KDeclarative kdeclarative;
kdeclarative.setDeclarativeEngine(engine); kdeclarative.setDeclarativeEngine(engine);
kdeclarative.initialize(); kdeclarative.initialize();
//binds things like kconfig and icons //binds things like kconfig and icons
kdeclarative.setupBindings(); kdeclarative.setupBindings();
component->loadUrl(fileName);
scriptEngine = kdeclarative.scriptEngine(); scriptEngine = kdeclarative.scriptEngine();
registerDataEngineMetaTypes(scriptEngine); registerDataEngineMetaTypes(scriptEngine);
@ -194,9 +195,6 @@ DeclarativeWidget::DeclarativeWidget(QGraphicsWidget *parent)
d->engine = new QDeclarativeEngine(this); d->engine = new QDeclarativeEngine(this);
d->engine->setNetworkAccessManagerFactory(new DeclarativeNetworkAccessManagerFactory); d->engine->setNetworkAccessManagerFactory(new DeclarativeNetworkAccessManagerFactory);
foreach(const QString &importPath, KGlobal::dirs()->findDirs("module", "imports")) {
d->engine->addImportPath(importPath);
}
d->component = new QDeclarativeComponent(d->engine, this); d->component = new QDeclarativeComponent(d->engine, this);
} }

View File

@ -64,7 +64,10 @@ LineEdit::LineEdit(QGraphicsWidget *parent)
d->background->setImagePath("widgets/lineedit"); d->background->setImagePath("widgets/lineedit");
d->background->setCacheAllRenderedFrames(true); d->background->setCacheAllRenderedFrames(true);
new FocusIndicator(this, d->background); FocusIndicator *indicator = new FocusIndicator(this, d->background);
if (d->background->hasElement("hint-focus-over-base")) {
indicator->setFlag(QGraphicsItem::ItemStacksBehindParent, false);
}
setNativeWidget(new KLineEdit); setNativeWidget(new KLineEdit);
} }

View File

@ -76,6 +76,9 @@ SpinBox::SpinBox(QGraphicsWidget *parent)
d->background->setImagePath("widgets/lineedit"); d->background->setImagePath("widgets/lineedit");
d->background->setCacheAllRenderedFrames(true); d->background->setCacheAllRenderedFrames(true);
if (d->background->hasElement("hint-focus-over-base")) {
d->focusIndicator->setFlag(QGraphicsItem::ItemStacksBehindParent, false);
}
d->style = Plasma::Style::sharedStyle(); d->style = Plasma::Style::sharedStyle();
native->setStyle(d->style.data()); native->setStyle(d->style.data());