promoe/src/TitleBar.cpp
Thomas Frauendorfer f0211e3958 OTHER: Fixes to Skin handling
Fixed grapicglitches in equalizer, and added close button to equalizer
2008-05-16 01:55:25 +02:00

186 lines
4.8 KiB
C++

/**
* This file is a part of Promoe, an XMMS2 Client.
*
* Copyright (C) 2005-2008 XMMS2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "XMMSHandler.h"
#include "mainwindow.h"
#include "TitleBar.h"
#include "Display.h"
#include "SkinChooser.h"
// #include "MedialibWindow.h"
#include "settingsdialog.h"
#include "pixmapbutton.h"
#include "BrowseDialog.h"
#include "Skin.h"
#include <QMenu>
TitleBar::TitleBar (QWidget *parent, bool shaded) : PixWidget (parent)
{
MainWindow *mw = dynamic_cast<MainWindow*>(window ());
m_shaded = shaded;
Skin *skin = Skin::getInstance ();
setFixedSize (275, 14);
m_menubtn = new PixmapButton (this);
m_menubtn->resize (skin->getSize (Skin::BUTTON_MW_MENU));
m_menubtn->move (skin->getPos (Skin::BUTTON_MW_MENU));
connect (m_menubtn, SIGNAL (clicked ()), this, SLOT (showMenu ()));
m_minimize = new PixmapButton (this);
m_minimize->resize (skin->getSize (Skin::BUTTON_MW_MINIMIZE));
m_minimize->move (skin->getPos (Skin::BUTTON_MW_MINIMIZE));
connect (m_minimize, SIGNAL (clicked ()), mw, SLOT (showMinimized ()));
if (shaded) {
m_shadebtn = new PixmapButton (this);
m_shadebtn->resize (skin->getSize (Skin::BUTTON_MW_SHADED_UNSHADE));
m_shadebtn->move (skin->getPos (Skin::BUTTON_MW_SHADED_UNSHADE));
} else {
m_shadebtn = new PixmapButton (this);
m_shadebtn->resize (skin->getSize (Skin::BUTTON_MW_SHADE));
m_shadebtn->move (skin->getPos (Skin::BUTTON_MW_SHADE));
}
connect (m_shadebtn, SIGNAL (clicked()), mw, SLOT (switchDisplay ()));
m_closebtn = new PixmapButton (this);
m_closebtn->resize (skin->getSize (Skin::BUTTON_MW_CLOSE));
m_closebtn->move (skin->getPos (Skin::BUTTON_MW_CLOSE));
connect (m_closebtn, SIGNAL (clicked()), qApp, SLOT (quit ()));
}
void
TitleBar::showMenu (void)
{
QMenu qm(this);
QAction *a;
a = new QAction (tr ("Medialib browser"), this);
a->setShortcut (tr ("Alt+M"));
connect (a, SIGNAL (triggered ()), this, SLOT (showMlib ()));
a->setEnabled(false); // FIXME: disabled for now, as Mlib-browser doesn't work
qm.addAction (a);
a = new QAction (tr ("Server-side browser"), this);
a->setShortcut (tr ("Alt+S"));
connect (a, SIGNAL (triggered ()), this, SLOT (showServerB ()));
qm.addAction (a);
qm.addSeparator ();
a = new QAction (tr ("Theme settings"), this);
a->setShortcut (tr ("Alt+T"));
connect (a, SIGNAL (triggered ()), this, SLOT (showTheme ()));
qm.addAction (a);
a = new QAction (tr ("Application settings"), this);
a->setShortcut (tr ("Alt+A"));
connect (a, SIGNAL (triggered ()), this, SLOT (showSettings ()));
qm.addAction (a);
a = new QAction (tr ("Server settings"), this);
a->setShortcut (tr ("Alt+S"));
a->setEnabled(false); // FIXME: disabled for now, not yet implemented
qm.addAction (a);
qm.addSeparator ();
a = new QAction (tr ("Quit"), this);
a->setShortcut (tr ("Ctrl+Q"));
connect (a, SIGNAL (triggered ()), qApp, SLOT (quit ()));
qm.addAction (a);
qm.exec(QPoint (window()->pos().x()+6, window()->pos().y()+3));
}
void
TitleBar::showMlib ()
{
/*
MedialibWindow *mw = new MedialibWindow (window ());
mw->show ();
*/
}
void
TitleBar::showServerB ()
{
BrowseDialog *bd = new BrowseDialog (window ());
bd->show ();
}
void
TitleBar::showSettings ()
{
SettingsDialog *sw = new SettingsDialog (window ());
sw->show ();
}
void
TitleBar::showTheme ()
{
SkinChooser *sk = new SkinChooser (window());
sk->show();
}
void
TitleBar::setPixmaps (Skin *skin)
{
if (m_shaded) {
m_pixmap_active = skin->getItem (Skin::STATUSBAR_0);
m_pixmap_inactive = skin->getItem (Skin::STATUSBAR_1);
} else {
m_pixmap_active = skin->getItem (Skin::TITLEBAR_0);
m_pixmap_inactive = skin->getItem (Skin::TITLEBAR_1);
}
if (underMouse()) {
m_pixmap = m_pixmap_active;
} else {
m_pixmap = m_pixmap_inactive;
}
m_menubtn->setIcon (skin->getIcon (Skin::BUTTON_MW_MENU));
m_minimize->setIcon (skin->getIcon (Skin::BUTTON_MW_MINIMIZE));
if (m_shaded) {
m_shadebtn->setIcon (skin->getIcon (Skin::BUTTON_MW_SHADED_UNSHADE));
} else {
m_shadebtn->setIcon (skin->getIcon (Skin::BUTTON_MW_SHADE));
}
m_closebtn->setIcon (skin->getIcon (Skin::BUTTON_MW_CLOSE));
update ();
}
TitleBar::~TitleBar ()
{
}
void
TitleBar::setActive (bool active)
{
if (active) {
m_pixmap = m_pixmap_active;
update ();
} else {
m_pixmap = m_pixmap_inactive;
update ();
}
}
void
TitleBar::mouseDoubleClickEvent (QMouseEvent *event)
{
MainWindow *mw = dynamic_cast<MainWindow*>(window ());
mw->switchDisplay ();
}