Make the icons in the sidebar a bit smaller and add a spacer between the devices button and the lyrics button.
This commit is contained in:
parent
56d72a00bf
commit
8b3972f447
|
@ -53,6 +53,14 @@ using namespace Internal;
|
|||
const int FancyTabBar::m_rounding = 22;
|
||||
const int FancyTabBar::m_textPadding = 4;
|
||||
|
||||
FancyTab::FancyTab(QWidget* tabbar)
|
||||
: QWidget(tabbar), enabled(false), tabbar(tabbar), m_fader(0)
|
||||
{
|
||||
animator.setPropertyName("fader");
|
||||
animator.setTargetObject(this);
|
||||
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
|
||||
}
|
||||
|
||||
void FancyTab::fadeIn()
|
||||
{
|
||||
animator.stop();
|
||||
|
@ -88,6 +96,12 @@ FancyTabBar::FancyTabBar(QWidget *parent)
|
|||
setMouseTracking(true); // Needed for hover events
|
||||
m_triggerTimer.setSingleShot(true);
|
||||
|
||||
QVBoxLayout* layout = new QVBoxLayout;
|
||||
layout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Expanding));
|
||||
layout->setSpacing(0);
|
||||
layout->setContentsMargins(0, 0, 0, 0);
|
||||
setLayout(layout);
|
||||
|
||||
// We use a zerotimer to keep the sidebar responsive
|
||||
connect(&m_triggerTimer, SIGNAL(timeout()), this, SLOT(emitCurrentIndex()));
|
||||
}
|
||||
|
@ -97,22 +111,34 @@ FancyTabBar::~FancyTabBar()
|
|||
delete style();
|
||||
}
|
||||
|
||||
QSize FancyTab::sizeHint() const {
|
||||
QFont boldFont(font());
|
||||
boldFont.setPointSizeF(Utils::StyleHelper::sidebarFontSize());
|
||||
boldFont.setBold(true);
|
||||
QFontMetrics fm(boldFont);
|
||||
int spacing = 8;
|
||||
int width = 60 + spacing + 2;
|
||||
int iconHeight = 32;
|
||||
QSize ret(width, iconHeight + spacing + fm.height());
|
||||
return ret;
|
||||
}
|
||||
|
||||
QSize FancyTabBar::tabSizeHint(bool minimum) const
|
||||
{
|
||||
QFont boldFont(font());
|
||||
boldFont.setPointSizeF(Utils::StyleHelper::sidebarFontSize());
|
||||
boldFont.setBold(true);
|
||||
QFontMetrics fm(boldFont);
|
||||
int spacing = 8;
|
||||
int width = 60 + spacing + 2;
|
||||
int maxLabelwidth = 0;
|
||||
for (int tab=0 ; tab<count() ;++tab) {
|
||||
int width = fm.width(tabText(tab));
|
||||
if (width > maxLabelwidth)
|
||||
maxLabelwidth = width;
|
||||
}
|
||||
int iconHeight = minimum ? 0 : 32;
|
||||
return QSize(qMax(width, maxLabelwidth + 4), iconHeight + spacing + fm.height());
|
||||
QFont boldFont(font());
|
||||
boldFont.setPointSizeF(Utils::StyleHelper::sidebarFontSize());
|
||||
boldFont.setBold(true);
|
||||
QFontMetrics fm(boldFont);
|
||||
int spacing = 8;
|
||||
int width = 60 + spacing + 2;
|
||||
int maxLabelwidth = 0;
|
||||
for (int tab=0 ; tab<count() ;++tab) {
|
||||
int width = fm.width(m_tabs[tab]->text);
|
||||
if (width > maxLabelwidth)
|
||||
maxLabelwidth = width;
|
||||
}
|
||||
int iconHeight = minimum ? 0 : 32;
|
||||
return QSize(qMax(width, maxLabelwidth + 4), iconHeight + spacing + fm.height());
|
||||
}
|
||||
|
||||
void FancyTabBar::paintEvent(QPaintEvent *event)
|
||||
|
@ -201,12 +227,7 @@ QSize FancyTabBar::minimumSizeHint() const
|
|||
|
||||
QRect FancyTabBar::tabRect(int index) const
|
||||
{
|
||||
QSize sh = tabSizeHint();
|
||||
|
||||
if (sh.height() * m_tabs.count() > height())
|
||||
sh.setHeight(height() / m_tabs.count());
|
||||
|
||||
return QRect(0, index * sh.height(), sh.width(), sh.height());
|
||||
return m_tabs[index]->geometry();
|
||||
|
||||
}
|
||||
|
||||
|
@ -234,6 +255,19 @@ void FancyTabBar::mousePressEvent(QMouseEvent *e)
|
|||
}
|
||||
}
|
||||
|
||||
void FancyTabBar::addTab(const QIcon& icon, const QString& label) {
|
||||
FancyTab *tab = new FancyTab(this);
|
||||
tab->icon = icon;
|
||||
tab->text = label;
|
||||
m_tabs.append(tab);
|
||||
qobject_cast<QVBoxLayout*>(layout())->insertWidget(layout()->count()-1, tab);
|
||||
}
|
||||
|
||||
void FancyTabBar::addSpacer(int size) {
|
||||
qobject_cast<QVBoxLayout*>(layout())->insertSpacerItem(layout()->count()-1,
|
||||
new QSpacerItem(0, size, QSizePolicy::Fixed, QSizePolicy::Maximum));
|
||||
}
|
||||
|
||||
void FancyTabBar::paintTab(QPainter *painter, int tabIndex) const
|
||||
{
|
||||
if (!validIndex(tabIndex)) {
|
||||
|
@ -275,6 +309,7 @@ void FancyTabBar::paintTab(QPainter *painter, int tabIndex) const
|
|||
QString tabText(this->tabText(tabIndex));
|
||||
QRect tabTextRect(tabRect(tabIndex));
|
||||
QRect tabIconRect(tabTextRect);
|
||||
tabIconRect.adjust(+4, +4, -4, -4);
|
||||
tabTextRect.translate(0, -2);
|
||||
QFont boldFont(painter->font());
|
||||
boldFont.setPointSizeF(Utils::StyleHelper::sidebarFontSize());
|
||||
|
@ -426,10 +461,14 @@ FancyTabWidget::FancyTabWidget(QWidget *parent)
|
|||
connect(m_tabBar, SIGNAL(currentChanged(int)), this, SLOT(showWidget(int)));
|
||||
}
|
||||
|
||||
void FancyTabWidget::insertTab(int index, QWidget *tab, const QIcon &icon, const QString &label)
|
||||
void FancyTabWidget::addTab(QWidget *tab, const QIcon &icon, const QString &label)
|
||||
{
|
||||
m_modesStack->insertWidget(index, tab);
|
||||
m_tabBar->insertTab(index, icon, label);
|
||||
m_modesStack->addWidget(tab);
|
||||
m_tabBar->addTab(icon, label);
|
||||
}
|
||||
|
||||
void FancyTabWidget::addSpacer(int size) {
|
||||
m_tabBar->addSpacer(size);
|
||||
}
|
||||
|
||||
void FancyTabWidget::removeTab(int index)
|
||||
|
|
|
@ -45,18 +45,17 @@ QT_END_NAMESPACE
|
|||
namespace Core {
|
||||
namespace Internal {
|
||||
|
||||
class FancyTab : public QObject{
|
||||
class FancyTab : public QWidget{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(float fader READ fader WRITE setFader)
|
||||
public:
|
||||
FancyTab(QWidget *tabbar) : enabled(false), tabbar(tabbar), m_fader(0) {
|
||||
animator.setPropertyName("fader");
|
||||
animator.setTargetObject(this);
|
||||
}
|
||||
FancyTab(QWidget *tabbar);
|
||||
float fader() { return m_fader; }
|
||||
void setFader(float value);
|
||||
|
||||
QSize sizeHint() const;
|
||||
|
||||
void fadeIn();
|
||||
void fadeOut();
|
||||
|
||||
|
@ -95,12 +94,8 @@ public:
|
|||
void setTabEnabled(int index, bool enable);
|
||||
bool isTabEnabled(int index) const;
|
||||
|
||||
void insertTab(int index, const QIcon &icon, const QString &label) {
|
||||
FancyTab *tab = new FancyTab(this);
|
||||
tab->icon = icon;
|
||||
tab->text = label;
|
||||
m_tabs.insert(index, tab);
|
||||
}
|
||||
void addTab(const QIcon &icon, const QString &label);
|
||||
void addSpacer(int size = 40);
|
||||
void setEnabled(int index, bool enabled);
|
||||
void removeTab(int index) {
|
||||
FancyTab *tab = m_tabs.takeAt(index);
|
||||
|
@ -142,7 +137,8 @@ class FancyTabWidget : public QWidget
|
|||
public:
|
||||
FancyTabWidget(QWidget *parent = 0);
|
||||
|
||||
void insertTab(int index, QWidget *tab, const QIcon &icon, const QString &label);
|
||||
void addTab(QWidget *tab, const QIcon &icon, const QString &label);
|
||||
void addSpacer(int size = 40);
|
||||
void removeTab(int index);
|
||||
void setBackgroundBrush(const QBrush &brush);
|
||||
void addCornerWidget(QWidget *widget);
|
||||
|
|
|
@ -183,6 +183,7 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
|
|||
AddFancyTab(file_view_, IconLoader::Load("document-open"), tr("Files"));
|
||||
AddFancyTab(radio_view_, QIcon(":last.fm/icon_radio.png"), tr("Internet"));
|
||||
AddFancyTab(device_view_, IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Devices"));
|
||||
ui_->tabs->addSpacer();
|
||||
AddFancyTab(lyric_view_, IconLoader::Load("view-media-lyrics"), tr("Lyrics"));
|
||||
AddFancyTab(new QWidget, IconLoader::Load("view-media-lyrics"), tr("Song info"));
|
||||
AddFancyTab(new QWidget, IconLoader::Load("view-media-lyrics"), tr("Artist info"));
|
||||
|
@ -1579,6 +1580,6 @@ void MainWindow::ShowVisualisations() {
|
|||
|
||||
void MainWindow::AddFancyTab(QWidget* widget, const QIcon& icon, const QString& label) {
|
||||
const int i = ui_->tabs->count();
|
||||
ui_->tabs->insertTab(i, widget, icon, label);
|
||||
ui_->tabs->addTab(widget, icon, label);
|
||||
ui_->tabs->setTabEnabled(i, true);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue