void TaskBarContainer::showWindowListMenu()
{
    if(!windowListMenu)
        return;

    windowListMenu->init();

    // calc popup menu position
    QPoint pos(mapToGlobal(QPoint(0, 0)));

    switch(direction)
    {
        case KPanelApplet::Right:
            pos.setX(pos.x() + width());
            break;
        case KPanelApplet::Left:
            pos.setX(pos.x() - windowListMenu->sizeHint().width());
            break;
        case KPanelApplet::Down:
            pos.setY(pos.y() + height());
            break;
        case KPanelApplet::Up:
            pos.setY(pos.y() - windowListMenu->sizeHint().height());
        default:
            break;
    }

    disconnect(windowListButton, SIGNAL(pressed()), this, SLOT(showWindowListMenu()));
    windowListMenu->exec(pos);
    QTimer::singleShot(100, this, SLOT(reconnectWindowListButton()));
}
Beispiel #2
0
void TaskBarContainer::configure()
{
    setFont(TaskBarSettings::taskbarFont());
    showWindowListButton = TaskBarSettings::showWindowListBtn();

    if (!showWindowListButton)
    {
        delete windowListButton;
        windowListButton = 0;
        delete windowListMenu;
        windowListMenu = 0;
    }
    else if (windowListButton == 0)
    {
        // window list button
        windowListButton = new SimpleButton(this);
        windowListMenu= new KWindowListMenu;
        connect(windowListButton, SIGNAL(pressed()),
                SLOT(showWindowListMenu()));
        connect(windowListMenu, SIGNAL(aboutToHide()),
                SLOT(windowListMenuAboutToHide()));

        // geometry
        QString icon;
        switch (direction)
        {
            case KPanelApplet::Up:
                icon = "1uparrow";
                windowListButton->setMaximumHeight(BUTTON_MAX_WIDTH);
                break;
            case KPanelApplet::Down:
                icon = "1downarrow";
                windowListButton->setMaximumHeight(BUTTON_MAX_WIDTH);
                break;
            case KPanelApplet::Left:
                icon = "1leftarrow";
                windowListButton->setMaximumWidth(BUTTON_MAX_WIDTH);
                break;
            case KPanelApplet::Right:
                icon = "1rightarrow";
                windowListButton->setMaximumWidth(BUTTON_MAX_WIDTH);
                break;
        }

        windowListButton->setPixmap(kapp->iconLoader()->loadIcon(icon,
                                                                 KIcon::Panel,
                                                                 16));
        windowListButton->setMinimumSize(windowListButton->sizeHint());
        layout->insertWidget(0, windowListButton);
        windowListButton->show();
    }
}
void TaskBarContainer::reconnectWindowListButton()
{
    connect(windowListButton, SIGNAL(pressed()), SLOT(showWindowListMenu()));
}