~ubuntu-branches/ubuntu/jaunty/kdebase/jaunty-backports

« back to all changes in this revision

Viewing changes to apps/plasma/applets/folderview/dialog.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Steve Stalcup
  • Date: 2009-01-08 09:49:20 UTC
  • mfrom: (1.1.22 upstream)
  • Revision ID: james.westby@ubuntu.com-20090108094920-zbm1d1y0y3t5rpff
Tags: 4:4.1.96-0ubuntu1
* New upstream release
* Updated various .install files:
  + dolphin.install
  + kappfinder.install
  + kfind.install
  + konqueror.install
* Bumped build-dep versions

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 
20
20
#include "dialog.h"
21
21
 
 
22
#include <QApplication>
 
23
#include <QBitmap>
 
24
#include <QDesktopWidget>
 
25
#include <QGraphicsView>
22
26
#include <QGraphicsWidget>
 
27
#include <QGraphicsScene>
 
28
 
23
29
#include <KWindowSystem>
24
30
 
 
31
#include <Plasma/Applet>
 
32
#include <Plasma/FrameSvg>
 
33
 
 
34
#ifdef Q_WS_X11
 
35
#  include <QX11Info>
 
36
#endif
 
37
 
 
38
 
25
39
Dialog::Dialog(QWidget *parent, Qt::WindowFlags f)
26
 
    : Plasma::Dialog(parent, f)
 
40
    : QWidget(parent, f), m_widget(0)
27
41
{
28
42
    setWindowFlags(Qt::Popup | Qt::WindowStaysOnTopHint);
 
43
    
 
44
#ifdef Q_WS_X11
 
45
    if (!QX11Info::isCompositingManagerRunning()) {
 
46
        setAttribute(Qt::WA_NoSystemBackground);
 
47
    }
 
48
#endif
 
49
 
29
50
    KWindowSystem::setState(effectiveWinId(), NET::SkipTaskbar | NET::SkipPager);
 
51
 
 
52
    QPalette pal = palette();
 
53
    pal.setColor(backgroundRole(), Qt::transparent);
 
54
    setPalette(pal);    
 
55
    
 
56
    m_background = new Plasma::FrameSvg(this);
 
57
    m_background->setImagePath("dialogs/background");
 
58
 
 
59
    m_scene = new QGraphicsScene(this);
 
60
    m_view = new QGraphicsView(m_scene, this);
 
61
    m_view->setFrameShape(QFrame::NoFrame);
 
62
    m_view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 
63
    m_view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 
64
    m_view->viewport()->setAutoFillBackground(false);
30
65
}
31
66
 
32
67
Dialog::~Dialog()
33
68
{
34
69
}
35
70
 
 
71
void Dialog::setGraphicsWidget(QGraphicsWidget *widget)
 
72
{
 
73
    m_widget = widget;
 
74
    m_scene->addItem(widget);
 
75
}
 
76
 
 
77
void Dialog::show(Plasma::Applet *applet)
 
78
{
 
79
    Plasma::FrameSvg::EnabledBorders borders = Plasma::FrameSvg::AllBorders;
 
80
    int left   = m_background->marginSize(Plasma::LeftMargin);
 
81
    int top    = m_background->marginSize(Plasma::TopMargin);
 
82
    int right  = m_background->marginSize(Plasma::RightMargin);
 
83
    int bottom = m_background->marginSize(Plasma::BottomMargin);
 
84
 
 
85
    switch (applet->location())
 
86
    {
 
87
    case Plasma::BottomEdge:
 
88
        borders &= ~Plasma::FrameSvg::BottomBorder;
 
89
        bottom = 2;
 
90
        break;
 
91
 
 
92
    case Plasma::TopEdge:
 
93
        borders &= ~Plasma::FrameSvg::TopBorder;
 
94
        top = 2;
 
95
        break;
 
96
 
 
97
    case Plasma::LeftEdge:
 
98
        borders &= ~Plasma::FrameSvg::LeftBorder;
 
99
        left = 2;
 
100
        break;
 
101
 
 
102
    case Plasma::RightEdge:
 
103
        borders &= ~Plasma::FrameSvg::RightBorder;
 
104
        right = 2;
 
105
        break;
 
106
 
 
107
    default:
 
108
        break;
 
109
    }
 
110
 
 
111
    const QRect rect = QApplication::desktop()->availableGeometry().adjusted(left, top, -right, -bottom);
 
112
    m_widget->resize(m_widget->preferredSize().boundedTo(rect.size()));
 
113
 
 
114
    m_background->setEnabledBorders(borders);
 
115
    setContentsMargins(left, top, right, bottom);
 
116
 
 
117
    resize(m_widget->size().toSize() + QSize(left + right, top + bottom));
 
118
    move(applet->popupPosition(size()));
 
119
 
 
120
    QWidget::show();
 
121
}
 
122
 
 
123
void Dialog::resizeEvent(QResizeEvent *event)
 
124
{
 
125
    Q_UNUSED(event)
 
126
 
 
127
    m_background->resizeFrame(rect().size());
 
128
    m_view->setGeometry(contentsRect());
 
129
 
 
130
#ifdef Q_WS_X11
 
131
    if (!QX11Info::isCompositingManagerRunning()) {
 
132
        setMask(m_background->mask());
 
133
    }
 
134
#endif
 
135
}
 
136
 
 
137
void Dialog::paintEvent(QPaintEvent *event)
 
138
{
 
139
    Q_UNUSED(event)
 
140
 
 
141
    QPainter p(this);
 
142
    p.setCompositionMode(QPainter::CompositionMode_Source);
 
143
    p.fillRect(rect(), Qt::transparent);
 
144
    p.setCompositionMode(QPainter::CompositionMode_SourceOver);
 
145
    m_background->paintFrame(&p);
 
146
}
 
147
 
36
148
void Dialog::focusOutEvent(QFocusEvent *event)
37
149
{
38
150
    Q_UNUSED(event)