Set the size policy for the artist info widgets properly so they're not all squished together.

This commit is contained in:
David Sansome 2010-10-07 20:18:37 +00:00
parent dcd18aacdc
commit a85c292118
7 changed files with 77 additions and 8 deletions

View File

@ -159,6 +159,7 @@ set(SOURCES
ui/systemtrayicon.cpp
widgets/autoexpandingtreeview.cpp
widgets/autosizedtextedit.cpp
widgets/busyindicator.cpp
widgets/elidedlabel.cpp
widgets/equalizerslider.cpp
@ -293,6 +294,7 @@ set(HEADERS
ui/systemtrayicon.h
widgets/autoexpandingtreeview.h
widgets/autosizedtextedit.h
widgets/busyindicator.h
widgets/elidedlabel.h
widgets/equalizerslider.h

View File

@ -42,8 +42,8 @@ ArtistInfoView::ArtistInfoView(QWidget *parent)
// Add a container widget to the scroll area
QWidget* container_widget = new QWidget;
container_widget->setLayout(container_);
container_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
container_->setSizeConstraint(QLayout::SetNoConstraint);
container_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding);
container_->setSizeConstraint(QLayout::SetMinAndMaxSize);
scroll_area_->setWidget(container_widget);
scroll_area_->setWidgetResizable(true);

View File

@ -20,7 +20,6 @@
#include <QStyleOption>
#include <QVBoxLayout>
const int CollapsibleInfoPane::kMargin = 6;
const int CollapsibleInfoPane::kTitleHeight = 20;
CollapsibleInfoPane::CollapsibleInfoPane(QWidget* parent)
@ -29,7 +28,8 @@ CollapsibleInfoPane::CollapsibleInfoPane(QWidget* parent)
expanded_(true)
{
QVBoxLayout* layout = new QVBoxLayout(this);
layout->setContentsMargins(kMargin, kTitleHeight, kMargin, 0);
layout->setContentsMargins(0, kTitleHeight, 0, 0);
layout->setSizeConstraint(QLayout::SetMinAndMaxSize);
setLayout(layout);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);

View File

@ -26,7 +26,6 @@ public:
CollapsibleInfoPane(QWidget* parent = 0);
static const int kTitleHeight;
static const int kMargin;
void SetTitle(const QString& title);
void SetWidget(QWidget* widget);

View File

@ -15,8 +15,7 @@
*/
#include "echonestartistinfo.h"
#include <QTextEdit>
#include "widgets/autosizedtextedit.h"
#include <echonest/Artist.h>
@ -81,7 +80,7 @@ void EchoNestArtistInfo::BiographiesFinished() {
RequestPtr request = ReplyFinished(qobject_cast<QNetworkReply*>(sender()));
foreach (const Echonest::Biography& bio, request->artist_->biographies()) {
QTextEdit* editor = new QTextEdit;
QTextEdit* editor = new AutoSizedTextEdit;
editor->setHtml(bio.text());
emit InfoReady(request->id_, tr("Biography from %1").arg(bio.site()), editor);

View File

@ -0,0 +1,35 @@
/* This file is part of Clementine.
Clementine 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, either version 3 of the License, or
(at your option) any later version.
Clementine 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.
You should have received a copy of the GNU General Public License
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "autosizedtextedit.h"
AutoSizedTextEdit::AutoSizedTextEdit(QWidget* parent)
: QTextEdit(parent)
{
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}
void AutoSizedTextEdit::resizeEvent(QResizeEvent* e) {
const int w = qMax(100, width());
document()->setTextWidth(w);
setMinimumHeight(document()->size().height());
}
QSize AutoSizedTextEdit::sizeHint() const {
return minimumSize();
}

View File

@ -0,0 +1,34 @@
/* This file is part of Clementine.
Clementine 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, either version 3 of the License, or
(at your option) any later version.
Clementine 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.
You should have received a copy of the GNU General Public License
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef AUTOSIZEDTEXTEDIT_H
#define AUTOSIZEDTEXTEDIT_H
#include <QTextEdit>
class AutoSizedTextEdit : public QTextEdit {
Q_OBJECT
public:
AutoSizedTextEdit(QWidget* parent = 0);
QSize sizeHint() const;
protected:
void resizeEvent(QResizeEvent* e);
};
#endif // AUTOSIZEDTEXTEDIT_H