File indexing completed on 2024-04-28 03:51:38

0001 /*
0002     This file is part of KDE.
0003 
0004     SPDX-FileCopyrightText: 2010 Sebastian Kügler <sebas@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef PROJECTTEST_H
0010 #define PROJECTTEST_H
0011 
0012 #include "ui_editproject.h"
0013 
0014 #include <QLabel>
0015 #include <QMainWindow>
0016 
0017 #include <project.h>
0018 #include <providermanager.h>
0019 
0020 namespace Attica
0021 {
0022 class Project;
0023 class BaseJob;
0024 class Provider;
0025 }
0026 
0027 class ProjectTest : public QMainWindow
0028 {
0029     Q_OBJECT
0030 public:
0031     ProjectTest();
0032     ~ProjectTest() override;
0033 
0034 private Q_SLOTS:
0035     void providerAdded(const Attica::Provider &provider);
0036 
0037     void projectListResult(Attica::BaseJob *);
0038     void projectResult(Attica::BaseJob *);
0039     void createProjectResult(Attica::BaseJob *j);
0040     void saveProjectResult(Attica::BaseJob *j);
0041     void deleteProjectResult(Attica::BaseJob *j);
0042 
0043     void buildServiceListResult(Attica::BaseJob *);
0044     void buildServiceJobListResult(Attica::BaseJob *);
0045 
0046     void save();
0047     void create();
0048     void deleteProject(); // don't clashs with keyword
0049 
0050     void selectedBuildServiceChanged(QListWidgetItem *current, QListWidgetItem *previous);
0051     void createBuildServiceJob();
0052     void buildServiceJobCreated(Attica::BaseJob *j);
0053     void cancelBuildServiceJob();
0054     void buildServiceJobCanceled(Attica::BaseJob *j);
0055 
0056     void updateCurrentProject();
0057 
0058 private:
0059     void initOcs();
0060     void getProject(QString id);
0061     void deleteProject(QString id);
0062     void listProjects();
0063     void listBuildServices();
0064     void listBuildServiceJobs(const Attica::Project &p);
0065 
0066     void setStatus(QString status);
0067     Attica::Project uiToProject();
0068     void projectToUi(const Attica::Project &p);
0069     QString currentProject();
0070 
0071     Attica::ProviderManager m_pm;
0072     Attica::Provider m_provider;
0073     QHash<QString, QSharedPointer<Attica::Provider>> m_providers;
0074 
0075     QString m_currentProjectId;
0076 
0077     QWidget *m_mainWidget;
0078 
0079     Ui::EditProject *m_editor;
0080 
0081     QHash<QString, Attica::BuildService> m_buildServices;
0082     QHash<QString, Attica::BuildServiceJob> m_buildServiceJobs;
0083     QHash<QString, Attica::Project> m_projects;
0084 };
0085 
0086 #endif // PROJECTTEST_H