Fixed line endings.
authorDavid Boddie <david.boddie@nokia.com>
Thu, 28 Apr 2011 17:04:16 +0000 (19:04 +0200)
committerDavid Boddie <david.boddie@nokia.com>
Tue, 24 May 2011 15:08:20 +0000 (17:08 +0200)
Conflicts:

examples/widgets/applicationicon/applicationicon.svg
examples/widgets/applicationicon/main.cpp
examples/widgets/elidedlabel/elidedlabel.cpp
examples/widgets/elidedlabel/elidedlabel.h
examples/widgets/elidedlabel/main.cpp
examples/widgets/elidedlabel/testwidget.cpp
examples/widgets/elidedlabel/testwidget.h
(cherry picked from commit 1b555a91f05b68c697b6985d1b672dc0fba5fc5a)
(cherry picked from commit c0e0bfdd451f42b10051e8064153b811080ffa0e)

examples/widgets/applicationicon/applicationicon.svg [new file with mode: 0644]
examples/widgets/applicationicon/main.cpp [new file with mode: 0644]
examples/widgets/elidedlabel/elidedlabel.cpp [new file with mode: 0644]
examples/widgets/elidedlabel/elidedlabel.h [new file with mode: 0644]
examples/widgets/elidedlabel/main.cpp [new file with mode: 0644]
examples/widgets/elidedlabel/testwidget.cpp [new file with mode: 0644]
examples/widgets/elidedlabel/testwidget.h [new file with mode: 0644]

diff --git a/examples/widgets/applicationicon/applicationicon.svg b/examples/widgets/applicationicon/applicationicon.svg
new file mode 100644 (file)
index 0000000..aa2835b
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="44" height="44" baseProfile="tiny" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 44 44">
+ <defs>
+  <linearGradient id="linearGradient2824" y2="1051.4" gradientUnits="userSpaceOnUse" x2="30.217" y1="1009.4" x1="15.109">
+   <stop stop-color="#41a200" offset="0"/>
+   <stop stop-color="#9be948" offset="0.63897"/>
+   <stop stop-color="#beff61" offset="1"/>
+  </linearGradient>
+  <linearGradient id="linearGradient2848" y2="1009.4" gradientUnits="userSpaceOnUse" y1="1053.7" gradientTransform="matrix(0.85714286,0,0,0.85714286,2.1428572,146.19467)" x2="15.085" x1="31.027">
+   <stop stop-color="#41a200" offset="0"/>
+   <stop stop-color="#9be948" offset="0.88602"/>
+   <stop stop-color="#beff61" offset="1"/>
+  </linearGradient>
+ </defs>
+ <g id="layer1" transform="translate(0,-1008.3622)">
+  <path id="rect2816" d="m8.412,1009h27.18c4.106,0,7.412,3.306,7.412,7.412v27.18c0,4.106-3.306,7.412-7.412,7.412h-27.18c-4.106,0-7.412-3-7.412-7v-27.18c0-4.106,3.306-7.412,7.412-7.412z" stroke-linecap="round" stroke-miterlimit="4" stroke-width="0.64300001" fill="url(#linearGradient2824)"/>
+  <path id="rect2816-4" d="m9.353,1011h25.29c3.52,0,6.353,2.833,6.353,6.353v25.29c0,3.519-2.833,6.353-6.353,6.353h-25.29c-3.52-0.1-6.353-2.1-6.353-6.1v-25.29c0-3.519,2.833-6.353,6.353-6.353z" stroke-linecap="round" stroke-miterlimit="4" stroke-width="0.64300001" fill="url(#linearGradient2848)"/>
+  <g id="text2893" font-weight="normal" transform="translate(-1.100281,1010.3622)" font-style="normal" font-stretch="normal" font-size="48px" font-variant="normal" font-family="Cambria Math" fill="#e5ffd5">
+   <path id="path2908" fill="#e5ffd5" d="m11.92,35.44c1.359-1.719,2.672-3.828,3.938-6.328l7.522-14.742c-0.8-3.13-1.54-5.321-2.24-6.586-0.69-1.266-1.76-1.899-3.2-1.899-1.328,0.0000307-2.594,0.6563-3.797,1.969l-1.148-1.266c2.156-2.359,4.289-3.539,6.398-3.539,1.469,0.0000335,2.609,0.418,3.422,1.254,0.8125,0.836,1.492,2.168,2.039,3.996,0.5469,1.828,1.32,5.359,2.32,10.59,1.297,6.828,2.309,11.14,3.035,12.93,0.7265,1.789,1.59,2.684,2.59,2.684,0.7187,0.000002,1.383-0.25,1.992-0.75l0.8906,1.406c-1.547,1.203-2.938,1.805-4.172,1.805-1.75,0-3-0.8984-3.75-2.695-0.75-1.797-1.797-6.633-3.141-14.51h-0.1406c-2.658,5.391-5.258,11.001-7.798,16.831h-4.758z"/>
+  </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/examples/widgets/applicationicon/main.cpp b/examples/widgets/applicationicon/main.cpp
new file mode 100644 (file)
index 0000000..099bdac
--- /dev/null
@@ -0,0 +1,14 @@
+#include <QtGui/QApplication>
+#include <QtGui/QLabel>
+
+int main(int argc, char *argv[])
+{
+    QApplication a(argc, argv);
+    QLabel label(QObject::tr("Hello, world!"));
+#if defined(Q_WS_S60)
+    label.showMaximized();
+#else
+    label.show();
+#endif
+    return a.exec();
+}
diff --git a/examples/widgets/elidedlabel/elidedlabel.cpp b/examples/widgets/elidedlabel/elidedlabel.cpp
new file mode 100644 (file)
index 0000000..4f3ac5e
--- /dev/null
@@ -0,0 +1,71 @@
+#include "elidedlabel.h"
+
+#include <QPainter>
+#include <QTextLayout>
+#include <QDebug>
+
+//! [0]
+ElidedLabel::ElidedLabel(const QString &text, QWidget *parent)
+    : QFrame(parent)
+    , elided(false)
+    , content(text)
+{
+    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
+}
+//! [0]
+
+//! [1]
+void ElidedLabel::setText(const QString &newText)
+{
+    content = newText;
+    update();
+}
+//! [1]
+
+//! [2]
+void ElidedLabel::paintEvent(QPaintEvent *event)
+{
+    QFrame::paintEvent(event);
+
+    QPainter painter(this);
+    QFontMetrics fontMetrics = painter.fontMetrics();
+
+    bool didElide = false;
+    int lineSpacing = fontMetrics.lineSpacing();
+    int y = 0;
+
+    QTextLayout textLayout(content, painter.font());
+    textLayout.beginLayout();
+    forever {
+        QTextLine line = textLayout.createLine();
+
+        if (!line.isValid())
+            break;
+
+        line.setLineWidth(width());
+        int nextLineY = y + lineSpacing;
+
+        if (height() >= nextLineY + lineSpacing) {
+            line.draw(&painter, QPoint(0, y));
+            y = nextLineY;
+            //! [2]
+            //! [3]
+        } else {
+            QString lastLine = content.mid(line.textStart());
+            QString elidedLastLine = fontMetrics.elidedText(lastLine, Qt::ElideRight, width());
+            painter.drawText(QPoint(0, y + fontMetrics.ascent()), elidedLastLine);
+            line = textLayout.createLine();
+            didElide = line.isValid();
+            break;
+        }
+    }
+    textLayout.endLayout();
+    //! [3]
+
+    //! [4]
+    if (didElide != elided) {
+        elided = didElide;
+        emit elisionChanged(didElide);
+    }
+}
+//! [4]
diff --git a/examples/widgets/elidedlabel/elidedlabel.h b/examples/widgets/elidedlabel/elidedlabel.h
new file mode 100644 (file)
index 0000000..b68f605
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef ELIDEDLABEL_H
+#define ELIDEDLABEL_H
+
+#include <QFrame>
+#include <QRect>
+#include <QResizeEvent>
+#include <QString>
+#include <QWidget>
+
+//! [0]
+class ElidedLabel : public QFrame
+{
+    Q_OBJECT
+    Q_PROPERTY(QString text READ text WRITE setText)
+    Q_PROPERTY(bool isElided READ isElided)
+
+public:
+    ElidedLabel(const QString &text, QWidget *parent = 0);
+
+    void setText(const QString &text);
+    const QString & text() const { return content; }
+    bool isElided() const { return elided; }
+
+protected:
+    void paintEvent(QPaintEvent *event);
+
+signals:
+    void elisionChanged(bool elided);
+
+private:
+    bool elided;
+    QString content;
+};
+//! [0]
+
+#endif // TEXTWRAPPINGWIDGET_H
diff --git a/examples/widgets/elidedlabel/main.cpp b/examples/widgets/elidedlabel/main.cpp
new file mode 100644 (file)
index 0000000..1346d25
--- /dev/null
@@ -0,0 +1,13 @@
+#include "testwidget.h"
+
+#include <QtGui/QApplication>
+
+//! [0]
+int main( int argc, char *argv[] )
+{
+    QApplication application( argc, argv );
+    TestWidget w;
+    w.showFullScreen();
+    return application.exec();
+}
+//! [0]
diff --git a/examples/widgets/elidedlabel/testwidget.cpp b/examples/widgets/elidedlabel/testwidget.cpp
new file mode 100644 (file)
index 0000000..d3bf521
--- /dev/null
@@ -0,0 +1,124 @@
+#include "testwidget.h"
+#include "elidedlabel.h"
+
+#include <QLabel>
+#include <QPushButton>
+#include <QSizePolicy>
+#include <QGridLayout>
+
+//! [0]
+TestWidget::TestWidget(QWidget *parent):
+    QWidget(parent)
+{
+    const QString romeo = tr(
+        "But soft, what light through yonder window breaks? / "
+        "It is the east, and Juliet is the sun. / "
+        "Arise, fair sun, and kill the envious moon, / "
+        "Who is already sick and pale with grief / "
+        "That thou, her maid, art far more fair than she."
+    );
+
+    const QString macbeth = tr(
+        "To-morrow, and to-morrow, and to-morrow, / "
+        "Creeps in this petty pace from day to day, / "
+        "To the last syllable of recorded time; / "
+        "And all our yesterdays have lighted fools / "
+        "The way to dusty death. Out, out, brief candle! / "
+        "Life's but a walking shadow, a poor player, / "
+        "That struts and frets his hour upon the stage, / "
+        "And then is heard no more. It is a tale / "
+        "Told by an idiot, full of sound and fury, / "
+        "Signifying nothing."
+    );
+
+    const QString harry = tr("Feeling lucky, punk?");
+
+    textSamples << romeo << macbeth << harry;
+    //! [0]
+
+    //! [1]
+    sampleIndex = 0;
+    elidedText = new ElidedLabel(textSamples[sampleIndex], this);
+    elidedText->setFrameStyle(QFrame::Box);
+    //! [1]
+
+    //! [2]
+    QPushButton *switchButton = new QPushButton(tr("Switch text"));
+    connect(switchButton, SIGNAL(clicked(bool)), this, SLOT(switchText()));
+
+    QPushButton *exitButton = new QPushButton(tr("Exit"));
+    connect(exitButton, SIGNAL(clicked(bool)), this, SLOT(close()));
+
+    QLabel *label = new QLabel(tr("Elided"));
+    label->setVisible(elidedText->isElided());
+    connect(elidedText, SIGNAL(elisionChanged(bool)), label, SLOT(setVisible(bool)));
+    //! [2]
+
+    //! [3]
+    widthSlider = new QSlider(Qt::Horizontal);
+    widthSlider->setMinimum(0);
+    connect(widthSlider, SIGNAL(valueChanged(int)), this, SLOT(onWidthChanged(int)));
+
+    heightSlider = new QSlider(Qt::Vertical);
+    heightSlider->setInvertedAppearance(true);
+    heightSlider->setMinimum(0);
+    connect(heightSlider, SIGNAL(valueChanged(int)), this, SLOT(onHeightChanged(int)));
+    //! [3]
+
+    //! [4]
+    QGridLayout *layout = new QGridLayout();
+    layout->addWidget(label, 0, 1, Qt::AlignCenter);
+    layout->addWidget(switchButton, 0, 2);
+    layout->addWidget(exitButton, 0, 3);
+    layout->addWidget(widthSlider, 1, 1, 1, 3);
+    layout->addWidget(heightSlider, 2, 0);
+    layout->addWidget(elidedText, 2, 1, 1, 3, Qt::AlignTop | Qt::AlignLeft);
+
+    setLayout(layout);
+    //! [4]
+
+    //! [5]
+#ifdef Q_WS_MAEMO_5
+    setAttribute(Qt::WA_Maemo5AutoOrientation, true);
+#endif
+}
+//! [5]
+
+//! [6]
+void TestWidget::resizeEvent(QResizeEvent *event)
+{
+    Q_UNUSED(event)
+
+    int maxWidth = widthSlider->width();
+    widthSlider->setMaximum(maxWidth);
+    widthSlider->setValue(maxWidth / 2);
+
+    int maxHeight = heightSlider->height();
+    heightSlider->setMaximum(maxHeight);
+    heightSlider->setValue(maxHeight / 2);
+
+    elidedText->setFixedSize(widthSlider->value(), heightSlider->value());
+}
+//! [6]
+
+//! [7]
+void TestWidget::switchText()
+{
+    sampleIndex = (sampleIndex + 1) % textSamples.size();
+    elidedText->setText(textSamples.at(sampleIndex));
+}
+//! [7]
+
+//! [8]
+void TestWidget::onWidthChanged(int width)
+{
+    elidedText->setFixedWidth(width);
+}
+
+void TestWidget::onHeightChanged(int height)
+{
+    elidedText->setFixedHeight(height);
+}
+//! [8]
+
+
diff --git a/examples/widgets/elidedlabel/testwidget.h b/examples/widgets/elidedlabel/testwidget.h
new file mode 100644 (file)
index 0000000..ed4de95
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef TESTWIDGET_H
+#define TESTWIDGET_H
+
+#include <QWidget>
+#include <QStringList>
+#include <QSlider>
+#include <QComboBox>
+
+class ElidedLabel;
+
+//! [0]
+class TestWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    TestWidget(QWidget *parent = 0);
+
+protected:
+    void resizeEvent(QResizeEvent *event);
+
+private slots:
+    void switchText();
+    void onWidthChanged(int width);
+    void onHeightChanged(int height);
+
+private:
+    int sampleIndex;
+    QStringList textSamples;
+    ElidedLabel *elidedText;
+    QSlider *heightSlider;
+    QSlider *widthSlider;
+};
+//! [0]
+
+#endif // TESTWIDGET_H