LibrePCB Developers Documentation
Loading...
Searching...
No Matches
organization.h
Go to the documentation of this file.
1/*
2 * LibrePCB - Professional EDA for everyone!
3 * Copyright (C) 2013 LibrePCB Developers, see AUTHORS.md for contributors.
4 * https://librepcb.org/
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#ifndef LIBREPCB_CORE_ORGANIZATION_H
21#define LIBREPCB_CORE_ORGANIZATION_H
22
23/*******************************************************************************
24 * Includes
25 ******************************************************************************/
26#include "../../job/outputjob.h"
27#include "../librarybaseelement.h"
29
30#include <QtCore>
31
32#include <memory>
33
34/*******************************************************************************
35 * Namespace / Forward Declarations
36 ******************************************************************************/
37namespace librepcb {
38
39/*******************************************************************************
40 * Class Organization
41 ******************************************************************************/
42
47class Organization final : public LibraryBaseElement {
48 Q_OBJECT
49
50public:
51 // Constructors / Destructor
52 Organization() = delete;
53 Organization(const Organization& other) = delete;
54 Organization(const Uuid& uuid, const Version& version, const QString& author,
55 const ElementName& name_en_US, const QString& description_en_US,
56 const QString& keywords_en_US);
57 ~Organization() noexcept;
58
59 // Getters
60 const QByteArray& getLogoPng() const noexcept { return mLogoPng; }
61 QPixmap getLogoPixmap() const noexcept;
62 const QUrl& getUrl() const noexcept { return mUrl; }
63 const QString& getCountry() const noexcept { return mCountry; }
64 const QStringList& getFabs() const noexcept { return mFabs; }
65 const QStringList& getShipping() const noexcept { return mShipping; }
66 bool isSponsor() const noexcept { return mIsSponsor; }
67 int getPriority() const noexcept { return mPriority; }
68 const QVector<OrganizationPcbDesignRules>& getPcbDesignRules()
69 const noexcept {
70 return mPcbDesignRules;
71 }
73 const Uuid& uuid) const noexcept;
74 const OutputJobList& getPcbOutputJobs() const noexcept {
75 return mPcbOutputJobs;
76 }
77 std::shared_ptr<const OutputJob> findPcbOutputJob(
78 const QString& type) const noexcept;
79 const OutputJobList& getAssemblyOutputJobs() const noexcept {
81 }
82 const OutputJobList& getUserOutputJobs() const noexcept {
83 return mUserOutputJobs;
84 }
85
86 // Setters
87 void setLogoPng(const QByteArray& png) noexcept { mLogoPng = png; }
88 void setUrl(const QUrl& url) noexcept { mUrl = url; }
89 void setCountry(const QString& country) noexcept { mCountry = country; }
90 void setFabs(const QStringList& list) noexcept { mFabs = list; }
91 void setShipping(const QStringList& list) noexcept { mShipping = list; }
92 void setIsSponsor(bool sponsor) noexcept { mIsSponsor = sponsor; }
93 void setPriority(int priority) noexcept { mPriority = priority; }
95 const QVector<OrganizationPcbDesignRules>& rules) noexcept;
96 void setPcbOutputJobs(const OutputJobList& jobs) noexcept {
97 mPcbOutputJobs = jobs;
98 }
99 void setAssemblyOutputJobs(const OutputJobList& jobs) noexcept {
100 mAssemblyOutputJobs = jobs;
101 }
102 void setUserOutputJobs(const OutputJobList& jobs) noexcept {
103 mUserOutputJobs = jobs;
104 }
105
106 // General Methods
107 virtual RuleCheckMessageList runChecks() const override;
108 virtual void save() override;
109
110 // Operator Overloadings
111 Organization& operator=(const Organization& rhs) = delete;
112
113 // Static Methods
114 static std::unique_ptr<Organization> open(
115 std::unique_ptr<TransactionalDirectory> directory,
116 bool abortBeforeMigration = false);
117 static QString getShortElementName() noexcept {
118 return QStringLiteral("org");
119 }
120 static QString getLongElementName() noexcept {
121 return QStringLiteral("organization");
122 }
123
124signals:
126
127protected: // Methods
128 virtual void serialize(SExpression& root) const override;
129
130private: // Methods
131 Organization(std::unique_ptr<TransactionalDirectory> directory,
132 const SExpression& root);
133
134private: // Data
135 QByteArray mLogoPng;
136 QUrl mUrl;
137 QString mCountry;
138 QStringList mFabs;
139 QStringList mShipping;
151 QVector<OrganizationPcbDesignRules> mPcbDesignRules;
155
156 // Arbitrary options for forward compatibility in case we really need to
157 // add new settings in a minor release.
158 QMap<QString, QList<SExpression>> mOptions;
159};
160
161/*******************************************************************************
162 * End of File
163 ******************************************************************************/
164
165} // namespace librepcb
166
167#endif
The LibraryBaseElement class.
Definition librarybaseelement.h:48
The Organization class represents a PCB manufacturer, assembly house etc.
Definition organization.h:47
void setUrl(const QUrl &url) noexcept
Definition organization.h:88
QUrl mUrl
Definition organization.h:136
const QStringList & getShipping() const noexcept
Definition organization.h:65
std::shared_ptr< const OutputJob > findPcbOutputJob(const QString &type) const noexcept
Definition organization.cpp:126
const QString & getCountry() const noexcept
Definition organization.h:63
void setUserOutputJobs(const OutputJobList &jobs) noexcept
Definition organization.h:102
const QStringList & getFabs() const noexcept
Definition organization.h:64
const QVector< OrganizationPcbDesignRules > & getPcbDesignRules() const noexcept
Definition organization.h:68
virtual RuleCheckMessageList runChecks() const override
Definition organization.cpp:152
const OutputJobList & getUserOutputJobs() const noexcept
Definition organization.h:82
const OutputJobList & getPcbOutputJobs() const noexcept
Definition organization.h:74
Organization & operator=(const Organization &rhs)=delete
int getPriority() const noexcept
Definition organization.h:67
const QByteArray & getLogoPng() const noexcept
Definition organization.h:60
QMap< QString, QList< SExpression > > mOptions
Definition organization.h:158
OutputJobList mUserOutputJobs
Definition organization.h:154
Organization(const Organization &other)=delete
void setPcbDesignRules(const QVector< OrganizationPcbDesignRules > &rules) noexcept
Definition organization.cpp:140
void setLogoPng(const QByteArray &png) noexcept
Definition organization.h:87
int mPriority
Priority to influence the sort order of organizations.
Definition organization.h:150
const OrganizationPcbDesignRules * findPcbDesignRules(const Uuid &uuid) const noexcept
Definition organization.cpp:116
OutputJobList mPcbOutputJobs
Definition organization.h:152
QString mCountry
Definition organization.h:137
void setIsSponsor(bool sponsor) noexcept
Definition organization.h:92
QVector< OrganizationPcbDesignRules > mPcbDesignRules
Definition organization.h:151
~Organization() noexcept
Definition organization.cpp:103
const OutputJobList & getAssemblyOutputJobs() const noexcept
Definition organization.h:79
void setPcbOutputJobs(const OutputJobList &jobs) noexcept
Definition organization.h:96
void setCountry(const QString &country) noexcept
Definition organization.h:89
virtual void save() override
Definition organization.cpp:157
void setShipping(const QStringList &list) noexcept
Definition organization.h:91
OutputJobList mAssemblyOutputJobs
Definition organization.h:153
QPixmap getLogoPixmap() const noexcept
Definition organization.cpp:110
static std::unique_ptr< Organization > open(std::unique_ptr< TransactionalDirectory > directory, bool abortBeforeMigration=false)
Definition organization.cpp:168
void setPriority(int priority) noexcept
Definition organization.h:93
static QString getLongElementName() noexcept
Definition organization.h:120
const QUrl & getUrl() const noexcept
Definition organization.h:62
QStringList mFabs
Definition organization.h:138
virtual void serialize(SExpression &root) const override
Serialize into librepcb::SExpression node.
Definition organization.cpp:201
void setFabs(const QStringList &list) noexcept
Definition organization.h:90
QStringList mShipping
Definition organization.h:139
QByteArray mLogoPng
Definition organization.h:135
bool mIsSponsor
Definition organization.h:140
static QString getShortElementName() noexcept
Definition organization.h:117
void setAssemblyOutputJobs(const OutputJobList &jobs) noexcept
Definition organization.h:99
bool isSponsor() const noexcept
Definition organization.h:66
The OrganizationPcbDesignRules class.
Definition organizationpcbdesignrules.h:43
The SExpression class.
Definition sexpression.h:69
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition uuid.h:56
The Version class represents a version number in the format "1.42.7".
Definition version.h:58
Definition occmodel.cpp:77
QVector< std::shared_ptr< const RuleCheckMessage > > RuleCheckMessageList
Definition rulecheckmessage.h:104
type_safe::constrained_type< QString, ElementNameConstraint, ElementNameVerifier > ElementName
Definition elementname.h:84