~saviq/+junk/shell-refactor-screeninfo

« back to all changes in this revision

Viewing changes to panel/applets/appname/appnameapplet.cpp

merge conflicts resolved

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
public:
62
62
    WindowButton(const PanelStyle::WindowButtonType& buttonType, QWidget* parent = 0)
63
63
    : QAbstractButton(parent)
64
 
    , m_buttonType(buttonType)
 
64
    , m_initialized(false)
65
65
    {
66
 
        loadPixmaps();
 
66
        setButtonType(buttonType);
67
67
        if (buttonType == PanelStyle::MinimizeWindowButton) {
68
68
            setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum);
69
69
        } else {
70
70
            setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
71
71
        }
72
72
        setAttribute(Qt::WA_Hover);
 
73
        m_initialized = true;
 
74
    }
 
75
 
 
76
    void setButtonType(const PanelStyle::WindowButtonType& buttonType)
 
77
    {
 
78
        if (m_initialized && m_buttonType == buttonType) return;
 
79
 
 
80
        m_buttonType = buttonType;
 
81
        loadPixmaps();
 
82
        update();
73
83
    }
74
84
 
75
85
    QSize minimumSizeHint() const
90
100
    {
91
101
        QPainter painter(this);
92
102
        QPixmap pix;
93
 
        if (isDown()) {
94
 
            pix = m_downPix;
95
 
        } else if (underMouse()) {
96
 
            pix = m_hoverPix;
 
103
        if (isEnabled()) {
 
104
            if (isDown()) {
 
105
                pix = m_downPix;
 
106
            } else if (underMouse()) {
 
107
                pix = m_hoverPix;
 
108
            } else {
 
109
                pix = m_normalPix;
 
110
            }
97
111
        } else {
98
112
            pix = m_normalPix;
99
113
        }
111
125
    QPixmap m_normalPix;
112
126
    QPixmap m_hoverPix;
113
127
    QPixmap m_downPix;
 
128
    bool m_initialized;
114
129
 
115
130
    void loadPixmaps()
116
131
    {
170
185
        m_windowButtonWidget->setFixedWidth(LauncherClient::MaximumWidth);
171
186
        QObject::connect(m_closeButton, SIGNAL(clicked()), m_windowHelper, SLOT(close()));
172
187
        QObject::connect(m_minimizeButton, SIGNAL(clicked()), m_windowHelper, SLOT(minimize()));
173
 
        QObject::connect(m_maximizeButton, SIGNAL(clicked()), m_windowHelper, SLOT(unmaximize()));
 
188
        QObject::connect(m_maximizeButton, SIGNAL(clicked()), m_windowHelper, SLOT(toggleMaximize()));
174
189
    }
175
190
 
176
191
    void setupWindowHelper()
244
259
        || d->m_menuBarWidget->isOpened()
245
260
        );
246
261
    bool showMenu = isOpened && !d->m_menuBarWidget->isEmpty() && isUserVisibleApp;
247
 
    bool showWindowButtons = isOpened && isMaximized;
 
262
    bool dashCanResize = d->m_windowHelper->dashCanResize();
 
263
    bool dashIsVisible = d->m_windowHelper->dashIsVisible();
 
264
    bool showWindowButtons = (isOpened && isMaximized) || dashIsVisible;
248
265
    bool showAppLabel = !(isMaximized && showMenu) && isUserVisibleApp && isOnSameScreen;
249
 
    bool showDesktopLabel = !isUserVisibleApp;
 
266
    bool showDesktopLabel = !app;
250
267
 
251
268
    d->m_windowButtonWidget->setVisible(showWindowButtons);
 
269
    d->m_maximizeButton->setButtonType(isMaximized ?
 
270
                                       PanelStyle::UnmaximizeWindowButton :
 
271
                                       PanelStyle::MaximizeWindowButton);
 
272
    /* disable the minimize button for the dash */
 
273
    d->m_minimizeButton->setEnabled(!dashIsVisible);
 
274
    /* and the maximize button, if the dash is not resizeable */
 
275
    d->m_maximizeButton->setEnabled(!dashIsVisible || dashCanResize);
252
276
 
253
 
    if (showAppLabel || showDesktopLabel) {
 
277
    if (showAppLabel || showDesktopLabel || dashIsVisible) {
254
278
        d->m_label->setVisible(true);
255
279
        if (showAppLabel) {
256
280
            // Define text
270
294
            d->m_label->setText(text);
271
295
        } else if (showDesktopLabel) {
272
296
            d->m_label->setText(u2dTr("Desktop", "nautilus"));
 
297
        } else {
 
298
            d->m_label->setText("");
273
299
        }
274
300
 
275
301
        // Define label width