2022-08-19 15:59:36 +02:00
|
|
|
// Copyright (C) 2016 The Qt Company Ltd.
|
|
|
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
2009-07-27 13:55:30 +02:00
|
|
|
|
2016-02-02 18:26:51 +01:00
|
|
|
#pragma once
|
2009-07-27 13:55:30 +02:00
|
|
|
|
2022-07-27 11:48:44 +02:00
|
|
|
#include "projectexplorer.h"
|
|
|
|
|
|
2014-12-19 12:05:40 +01:00
|
|
|
#include <coreplugin/iwelcomepage.h>
|
2009-07-27 13:55:30 +02:00
|
|
|
|
2022-07-27 14:18:48 +02:00
|
|
|
#include <utils/filepath.h>
|
|
|
|
|
|
2017-01-06 21:41:46 +01:00
|
|
|
#include <QAbstractListModel>
|
2010-03-22 11:10:01 +01:00
|
|
|
|
2009-07-27 13:55:30 +02:00
|
|
|
namespace ProjectExplorer {
|
|
|
|
|
namespace Internal {
|
|
|
|
|
|
2016-08-12 13:38:53 +02:00
|
|
|
class SessionModel;
|
2017-01-06 21:41:46 +01:00
|
|
|
class SessionsPage;
|
2010-11-11 16:49:17 +01:00
|
|
|
|
|
|
|
|
class ProjectModel : public QAbstractListModel
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
2016-02-02 18:26:51 +01:00
|
|
|
|
2010-11-11 16:49:17 +01:00
|
|
|
public:
|
2017-03-21 09:47:55 +01:00
|
|
|
enum { FilePathRole = Qt::UserRole+1, PrettyFilePathRole, ShortcutRole };
|
2010-11-11 16:49:17 +01:00
|
|
|
|
2016-04-13 15:52:14 +02:00
|
|
|
ProjectModel(QObject *parent = nullptr);
|
2016-02-02 18:26:51 +01:00
|
|
|
int rowCount(const QModelIndex &parent) const override;
|
|
|
|
|
QVariant data(const QModelIndex &index, int role) const override;
|
|
|
|
|
QHash<int, QByteArray> roleNames() const override;
|
2010-11-11 16:49:17 +01:00
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
|
void resetProjects();
|
2022-07-27 11:48:44 +02:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
RecentProjectsEntries m_projects;
|
2010-11-11 16:49:17 +01:00
|
|
|
};
|
|
|
|
|
|
2014-12-19 12:05:40 +01:00
|
|
|
class ProjectWelcomePage : public Core::IWelcomePage
|
2009-07-27 13:55:30 +02:00
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
public:
|
2017-03-21 09:47:55 +01:00
|
|
|
ProjectWelcomePage();
|
2009-07-27 13:55:30 +02:00
|
|
|
|
2016-02-02 18:26:51 +01:00
|
|
|
QString title() const override { return tr("Projects"); }
|
|
|
|
|
int priority() const override { return 20; }
|
2020-06-26 13:59:38 +02:00
|
|
|
Utils::Id id() const override;
|
2017-01-06 21:41:46 +01:00
|
|
|
QWidget *createWidget() const override;
|
2009-07-27 13:55:30 +02:00
|
|
|
|
2017-01-06 21:41:46 +01:00
|
|
|
void reloadWelcomeScreenData() const;
|
2009-07-27 13:55:30 +02:00
|
|
|
|
2013-03-25 11:24:00 +01:00
|
|
|
public slots:
|
|
|
|
|
void newProject();
|
|
|
|
|
void openProject();
|
|
|
|
|
|
2010-03-22 11:10:01 +01:00
|
|
|
signals:
|
2022-07-27 14:18:48 +02:00
|
|
|
void requestProject(const Utils::FilePath &project);
|
2010-03-22 11:10:01 +01:00
|
|
|
void manageSessions();
|
2013-03-25 11:24:00 +01:00
|
|
|
|
2010-03-22 11:10:01 +01:00
|
|
|
private:
|
2017-03-21 09:47:55 +01:00
|
|
|
void openSessionAt(int index);
|
|
|
|
|
void openProjectAt(int index);
|
2022-02-25 17:24:01 +01:00
|
|
|
void createActions();
|
2017-03-21 09:47:55 +01:00
|
|
|
|
2017-01-06 21:41:46 +01:00
|
|
|
friend class SessionsPage;
|
2016-04-13 15:52:14 +02:00
|
|
|
SessionModel *m_sessionModel = nullptr;
|
|
|
|
|
ProjectModel *m_projectModel = nullptr;
|
2009-07-27 13:55:30 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace Internal
|
|
|
|
|
} // namespace ProjectExplorer
|