Merge woc branch to trunk, say good bye to old plasma, there is a lot of stuff to port
applets, please update to another revision to use the version that works green flag from aaron svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=796368
This commit is contained in:
parent
a76cce7919
commit
4467261c95
@ -4,7 +4,7 @@ include (KDE4Defaults)
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${KDEBASE_WORKSPACE_SOURCE_DIR}/libs ${CMAKE_CURRENT_SOURCE_DIR}/.. ${KDE4_INCLUDES} ${OPENGL_INCLUDE_DIR})
|
||||
|
||||
add_subdirectory(widgets)
|
||||
add_subdirectory(tests)
|
||||
#add_subdirectory(tests)
|
||||
add_definitions(-DKDE_DEFAULT_DEBUG_AREA=1209)
|
||||
|
||||
########### next target ###############
|
||||
|
@ -25,10 +25,8 @@
|
||||
#include <KDebug>
|
||||
#include <KPluginInfo>
|
||||
#include <KServiceTypeTrader>
|
||||
#include <KStandardDirs>
|
||||
#include <QTimer>
|
||||
|
||||
#include "package.h"
|
||||
#include "scripting/runnerscript.h"
|
||||
#include "searchcontext.h"
|
||||
|
||||
@ -37,31 +35,33 @@ namespace Plasma
|
||||
|
||||
class AbstractRunner::Private
|
||||
{
|
||||
public:
|
||||
public:
|
||||
bool hasMatchOptions;
|
||||
bool hasConfig;
|
||||
Priority priority;
|
||||
Speed speed;
|
||||
RunnerScript* script;
|
||||
KPluginInfo runnerDescription;
|
||||
AbstractRunner* runner;
|
||||
QTime runtime;
|
||||
int fastRuns;
|
||||
|
||||
Private(AbstractRunner* r, KService::Ptr service)
|
||||
: priority(NormalPriority),
|
||||
speed(NormalSpeed),
|
||||
script(0),
|
||||
runnerDescription(service),
|
||||
runner(r),
|
||||
fastRuns(0),
|
||||
package(0)
|
||||
fastRuns(0)
|
||||
{
|
||||
if (runnerDescription.isValid()) {
|
||||
const QString language = runnerDescription.property("X-Plasma-Language").toString();
|
||||
if (!language.isEmpty()) {
|
||||
const QString path = KStandardDirs::locate("data",
|
||||
"plasma/runners/" + runnerDescription.pluginName() + "/");
|
||||
PackageStructure::Ptr structure = Plasma::packageStructure(language, Plasma::RunnerComponent);
|
||||
structure->setPath(path);
|
||||
package = new Package(path, structure);
|
||||
QString language = runnerDescription.property("X-Plasma-Language").toString();
|
||||
|
||||
if (!language.isEmpty()) {
|
||||
script = Plasma::loadScriptEngine(language, runner);
|
||||
if (!script) {
|
||||
kDebug() << "Could not create a" << language << "ScriptEngine for the"
|
||||
<< runnerDescription.name() << "Runner.";
|
||||
delete package;
|
||||
package = 0;
|
||||
} else {
|
||||
QTimer::singleShot(0, runner, SLOT(init()));
|
||||
}
|
||||
@ -69,25 +69,14 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
bool hasMatchOptions;
|
||||
bool hasConfig;
|
||||
Priority priority;
|
||||
Speed speed;
|
||||
RunnerScript* script;
|
||||
KPluginInfo runnerDescription;
|
||||
AbstractRunner* runner;
|
||||
QTime runtime;
|
||||
int fastRuns;
|
||||
Package *package;
|
||||
|
||||
static QMutex bigLock;
|
||||
};
|
||||
|
||||
QMutex AbstractRunner::Private::bigLock;
|
||||
|
||||
AbstractRunner::AbstractRunner(QObject* parent, const QString& serviceId)
|
||||
: QObject(parent),
|
||||
d(new Private(this, KService::serviceByStorageId(serviceId)))
|
||||
AbstractRunner::AbstractRunner(QObject* parent, const QString& serviceId)
|
||||
: QObject(parent),
|
||||
d(new Private(this, KService::serviceByStorageId(serviceId)))
|
||||
{
|
||||
}
|
||||
|
||||
@ -232,11 +221,6 @@ QString AbstractRunner::runnerName() const
|
||||
return d->runnerDescription.property("X-Plasma-RunnerName").toString();
|
||||
}
|
||||
|
||||
const Package* AbstractRunner::package() const
|
||||
{
|
||||
return d->package;
|
||||
}
|
||||
|
||||
void AbstractRunner::init()
|
||||
{
|
||||
if (d->script) {
|
||||
|
@ -36,7 +36,6 @@ class KCompletion;
|
||||
namespace Plasma
|
||||
{
|
||||
|
||||
class Package;
|
||||
class RunnerScript;
|
||||
|
||||
/**
|
||||
@ -169,14 +168,6 @@ class PLASMA_EXPORT AbstractRunner : public QObject
|
||||
*/
|
||||
QString runnerName() const;
|
||||
|
||||
/**
|
||||
* Accessor for the associated Package object if any.
|
||||
* Generally, only Plasmoids come in a Package.
|
||||
*
|
||||
* @return the Package object, or 0 if none
|
||||
**/
|
||||
const Package* package() const;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Sets whether or not the the runner has options for matches
|
||||
|
250
applet.cpp
250
applet.cpp
@ -33,7 +33,10 @@
|
||||
#include <QTextDocument>
|
||||
#include <QTimer>
|
||||
#include <QUiLoader>
|
||||
#include <QLabel>
|
||||
#include <QGraphicsSceneMouseEvent>
|
||||
#include <QGraphicsLinearLayout>
|
||||
#include <QGraphicsProxyWidget>
|
||||
|
||||
#include <KIcon>
|
||||
#include <KColorScheme>
|
||||
@ -103,7 +106,6 @@ public:
|
||||
package(0),
|
||||
needsConfigOverlay(0),
|
||||
background(0),
|
||||
overlay(0),
|
||||
failureText(0),
|
||||
script(0),
|
||||
configXml(0),
|
||||
@ -133,7 +135,6 @@ public:
|
||||
DataEngineManager::self()->unload( engine );
|
||||
}
|
||||
delete background;
|
||||
delete overlay;
|
||||
delete package;
|
||||
delete configXml;
|
||||
delete shadow;
|
||||
@ -217,16 +218,6 @@ public:
|
||||
applet->setHasConfigurationInterface(true);
|
||||
}
|
||||
}
|
||||
|
||||
QSizeF contentSize(const Applet* q)
|
||||
{
|
||||
if (failureText) {
|
||||
return failureText->geometry().size();
|
||||
}
|
||||
|
||||
return q->contentSize();
|
||||
}
|
||||
|
||||
QString instanceName()
|
||||
{
|
||||
if (!appletDescription.isValid()) {
|
||||
@ -320,7 +311,6 @@ public:
|
||||
QList<QGraphicsItem*> watchedForMouseMove;
|
||||
QStringList loadedEngines;
|
||||
Plasma::SvgPanel *background;
|
||||
Plasma::SvgPanel *overlay;
|
||||
Plasma::LineEdit *failureText;
|
||||
AppletScript *script;
|
||||
ConfigXml* configXml;
|
||||
@ -640,26 +630,29 @@ bool Applet::drawStandardBackground() const
|
||||
|
||||
void Applet::setDrawStandardBackground(bool drawBackground)
|
||||
{
|
||||
if
|
||||
(drawBackground)
|
||||
{
|
||||
setWindowFlags(Qt::Window);
|
||||
}
|
||||
else
|
||||
{
|
||||
setWindowFlags(0);
|
||||
}
|
||||
if (drawBackground) {
|
||||
if (!d->background) {
|
||||
d->background = new Plasma::SvgPanel("widgets/background");
|
||||
|
||||
if (!Plasma::Theme::self()->image("widgets/overlay").isEmpty()) {
|
||||
d->overlay = new Plasma::SvgPanel("widgets/overlay");
|
||||
}
|
||||
|
||||
int left, top, right, bottom;
|
||||
d->getBorderSize(left, top, right, bottom);
|
||||
setMargins(0, 0, right, bottom);
|
||||
setContentsMargins(0, 0, right, bottom);
|
||||
updateGeometry();
|
||||
update();
|
||||
}
|
||||
} else if (d->background) {
|
||||
delete d->background;
|
||||
delete d->overlay;
|
||||
d->background = 0;
|
||||
d->overlay = 0;
|
||||
setMargins(0, 0, 0, 0);
|
||||
setContentsMargins(0, 0, 0, 0);
|
||||
updateGeometry();
|
||||
update();
|
||||
}
|
||||
@ -683,6 +676,15 @@ QString visibleFailureText(const QString& reason)
|
||||
return text;
|
||||
}
|
||||
|
||||
void Applet::paintWindowFrame ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget)
|
||||
{
|
||||
//Plasma::SvgPanel *background = new Plasma::SvgPanel("widgets/background");
|
||||
//background->paint(painter,geometry());
|
||||
setWindowFrameMargins(1,1,1,1);
|
||||
painter->setPen(QPen(Qt::red));
|
||||
painter->drawRoundedRect(geometry(),5,5);
|
||||
}
|
||||
|
||||
void Applet::setFailedToLaunch(bool failed, const QString& reason)
|
||||
{
|
||||
if (d->failed == failed) {
|
||||
@ -702,8 +704,9 @@ void Applet::setFailedToLaunch(bool failed, const QString& reason)
|
||||
|
||||
if (failed) {
|
||||
setDrawStandardBackground(true);
|
||||
Layout* failureLayout = new BoxLayout(BoxLayout::TopToBottom, this);
|
||||
failureLayout->setMargins(0, 0, 0, 0);
|
||||
|
||||
#ifdef TOPORT
|
||||
Layout* failureLayout = new BoxLayout(BoxLayout::TopToBottom, this);
|
||||
d->failureText = new LineEdit(this);
|
||||
d->failureText->setTextInteractionFlags( Qt::TextSelectableByMouse );
|
||||
d->failureText->setStyled(false);
|
||||
@ -715,8 +718,18 @@ void Applet::setFailedToLaunch(bool failed, const QString& reason)
|
||||
Theme::self()->colors())
|
||||
.brush(QPalette::Normal).color());
|
||||
failureLayout->addItem(d->failureText);
|
||||
setGeometry(QRectF(geometry().topLeft(), d->failureText->sizeHint()));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
QGraphicsLinearLayout *failureLayout = new QGraphicsLinearLayout();
|
||||
failureLayout->setContentsMargins(0, 0, 0, 0);
|
||||
QGraphicsProxyWidget * failureWidget = new QGraphicsProxyWidget(this);
|
||||
QLabel * label = new QLabel(visibleFailureText(reason));
|
||||
label->setWordWrap(true);
|
||||
failureWidget->setWidget(label);
|
||||
failureLayout->addItem(failureWidget);
|
||||
setLayout(failureLayout);
|
||||
}
|
||||
|
||||
update();
|
||||
}
|
||||
@ -739,7 +752,7 @@ void Applet::setNeedsConfiguring(bool needsConfig)
|
||||
}
|
||||
|
||||
d->needsConfigOverlay = new OverlayWidget(this);
|
||||
d->needsConfigOverlay->resize(contentSize());
|
||||
d->needsConfigOverlay->resize(boundingRect().size());
|
||||
|
||||
int zValue = 100;
|
||||
foreach (QGraphicsItem *child, QGraphicsItem::children()) {
|
||||
@ -753,7 +766,7 @@ void Applet::setNeedsConfiguring(bool needsConfig)
|
||||
PushButton* button = new PushButton(d->needsConfigOverlay);
|
||||
button->setText(i18n("Configure..."));
|
||||
connect(button, SIGNAL(clicked()), this, SLOT(showConfigurationInterface()));
|
||||
QSizeF s = button->sizeHint();
|
||||
QSizeF s = button->geometry().size();
|
||||
button->resize(s);
|
||||
button->setPos(d->needsConfigOverlay->boundingRect().width() / 2 - s.width() / 2,
|
||||
d->needsConfigOverlay->boundingRect().height() / 2 - s.height() / 2);
|
||||
@ -783,7 +796,7 @@ void Applet::flushUpdatedConstraints()
|
||||
d->pendingConstraints = NoConstraint;
|
||||
|
||||
if (c & Plasma::SizeConstraint && d->needsConfigOverlay) {
|
||||
d->needsConfigOverlay->setGeometry(QRectF(QPointF(0, 0), contentSize()));
|
||||
d->needsConfigOverlay->setGeometry(QRectF(QPointF(0, 0), boundingRect().size()));
|
||||
// FIXME:: rather horrible hack to work around the fact we don't have spacers
|
||||
// for layouts, and with WoC coming i'd rather not expend effort there
|
||||
QGraphicsItem * button = d->needsConfigOverlay->QGraphicsItem::children().first();
|
||||
@ -852,20 +865,6 @@ int Applet::type() const
|
||||
return Type;
|
||||
}
|
||||
|
||||
QRectF Applet::boundingRect() const
|
||||
{
|
||||
QRectF rect = QRectF(QPointF(0,0), d->contentSize(this));
|
||||
|
||||
int left;
|
||||
int right;
|
||||
int top;
|
||||
int bottom;
|
||||
|
||||
d->getBorderSize(left, top, right, bottom);
|
||||
//kDebug() << "Background , Border size" << d->background << left << top << right << bottom;
|
||||
return rect.adjusted(-left, -top, right, bottom);
|
||||
}
|
||||
|
||||
QPainterPath Applet::shape() const
|
||||
{
|
||||
if (isContainment()) {
|
||||
@ -875,21 +874,6 @@ QPainterPath Applet::shape() const
|
||||
return Plasma::roundedRectangle(boundingRect().adjusted(-2, -2, 2, 2), 10);
|
||||
}
|
||||
|
||||
QSizeF Applet::sizeHint() const
|
||||
{
|
||||
int left = 0;
|
||||
int right = 0;
|
||||
int top = 0;
|
||||
int bottom = 0;
|
||||
|
||||
d->getBorderSize(left, top, right, bottom);
|
||||
QSizeF borderSize = QSizeF(left + right, top + bottom);
|
||||
|
||||
//kDebug() << "Applet content size hint: " << contentSizeHint() << "plus our borders" << left << right << top << bottom;
|
||||
|
||||
return contentSizeHint() + QSizeF(left + right, top + bottom);
|
||||
}
|
||||
|
||||
Qt::Orientations Applet::expandingDirections() const
|
||||
{
|
||||
if (d->square) {
|
||||
@ -975,7 +959,7 @@ void Applet::paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *opti
|
||||
coption.view = v;
|
||||
}
|
||||
|
||||
paintInterface(painter, &coption, QRect(QPoint(0,0), d->contentSize(this).toSize()));
|
||||
paintInterface(painter, &coption, QRect(QPoint(0,0), boundingRect().size().toSize()));
|
||||
}
|
||||
|
||||
painter->restore();
|
||||
@ -983,14 +967,7 @@ void Applet::paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *opti
|
||||
}
|
||||
|
||||
//kDebug() << "paint interface of" << (QObject*) this;
|
||||
paintInterface(painter, option, QRect(QPoint(0,0), d->contentSize(this).toSize()));
|
||||
}
|
||||
|
||||
if (d->overlay &&
|
||||
formFactor() != Plasma::Vertical &&
|
||||
formFactor() != Plasma::Horizontal) {
|
||||
//kDebug() << "option rect is" << option->rect;
|
||||
d->overlay->paint(painter, option->rect);
|
||||
paintInterface(painter, option, QRect(QPoint(0,0), boundingRect().size().toSize()));
|
||||
}
|
||||
|
||||
painter->restore();
|
||||
@ -1048,124 +1025,6 @@ Location Applet::location() const
|
||||
return c->location();
|
||||
}
|
||||
|
||||
QRectF Applet::contentRect() const
|
||||
{
|
||||
return QRectF(QPointF(0, 0), contentSize());
|
||||
}
|
||||
|
||||
QSizeF Applet::contentSize() const
|
||||
{
|
||||
int top, left, right, bottom;
|
||||
d->getBorderSize(left, top, right, bottom);
|
||||
|
||||
// kDebug() << "Geometry size: " << geometry().size();
|
||||
// kDebug() << "Borders: " << left << top << right << bottom;
|
||||
|
||||
return (geometry().size() - QSizeF(left + right, top + bottom)).expandedTo(QSizeF(0, 0));
|
||||
}
|
||||
|
||||
void Applet::setContentSize(const QSizeF &size)
|
||||
{
|
||||
int top, left, right, bottom;
|
||||
d->getBorderSize(left, top, right, bottom);
|
||||
|
||||
resize(size + QSizeF(left + right, top + bottom));
|
||||
}
|
||||
|
||||
void Applet::setContentSize(int width, int height)
|
||||
{
|
||||
setContentSize(QSizeF(width, height));
|
||||
}
|
||||
|
||||
QSizeF Applet::contentSizeHint() const
|
||||
{
|
||||
static bool checkingScript = false;
|
||||
|
||||
if (!checkingScript && d->script) {
|
||||
checkingScript = true;
|
||||
return d->script->contentSizeHint();
|
||||
}
|
||||
|
||||
checkingScript = false;
|
||||
QSizeF size;
|
||||
if (layout()) {
|
||||
size = layout()->sizeHint();
|
||||
} else {
|
||||
size = contentSize();
|
||||
}
|
||||
|
||||
QSizeF max = maximumContentSize();
|
||||
size = size.boundedTo(max);
|
||||
if (d->square) {
|
||||
//kDebug() << "SizeHintIn: " << (QObject*)this << size;
|
||||
switch (formFactor()) {
|
||||
case Plasma::Vertical:
|
||||
if (size.width() > max.height()) {
|
||||
size.setWidth(max.height());
|
||||
}
|
||||
|
||||
size.setHeight(size.width());
|
||||
case Plasma::Horizontal:
|
||||
case Plasma::Planar:
|
||||
case Plasma::MediaCenter:
|
||||
if (size.height() > max.width()) {
|
||||
size.setHeight(max.width());
|
||||
}
|
||||
|
||||
size.setWidth(size.height());
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
//kDebug() << "SizeHintOut: " << size;
|
||||
return size;
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
void Applet::setMinimumContentSize(const QSizeF &minSize)
|
||||
{
|
||||
int top, left, right, bottom;
|
||||
d->getBorderSize(left, top, right, bottom);
|
||||
|
||||
setMinimumSize(minSize + QSizeF(left + right, top + bottom));
|
||||
}
|
||||
|
||||
void Applet::setMinimumContentSize(int minWidth, int minHeight)
|
||||
{
|
||||
setMinimumContentSize(QSizeF(minWidth, minHeight));
|
||||
}
|
||||
|
||||
QSizeF Applet::minimumContentSize() const
|
||||
{
|
||||
int top, left, right, bottom;
|
||||
d->getBorderSize(left, top, right, bottom);
|
||||
|
||||
return minimumSize() - QSizeF(left + right, top + bottom);
|
||||
}
|
||||
|
||||
void Applet::setMaximumContentSize(const QSizeF &maxSize)
|
||||
{
|
||||
int top, left, right, bottom;
|
||||
d->getBorderSize(left, top, right, bottom);
|
||||
|
||||
setMaximumSize(maxSize + QSizeF(left + right, top + bottom));
|
||||
}
|
||||
|
||||
void Applet::setMaximumContentSize(int maxWidth, int maxHeight)
|
||||
{
|
||||
setMaximumContentSize(QSizeF(maxWidth, maxHeight));
|
||||
}
|
||||
|
||||
QSizeF Applet::maximumContentSize() const
|
||||
{
|
||||
int top, left, right, bottom;
|
||||
d->getBorderSize(left, top, right, bottom);
|
||||
|
||||
return maximumSize() - QSizeF(left + right, top + bottom);
|
||||
}
|
||||
|
||||
Qt::AspectRatioMode Applet::aspectRatioMode() const
|
||||
{
|
||||
return d->aspectRatioMode;
|
||||
@ -1583,27 +1442,10 @@ QVariant Applet::itemChange(GraphicsItemChange change, const QVariant &value)
|
||||
|
||||
void Applet::setGeometry(const QRectF& geometry)
|
||||
{
|
||||
QSizeF s = size();
|
||||
QPointF p = pos();
|
||||
|
||||
Widget::setGeometry(geometry);
|
||||
//kDebug() << s << size();
|
||||
if (s != size()) {
|
||||
if (d->background) {
|
||||
//kDebug() << "setting background to" << size();
|
||||
d->background->resize(size());
|
||||
}
|
||||
|
||||
if (d->overlay) {
|
||||
//kDebug() << "setting overlay to" << size();
|
||||
d->overlay->resize(size());
|
||||
}
|
||||
|
||||
updateConstraints(Plasma::SizeConstraint);
|
||||
emit geometryChanged();
|
||||
} else if (p != pos()) {
|
||||
emit geometryChanged();
|
||||
}
|
||||
updateConstraints(Plasma::SizeConstraint);
|
||||
//FIXME see for who is connect to this???
|
||||
//emit geometryChanged();
|
||||
}
|
||||
|
||||
void Applet::raise()
|
||||
|
106
applet.h
106
applet.h
@ -228,90 +228,8 @@ class PLASMA_EXPORT Applet : public Widget
|
||||
* @see Plasma::Location
|
||||
*/
|
||||
virtual Location location() const;
|
||||
|
||||
/**
|
||||
* Returns the rect that the contents are positioned within in local coordinates
|
||||
*/
|
||||
QRectF contentRect() const;
|
||||
|
||||
/**
|
||||
* Returns the area within which contents can be painted.
|
||||
**/
|
||||
QSizeF contentSize() const;
|
||||
|
||||
/**
|
||||
* Sets the content size.
|
||||
*
|
||||
* @note Normally an applet should never
|
||||
* call this directly except in the constructor to provide a default
|
||||
* size
|
||||
*
|
||||
* @param size the new size of the contents area
|
||||
*/
|
||||
void setContentSize(const QSizeF &size);
|
||||
|
||||
/**
|
||||
* Sets the content size.
|
||||
*
|
||||
* @note Normally an applet should never
|
||||
* call this directly except in the constructor to provide a default
|
||||
* size
|
||||
*
|
||||
* @param width the new width of the contents area
|
||||
* @param height the new height of the contents area
|
||||
*/
|
||||
void setContentSize(int width, int height);
|
||||
|
||||
/**
|
||||
* Returns an ideal size for the applet's content.
|
||||
* Applets can re-implement this to provide a suitable size based
|
||||
* on their contents.
|
||||
*
|
||||
* Unlike sizeHint() , contentSizeHint() does not include the
|
||||
* size of any borders surrounding the content area.
|
||||
*
|
||||
* The default implementation returns the sizeHint() of the applet's
|
||||
* layout if it has one, or a null size otherwise.
|
||||
*/
|
||||
virtual QSizeF contentSizeHint() const;
|
||||
|
||||
/**
|
||||
* Sets the minimum size for the content of this applet
|
||||
*/
|
||||
void setMinimumContentSize(const QSizeF &minSize);
|
||||
|
||||
/**
|
||||
* Sets the minimum size for the content of this applet
|
||||
*
|
||||
* @param minWidth the new minimum width of the contents area
|
||||
* @param minHeight the new minimum height of the contents area
|
||||
*/
|
||||
void setMinimumContentSize(int minWidth, int minHeight);
|
||||
|
||||
/**
|
||||
* Get the minimum size for the content of this applet
|
||||
*/
|
||||
QSizeF minimumContentSize() const;
|
||||
|
||||
/**
|
||||
* Sets the maximum size for the content of this applet.
|
||||
*/
|
||||
void setMaximumContentSize(const QSizeF &maxSize);
|
||||
|
||||
/**
|
||||
* Sets the maximum size for the content of this applet
|
||||
*
|
||||
* @param maxWidth the new maximum width of the contents area
|
||||
* @param maxHeight the new maximum height of the contents area
|
||||
*/
|
||||
void setMaximumContentSize(int maxWidth, int maxHeight);
|
||||
|
||||
/**
|
||||
* Get the maximum size for the content of this applet
|
||||
*/
|
||||
QSizeF maximumContentSize() const;
|
||||
|
||||
/**
|
||||
|
||||
/**
|
||||
* @return the prefered aspect ratio mode for placement and resizing
|
||||
*/
|
||||
Qt::AspectRatioMode aspectRatioMode() const;
|
||||
@ -492,6 +410,8 @@ class PLASMA_EXPORT Applet : public Widget
|
||||
**/
|
||||
void setDrawStandardBackground(bool drawBackground);
|
||||
|
||||
void paintWindowFrame ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget);
|
||||
|
||||
/**
|
||||
* If for some reason, the applet fails to get up on its feet (the
|
||||
* library couldn't be loaded, necessary hardware support wasn't found,
|
||||
@ -573,30 +493,25 @@ class PLASMA_EXPORT Applet : public Widget
|
||||
/**
|
||||
* Sets whether or not this Applet is acting as a Containment
|
||||
*/
|
||||
virtual void setIsContainment(bool isContainment);
|
||||
void setIsContainment(bool isContainment);
|
||||
|
||||
/**
|
||||
* @return true if this Applet is currently being used as a Containment, false otherwise
|
||||
*/
|
||||
bool isContainment() const;
|
||||
|
||||
/**
|
||||
/**
|
||||
* Sets the geometry of this Plasma::Applet. Should not be used directly by
|
||||
* applet subclasses.
|
||||
* @param geometry the geometry to apply to this Plasma::Applet.
|
||||
*/
|
||||
void setGeometry(const QRectF &geometry);
|
||||
|
||||
|
||||
/**
|
||||
* Causes this applet to raise above all other applets.
|
||||
*/
|
||||
void raise();
|
||||
|
||||
/**
|
||||
* Reimplemented from LayoutItem
|
||||
*/
|
||||
QSizeF sizeHint() const;
|
||||
|
||||
/**
|
||||
* Reimplemented from Plasma::Widget
|
||||
*/
|
||||
@ -608,12 +523,7 @@ class PLASMA_EXPORT Applet : public Widget
|
||||
int type() const;
|
||||
enum { Type = Plasma::AppletType };
|
||||
|
||||
/**
|
||||
* Reimplemented from QGraphicsItem
|
||||
**/
|
||||
QRectF boundingRect() const;
|
||||
|
||||
/**
|
||||
/**
|
||||
* Reimplemented from QGraphicsItem
|
||||
*/
|
||||
QPainterPath shape() const;
|
||||
|
@ -63,7 +63,7 @@ AppletHandle::AppletHandle(Containment *parent, Applet *applet)
|
||||
m_gradientColor = colors.background(KColorScheme::NormalBackground).color();
|
||||
|
||||
QTransform originalMatrix = m_applet->transform();
|
||||
QRectF rect(m_applet->boundingRect());
|
||||
QRectF rect(m_applet->contentsRect());
|
||||
QPointF center = rect.center();
|
||||
originalMatrix.translate(center.x(), center.y());
|
||||
|
||||
@ -440,7 +440,7 @@ void AppletHandle::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||||
// If the applet doesn't have a minimum size, calculate based on a
|
||||
// minimum content area size of 16x16
|
||||
if (min.isEmpty()) {
|
||||
min = m_applet->boundingRect().size() - m_applet->contentRect().size();
|
||||
min = m_applet->boundingRect().size() - m_applet->boundingRect().size();
|
||||
min += QSizeF(16, 16);
|
||||
}
|
||||
|
||||
|
171
containment.cpp
171
containment.cpp
@ -27,6 +27,8 @@
|
||||
#include <QMimeData>
|
||||
#include <QPainter>
|
||||
#include <QStyleOptionGraphicsItem>
|
||||
#include <QGraphicsLayout>
|
||||
#include <QGraphicsLinearLayout>
|
||||
|
||||
#include <KApplication>
|
||||
#include <KAuthorized>
|
||||
@ -83,33 +85,6 @@ public:
|
||||
return toolbox;
|
||||
}
|
||||
|
||||
void initToolBox()
|
||||
{
|
||||
if (toolbox) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (type == DesktopContainment) {
|
||||
Plasma::Widget *addWidgetTool = q->addToolBoxTool("addwidgets", "list-add", i18n("Add Widgets"));
|
||||
connect(addWidgetTool, SIGNAL(clicked()), q, SIGNAL(showAddWidgets()));
|
||||
|
||||
Plasma::Widget *zoomInTool = q->addToolBoxTool("zoomIn", "zoom-in", i18n("Zoom In"));
|
||||
connect(zoomInTool, SIGNAL(clicked()), q, SLOT(zoomIn()));
|
||||
|
||||
Plasma::Widget *zoomOutTool = q->addToolBoxTool("zoomOut", "zoom-out", i18n("Zoom Out"));
|
||||
connect(zoomOutTool, SIGNAL(clicked()), q, SIGNAL(zoomOut()));
|
||||
|
||||
if (!q->isKioskImmutable()) {
|
||||
Plasma::Widget *lockTool = q->addToolBoxTool("lockWidgets", "object-locked",
|
||||
q->isImmutable() ? i18n("Unlock Widgets") :
|
||||
i18n("Lock Widgets"));
|
||||
connect(lockTool, SIGNAL(clicked()), q, SLOT(toggleDesktopImmutability()));
|
||||
}
|
||||
} else if (type == PanelContainment) {
|
||||
createToolbox();
|
||||
}
|
||||
}
|
||||
|
||||
void positionToolbox()
|
||||
{
|
||||
QRectF r;
|
||||
@ -147,10 +122,8 @@ void Containment::Private::setLockToolText()
|
||||
QSizeF iconSize = icon->sizeFromIconSize(22);
|
||||
icon->setMinimumSize(iconSize);
|
||||
icon->setMaximumSize(iconSize);
|
||||
icon->resize(icon->sizeHint());
|
||||
icon->resize(icon->size());
|
||||
}
|
||||
|
||||
toolbox->enableTool("addwidgets", !q->isImmutable());
|
||||
}
|
||||
}
|
||||
|
||||
@ -269,6 +242,7 @@ void Containment::containmentConstraintsUpdated(Plasma::Constraints constraints)
|
||||
|
||||
if (constraints & Plasma::ScreenConstraint && d->toolbox) {
|
||||
d->toolbox->setPos(geometry().width() - d->toolbox->boundingRect().width(), 0);
|
||||
d->toolbox->enableTool("addwidgets", !isImmutable());
|
||||
}
|
||||
|
||||
if (constraints & Plasma::SizeConstraint) {
|
||||
@ -292,26 +266,30 @@ void Containment::setContainmentType(Containment::Type type)
|
||||
{
|
||||
d->type = type;
|
||||
|
||||
// reset the toolbox!
|
||||
delete d->toolbox;
|
||||
d->toolbox = 0;
|
||||
if (isContainment() && type == DesktopContainment) {
|
||||
if (!d->toolbox) {
|
||||
Plasma::Widget *addWidgetTool = addToolBoxTool("addwidgets", "list-add", i18n("Add Widgets"));
|
||||
connect(addWidgetTool, SIGNAL(clicked()), this, SIGNAL(showAddWidgets()));
|
||||
|
||||
if (isContainment()) {
|
||||
d->initToolBox();
|
||||
Plasma::Widget *zoomInTool = addToolBoxTool("zoomIn", "zoom-in", i18n("Zoom In"));
|
||||
connect(zoomInTool, SIGNAL(clicked()), this, SLOT(zoomIn()));
|
||||
|
||||
Plasma::Widget *zoomOutTool = addToolBoxTool("zoomOut", "zoom-out", i18n("Zoom Out"));
|
||||
connect(zoomOutTool, SIGNAL(clicked()), this, SIGNAL(zoomOut()));
|
||||
|
||||
if (!isKioskImmutable()) {
|
||||
Plasma::Widget *lockTool = addToolBoxTool("lockWidgets", "object-locked",
|
||||
isImmutable() ? i18n("Unlock Widgets") :
|
||||
i18n("Lock Widgets"));
|
||||
connect(lockTool, SIGNAL(clicked()), this, SLOT(toggleDesktopImmutability()));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
delete d->toolbox;
|
||||
d->toolbox = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void Containment::setIsContainment(bool isContainment)
|
||||
{
|
||||
Applet::setIsContainment(isContainment);
|
||||
|
||||
// reset the toolbox!
|
||||
delete d->toolbox;
|
||||
d->toolbox = 0;
|
||||
|
||||
d->initToolBox();
|
||||
}
|
||||
|
||||
Corona* Containment::corona() const
|
||||
{
|
||||
return dynamic_cast<Corona*>(scene());
|
||||
@ -460,14 +438,15 @@ void Containment::setFormFactor(FormFactor formFactor)
|
||||
positionPanel(true);
|
||||
}
|
||||
|
||||
Layout *lay = layout();
|
||||
if (lay) {
|
||||
QGraphicsLayout *lay = layout();
|
||||
QGraphicsLinearLayout * linearLay = dynamic_cast<QGraphicsLinearLayout *>(lay);
|
||||
if (linearLay) {
|
||||
foreach (Applet* applet, d->applets) {
|
||||
lay->addItem(applet);
|
||||
linearLay->addItem(applet);
|
||||
applet->updateConstraints(Plasma::FormFactorConstraint);
|
||||
}
|
||||
//linearLay->addStretch();
|
||||
}
|
||||
|
||||
updateConstraints(Plasma::FormFactorConstraint);
|
||||
}
|
||||
|
||||
@ -478,23 +457,27 @@ void Containment::createLayout(FormFactor formFactor)
|
||||
switch (formFactor) {
|
||||
case Planar:
|
||||
case MediaCenter:
|
||||
new FreeLayout(this);
|
||||
//setLayout(new QGraphicsLinearLayout());
|
||||
break;
|
||||
case Horizontal: {
|
||||
BoxLayout *lay = new BoxLayout(BoxLayout::LeftToRight, this);
|
||||
lay->setMargins(0, 0, 0, 0);
|
||||
QGraphicsLinearLayout *lay = new QGraphicsLinearLayout();
|
||||
lay->setOrientation(Qt::Horizontal);
|
||||
lay->setContentsMargins(0, 0, 0, 0);
|
||||
lay->setSpacing(4);
|
||||
setLayout(lay);
|
||||
break;
|
||||
}
|
||||
case Vertical: {
|
||||
BoxLayout *lay = new BoxLayout(BoxLayout::TopToBottom, this);
|
||||
lay->setMargins(0, 0, 0, 0);
|
||||
QGraphicsLinearLayout *lay = new QGraphicsLinearLayout();
|
||||
lay->setOrientation(Qt::Vertical);
|
||||
lay->setContentsMargins(0, 0, 0, 0);
|
||||
lay->setSpacing(4);
|
||||
setLayout(lay);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
kDebug() << "This can't be happening! Or... can it? ;)" << d->formFactor;
|
||||
setLayout(0); //auto-delete
|
||||
//setLayout(0); //auto-delete
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -595,19 +578,23 @@ Applet* Containment::addApplet(const QString& name, const QVariantList& args, ui
|
||||
if (containmentType() != PanelContainment) {
|
||||
//kDebug() << "adding applet" << applet->name() << "with a default geometry of" << appletGeometry << appletGeometry.isValid();
|
||||
if (appletGeometry.isValid()) {
|
||||
applet->setGeometry(appletGeometry);
|
||||
//applet->setGeometry(appletGeometry);
|
||||
} else if (appletGeometry.x() != -1 && appletGeometry.y() != -1) {
|
||||
// yes, this means we can't have items start -1, -1
|
||||
applet->setGeometry(QRectF(appletGeometry.topLeft(),
|
||||
applet->sizeHint()));
|
||||
//applet->setGeometry(QRectF(appletGeometry.topLeft(),
|
||||
// applet->sizeHint()));
|
||||
} else if (geometry().isValid()) {
|
||||
applet->setGeometry(geometryForApplet(applet));
|
||||
//applet->setGeometry(geometryForApplet(applet));
|
||||
}
|
||||
}
|
||||
|
||||
//kDebug() << applet->name() << "sizehint:" << applet->sizeHint() << "geometry:" << applet->geometry();
|
||||
|
||||
connect(applet, SIGNAL(configNeedsSaving()), this, SIGNAL(configNeedsSaving()));
|
||||
Corona *c = corona();
|
||||
if (c) {
|
||||
connect(applet, SIGNAL(configNeedsSaving()), corona(), SLOT(scheduleConfigSync()));
|
||||
}
|
||||
|
||||
emit appletAdded(applet);
|
||||
return applet;
|
||||
}
|
||||
@ -637,7 +624,7 @@ void Containment::addApplet(Applet *applet, const QPointF &pos, bool delayInit)
|
||||
// Calculate where the user wants the applet to go before adding it
|
||||
//so long as this isn't a new applet with a delayed init
|
||||
if (! delayInit || (currentContainment && currentContainment != this)) {
|
||||
index = indexAt(pos);
|
||||
index = indexAt(pos);
|
||||
}
|
||||
}
|
||||
|
||||
@ -660,13 +647,14 @@ void Containment::addApplet(Applet *applet, const QPointF &pos, bool delayInit)
|
||||
connect(applet, SIGNAL(destroyed(QObject*)),
|
||||
this, SLOT(appletDestroyed(QObject*)));
|
||||
|
||||
Layout *lay = layout();
|
||||
QGraphicsLayout *lay = layout();
|
||||
|
||||
// Reposition the applet after adding has been done
|
||||
//FIXME adding position incorrect
|
||||
if (index != -1) {
|
||||
BoxLayout *l = dynamic_cast<BoxLayout *>(lay);
|
||||
QGraphicsLinearLayout *l = dynamic_cast<QGraphicsLinearLayout *>(lay);
|
||||
if (l) {
|
||||
l->insertItem(index, l->takeAt(l->indexOf(applet)));
|
||||
l->insertItem(index, applet);
|
||||
d->applets.removeAll(applet);
|
||||
d->applets.insert(index, applet);
|
||||
} else {
|
||||
@ -679,21 +667,24 @@ void Containment::addApplet(Applet *applet, const QPointF &pos, bool delayInit)
|
||||
applet->setPos(pos);
|
||||
}
|
||||
|
||||
if (lay) {
|
||||
lay->addItem(applet);
|
||||
QGraphicsLinearLayout *l = dynamic_cast<QGraphicsLinearLayout *>(lay);
|
||||
if (l) {
|
||||
l->addItem(applet);
|
||||
}
|
||||
//l->addStretch();
|
||||
}
|
||||
|
||||
prepareApplet(applet, delayInit); //must at least flush constraints
|
||||
|
||||
}
|
||||
|
||||
//containment-relative pos... right?
|
||||
int Containment::indexAt(const QPointF &pos) const
|
||||
{
|
||||
if (pos == QPointF(-1, -1)) {
|
||||
/* if (pos == QPointF(-1, -1)) {
|
||||
return -1;
|
||||
}
|
||||
BoxLayout *l = dynamic_cast<BoxLayout *>(layout());
|
||||
QGraphicsLinearLayout *l = dynamic_cast<QGraphicsLinearLayout *>(layout());
|
||||
if (l) {
|
||||
foreach (Applet *existingApplet, d->applets) {
|
||||
if (formFactor() == Horizontal) {
|
||||
@ -718,7 +709,7 @@ int Containment::indexAt(const QPointF &pos) const
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -740,44 +731,6 @@ void Containment::prepareApplet(Applet *applet, bool delayInit)
|
||||
}
|
||||
}
|
||||
|
||||
QRectF Containment::geometryForApplet(Applet *applet) const
|
||||
{
|
||||
// The value part of these maps isn't used. Only sorted keys are needed.
|
||||
QMap<qreal, bool> xPositions;
|
||||
QMap<qreal, bool> yPositions;
|
||||
|
||||
// Add the top-left corner offset by the applet's border
|
||||
QPointF offset = applet->boundingRect().topLeft();
|
||||
xPositions[-offset.x()] = true;
|
||||
yPositions[-offset.y()] = true;
|
||||
|
||||
QRectF placement(QPointF(0, 0), applet->sizeHint());
|
||||
foreach (Applet *existingApplet, d->applets) {
|
||||
QPointF bottomRight = existingApplet->geometry().bottomRight();
|
||||
if (bottomRight.x() + placement.width() < geometry().width()) {
|
||||
xPositions[bottomRight.x() + 1] = true;
|
||||
}
|
||||
if (bottomRight.y() + placement.height() < geometry().height()) {
|
||||
yPositions[bottomRight.y() + 1] = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Try to fit it in an empty space
|
||||
foreach (qreal x, xPositions.keys()) {
|
||||
foreach (qreal y, yPositions.keys()) {
|
||||
placement.moveTo(x, y);
|
||||
if (regionIsEmpty(placement, applet)) {
|
||||
return placement;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise place it in the centre of the screen
|
||||
placement.moveLeft(geometry().width() / 2 - placement.width() / 2);
|
||||
placement.moveTop(geometry().height() / 2 - placement.height() / 2);
|
||||
return placement;
|
||||
}
|
||||
|
||||
bool Containment::regionIsEmpty(const QRectF ®ion, Applet *ignoredApplet) const
|
||||
{
|
||||
foreach (Applet *applet, d->applets) {
|
||||
@ -1272,7 +1225,7 @@ Plasma::Widget * Containment::addToolBoxTool(const QString& toolName, const QStr
|
||||
QSizeF iconSize = tool->sizeFromIconSize(22);
|
||||
tool->setMinimumSize(iconSize);
|
||||
tool->setMaximumSize(iconSize);
|
||||
tool->resize(tool->sizeHint());
|
||||
tool->resize(tool->size());
|
||||
|
||||
d->createToolbox()->addTool(tool, toolName);
|
||||
|
||||
|
@ -142,11 +142,6 @@ class PLASMA_EXPORT Containment : public Applet
|
||||
*/
|
||||
void setContainmentType(Containment::Type type);
|
||||
|
||||
/**
|
||||
* Reimplemented from Applet
|
||||
*/
|
||||
void setIsContainment(bool isContainment);
|
||||
|
||||
/**
|
||||
* Returns the Corona (if any) that this Containment is hosted by
|
||||
*/
|
||||
@ -228,12 +223,12 @@ class PLASMA_EXPORT Containment : public Applet
|
||||
*/
|
||||
void addApplet(Applet *applet, const QPointF &pos = QPointF(-1, -1), bool dontInit = true);
|
||||
|
||||
/**
|
||||
/**
|
||||
* @return the index to insert an applet at if you want it near the point pos.
|
||||
* @param pos the containment-relative position
|
||||
*/
|
||||
virtual int indexAt(const QPointF &pos) const;
|
||||
|
||||
|
||||
/**
|
||||
* Sets the physical screen this Containment is associated with.
|
||||
*
|
||||
@ -423,7 +418,6 @@ class PLASMA_EXPORT Containment : public Applet
|
||||
void repositionToolbox();
|
||||
|
||||
private:
|
||||
QRectF geometryForApplet(Applet *applet) const;
|
||||
bool regionIsEmpty(const QRectF ®ion, Applet *ignoredApplet=0) const;
|
||||
void prepareApplet(Applet *applet, bool delayInit);
|
||||
void positionPanel(bool force = false);
|
||||
|
11
corona.cpp
11
corona.cpp
@ -362,11 +362,14 @@ Containment* Corona::addContainment(const QString& name, const QVariantList& arg
|
||||
}
|
||||
|
||||
d->containments.append(containment);
|
||||
connect(containment, SIGNAL(destroyed(QObject*)), SLOT(containmentDestroyed(QObject*)));
|
||||
connect(containment, SIGNAL(launchActivated()), SIGNAL(launchActivated()));
|
||||
connect(containment, SIGNAL(configNeedsSaving()), SLOT(scheduleConfigSync()));
|
||||
connect(containment, SIGNAL(destroyed(QObject*)),
|
||||
this, SLOT(containmentDestroyed(QObject*)));
|
||||
connect(containment, SIGNAL(launchActivated()),
|
||||
SIGNAL(launchActivated()));
|
||||
connect(containment, SIGNAL(configNeedsSaving()),
|
||||
SLOT(scheduleConfigSync()));
|
||||
connect(containment, SIGNAL(screenChanged(int,int,Plasma::Containment*)),
|
||||
SIGNAL(screenOwnerChanged(int,int,Plasma::Containment*)));
|
||||
this, SIGNAL(screenOwnerChanged(int,int,Plasma::Containment*)));
|
||||
|
||||
if (!delayedInit) {
|
||||
emit containmentAdded(containment);
|
||||
|
@ -186,7 +186,7 @@ void GLApplet::paintInterface(QPainter *painter,
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
QMatrix m = painter->worldMatrix();
|
||||
QRect deviceRect = m.mapRect(QRect(QPoint(23, 25), contentSize().toSize()));
|
||||
QRect deviceRect = m.mapRect(QRect(QPoint(23, 25), boundingRect().size().toSize()));
|
||||
d->updateGlSize(deviceRect.size());
|
||||
|
||||
// redirect this widget's painting into the pbuffer
|
||||
|
@ -489,14 +489,6 @@ QPixmap Phase::animationResult(AnimId id)
|
||||
return state->pixmap;
|
||||
}
|
||||
|
||||
bool Phase::isAnimating() const
|
||||
{
|
||||
return (!d->animatedItems.isEmpty() ||
|
||||
!d->movingItems.isEmpty() ||
|
||||
!d->animatedElements.isEmpty() ||
|
||||
!d->customAnims.isEmpty());
|
||||
}
|
||||
|
||||
void Phase::timerEvent(QTimerEvent *event)
|
||||
{
|
||||
Q_UNUSED(event)
|
||||
|
6
phase.h
6
phase.h
@ -116,12 +116,6 @@ public:
|
||||
Q_INVOKABLE void setAnimationPixmap(AnimId id, const QPixmap &pixmap);
|
||||
Q_INVOKABLE QPixmap animationResult(AnimId id);
|
||||
|
||||
/**
|
||||
* @return true if there are animations happening
|
||||
* @since 4.1
|
||||
*/
|
||||
Q_INVOKABLE bool isAnimating() const;
|
||||
|
||||
Q_SIGNALS:
|
||||
void animationComplete(QGraphicsItem *item, Plasma::Phase::Animation anim);
|
||||
void movementComplete(QGraphicsItem *item);
|
||||
|
@ -63,13 +63,13 @@ void AppletScript::paintInterface(QPainter* painter, const QStyleOptionGraphicsI
|
||||
|
||||
QSizeF AppletScript::contentSizeHint() const
|
||||
{
|
||||
return applet()->contentSizeHint();
|
||||
return applet()->boundingRect().size();
|
||||
}
|
||||
|
||||
QSizeF AppletScript::size() const
|
||||
{
|
||||
if (applet()) {
|
||||
return applet()->contentSize();
|
||||
return applet()->boundingRect().size();
|
||||
}
|
||||
|
||||
return QSizeF();
|
||||
|
@ -17,10 +17,9 @@
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "plasma/scripting/runnerscript.h"
|
||||
#include "runnerscript.h"
|
||||
|
||||
#include "plasma/abstractrunner.h"
|
||||
#include "plasma/package.h"
|
||||
#include "abstractrunner.h"
|
||||
|
||||
namespace Plasma
|
||||
{
|
||||
@ -63,20 +62,6 @@ void RunnerScript::exec(const Plasma::SearchContext *search, const Plasma::Searc
|
||||
Q_UNUSED(action)
|
||||
}
|
||||
|
||||
const Package* RunnerScript::package() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
QString RunnerScript::mainScript() const
|
||||
{
|
||||
if (!package()) {
|
||||
return QString();
|
||||
} else {
|
||||
return package()->filePath("mainscript");
|
||||
}
|
||||
}
|
||||
|
||||
} // Plasma namespace
|
||||
|
||||
#include "runnerscript.moc"
|
||||
|
@ -70,19 +70,6 @@ public:
|
||||
*/
|
||||
virtual void exec(const Plasma::SearchContext *search, const Plasma::SearchMatch *action);
|
||||
|
||||
protected Q_SLOTS:
|
||||
/**
|
||||
* @return absolute path to the main script file for this plasmoid
|
||||
*/
|
||||
QString mainScript() const;
|
||||
|
||||
/**
|
||||
* @return the Package associated with this plasmoid which can
|
||||
* be used to request resources, such as images and
|
||||
* interface files.
|
||||
*/
|
||||
const Package* package() const;
|
||||
|
||||
private:
|
||||
class Private;
|
||||
Private * const d;
|
||||
|
@ -51,16 +51,6 @@ bool ScriptEngine::init()
|
||||
return true;
|
||||
}
|
||||
|
||||
const Package* ScriptEngine::package() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
QString ScriptEngine::mainScript() const
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
||||
QStringList knownLanguages(ComponentTypes types)
|
||||
{
|
||||
QString constraintTemplate = "'%1' in [X-Plasma-ComponentTypes]";
|
||||
|
@ -70,21 +70,8 @@ public:
|
||||
*/
|
||||
virtual bool init();
|
||||
|
||||
protected Q_SLOTS:
|
||||
/**
|
||||
* @return absolute path to the main script file for this plasmoid
|
||||
*/
|
||||
virtual QString mainScript() const;
|
||||
|
||||
/**
|
||||
* @return the Package associated with this plasmoid which can
|
||||
* be used to request resources, such as images and
|
||||
* interface files.
|
||||
*/
|
||||
virtual const Package* package() const;
|
||||
|
||||
private:
|
||||
class Private;
|
||||
class Private;
|
||||
Private * const d;
|
||||
};
|
||||
|
||||
|
@ -134,7 +134,7 @@ void SearchMatch::setEnabled( bool enabled )
|
||||
|
||||
bool SearchMatch::isEnabled() const
|
||||
{
|
||||
return d->enabled;
|
||||
return d->enabled;
|
||||
}
|
||||
|
||||
bool SearchMatch::operator<(const SearchMatch& other) const
|
||||
|
3
theme.h
3
theme.h
@ -93,8 +93,7 @@ class PLASMA_EXPORT Theme : public QObject
|
||||
*
|
||||
* @arg name the name of the file in the theme directory (without the
|
||||
* ".svg" part or a leading slash)
|
||||
* @return the full path to the requested file for the current theme,
|
||||
* or an empty string if the image is not available
|
||||
* @return the full path to the requested file for the current theme
|
||||
*/
|
||||
Q_INVOKABLE QString image( const QString& name ) const;
|
||||
|
||||
|
@ -44,8 +44,7 @@ public:
|
||||
};
|
||||
|
||||
UiLoader::UiLoader( QObject *parent )
|
||||
: QObject(parent),
|
||||
d(new Private())
|
||||
: d( new Private() )
|
||||
{
|
||||
d->widgets
|
||||
<< "CheckBox"
|
||||
|
6
view.cpp
6
view.cpp
@ -157,10 +157,10 @@ void View::setContainment(Containment *containment)
|
||||
}
|
||||
|
||||
d->containment = containment;
|
||||
if (!containment) {
|
||||
if (! containment) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (screen > -1) {
|
||||
containment->setScreen(screen);
|
||||
}
|
||||
@ -172,7 +172,7 @@ void View::setContainment(Containment *containment)
|
||||
}
|
||||
|
||||
updateSceneRect();
|
||||
connect(containment, SIGNAL(geometryChanged()), this, SLOT(updateSceneRect()));
|
||||
//connect(containment, SIGNAL(geometryChanged()), this, SLOT(updateSceneRect()));
|
||||
}
|
||||
|
||||
Containment* View::containment() const
|
||||
|
@ -1 +1 @@
|
||||
add_subdirectory( tests )
|
||||
#add_subdirectory( tests )
|
||||
|
@ -72,13 +72,14 @@ qreal Label::heightForWidth(qreal w) const
|
||||
//return m.boundingRect(QRectF(0, 0, w, 9999), d->alignment | Qt::TextWordWrap, d->text).height();
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef REMOVE
|
||||
QSizeF Label::sizeHint() const
|
||||
{
|
||||
QFontMetricsF m(d->textFont);
|
||||
return m.boundingRect(QRectF(0,0,9999,9999), d->alignment | Qt::TextWordWrap, d->text).size();
|
||||
//return m.boundingRect(QRectF(0, 0, d->maximumWidth, 9999), d->alignment | Qt::TextWordWrap, d->text).size();
|
||||
}
|
||||
#endif
|
||||
|
||||
void Label::setText(const QString& text)
|
||||
{
|
||||
|
@ -72,11 +72,12 @@ class PLASMA_EXPORT Label : public Plasma::Widget
|
||||
*/
|
||||
qreal heightForWidth(qreal w) const;
|
||||
|
||||
/**
|
||||
#ifdef REMOVE
|
||||
/**
|
||||
* Reimplemented from Plasma::Widget.
|
||||
*/
|
||||
QSizeF sizeHint() const;
|
||||
|
||||
#endif
|
||||
/**
|
||||
* Sets the text to be displayed.
|
||||
*/
|
||||
|
@ -46,9 +46,9 @@ class LineEdit::Private
|
||||
QString defaultText;
|
||||
QString oldText;
|
||||
|
||||
bool showingDefaultText : 1;
|
||||
bool styled : 1;
|
||||
bool multiline : 1;
|
||||
bool showingDefaultText;
|
||||
bool styled;
|
||||
bool multiline;
|
||||
|
||||
};
|
||||
|
||||
|
@ -292,7 +292,7 @@ Qt::Orientations PushButton::expandingDirections() const
|
||||
{
|
||||
return Qt::Horizontal;
|
||||
}
|
||||
|
||||
#ifdef REMOVE
|
||||
QSizeF PushButton::sizeHint() const
|
||||
{
|
||||
int width = 0;
|
||||
@ -315,6 +315,7 @@ QSizeF PushButton::sizeHint() const
|
||||
return QSizeF((QApplication::style()->sizeFromContents(QStyle::CT_PushButton, &option, QSize(width, height), 0).
|
||||
expandedTo(QApplication::globalStrut())));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
} // namespace Plasma
|
||||
|
@ -163,7 +163,9 @@ public:
|
||||
// NOTE: bogus
|
||||
QSizeF minimumSize() const;
|
||||
Qt::Orientations expandingDirections() const;
|
||||
#ifdef REMOVE
|
||||
QSizeF sizeHint() const;
|
||||
#endif
|
||||
|
||||
Q_SIGNALS:
|
||||
/**
|
||||
|
@ -76,7 +76,7 @@ QSizeF WebContent::sizeHint() const
|
||||
return d->page->mainFrame()->contentsSize();
|
||||
}
|
||||
|
||||
return Widget::sizeHint();
|
||||
return Widget::size();
|
||||
}
|
||||
|
||||
void WebContent::setPage(QWebPage *page)
|
||||
|
@ -33,6 +33,8 @@
|
||||
#include <QPainter>
|
||||
#include <QStyleOptionGraphicsItem>
|
||||
#include <QDesktopWidget>
|
||||
#include <QGraphicsLayout>
|
||||
#include <QGraphicsLinearLayout>
|
||||
|
||||
#include <KDebug>
|
||||
|
||||
@ -122,8 +124,7 @@ bool Widget::Private::shouldPaint(QPainter *painter, const QTransform &transform
|
||||
}
|
||||
|
||||
Widget::Widget(QGraphicsItem *parent, QObject* parentObject)
|
||||
: QObject(parentObject),
|
||||
QGraphicsItem(parent),
|
||||
: QGraphicsWidget(parent),
|
||||
d(new Private)
|
||||
{
|
||||
setFlag(QGraphicsItem::ItemClipsToShape, true);
|
||||
@ -166,7 +167,7 @@ Widget::CachePaintMode Widget::cachePaintMode() const
|
||||
|
||||
void Widget::update(const QRectF &rect)
|
||||
{
|
||||
QGraphicsItem::update(rect);
|
||||
QGraphicsWidget::update(rect);
|
||||
}
|
||||
|
||||
Qt::Orientations Widget::expandingDirections() const
|
||||
@ -174,32 +175,9 @@ Qt::Orientations Widget::expandingDirections() const
|
||||
return Qt::Horizontal | Qt::Vertical;
|
||||
}
|
||||
|
||||
void Widget::setMinimumSize(const QSizeF& newMin)
|
||||
QFont Widget::font() const
|
||||
{
|
||||
d->minimumSize = newMin;
|
||||
QSizeF s = size();
|
||||
if (s != s.expandedTo(newMin)) {
|
||||
setGeometry(QRectF(pos(), s.expandedTo(newMin)));
|
||||
}
|
||||
}
|
||||
|
||||
QSizeF Widget::minimumSize() const
|
||||
{
|
||||
return d->minimumSize;
|
||||
}
|
||||
|
||||
void Widget::setMaximumSize(const QSizeF& newMax)
|
||||
{
|
||||
d->maximumSize = newMax;
|
||||
QSizeF s = size();
|
||||
if (s != s.boundedTo(newMax)) {
|
||||
setGeometry(QRectF(pos(), s.boundedTo(newMax)));
|
||||
}
|
||||
}
|
||||
|
||||
QSizeF Widget::maximumSize() const
|
||||
{
|
||||
return d->maximumSize;
|
||||
return QApplication::font();
|
||||
}
|
||||
|
||||
bool Widget::hasHeightForWidth() const
|
||||
@ -233,87 +211,7 @@ QRectF Widget::geometry() const
|
||||
|
||||
void Widget::setSize(const QSizeF &s)
|
||||
{
|
||||
LayoutItem::setSize(s);
|
||||
}
|
||||
|
||||
void Widget::setGeometry(const QRectF& geometry)
|
||||
{
|
||||
setPos(geometry.topLeft());
|
||||
if (geometry.size().width() > 0 && geometry.size().height() > 0 && size() != geometry.size()) {
|
||||
prepareGeometryChange();
|
||||
qreal width = qBound(d->minimumSize.width(), geometry.size().width(), d->maximumSize.width());
|
||||
qreal height = qBound(d->minimumSize.height(), geometry.size().height(), d->maximumSize.height());
|
||||
|
||||
setSize(QSizeF(width, height));
|
||||
|
||||
qreal xd = topLeft().x();
|
||||
qreal yd = topLeft().y();
|
||||
|
||||
if (xd < 0) {
|
||||
width -= xd;
|
||||
xd = 0;
|
||||
}
|
||||
|
||||
if (yd < 0) {
|
||||
height -= yd;
|
||||
yd = 0;
|
||||
}
|
||||
|
||||
if (layout()) {
|
||||
QRectF r(QPointF(xd, yd), QSizeF(width, height));
|
||||
r = adjustToMargins(r);
|
||||
layout()->setGeometry(r);
|
||||
/*if (qobject_cast<Plasma::Applet*>(this)) {
|
||||
kDebug() << (QObject*)this << this->geometry() << this->topLeft()
|
||||
<< "layout geometry is now" << r << margin(RightMargin);
|
||||
}*/
|
||||
}
|
||||
|
||||
if (managingLayout()) {
|
||||
//kDebug() << "invalidating managing layout";
|
||||
managingLayout()->invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
void Widget::updateGeometry()
|
||||
{
|
||||
if (managingLayout()) {
|
||||
managingLayout()->invalidate();
|
||||
} else {
|
||||
setGeometry(QRectF(pos(), sizeHint()));
|
||||
}
|
||||
}
|
||||
|
||||
QSizeF Widget::sizeHint() const
|
||||
{
|
||||
if (layout()) {
|
||||
return layout()->sizeHint();
|
||||
} else {
|
||||
return size();
|
||||
}
|
||||
}
|
||||
|
||||
QFont Widget::font() const
|
||||
{
|
||||
return QApplication::font();
|
||||
}
|
||||
|
||||
QRectF Widget::boundingRect() const
|
||||
{
|
||||
return QRectF(QPointF(0,0), size());
|
||||
}
|
||||
|
||||
void Widget::resize(const QSizeF& size)
|
||||
{
|
||||
setGeometry(QRectF(pos(), size));
|
||||
}
|
||||
|
||||
void Widget::resize(qreal w, qreal h)
|
||||
{
|
||||
resize(QSizeF(w, h));
|
||||
resize(s);
|
||||
}
|
||||
|
||||
Widget *Widget::parent() const
|
||||
@ -347,9 +245,9 @@ void Widget::addChild(Widget *w)
|
||||
w->setParentItem(this);
|
||||
|
||||
//kDebug() << "Added Child Widget" << (QObject*)w << "our geom is" << geometry();
|
||||
|
||||
if (layout()) {
|
||||
layout()->addItem(w);
|
||||
QGraphicsLinearLayout * lay = dynamic_cast<QGraphicsLinearLayout *>(layout());
|
||||
if (lay) {
|
||||
lay->addItem(w);
|
||||
}
|
||||
|
||||
updateGeometry();
|
||||
@ -411,30 +309,6 @@ void Widget::paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *opti
|
||||
// Replaced by widget's own function
|
||||
}
|
||||
|
||||
QVariant Widget::itemChange(GraphicsItemChange change, const QVariant &value)
|
||||
{
|
||||
if (change == QGraphicsItem::ItemChildRemovedChange) {
|
||||
if (layout() && !isAncestorOf(value.value<QGraphicsItem*>())) {
|
||||
layout()->removeItem(dynamic_cast<Plasma::LayoutItem*>(value.value<QGraphicsItem*>()));
|
||||
updateGeometry();
|
||||
}
|
||||
}
|
||||
|
||||
return QGraphicsItem::itemChange(change, value);
|
||||
}
|
||||
|
||||
void Widget::managingLayoutChanged()
|
||||
{
|
||||
if (managingLayout()) {
|
||||
d->wasMovable = flags() & ItemIsMovable;
|
||||
if (!dynamic_cast<FreeLayout*>(managingLayout())) {
|
||||
setFlag(ItemIsMovable, false);
|
||||
}
|
||||
} else {
|
||||
setFlag(ItemIsMovable, d->wasMovable);
|
||||
}
|
||||
}
|
||||
|
||||
QPoint Widget::popupPosition(const QSize &s) const
|
||||
{
|
||||
QGraphicsView *v = view();
|
||||
|
@ -22,7 +22,7 @@
|
||||
#ifndef WIDGET_H_
|
||||
#define WIDGET_H_
|
||||
|
||||
#include <QtGui/QGraphicsItem>
|
||||
#include <QtGui/QGraphicsWidget>
|
||||
#include <QtGui/QPixmap>
|
||||
|
||||
#include <QtCore/QRectF>
|
||||
@ -63,16 +63,11 @@ class Layout;
|
||||
* To implement a Widget, just subclass Plasma::Widget and implement at minimum,
|
||||
* sizeHint() and paintWidget()
|
||||
*/
|
||||
class PLASMA_EXPORT Widget : public QObject,
|
||||
public QGraphicsItem,
|
||||
public LayoutItem
|
||||
class PLASMA_EXPORT Widget : public QGraphicsWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY( Qt::Orientations expandingDirections READ expandingDirections )
|
||||
Q_PROPERTY( QSizeF minimumSize READ minimumSize WRITE setMinimumSize )
|
||||
Q_PROPERTY( QSizeF maximumSize READ maximumSize WRITE setMaximumSize )
|
||||
Q_PROPERTY( QRectF geometry READ geometry WRITE setGeometry )
|
||||
Q_PROPERTY( QSizeF sizeHint READ sizeHint )
|
||||
Q_PROPERTY( QSizeF size READ size WRITE resize )
|
||||
Q_PROPERTY( qreal opacity READ opacity WRITE setOpacity )
|
||||
|
||||
@ -102,28 +97,6 @@ public:
|
||||
*/
|
||||
virtual Qt::Orientations expandingDirections() const;
|
||||
|
||||
/**
|
||||
* Sets the minimum size of the Widget.
|
||||
* @param size the size to set as the minimum size.
|
||||
*/
|
||||
void setMinimumSize(const QSizeF& size);
|
||||
|
||||
/**
|
||||
* @return minimum size of the Widget.
|
||||
*/
|
||||
QSizeF minimumSize() const;
|
||||
|
||||
/**
|
||||
* Sets the maximum size of the Widget.
|
||||
* @param size the size to set as the maximum size.
|
||||
*/
|
||||
void setMaximumSize(const QSizeF& size);
|
||||
|
||||
/**
|
||||
* @return maximum size of the Widget.
|
||||
*/
|
||||
QSizeF maximumSize() const;
|
||||
|
||||
/**
|
||||
* This method is used by Plasma::Layout to determine whether this widget
|
||||
* can provide a height value given a width value.
|
||||
@ -159,53 +132,11 @@ public:
|
||||
*/
|
||||
QRectF geometry() const;
|
||||
|
||||
/**
|
||||
* Sets the geometry of this Widget.
|
||||
*/
|
||||
/**
|
||||
* Sets the geometry of this Plasma::Widget
|
||||
* @param geometry the geometry to apply to this Plasma::Widget.
|
||||
*/
|
||||
virtual void setGeometry(const QRectF &geometry);
|
||||
|
||||
/**
|
||||
* This method is used to notify any containing Plasma::Layout that it should
|
||||
* reset its geometry.
|
||||
*/
|
||||
// NOTE: this is a completely broken concept -MB
|
||||
Q_INVOKABLE void updateGeometry();
|
||||
|
||||
/**
|
||||
* Returns the recommended size for this widget. Note that this size is not
|
||||
* necessarily only the size for the widget, but might also include margins etc.
|
||||
* @return recommended size for this Plasma::Widget.
|
||||
*/
|
||||
virtual QSizeF sizeHint() const;
|
||||
|
||||
/**
|
||||
* @return the font currently set for this widget
|
||||
**/
|
||||
QFont font() const;
|
||||
|
||||
/**
|
||||
* Reimplemented from QGraphicsItem
|
||||
* @return the bounding rectangle for this Plasma::Widget
|
||||
*/
|
||||
virtual QRectF boundingRect() const;
|
||||
|
||||
/**
|
||||
* Resizes this Plasma::Widget.
|
||||
* @param size the new size of this Plasma::Widget.
|
||||
*/
|
||||
Q_INVOKABLE void resize(const QSizeF &size);
|
||||
|
||||
/**
|
||||
* Convenience method for resizing this Plasma::Widget
|
||||
* @param width the new width.
|
||||
* @param height the new height.
|
||||
*/
|
||||
Q_INVOKABLE void resize(qreal width, qreal height);
|
||||
|
||||
/**
|
||||
* @return this Plasma::Widget's parent, returns a null pointer if
|
||||
* none exist.
|
||||
@ -310,9 +241,7 @@ protected:
|
||||
* @param widget the parent QWidget (most likely the Corona)
|
||||
*/
|
||||
virtual void paintWidget(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
|
||||
|
||||
QVariant itemChange(GraphicsItemChange change, const QVariant &value);
|
||||
void managingLayoutChanged();
|
||||
|
||||
virtual bool sceneEvent(QEvent *event);
|
||||
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user