welcome screen: preview in news feed, Buttons added, resizing sanatized

Manage Sessions replaces "Restore last session" (which can be done by clicking
the "(last session)" session anyway. Also, added a "Create New Project" button.
Ensured that the welcome screen is only as high as needed (will orient on the
amount of items in the contained treewidgets). Scrolling is still last resort.
This commit is contained in:
Daniel Molkentin
2009-05-28 13:47:15 +02:00
parent 0a1367cdfd
commit 32557b0b39
10 changed files with 320 additions and 68 deletions

View File

@@ -28,14 +28,85 @@
**************************************************************************/ **************************************************************************/
#include <QtCore/QDebug> #include <QtCore/QDebug>
#include <QtCore/QSysInfo>
#include <QtCore/QLocale>
#include <QtGui/QDesktopServices> #include <QtGui/QDesktopServices>
#include <QtGui/QLineEdit> #include <QtGui/QLineEdit>
#include <QtNetwork/QHttp> #include <QtNetwork/QHttp>
#include <coreplugin/coreconstants.h>
#include "rssfetcher.h" #include "rssfetcher.h"
#ifdef Q_OS_UNIX
#include <sys/utsname.h>
#endif
using namespace Core::Internal; using namespace Core::Internal;
static const QString getOsString()
{
QString osString;
#if defined(Q_OS_WIN)
switch (QSysInfo::WindowsVersion) {
case (QSysInfo::WV_4_0):
osString += QLatin1String("WinNT4.0");
break;
case (QSysInfo::WV_5_0):
osString += QLatin1String("Windows NT 5.0");
break;
case (QSysInfo::WV_5_1):
osString += QLatin1String("Windows NT 5.1");
break;
case (QSysInfo::WV_5_2):
osString += QLatin1String("Windows NT 5.2");
break;
case (QSysInfo::WV_6_0):
osString += QLatin1String("Windows NT 6.0");
break;
case (QSysInfo::WV_6_1):
osString += QLatin1String("Windows NT 6.1");
break;
default:
osString += QLatin1String("Windows NT (Unknown)");
break;
}
#elif defined (Q_OS_MAC)
if (QSysInfo::ByteOrder == QSysInfo::BigEndian)
osString += QLatin1String("PPC ");
else
osString += QLatin1String("Intel ");
osString += QLatin1String("Mac OS X ");
switch (QSysInfo::MacintoshVersion) {
case (QSysInfo::MV_10_3):
osString += QLatin1String("10_3");
break;
case (QSysInfo::MV_10_4):
osString += QLatin1String("10_4");
break;
case (QSysInfo::MV_10_5):
osString += QLatin1String("10_5");
break;
case (QSysInfo::MV_10_6):
osString += QLatin1String("10_6");
break;
default:
osString += QLatin1String("(Unknown)");
break;
}
#elif defined (Q_OS_UNIX)
struct utsname uts;
if (uname(&uts) == 0)
osString += QString("%1 %2").arg(QLatin1String(uts.sysname))
.arg(QLatin1String(uts.release));
else
osString += QLatin1String("Unix (Unknown)");
#else
ossttring = QLatin1String("Unknown OS");
#endif
return osString;
}
RSSFetcher::RSSFetcher(int maxItems, QObject *parent) RSSFetcher::RSSFetcher(int maxItems, QObject *parent)
: QObject(parent), m_items(0), m_maxItems(maxItems) : QObject(parent), m_items(0), m_maxItems(maxItems)
{ {
@@ -49,7 +120,15 @@ RSSFetcher::RSSFetcher(int maxItems, QObject *parent)
void RSSFetcher::fetch(const QUrl &url) void RSSFetcher::fetch(const QUrl &url)
{ {
m_http.setHost(url.host()); m_http.setHost(url.host());
m_connectionId = m_http.get(url.path()); QString agentStr = QString("Qt-Creator/%1 (QHttp %2; %3; %4; %5 bit)")
.arg(Core::Constants::IDE_VERSION_LONG).arg(qVersion())
.arg(getOsString()).arg(QLocale::system().name())
.arg(QSysInfo::WordSize);
QHttpRequestHeader header("GET", url.path());
qDebug() << agentStr;
header.setValue("User-Agent", agentStr);
header.setValue("Host", url.host());
m_connectionId = m_http.request(header);
} }
void RSSFetcher::readData(const QHttpResponseHeader &resp) void RSSFetcher::readData(const QHttpResponseHeader &resp)
@@ -76,6 +155,7 @@ void RSSFetcher::parseXml()
if (m_xml.isStartElement()) { if (m_xml.isStartElement()) {
if (m_xml.name() == "item") { if (m_xml.name() == "item") {
m_titleString.clear(); m_titleString.clear();
m_descriptionString.clear();
m_linkString.clear(); m_linkString.clear();
} }
m_currentTag = m_xml.name().toString(); m_currentTag = m_xml.name().toString();
@@ -84,12 +164,14 @@ void RSSFetcher::parseXml()
m_items++; m_items++;
if (m_items > m_maxItems) if (m_items > m_maxItems)
return; return;
emit newsItemReady(m_titleString, m_linkString); emit newsItemReady(m_titleString, m_descriptionString, m_linkString);
} }
} else if (m_xml.isCharacters() && !m_xml.isWhitespace()) { } else if (m_xml.isCharacters() && !m_xml.isWhitespace()) {
if (m_currentTag == "title") if (m_currentTag == "title")
m_titleString += m_xml.text().toString(); m_titleString += m_xml.text().toString();
else if (m_currentTag == "description")
m_descriptionString += m_xml.text().toString();
else if (m_currentTag == "link") else if (m_currentTag == "link")
m_linkString += m_xml.text().toString(); m_linkString += m_xml.text().toString();
} }

View File

@@ -44,7 +44,7 @@ public:
RSSFetcher(int maxItems, QObject *parent = 0); RSSFetcher(int maxItems, QObject *parent = 0);
signals: signals:
void newsItemReady(const QString& title, const QString& url); void newsItemReady(const QString& title, const QString& desciption, const QString& url);
public slots: public slots:
void fetch(const QUrl &url); void fetch(const QUrl &url);
@@ -60,6 +60,7 @@ private:
QXmlStreamReader m_xml; QXmlStreamReader m_xml;
QString m_currentTag; QString m_currentTag;
QString m_linkString; QString m_linkString;
QString m_descriptionString;
QString m_titleString; QString m_titleString;
QHttp m_http; QHttp m_http;

View File

@@ -29,9 +29,11 @@
#include "welcomemode.h" #include "welcomemode.h"
#include "icore.h" #include "icore.h"
#include "iwizard.h"
#include "coreconstants.h" #include "coreconstants.h"
#include "uniqueidmanager.h" #include "uniqueidmanager.h"
#include "modemanager.h" #include "modemanager.h"
#include "newdialog.h"
#include "rssfetcher.h" #include "rssfetcher.h"
#include <QtGui/QToolBar> #include <QtGui/QToolBar>
@@ -118,7 +120,7 @@ WelcomeMode::WelcomeMode() :
l->setMargin(0); l->setMargin(0);
l->setSpacing(0); l->setSpacing(0);
l->addWidget(new QToolBar(m_d->m_widget)); l->addWidget(new QToolBar(m_d->m_widget));
m_d->rssFetcher = new RSSFetcher(8, this); m_d->rssFetcher = new RSSFetcher(7, this);
m_d->m_welcomePage = new QWidget(m_d->m_widget); m_d->m_welcomePage = new QWidget(m_d->m_widget);
m_d->ui.setupUi(m_d->m_welcomePage); m_d->ui.setupUi(m_d->m_welcomePage);
m_d->ui.projTitleLabel->setText(titleLabel(tr("Projects"))); m_d->ui.projTitleLabel->setText(titleLabel(tr("Projects")));
@@ -146,26 +148,27 @@ WelcomeMode::WelcomeMode() :
connect(m_d->btnGrp, SIGNAL(buttonClicked(int)), m_d->ui.stackedWidget, SLOT(setCurrentIndex(int))); connect(m_d->btnGrp, SIGNAL(buttonClicked(int)), m_d->ui.stackedWidget, SLOT(setCurrentIndex(int)));
connect(m_d->ui.feedbackButton, SIGNAL(clicked()), SLOT(slotFeedback())); connect(m_d->ui.feedbackButton, SIGNAL(clicked()), SLOT(slotFeedback()));
connect(m_d->ui.restoreSessionButton, SIGNAL(clicked()), SLOT(slotRestoreLastSession())); connect(m_d->ui.manageSessionsButton, SIGNAL(clicked()), SIGNAL(manageSessions()));
connect(m_d->ui.createNewProjectButton, SIGNAL(clicked()), SLOT(slotCreateNewProject()));
connect(m_d->ui.sessTreeWidget, SIGNAL(activated(QString)), SLOT(slotSessionClicked(QString))); connect(m_d->ui.sessTreeWidget, SIGNAL(activated(QString)), SLOT(slotSessionClicked(QString)));
connect(m_d->ui.projTreeWidget, SIGNAL(activated(QString)), SLOT(slotProjectClicked(QString))); connect(m_d->ui.projTreeWidget, SIGNAL(activated(QString)), SLOT(slotProjectClicked(QString)));
connect(m_d->ui.newsTreeWidget, SIGNAL(activated(QString)), SLOT(slotUrlClicked(QString))); connect(m_d->ui.newsTreeWidget, SIGNAL(activated(QString)), SLOT(slotUrlClicked(QString)));
connect(m_d->ui.sitesTreeWidget, SIGNAL(activated(QString)), SLOT(slotUrlClicked(QString))); connect(m_d->ui.sitesTreeWidget, SIGNAL(activated(QString)), SLOT(slotUrlClicked(QString)));
connect(m_d->ui.tutorialTreeWidget, SIGNAL(activated(QString)), SIGNAL(openHelpPage(const QString&))); connect(m_d->ui.tutorialTreeWidget, SIGNAL(activated(QString)), SIGNAL(openHelpPage(const QString&)));
connect(m_d->rssFetcher, SIGNAL(newsItemReady(QString, QString)), connect(m_d->rssFetcher, SIGNAL(newsItemReady(QString, QString, QString)),
m_d->ui.newsTreeWidget, SLOT(slotAddItem(QString, QString))); m_d->ui.newsTreeWidget, SLOT(slotAddNewsItem(QString, QString, QString)));
//: Add localized feed here only if one exists //: Add localized feed here only if one exists
m_d->rssFetcher->fetch(QUrl(tr("http://labs.trolltech.com/blogs/feed"))); m_d->rssFetcher->fetch(QUrl(tr("http://labs.trolltech.com/blogs/feed")));
m_d->ui.sitesTreeWidget->addItem(tr("Qt Software"), QLatin1String("http://www.qtsoftware.com")); m_d->ui.sitesTreeWidget->addItem(tr("Qt Software"), QLatin1String("http://www.trolltech.com"));
m_d->ui.sitesTreeWidget->addItem(tr("Qt Labs"), QLatin1String("http://labs.qtsoftware.com")); m_d->ui.sitesTreeWidget->addItem(tr("Qt Labs"), QLatin1String("http://labs.trolltech.com"));
m_d->ui.sitesTreeWidget->addItem(tr("Qt Git Hosting"), QLatin1String("http://qt.gitorious.org")); m_d->ui.sitesTreeWidget->addItem(tr("Qt Git Hosting"), QLatin1String("http://qt.gitorious.org"));
m_d->ui.sitesTreeWidget->addItem(tr("Qt Centre"), QLatin1String("http://www.qtcentre.org")); m_d->ui.sitesTreeWidget->addItem(tr("Qt Centre"), QLatin1String("http://www.qtcentre.org"));
m_d->ui.sitesTreeWidget->addItem(tr("Qt for S60 at Forum Nokia"), QLatin1String("http://discussion.forum.nokia.com/forum/forumdisplay.php?f=196")); m_d->ui.sitesTreeWidget->addItem(tr("Qt for S60 at Forum Nokia"), QLatin1String("http://discussion.forum.nokia.com/forum/forumdisplay.php?f=196"));
m_d->ui.tutorialTreeWidget->addItem(tr("Qt Creator - A quick tour"), m_d->ui.tutorialTreeWidget->addItem(tr("<b>Qt Creator - A quick tour</b>"),
QString("qthelp://com.nokia.qtcreator.%1%2/doc/index.html").arg(IDE_VERSION_MAJOR).arg(IDE_VERSION_MINOR)); QString("qthelp://com.nokia.qtcreator.%1%2/doc/index.html").arg(IDE_VERSION_MAJOR).arg(IDE_VERSION_MINOR));
m_d->ui.tutorialTreeWidget->addItem(tr("Understanding widgets"), m_d->ui.tutorialTreeWidget->addItem(tr("Understanding widgets"),
QLatin1String("qthelp://com.trolltech.qt/qdoc/widgets-tutorial.html")); QLatin1String("qthelp://com.trolltech.qt/qdoc/widgets-tutorial.html"));
@@ -299,16 +302,17 @@ void WelcomeMode::slotUrlClicked(const QString &data)
QDesktopServices::openUrl(QUrl(data)); QDesktopServices::openUrl(QUrl(data));
} }
void WelcomeMode::slotRestoreLastSession()
{
emit requestSession(m_d->lastData.previousSession);
activateEditMode();
}
void WelcomeMode::slotFeedback() void WelcomeMode::slotFeedback()
{ {
QDesktopServices::openUrl(QUrl(QLatin1String( QDesktopServices::openUrl(QUrl(QLatin1String(
"http://www.qtsoftware.com/forms/feedback-forms/qt-creator-user-feedback/view"))); "http://www.trolltech.com/forms/feedback-forms/qt-creator-user-feedback/view")));
}
void WelcomeMode::slotCreateNewProject()
{
Core::Internal::NewDialog dlg(widget());
dlg.setWizards(Core::IWizard::wizardsOfKind(Core::IWizard::ProjectWizard));
dlg.showDialog();
} }
void WelcomeMode::slotNextTip() void WelcomeMode::slotNextTip()
@@ -409,7 +413,8 @@ QTreeWidgetItem *WelcomeModeTreeWidget::addItem(const QString &label, const QStr
QTreeWidgetItem *item = new QTreeWidgetItem(this); QTreeWidgetItem *item = new QTreeWidgetItem(this);
item->setIcon(0, m_bullet); item->setIcon(0, m_bullet);
item->setSizeHint(0, QSize(24, 30)); item->setSizeHint(0, QSize(24, 30));
QWidget *lbl = new QLabel(label); QLabel *lbl = new QLabel(label);
lbl->setTextInteractionFlags(Qt::NoTextInteraction);
lbl->setCursor(QCursor(Qt::PointingHandCursor)); lbl->setCursor(QCursor(Qt::PointingHandCursor));
lbl->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); lbl->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
QBoxLayout *lay = new QVBoxLayout; QBoxLayout *lay = new QVBoxLayout;
@@ -422,9 +427,15 @@ QTreeWidgetItem *WelcomeModeTreeWidget::addItem(const QString &label, const QStr
return item; return item;
} }
void WelcomeModeTreeWidget::slotAddItem(const QString &label, const QString &data) void WelcomeModeTreeWidget::slotAddNewsItem(const QString &title, const QString &description, const QString &link)
{ {
addTopLevelItem(addItem(label,data)); int itemWidth = width()-header()->sectionSize(0);
QFont f = font();
QString elidedText = QFontMetrics(f).elidedText(description, Qt::ElideRight, itemWidth);
f.setBold(true);
QString elidedTitle = QFontMetrics(f).elidedText(title, Qt::ElideRight, itemWidth);
QString data = QString::fromLatin1("<b>%1</b><br />%2").arg(elidedTitle).arg(elidedText);
addTopLevelItem(addItem(data,link));
} }
void WelcomeModeTreeWidget::slotItemClicked(QTreeWidgetItem *item) void WelcomeModeTreeWidget::slotItemClicked(QTreeWidgetItem *item)

View File

@@ -79,13 +79,14 @@ signals:
void requestProject(const QString &project); void requestProject(const QString &project);
void requestSession(const QString &session); void requestSession(const QString &session);
void openHelpPage(const QString&); void openHelpPage(const QString&);
void manageSessions();
private slots: private slots:
void slotFeedback(); void slotFeedback();
void slotRestoreLastSession();
void slotSessionClicked(const QString &data); void slotSessionClicked(const QString &data);
void slotProjectClicked(const QString &data); void slotProjectClicked(const QString &data);
void slotUrlClicked(const QString &data); void slotUrlClicked(const QString &data);
void slotCreateNewProject();
void slotNextTip(); void slotNextTip();
void slotPrevTip(); void slotPrevTip();

View File

@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>742</width> <width>864</width>
<height>637</height> <height>690</height>
</rect> </rect>
</property> </property>
<property name="styleSheet"> <property name="styleSheet">
@@ -202,7 +202,7 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
<item> <item>
<widget class="QStackedWidget" name="stackedWidget"> <widget class="QStackedWidget" name="stackedWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>2</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="gettingStartedPage"> <widget class="QWidget" name="gettingStartedPage">
<layout class="QGridLayout" name="gridLayout_9"> <layout class="QGridLayout" name="gridLayout_9">
@@ -232,6 +232,12 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
<layout class="QGridLayout" name="gridLayout_6"> <layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="tutorialsTitleLabel"> <widget class="QLabel" name="tutorialsTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property> </property>
@@ -240,7 +246,7 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
<item row="1" column="0"> <item row="1" column="0">
<widget class="Core::Internal::WelcomeModeTreeWidget" name="tutorialTreeWidget"> <widget class="Core::Internal::WelcomeModeTreeWidget" name="tutorialTreeWidget">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@@ -361,11 +367,11 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
<property name="styleSheet"> <property name="styleSheet">
<string/> <string/>
</property> </property>
<layout class="QGridLayout" name="gridLayout_10"> <layout class="QGridLayout" name="gridLayout_11">
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="didYouKnowTitleLabel"> <widget class="QLabel" name="didYouKnowTitleLabel">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> <sizepolicy hsizetype="MinimumExpanding" vsizetype="Maximum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@@ -375,8 +381,70 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0" colspan="3"> <item row="0" column="1">
<layout class="QGridLayout" name="gridLayout_10">
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0" colspan="2">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>2</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QToolButton" name="prevTipBtn">
<property name="text">
<string>&lt;</string>
</property>
<property name="arrowType">
<enum>Qt::LeftArrow</enum>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QToolButton" name="nextTipBtn">
<property name="text">
<string>&gt;</string>
</property>
<property name="arrowType">
<enum>Qt::RightArrow</enum>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>2</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<widget class="QTextBrowser" name="didYouKnowTextBrowser"> <widget class="QTextBrowser" name="didYouKnowTextBrowser">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::NoFrame</enum> <enum>QFrame::NoFrame</enum>
</property> </property>
@@ -394,30 +462,6 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QToolButton" name="prevTipBtn">
<property name="text">
<string>&lt;</string>
</property>
<property name="arrowType">
<enum>Qt::LeftArrow</enum>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="nextTipBtn">
<property name="text">
<string>&gt;</string>
</property>
<property name="arrowType">
<enum>Qt::RightArrow</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@@ -449,17 +493,23 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
<string/> <string/>
</property> </property>
<layout class="QGridLayout" name="gridLayout_3"> <layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0" colspan="2"> <item row="0" column="0" colspan="3">
<widget class="QLabel" name="recentSessionsTitleLabel"> <widget class="QLabel" name="recentSessionsTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0" colspan="2"> <item row="1" column="0" colspan="3">
<widget class="Core::Internal::WelcomeModeTreeWidget" name="sessTreeWidget"> <widget class="Core::Internal::WelcomeModeTreeWidget" name="sessTreeWidget">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@@ -509,8 +559,8 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
</column> </column>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="2" column="0" colspan="2">
<widget class="Core::Internal::WelcomeModeButton" name="restoreSessionButton"> <widget class="Core::Internal::WelcomeModeButton" name="manageSessionsButton">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed"> <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
@@ -534,17 +584,21 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
</string> </string>
</property> </property>
<property name="text"> <property name="text">
<string>&lt;qt&gt;Restore Last Session &amp;gt;&amp;gt;</string> <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'lucida sans'; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Manage Sessions...&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="2">
<spacer name="horizontalSpacer_3"> <spacer name="horizontalSpacer_3">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="sizeType"> <property name="sizeType">
<enum>QSizePolicy::Preferred</enum> <enum>QSizePolicy::Expanding</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
@@ -554,6 +608,22 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="3" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>53</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@@ -563,17 +633,23 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
<string/> <string/>
</property> </property>
<layout class="QGridLayout" name="gridLayout_5"> <layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0"> <item row="0" column="0" colspan="3">
<widget class="QLabel" name="projTitleLabel"> <widget class="QLabel" name="projTitleLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="0" colspan="3">
<widget class="Core::Internal::WelcomeModeTreeWidget" name="projTreeWidget"> <widget class="Core::Internal::WelcomeModeTreeWidget" name="projTreeWidget">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
@@ -623,6 +699,68 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
</column> </column>
</widget> </widget>
</item> </item>
<item row="2" column="0" colspan="2">
<widget class="Core::Internal::WelcomeModeButton" name="createNewProjectButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="styleSheet">
<string>* {
border-image: url(:/core/images/welcomemode/btn_26.png) 7;
border-width: 7;
padding: -2px 0;
font-size: 12px;
font-family: lucida sans, dejavu sans, sans serif;
color: black;
}
*:hover {
border-image: url(:/core/images/welcomemode/btn_26_hover.png) 7;
color: white;
}
</string>
</property>
<property name="text">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'lucida sans'; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Create New Project...&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="2" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>157</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@@ -660,6 +798,12 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
</item> </item>
<item> <item>
<widget class="Core::Internal::WelcomeModeTreeWidget" name="newsTreeWidget"> <widget class="Core::Internal::WelcomeModeTreeWidget" name="newsTreeWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>360</width> <width>360</width>
@@ -802,7 +946,7 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
<number>15</number> <number>15</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>17</number> <number>15</number>
</property> </property>
<item> <item>
<spacer name="horizontalSpacer_5"> <spacer name="horizontalSpacer_5">
@@ -873,7 +1017,7 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType"> <property name="sizeType">
<enum>QSizePolicy::Maximum</enum> <enum>QSizePolicy::Expanding</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
@@ -889,7 +1033,7 @@ background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType"> <property name="sizeType">
<enum>QSizePolicy::Maximum</enum> <enum>QSizePolicy::Expanding</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>

View File

@@ -69,7 +69,7 @@ public:
QTreeWidgetItem *addItem(const QString &label, const QString &data); QTreeWidgetItem *addItem(const QString &label, const QString &data);
public slots: public slots:
void slotAddItem(const QString &label, const QString &data); void slotAddNewsItem(const QString &title, const QString &description, const QString &link);
signals: signals:
void activated(const QString &data); void activated(const QString &data);

View File

@@ -736,7 +736,7 @@ void HelpPlugin::openHelpPage(const QString& url)
else { else {
QString page = url.mid(url.lastIndexOf('/')+1); QString page = url.mid(url.lastIndexOf('/')+1);
qDebug() << url << page << url.lastIndexOf('/'); qDebug() << url << page << url.lastIndexOf('/');
QDesktopServices::openUrl(QLatin1String("http://doc.qtsoftware.com/latest/")+page); QDesktopServices::openUrl(QLatin1String("http://doc.trolltech.com/latest/")+page);
} }
} }

View File

@@ -78,6 +78,7 @@
#include <coreplugin/vcsmanager.h> #include <coreplugin/vcsmanager.h>
#include <coreplugin/iversioncontrol.h> #include <coreplugin/iversioncontrol.h>
#include <coreplugin/vcsmanager.h> #include <coreplugin/vcsmanager.h>
#include <coreplugin/welcomemode.h>
#include <extensionsystem/pluginmanager.h> #include <extensionsystem/pluginmanager.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/parameteraction.h> #include <utils/parameteraction.h>
@@ -669,6 +670,10 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
m_projectExplorerSettings.saveBeforeBuild = s->value("ProjectExplorer/Settings/SaveBeforeBuild", false).toBool(); m_projectExplorerSettings.saveBeforeBuild = s->value("ProjectExplorer/Settings/SaveBeforeBuild", false).toBool();
} }
if (Core::Internal::WelcomeMode *welcomeMode = qobject_cast<Core::Internal::WelcomeMode*>
(Core::ICore::instance()->modeManager()->mode(Core::Constants::MODE_WELCOME))) {
connect(welcomeMode, SIGNAL(manageSessions()), this, SLOT(showSessionManager()));
}
connect(m_sessionManagerAction, SIGNAL(triggered()), this, SLOT(showSessionManager())); connect(m_sessionManagerAction, SIGNAL(triggered()), this, SLOT(showSessionManager()));
connect(m_newAction, SIGNAL(triggered()), this, SLOT(newProject())); connect(m_newAction, SIGNAL(triggered()), this, SLOT(newProject()));
#if 0 #if 0

View File

@@ -124,6 +124,7 @@ SessionDialog::SessionDialog(SessionManager *sessionManager, const QString &last
connect(m_ui.sessionList, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), connect(m_ui.sessionList, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
this, SLOT(updateActions())); this, SLOT(updateActions()));
m_ui.whatsASessionLabel->setOpenExternalLinks(true);
QStringList sessions = sessionManager->sessions(); QStringList sessions = sessionManager->sessions();
foreach (const QString &session, sessions) { foreach (const QString &session, sessions) {
m_ui.sessionList->addItem(session); m_ui.sessionList->addItem(session);

View File

@@ -62,6 +62,13 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="2" column="0">
<widget class="QLabel" name="whatsASessionLabel">
<property name="text">
<string>&lt;a href=&quot;qthelp://com.nokia.qtcreator/doc/creator-quick-tour.html#session-management-in-qt-creator&quot;&gt;What is a Session?&lt;/a&gt;</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2"> <item row="2" column="1" colspan="2">
<widget class="QDialogButtonBox" name="buttonBox"> <widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons"> <property name="standardButtons">