Project Documentation Manager BRIGADOON-0002
Project Documentation Manager
Loading...
Searching...
No Matches
ProjectListManager Class Reference

#include <projectlistmanager.h>

Inheritance diagram for ProjectListManager:
[legend]
Collaboration diagram for ProjectListManager:
[legend]

Public Slots

void ProjectTabChanged (int Index)
 Process the Change in Window Tab.
void LoadProjectTable (void)
 Clear and Reload the Project table, Sort by Selected Button \SortButton Button pressed to sort the Table List.
void ProcessFullList (void)
 Add all Projects for Documentation Creation.
void ProcessSelection (void)
 Add th Selected Project for Documentation Creation.
void PrStateChange (PROJECT_INFORMATION *Project)
 Update the Lock/Queued Status of Project in the Project List Table.

Signals

void SendLogEntry (REMOTE_LOG_ENTRY log_entry)

Public Member Functions

 ProjectListManager (Ui::MainWindow *UI_Window)
 Project List Manager Class Constructor.
 ~ProjectListManager ()
 Project List Manager Class Destructor.
QString MakeHTMLProjectPage (QString HeaderTemplateFile, QString FooterTemplateFile, QString LineTemplateFile, bool TableOnly=true)
QString MakeOSProjectPage (void)

Private Slots

void PressedInstallOff (void)
 Turn all Install Check boxes off in List table.
void PressedInstallOn (void)
 Turn all Install Check boxes on in List table.
void PressedArchiveOff (void)
 Turn all Archive Check boxes off in List table.
void PressedArchiveOn (void)
 Turn all Archive Check boxes on in List table.

Private Member Functions

void InitaliseProjectTable (void)
 Clear and Load the Project List Table.
void SetMaximumProjects (void)
 Set the Initial Line Count in the Project List table.
QString ReadTableTemplate (QString TemplateFile)
 Read an HTML template from a File.
bool WriteTextFile (QString FileName, QString Contents)
 Write a String to a File.
int FindSelections (int index)
 Read and Encode selected options for a Project.
void SetCheckState (int column, bool InstallState)
 Set the State of all Project Selection in Table List.
void LogAdd (LOGGING_SEVERITY Severity, LOGGING_MODE Mode, QString Message)
 Send Message to the Log.

Private Attributes

Ui::MainWindow * ui
QButtonGroup * sort_group
 Pointer to Button Group for sorting Project List Table.
QString base_project_query
 Basic SQL Query for listing Projects.
QList< PROJECT_INFORMATION * > ProjectList
 A list of Projects to be processed.

Detailed Description

Definition at line 131 of file projectlistmanager.h.

Constructor & Destructor Documentation

◆ ProjectListManager()

ProjectListManager::ProjectListManager ( Ui::MainWindow * UI_Window)

Project List Manager Class Constructor.

Parameters
UI_WindowPointer to the Main Window

Definition at line 15 of file projectlistmanager.cpp.

16{
17 ProjectList.clear();
18 ui = UI_Window;
19 QObject::connect(ui->AutoInstallOff, SIGNAL(pressed()), this, SLOT(PressedInstallOff()));
20 QObject::connect(ui->AutoInstallOn, SIGNAL(pressed()), this, SLOT(PressedInstallOn()));
21
22 QObject::connect(ui->AutoArchiveOff, SIGNAL(pressed()), this, SLOT(PressedArchiveOff()));
23 QObject::connect(ui->AutoArchiveOn, SIGNAL(pressed()), this, SLOT(PressedArchiveOn()));
24
25 base_project_query = QString("select project_index from project where project_index != 1");
26
27 ui->ProjectTableWidget->setColumnCount( TABLE_COLUMN_COUNT );
29
30 ui->ProjectTableWidget->setHorizontalHeaderLabels( QStringList( {"Proj. Ident", "Proj. Name", "Target", "Status", "Proj. Contact", "Brief Desc.", "Dev. Family", "Comp. Lang.", "Assoc Group",
31 "S/W Licence", "H/W Licence", "Doc Licence", "Inst", "Arch", "Publish"} ));
32
33 ui->ProjectTableWidget->setColumnWidth( PROJECT_IDENT_COLUMN, PROJECT_IDENT_SIZE );
34 ui->ProjectTableWidget->setColumnWidth( PROJECT_NAME_COLUMN, PROJECT_NAME_SIZE );
35 ui->ProjectTableWidget->setColumnWidth( TARGET_FAMILY_COLUMN, TARGET_FAMILY_SIZE );
36 ui->ProjectTableWidget->setColumnWidth( PROJECT_CONTACT_COLUMN, PROJECT_CONTACT_SIZE );
37 ui->ProjectTableWidget->setColumnWidth( PROJECT_STATUS_COLUMN, PROJECT_STATUS_SIZE);
38 ui->ProjectTableWidget->setColumnWidth( BRIEF_DESC_COLUMN, BRIEF_DESC_SIZE );
39 ui->ProjectTableWidget->setColumnWidth( DEV_FAMILY_COLUMN, DEV_FAMILY_SIZE );
40 ui->ProjectTableWidget->setColumnWidth( COMPILER_FAMILY_COLUMN, COMPILER_FAMILY_SIZE );
41 ui->ProjectTableWidget->setColumnWidth( ASSOCIATION_COLUMN, ASSOCIATION_SIZE );
42 ui->ProjectTableWidget->setColumnWidth( SOFTWARE_LICENCE_COLUMN, SOFTWARE_LICENCE_SIZE );
43 ui->ProjectTableWidget->setColumnWidth( HARDWARE_LICENCE_COLUMN, HARDWARE_LICENCE_SIZE );
44 ui->ProjectTableWidget->setColumnWidth( DOC_LICENCE_COLUMN, DOC_LICENCE_SIZE );
45 ui->ProjectTableWidget->setColumnWidth( ARCHIVE_BUTTON_COLUMN, ARCHIVE_BUTTON_SIZE );
46 ui->ProjectTableWidget->setColumnWidth( INSTALL_BUTTON_COLUMN, INSTALL_BUTTON_SIZE );
47 ui->ProjectTableWidget->setColumnWidth( PUBLISH_BUTTON_COLUMN, PUBLISH_BUTTON_SIZE );
48}
void SetMaximumProjects(void)
Set the Initial Line Count in the Project List table.
void PressedInstallOff(void)
Turn all Install Check boxes off in List table.
QList< PROJECT_INFORMATION * > ProjectList
A list of Projects to be processed.
QString base_project_query
Basic SQL Query for listing Projects.
void PressedArchiveOn(void)
Turn all Archive Check boxes on in List table.
void PressedArchiveOff(void)
Turn all Archive Check boxes off in List table.
void PressedInstallOn(void)
Turn all Install Check boxes on in List table.
#define TABLE_COLUMN_COUNT
Number of Columns in the Project List Table.
@ DOC_LICENCE_COLUMN
@ SOFTWARE_LICENCE_COLUMN
@ PROJECT_CONTACT_COLUMN
@ TARGET_FAMILY_COLUMN
@ PUBLISH_BUTTON_COLUMN
@ PROJECT_STATUS_COLUMN
@ ASSOCIATION_COLUMN
@ INSTALL_BUTTON_COLUMN
@ COMPILER_FAMILY_COLUMN
@ ARCHIVE_BUTTON_COLUMN
@ HARDWARE_LICENCE_COLUMN
@ DEV_FAMILY_COLUMN
@ PROJECT_IDENT_COLUMN
@ PROJECT_NAME_COLUMN
@ BRIEF_DESC_COLUMN
#define ASSOCIATION_SIZE
The width of the Association Column.
#define PROJECT_CONTACT_SIZE
The width of the Project Contact Column.
#define COMPILER_FAMILY_SIZE
The width of the Compiler Family Column.
#define DEV_FAMILY_SIZE
#define PROJECT_NAME_SIZE
The width of the Project Name Column.
#define PROJECT_IDENT_SIZE
The width of the Project Ident Column.
#define BRIEF_DESC_SIZE
The width of the Brief Description Column.
#define ARCHIVE_BUTTON_SIZE
The width of the Archive Button Column.
#define SOFTWARE_LICENCE_SIZE
The width of the Software Licence Column.
#define HARDWARE_LICENCE_SIZE
#define INSTALL_BUTTON_SIZE
The width of the Install Button Column.
#define PUBLISH_BUTTON_SIZE
The width of the Publish Button Column.
#define TARGET_FAMILY_SIZE
The width of the Target Family Column.
#define PROJECT_STATUS_SIZE
The width of the Project Status Column.
#define DOC_LICENCE_SIZE
The width of the Documentation Licence Column.

References ARCHIVE_BUTTON_COLUMN, ARCHIVE_BUTTON_SIZE, ASSOCIATION_COLUMN, ASSOCIATION_SIZE, base_project_query, BRIEF_DESC_COLUMN, BRIEF_DESC_SIZE, COMPILER_FAMILY_COLUMN, COMPILER_FAMILY_SIZE, DEV_FAMILY_COLUMN, DEV_FAMILY_SIZE, DOC_LICENCE_COLUMN, DOC_LICENCE_SIZE, HARDWARE_LICENCE_COLUMN, HARDWARE_LICENCE_SIZE, INSTALL_BUTTON_COLUMN, INSTALL_BUTTON_SIZE, PressedArchiveOff(), PressedArchiveOn(), PressedInstallOff(), PressedInstallOn(), PROJECT_CONTACT_COLUMN, PROJECT_CONTACT_SIZE, PROJECT_IDENT_COLUMN, PROJECT_IDENT_SIZE, PROJECT_NAME_COLUMN, PROJECT_NAME_SIZE, PROJECT_STATUS_COLUMN, PROJECT_STATUS_SIZE, ProjectList, PUBLISH_BUTTON_COLUMN, PUBLISH_BUTTON_SIZE, SetMaximumProjects(), SOFTWARE_LICENCE_COLUMN, SOFTWARE_LICENCE_SIZE, TABLE_COLUMN_COUNT, TARGET_FAMILY_COLUMN, TARGET_FAMILY_SIZE, and ui.

Here is the call graph for this function:

◆ ~ProjectListManager()

ProjectListManager::~ProjectListManager ( void )

Project List Manager Class Destructor.

Definition at line 51 of file projectlistmanager.cpp.

52{
53
54}

Member Function Documentation

◆ FindSelections()

int ProjectListManager::FindSelections ( int index)
private

Read and Encode selected options for a Project.

Parameters
indexThe row index in the Project List Table
Returns
Ecoded Selected Options for the Project

Definition at line 237 of file projectlistmanager.cpp.

238{
239 int selections = 0;
240
241 QCheckBox* check_widget = (QCheckBox*)ui->ProjectTableWidget->cellWidget(index, ARCHIVE_BUTTON_COLUMN);
242 if (check_widget->isChecked())
243 {
244 selections |= CREATE_SOURCE_ARCHIVE;
245 }
246
247 check_widget = (QCheckBox*)ui->ProjectTableWidget->cellWidget(index, INSTALL_BUTTON_COLUMN);
248 if (check_widget->isChecked())
249 {
250 selections |= INSTALL_SCRIPT_MASK;
251 }
252
253 check_widget = (QCheckBox*)ui->ProjectTableWidget->cellWidget(index, PUBLISH_BUTTON_COLUMN);
254 if (check_widget->isChecked())
255 {
256 selections |= INSTALL_SCRIPT_MASK;
257 }
258
259
260 return(selections);
261}
#define INSTALL_SCRIPT_MASK
Bit Mask for the Install Script.
#define CREATE_SOURCE_ARCHIVE
Create a SOurce Archive when Documentation Generated.

References ARCHIVE_BUTTON_COLUMN, CREATE_SOURCE_ARCHIVE, INSTALL_BUTTON_COLUMN, INSTALL_SCRIPT_MASK, PUBLISH_BUTTON_COLUMN, and ui.

Referenced by ProcessSelection().

Here is the caller graph for this function:

◆ InitaliseProjectTable()

void ProjectListManager::InitaliseProjectTable ( void )
private

Clear and Load the Project List Table.

Definition at line 85 of file projectlistmanager.cpp.

86{
88}
void LoadProjectTable(void)
Clear and Reload the Project table, Sort by Selected Button \SortButton Button pressed to sort the Ta...

References LoadProjectTable().

Referenced by ProjectTabChanged().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ LoadProjectTable

void ProjectListManager::LoadProjectTable ( void )
slot

Clear and Reload the Project table, Sort by Selected Button \SortButton Button pressed to sort the Table List.

Definition at line 90 of file projectlistmanager.cpp.

91{
92 ProjectList.clear();
94 QString sort_type;
95 sort_type = QString(" order by project_ident desc");
96 QString query_string = base_project_query + sort_type;
97
98 // Clear the Table Widget before Starting to Add Projects
99 ui->ProjectTableWidget->clearContents();
100 ui->ProjectTableWidget->setEnabled(true);
101
102 // Search for the Project List
103 QSqlQuery project_query(query_string);
104
105 int row = 0;
106 while( project_query.next())
107 {
108 PROJECT_INFORMATION* project_file_info = new PROJECT_INFORMATION;
109
110 // Load all of the Data about this Project
111 read_project_info->LoadProjectInfo(project_file_info, project_query.value(0).toInt(), ui->ProjectPrefix->currentIndex() + 1);
112 project_subs_manager->LoadFileSubsList(project_file_info);
113 ProjectList.append(project_file_info);
114
115 // Make A Table Widget for the Project Identifier and Insert
116 QTableWidgetItem *new_project_ident = new QTableWidgetItem(project_file_info->ProjectDesc.ProjectIdent);
117 new_project_ident->setFlags(new_project_ident->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
118 ui->ProjectTableWidget->setItem( row, PROJECT_IDENT_COLUMN, new_project_ident );
119 PrStateChange(project_file_info);
120
121 // Make A Table Widget for the Project Name and Insert
122 QTableWidgetItem *new_project_name = new QTableWidgetItem(project_file_info->ProjectDesc.ProjectName);
123 new_project_name->setFlags(new_project_name->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
124 ui->ProjectTableWidget->setItem( row, PROJECT_NAME_COLUMN, new_project_name );
125
126 // Make A Table Widget for the Target System and Insert
127 QTableWidgetItem *new_target_system = new QTableWidgetItem(project_file_info->TargetFamilyInfo.ShortName);
128 new_target_system->setFlags(new_target_system->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
129 ui->ProjectTableWidget->setItem( row, TARGET_FAMILY_COLUMN, new_target_system );
130
131 // Get the DEveloper Name, Create Table Widget and Insert in Table
132 QTableWidgetItem *new_project_contact = new QTableWidgetItem(project_file_info->Developer.Name);
133 new_project_contact->setFlags(new_project_contact->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
134 ui->ProjectTableWidget->setItem( row, PROJECT_CONTACT_COLUMN, new_project_contact );
135
136 // Get the Project Status Name, Create Table Widget and Insert in Table
137 QTableWidgetItem *new_project_status = new QTableWidgetItem(project_file_info->StatusInfo.StatusName);
138 new_project_status->setFlags(new_project_status->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
139 ui->ProjectTableWidget->setItem( row, PROJECT_STATUS_COLUMN, new_project_status );
140
141 // Get the Brief Description, Create Table Widget and Insert in Table
142 QTableWidgetItem *new_brief_desc = new QTableWidgetItem(project_file_info->ProjectDesc.BriefDescription);
143 new_brief_desc->setFlags(new_project_ident->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
144 ui->ProjectTableWidget->setItem( row, BRIEF_DESC_COLUMN, new_brief_desc );
145
146 // Get the Development Family, Create Table Widget and Insert in Table
147 QTableWidgetItem *new_dev_family = new QTableWidgetItem(project_file_info->DevFamilyInfo.ShortName);
148 new_dev_family->setFlags(new_dev_family->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
149 ui->ProjectTableWidget->setItem( row, DEV_FAMILY_COLUMN, new_dev_family );
150
151 // Get the Compiler Family, Create Table Widget and Insert in Table
152 QTableWidgetItem *new_comp_family = new QTableWidgetItem(project_file_info->LangFamilyInfo.ShortName);
153 new_comp_family->setFlags(new_comp_family->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
154 ui->ProjectTableWidget->setItem( row, COMPILER_FAMILY_COLUMN, new_comp_family );
155
156 // Get the Association Family, Create Table Widget and Insert in Table
157 QTableWidgetItem *new_assoc_family = new QTableWidgetItem(project_file_info->InAssocInfo.ShortName);
158 new_assoc_family->setFlags(new_assoc_family->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
159 ui->ProjectTableWidget->setItem( row, ASSOCIATION_COLUMN, new_assoc_family );
160
161 // Get the Software Licence, Create Table Widget and Insert in Table
162 QTableWidgetItem *new_software_licence = new QTableWidgetItem(project_file_info->SoftwareLicence.ShortName);
163 new_software_licence->setFlags(new_software_licence->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
164 ui->ProjectTableWidget->setItem( row, SOFTWARE_LICENCE_COLUMN, new_software_licence );
165
166 // Get the Software Licence, Create Table Widget and Insert in Table
167 QTableWidgetItem *new_hardware_licence = new QTableWidgetItem(project_file_info->HardwareLicence.ShortName);
168 new_hardware_licence->setFlags(new_hardware_licence->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
169 ui->ProjectTableWidget->setItem( row, HARDWARE_LICENCE_COLUMN, new_hardware_licence );
170
171 // Get the Documentation Licence, Create Table Widget and Insert in Table
172 QTableWidgetItem *new_doc_licence = new QTableWidgetItem(project_file_info->DocLicence.ShortName);
173 new_doc_licence->setFlags(new_doc_licence->flags() & ~(Qt::ItemIsEditable | Qt::ItemIsSelectable));
174 ui->ProjectTableWidget->setItem( row, DOC_LICENCE_COLUMN, new_doc_licence );
175 QWidget *check_box_widget1 = new QWidget();
176 QCheckBox *install_button = new QCheckBox();
177 install_button->setText("");
178 install_button->setChecked((project_file_info->ProjectDesc.ProjectOptions & ALLOW_AUTOMATIC_INSTALL));
179 install_button->setCheckable((project_file_info->ProjectDesc.ProjectOptions & ALLOW_AUTOMATIC_INSTALL));
180 QHBoxLayout *layout_check_box1 = new QHBoxLayout( check_box_widget1 );
181 layout_check_box1->addWidget(install_button); //add QCheckBox to layout
182 layout_check_box1->setAlignment(Qt::AlignCenter); //set Alignment layout
183 layout_check_box1->setContentsMargins(0,0,0,0);
184 ui->ProjectTableWidget->setCellWidget( row, INSTALL_BUTTON_COLUMN, check_box_widget1);
185
186 QWidget *check_box_widget2 = new QWidget();
187 QCheckBox *archive_button = new QCheckBox();
188 archive_button->setText("");
189 archive_button->setChecked((project_file_info->ProjectDesc.ProjectOptions & CREATE_SOURCE_ARCHIVE));
190 archive_button->setCheckable((project_file_info->ProjectDesc.ProjectOptions & CREATE_SOURCE_ARCHIVE));
191 QHBoxLayout *layout_check_box2 = new QHBoxLayout( check_box_widget2 );
192 layout_check_box2->addWidget(archive_button); //add QCheckBox to layout
193 layout_check_box2->setAlignment(Qt::AlignCenter); //set Alignment layout
194 layout_check_box2->setContentsMargins(0,0,0,0);
195 ui->ProjectTableWidget->setCellWidget( row, ARCHIVE_BUTTON_COLUMN, check_box_widget2);
196
197 QWidget *check_box_widget3 = new QWidget();
198 QCheckBox *publish_button = new QCheckBox();
199 archive_button->setText("");
200 QHBoxLayout *layout_check_box3 = new QHBoxLayout( check_box_widget3 );
201 layout_check_box3->addWidget(publish_button); //add QCheckBox to layout
202 layout_check_box3->setAlignment(Qt::AlignCenter); //set Alignment layout
203 layout_check_box3->setContentsMargins(0,0,0,0);
204 ui->ProjectTableWidget->setCellWidget( row, PUBLISH_BUTTON_COLUMN, check_box_widget3);
205
206 // Next Row
207 row++;
208 }
209 ui->ProjectTableWidget->setEnabled(true);
210}
void PrStateChange(PROJECT_INFORMATION *Project)
Update the Lock/Queued Status of Project in the Project List Table.
void LoadFileSubsList(PROJECT_INFORMATION *Project)
Load the Substitution table from the Project Information.
bool LoadProjectInfo(PROJECT_INFORMATION *Store, int ProjectIndex, int ProjManIndex)
Load Project & relevant System Information into the Structure.
#define ALLOW_AUTOMATIC_INSTALL
ReadProjectInfo * read_project_info
ProjectSubstitute * project_subs_manager
TARGET_FAMILY_INFO TargetFamilyInfo
DEV_FAMILY_INFO DevFamilyInfo
PROJECT_DESCRIPTION ProjectDesc
LANG_FAMILY_INFO LangFamilyInfo
ASSOCIATED_GROUP_INFO InAssocInfo

References ALLOW_AUTOMATIC_INSTALL, ARCHIVE_BUTTON_COLUMN, ASSOCIATION_COLUMN, base_project_query, BRIEF_DESC_COLUMN, PROJECT_DESCRIPTION::BriefDescription, COMPILER_FAMILY_COLUMN, CREATE_SOURCE_ARCHIVE, DEV_FAMILY_COLUMN, PROJECT_INFORMATION::Developer, PROJECT_INFORMATION::DevFamilyInfo, DOC_LICENCE_COLUMN, PROJECT_INFORMATION::DocLicence, HARDWARE_LICENCE_COLUMN, PROJECT_INFORMATION::HardwareLicence, PROJECT_INFORMATION::InAssocInfo, INSTALL_BUTTON_COLUMN, PROJECT_INFORMATION::LangFamilyInfo, DEVELOPER_INFO::Name, PROJECT_CONTACT_COLUMN, PROJECT_IDENT_COLUMN, PROJECT_NAME_COLUMN, PROJECT_STATUS_COLUMN, project_subs_manager, PROJECT_INFORMATION::ProjectDesc, PROJECT_DESCRIPTION::ProjectIdent, ProjectList, PROJECT_DESCRIPTION::ProjectName, PROJECT_DESCRIPTION::ProjectOptions, PrStateChange(), PUBLISH_BUTTON_COLUMN, read_project_info, SetMaximumProjects(), ASSOCIATED_GROUP_INFO::ShortName, DEV_FAMILY_INFO::ShortName, LANG_FAMILY_INFO::ShortName, LICENCE_INFO::ShortName, TARGET_FAMILY_INFO::ShortName, SOFTWARE_LICENCE_COLUMN, PROJECT_INFORMATION::SoftwareLicence, PROJECT_INFORMATION::StatusInfo, STATUS_INFO::StatusName, TARGET_FAMILY_COLUMN, PROJECT_INFORMATION::TargetFamilyInfo, and ui.

Referenced by InitaliseProjectTable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ LogAdd()

void ProjectListManager::LogAdd ( LOGGING_SEVERITY Severity,
LOGGING_MODE Mode,
QString Message )
private

Send Message to the Log.

Parameters
SeveritySeverity of the Log Message
ModeWhich part of the program does the message relate to
MessageText message to be added to the Log

Definition at line 275 of file projectlistmanager.cpp.

276{
277 REMOTE_LOG_ENTRY log_entry;
278 log_entry.Severity = Severity;
279 log_entry.Mode = Mode;
280 log_entry.Message = Message;
281 emit SendLogEntry(log_entry);
282}
void SendLogEntry(REMOTE_LOG_ENTRY log_entry)
LOGGING_MODE Mode
Definition logger.h:61
QString Message
Definition logger.h:63
LOGGING_SEVERITY Severity
Definition logger.h:62

References REMOTE_LOG_ENTRY::Message, REMOTE_LOG_ENTRY::Mode, SendLogEntry(), and REMOTE_LOG_ENTRY::Severity.

Referenced by MakeHTMLProjectPage(), PrStateChange(), and WriteTextFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MakeHTMLProjectPage()

QString ProjectListManager::MakeHTMLProjectPage ( QString HeaderTemplateFile,
QString FooterTemplateFile,
QString LineTemplateFile,
bool TableOnly = true )

Definition at line 309 of file projectlistmanager.cpp.

310{
311 QString project_html_header;
312 QString project_html_line;
313 QString project_html_footer;
314
315 QString project_line;
316 QString project_table_html;
317
318 // Substitution Strings
319 QString p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, pa, pb, pc;
320
321
322 if (QFileInfo::exists(HeaderTemplateFile) && !TableOnly)
323 {
324 project_html_line = ReadTableTemplate(HeaderTemplateFile);
325 LogAdd(LOG_DEBUG, MODE_FILE, QString("Read Project List Header Template %1.").arg(HeaderTemplateFile));
326 }
327 else
328 {
329 // Initialise the HTML Table Header Template with Default
330 if (!TableOnly)
331 {
332 project_html_header =
333 QString("<!doctype html><html lang=\"en-au\">") +
334 QString("<head><meta charset=\"utf-8\">") +
335 QString("<title>Brigadoon Project List</title>") +
336 QString("<meta name=\"author\" content=\"RiverPirate\">") +
337 QString("<meta name=\"robots\" content=\"index, follow\">") +
338 QString("<meta name=\"revisit-after\" content=\"30 days\">") +
339 QString("<meta name=\"generator\" content=\"ProjectManager\">") +
340 QString("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">") +
341 QString("</head>") +
342 QString("<body>");
343 }
344 project_html_header +=
345 QString("<div Class=\"Title\">") +
346 QString("<span style=\"color:#000000;font-family:Arial;font-size:100px;\">BRIGADOON</span>") +
347 QString("</div>") +
348 QString("<DIV CLASS=\"ProjListTable\">") +
349 QString("<TABLE WIDTH=\"100%\" BORDER=\"1\"><TR>") +
350 QString("<TH>Prj. Ident.</TH><TH>Prj. Name</TH><TH>Target</TH><TH>Stat.</TH><TH>Contact</TH><TH>Brief Description</TH>") +
351 QString("<TH>Dev. Fam.</TH><TH>Comp. Lang.</TH><TH>Assoc. Grp.</TH>") +
352 QString("<TH>S/W Lic.</TH><TH>H/W Lic.</TH><TH>Doc.Lic.</TH>") +
353 QString("</TR>");
354
355 LogAdd(LOG_INFO, MODE_FILE, QString("Unable to Read Project List Header Template %1, using Default Template.").arg(HeaderTemplateFile));
356 }
357
358 if (QFileInfo::exists(LineTemplateFile))
359 {
360 project_html_line = ReadTableTemplate(LineTemplateFile);
361 LogAdd(LOG_DEBUG, MODE_FILE, QString("Read Project List Line Template %1.").arg(LineTemplateFile));
362 }
363 else
364 {
365 project_html_line =
366 QString("<TR>") +
367 QString("<TD>%1</TD><TD>%2</TD><TD>%3</TD><TD>%4</TD>") +
368 QString("<TD>%5</TD><TD>%6</TD><TD>%7</TD><TD>%8</TD>") +
369 QString("<TD>%9</TD><TD>%10</TD><TD>%11</TD><TD>%12</TD>") +
370 QString("</TR>");
371 LogAdd(LOG_INFO, MODE_FILE, QString("Unable to Read Project List Line Template %1, using Default Template.").arg(LineTemplateFile));
372 }
373
374 if (QFileInfo::exists(FooterTemplateFile))
375 {
376 project_html_line = ReadTableTemplate(FooterTemplateFile);
377 LogAdd(LOG_DEBUG, MODE_FILE, QString("Read Project List Footer Template %1.").arg(FooterTemplateFile));
378 }
379 else
380 {
381 project_html_footer = QString("</TABLE></DIV>");
382 if (!TableOnly) project_html_footer += "</BODY></HTML>";
383
384 LogAdd(LOG_INFO, MODE_FILE, QString("Unable to Read Project List Footer Template %1, using Default Template.").arg(FooterTemplateFile));
385 }
386
387 // Start Creating table
388 project_table_html = project_html_header;
389
390 // Retreive the List of Projects
391 QString query_string = base_project_query;
392 QSqlQuery project_query(query_string + " order by project_index desc");
393
394 // Step Through the List of Projects
395 while( project_query.next())
396 {
397 PROJECT_INFORMATION* project_info = new PROJECT_INFORMATION;
398
399 // Load all of the Data about this Project
400 read_project_info->LoadProjectInfo(project_info, project_query.value(0).toInt(), ui->ProjectPrefix->currentIndex() + 1);
401
402 if (!(project_info->ProjectDesc.ProjectOptions & EXCLUDE_PROJECT_LIST))
403 {
404
405 // Get the Project's URL and Project Identifier
406 pa = project_info->ProgramInformation.SiteURL + "/project_dynamic/" + project_info->ProjectDesc.ProjectIdent + "/html/index.html";
407 pb = project_info->ProjectDesc.ProjectIdent;
408 p1 = QString("<A HREF=\"")+pa + "\">" + pb + "</A>";
409
410 // Make A Table Widget for the Project Name and Insert
411 p2 = project_info->ProjectDesc.ProjectName;
412
413 // Get the Name of the target System
414 p3 = project_info->TargetFamilyInfo.ShortName;
415
416 // Get the Project Status Name, Create Table Widget and Insert in Table
417 p4 = project_info->StatusInfo.StatusName;
418
419 // Get the Developer Name, Create Table Widget and Insert in Table
420 pa = project_info->Developer.Email;
421 pb = project_info->Developer.Handle;
422 pc = project_info->ProjectDesc.ProjectIdent;
423 p5 = QString("<A HREF=\"mailto:") + pa +"?subject=re: " + pc + " Project.\">" + pb + "</A>";
424
425 // Get the Brief Description, Create Table Widget and Insert in Table
426 p6 = project_info->ProjectDesc.BriefDescription;
427
428 // Get the Development Family, Create Table Widget and Insert in Table
429 p7 = project_info->DevFamilyInfo.ShortName;
430
431 // Get the Language Family, Create Table Widget and Insert in Table
432 p8 = project_info->LangFamilyInfo.ShortName;
433
434 // Get the Association Family, Create Table Widget and Insert in Table
435 pa = project_info->InAssocInfo.ShortName;
436 if (project_info->InAssocInfo.InAssociationIndex != 0)
437 {
438 pb = project_info->InAssocInfo.AssociationURL;
439 p9 = QString("<A HREF=\"")+ pb + QString("\" target=\"_blank\">") + pa + "</A>";
440 }
441 else
442 {
443 p9 = pa;
444 }
445
446 // Get the Software Licence, Create Table Widget and Insert in Table
447 pa = project_info->SoftwareLicence.ShortName;
448 if( project_info->SoftwareLicence.LicenceIndex != 14)
449 {
450 pb = project_info->SoftwareLicence.LicenceURL;
451 p10 = QString("<A HREF=\"")+ pb + QString("\" target=\"_blank\">") + pa + "</A>";
452 }
453 else
454 {
455 p10 = pa;
456 }
457
458 // Get the Hardware Licence, Create Table Widget and Insert in Table
459 pa = project_info->HardwareLicence.ShortName;
460 if( project_info->HardwareLicence.LicenceIndex != 14)
461 {
462 pb = project_info->HardwareLicence.LicenceURL;
463 p11 = QString("<A HREF=\"")+ pb + QString("\" target=\"_blank\">") + pa + "</A>";
464 }
465 else
466 {
467 p11 = pa;
468 }
469
470 // Get the Documentation Licence, Create Table Widget and Insert in Table
471 pa = project_info->DocLicence.ShortName;
472 if( project_info->DocLicence.LicenceIndex != 14)
473 {
474 pb = project_info->DocLicence.LicenceURL;
475 p12 = QString("<A HREF=\"")+ pb + QString("\" target=\"_blank\">") + pa + "</A>";
476 }
477 else
478 {
479 p12 = pa;
480 }
481
482 project_line = project_html_line.arg(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
483 project_table_html += project_line;
484 }
485 }
486 project_table_html += project_html_footer;
487
488 // Write the Table Out to a File
489
490
491 return(project_table_html);
492}
QString ReadTableTemplate(QString TemplateFile)
Read an HTML template from a File.
void LogAdd(LOGGING_SEVERITY Severity, LOGGING_MODE Mode, QString Message)
Send Message to the Log.
#define EXCLUDE_PROJECT_LIST
Exclude Project from Public List Mask.
@ LOG_INFO
Definition logger.h:55
@ LOG_DEBUG
Definition logger.h:56
@ MODE_FILE
Definition logger.h:32
PROGRAM_INFORMATION ProgramInformation

References ASSOCIATED_GROUP_INFO::AssociationURL, base_project_query, PROJECT_DESCRIPTION::BriefDescription, PROJECT_INFORMATION::Developer, PROJECT_INFORMATION::DevFamilyInfo, PROJECT_INFORMATION::DocLicence, DEVELOPER_INFO::Email, EXCLUDE_PROJECT_LIST, DEVELOPER_INFO::Handle, PROJECT_INFORMATION::HardwareLicence, ASSOCIATED_GROUP_INFO::InAssociationIndex, PROJECT_INFORMATION::InAssocInfo, PROJECT_INFORMATION::LangFamilyInfo, LICENCE_INFO::LicenceIndex, LICENCE_INFO::LicenceURL, LOG_DEBUG, LOG_INFO, LogAdd(), MODE_FILE, PROJECT_INFORMATION::ProgramInformation, PROJECT_INFORMATION::ProjectDesc, PROJECT_DESCRIPTION::ProjectIdent, PROJECT_DESCRIPTION::ProjectName, PROJECT_DESCRIPTION::ProjectOptions, read_project_info, ReadTableTemplate(), ASSOCIATED_GROUP_INFO::ShortName, DEV_FAMILY_INFO::ShortName, LANG_FAMILY_INFO::ShortName, LICENCE_INFO::ShortName, TARGET_FAMILY_INFO::ShortName, PROGRAM_INFORMATION::SiteURL, PROJECT_INFORMATION::SoftwareLicence, PROJECT_INFORMATION::StatusInfo, STATUS_INFO::StatusName, PROJECT_INFORMATION::TargetFamilyInfo, and ui.

Referenced by ProjectTabChanged().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MakeOSProjectPage()

QString ProjectListManager::MakeOSProjectPage ( void )

Definition at line 284 of file projectlistmanager.cpp.

285{
286 QString project_line;
287 QString project_table_opensim;
288
289 // Retreive the List of Projects
290 QString query_string = base_project_query;
291 QSqlQuery project_query(query_string + " order by project_name");
292
293 // Step Through the List of Projects
294 while( project_query.next())
295 {
296 PROJECT_INFORMATION* project_info = new PROJECT_INFORMATION;
297 read_project_info->LoadProjectInfo(project_info, project_query.value(0).toInt(), ui->ProjectPrefix->currentIndex() + 1);
298
299 QString project_address = project_info->ProgramInformation.SiteURL + "/project_dynamic/" + project_info->ProjectDesc.ProjectIdent + "/html/index.html";
300 QString project_logo = project_info->ProgramInformation.SiteURL + "/project_dynamic/" + project_info->ProjectDesc.ProjectIdent + "/images/os_logo.png";
301 project_line = project_info->ProjectDesc.ProjectName + "=" + project_address + "=" + project_logo + "\r\n";
302 project_table_opensim += project_line;
303
304 delete project_info;
305 }
306 return(project_table_opensim);
307}

References base_project_query, PROJECT_INFORMATION::ProgramInformation, PROJECT_INFORMATION::ProjectDesc, PROJECT_DESCRIPTION::ProjectIdent, PROJECT_DESCRIPTION::ProjectName, read_project_info, PROGRAM_INFORMATION::SiteURL, and ui.

Referenced by ProjectTabChanged().

Here is the caller graph for this function:

◆ PressedArchiveOff

void ProjectListManager::PressedArchiveOff ( void )
privateslot

Turn all Archive Check boxes off in List table.

Definition at line 567 of file projectlistmanager.cpp.

568{
570}
void SetCheckState(int column, bool InstallState)
Set the State of all Project Selection in Table List.

References ARCHIVE_BUTTON_COLUMN, and SetCheckState().

Referenced by ProjectListManager().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PressedArchiveOn

void ProjectListManager::PressedArchiveOn ( void )
privateslot

Turn all Archive Check boxes on in List table.

Definition at line 562 of file projectlistmanager.cpp.

563{
565}

References ARCHIVE_BUTTON_COLUMN, and SetCheckState().

Referenced by ProjectListManager().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PressedInstallOff

void ProjectListManager::PressedInstallOff ( void )
privateslot

Turn all Install Check boxes off in List table.

Definition at line 556 of file projectlistmanager.cpp.

557{
559
560}

References INSTALL_BUTTON_COLUMN, and SetCheckState().

Referenced by ProjectListManager().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PressedInstallOn

void ProjectListManager::PressedInstallOn ( void )
privateslot

Turn all Install Check boxes on in List table.

Definition at line 551 of file projectlistmanager.cpp.

552{
554}

References INSTALL_BUTTON_COLUMN, and SetCheckState().

Referenced by ProjectListManager().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ProcessFullList

void ProjectListManager::ProcessFullList ( void )
slot

Add all Projects for Documentation Creation.

Definition at line 263 of file projectlistmanager.cpp.

264{
265 int row_count = ui->ProjectTableWidget->rowCount();
266 for ( int index = 0; (index < row_count) && ( ui->ProjectTableWidget->item( index, 0 ) != nullptr) ; ++index )
267 {
268 if ( ( ui->ProjectTableWidget->item( index, 0 ) != nullptr) && ( ui->ProjectTableWidget->item( index, 0 )->text() != "") )
269 {
271 }
272 }
273}
void ProcessProject(PROJECT_INFORMATION *ProjectInfo)
Process documentation for a Project.
DoxygenManager * doxy_manager

References doxy_manager, ProjectList, and ui.

◆ ProcessSelection

void ProjectListManager::ProcessSelection ( void )
slot

Add th Selected Project for Documentation Creation.

Definition at line 227 of file projectlistmanager.cpp.

228{
229 int index = ui->ProjectTableWidget->currentRow();
230 if ( ( ui->ProjectTableWidget->item( index, 0 ) != nullptr) && ( ui->ProjectTableWidget->item( index, 0 )->text() != "") )
231 {
232 ProjectList[index]->ProjectDesc.ProjectSelections = FindSelections(index);
234 }
235}
int FindSelections(int index)
Read and Encode selected options for a Project.

References doxy_manager, FindSelections(), ProjectList, and ui.

Here is the call graph for this function:

◆ ProjectTabChanged

void ProjectListManager::ProjectTabChanged ( int Index)
slot

Process the Change in Window Tab.

Parameters
SelectedWindow Tab Index

Definition at line 57 of file projectlistmanager.cpp.

58{
59 QString list_table_string;
60
61 switch( Index )
62 {
64 break;
65
68 list_table_string = MakeHTMLProjectPage(ui->ProjectListHeaderFile->text(), ui->ProjectListFooterFile->text(), ui->ProjectListLineFile->text(), true);
69 WriteTextFile(ui->PrimaryWebsiteDirectory->text() + "/projects/" + ui->ProjectListWebTableFile->text(), list_table_string);
70 list_table_string = MakeOSProjectPage();
71 WriteTextFile(ui->PrimaryWebsiteDirectory->text() + "/projects/" + ui->ProjectListOSTableFile->text(), list_table_string);
72 break;
73
75 break;
76
77 case LOG_TAB:
78 break;
79
80 case LICENCE_ACK_TAB:
81 break;
82 }
83}
bool WriteTextFile(QString FileName, QString Contents)
Write a String to a File.
QString MakeOSProjectPage(void)
void InitaliseProjectTable(void)
Clear and Load the Project List Table.
QString MakeHTMLProjectPage(QString HeaderTemplateFile, QString FooterTemplateFile, QString LineTemplateFile, bool TableOnly=true)
@ LICENCE_ACK_TAB
@ CREATE_UPDATE_TAB
@ UPDATE_PROJECTS_TAB
@ PROGRAM_SETUP_TAB
@ LOG_TAB

References CREATE_UPDATE_TAB, InitaliseProjectTable(), LICENCE_ACK_TAB, LOG_TAB, MakeHTMLProjectPage(), MakeOSProjectPage(), PROGRAM_SETUP_TAB, ui, UPDATE_PROJECTS_TAB, and WriteTextFile().

Here is the call graph for this function:

◆ PrStateChange

void ProjectListManager::PrStateChange ( PROJECT_INFORMATION * Project)
slot

Update the Lock/Queued Status of Project in the Project List Table.

Parameters
ProjectPOinter to Project's Information

Definition at line 528 of file projectlistmanager.cpp.

529{
530 // Find the Line with this Project Ident
531 QList<QTableWidgetItem *> item_list = ui->ProjectTableWidget->findItems(Project->ProjectDesc.ProjectIdent, Qt::MatchExactly);
532 if (item_list.count() != 1)
533 {
534 LogAdd(LOG_ERROR, MODE_QT, QString("Error Finding Project %1 in the Table Widget. ").arg(Project->ProjectDesc.ProjectIdent));
535 }
536 else
537 {
538 if (!Project->ProjectLock)
539 {
540 item_list[0]->setForeground(QBrush(QColor(INACTIVE_COLOUR)));
541 }
542 else
543 {
544 if (Project->ProjectQueued) item_list[0]->setForeground(QBrush(QColor(QUEUED_COLOUR)));
545 else item_list[0]->setForeground(QBrush(QColor(LOCK_COLOUR)));
546 }
547 ui->ProjectTableWidget->repaint();
548 }
549}
#define QUEUED_COLOUR
#define INACTIVE_COLOUR
The Text colour indicating an unlocked and unqueued Project.
#define LOCK_COLOUR
The Text colour indicating a Locked Project.
@ LOG_ERROR
Definition logger.h:52
@ MODE_QT
Definition logger.h:23

References INACTIVE_COLOUR, LOCK_COLOUR, LOG_ERROR, LogAdd(), MODE_QT, PROJECT_INFORMATION::ProjectDesc, PROJECT_DESCRIPTION::ProjectIdent, PROJECT_INFORMATION::ProjectLock, PROJECT_INFORMATION::ProjectQueued, QUEUED_COLOUR, and ui.

Referenced by LoadProjectTable().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadTableTemplate()

QString ProjectListManager::ReadTableTemplate ( QString TemplateFile)
private

Read an HTML template from a File.

Parameters
TemplateFileName of the Template File
Returns
The contents of the Template as a String

Definition at line 494 of file projectlistmanager.cpp.

495{
496 QString text_result;
497 QFile file(TemplateFile);
498 if (file.open(QIODevice::ReadOnly | QIODevice::Text))
499 {
500 QTextStream in(&file);
501 while(!in.atEnd())
502 {
503 text_result += in.readLine();
504 }
505 }
506 return(text_result);
507}

Referenced by MakeHTMLProjectPage().

Here is the caller graph for this function:

◆ SendLogEntry

void ProjectListManager::SendLogEntry ( REMOTE_LOG_ENTRY log_entry)
signal

Referenced by LogAdd().

Here is the caller graph for this function:

◆ SetCheckState()

void ProjectListManager::SetCheckState ( int column,
bool InstallState )
private

Set the State of all Project Selection in Table List.

Parameters
Columof Project List Table
InstallStateState (Off/On) to be Install in all Switches

Definition at line 572 of file projectlistmanager.cpp.

573{
574 int row_count = ui->ProjectTableWidget->rowCount();
575 for (int row = 0; row < row_count; row++)
576 {
577 QCheckBox* checkBox = nullptr;
578
579 if (QWidget* w = ui->ProjectTableWidget->cellWidget(row, column))
580 {
581 if (QLayout* layout = w->layout())
582 {
583 if (QLayoutItem* layoutItem = layout->itemAt(0))
584 {
585 if (QWidgetItem* widgetItem = dynamic_cast<QWidgetItem*>(layoutItem))
586 {
587 checkBox = qobject_cast<QCheckBox*>(widgetItem->widget());
588 checkBox->setChecked(CheckState);
589 }
590 }
591 }
592 }
593 }
594}

References ui.

Referenced by PressedArchiveOff(), PressedArchiveOn(), PressedInstallOff(), and PressedInstallOn().

Here is the caller graph for this function:

◆ SetMaximumProjects()

void ProjectListManager::SetMaximumProjects ( void )
private

Set the Initial Line Count in the Project List table.

Definition at line 212 of file projectlistmanager.cpp.

213{
214 int current_row_count = ui->ProjectTableWidget->rowCount();
215 int project_count = 0;
216
217 QString count_query = "select count(*) from project";
218 QSqlQuery project_counter(count_query);
219 while (project_counter.next())
220 {
221 project_count = project_counter.value(0).toInt();
222 }
223 int increased_project_count = project_count - 1;
224 if (current_row_count < increased_project_count) ui->ProjectTableWidget->setRowCount(increased_project_count);
225}

References ui.

Referenced by LoadProjectTable(), and ProjectListManager().

Here is the caller graph for this function:

◆ WriteTextFile()

bool ProjectListManager::WriteTextFile ( QString FileName,
QString Contents )
private

Write a String to a File.

Parameters
FileNameThe name of the Target File
ContentsThe String to be written to the File
Returns
Success (true) or Failure (false)

Definition at line 509 of file projectlistmanager.cpp.

510{
511 bool result = false;
512 QFile file(FileName);
513 if (file.open(QIODevice::WriteOnly | QIODevice::Text))
514 {
515 QTextStream out(&file);
516 out << Contents;
517 result = true;
518 LogAdd(LOG_DEBUG, MODE_FILE, QString("Wrote Project List File %1 ").arg(FileName));
519 }
520 else
521 {
522 LogAdd(LOG_ERROR, MODE_FILE, QString("Unable to write Project List File %1 ").arg(FileName));
523
524 }
525 return(result);
526}

References LOG_DEBUG, LOG_ERROR, LogAdd(), and MODE_FILE.

Referenced by ProjectTabChanged().

Here is the call graph for this function:
Here is the caller graph for this function:

Field Documentation

◆ base_project_query

QString ProjectListManager::base_project_query
private

Basic SQL Query for listing Projects.

Definition at line 170 of file projectlistmanager.h.

Referenced by LoadProjectTable(), MakeHTMLProjectPage(), MakeOSProjectPage(), and ProjectListManager().

◆ ProjectList

QList<PROJECT_INFORMATION*> ProjectListManager::ProjectList
private

A list of Projects to be processed.

Definition at line 176 of file projectlistmanager.h.

Referenced by LoadProjectTable(), ProcessFullList(), ProcessSelection(), and ProjectListManager().

◆ sort_group

QButtonGroup* ProjectListManager::sort_group
private

Pointer to Button Group for sorting Project List Table.

Definition at line 164 of file projectlistmanager.h.

◆ ui

Ui::MainWindow* ProjectListManager::ui
private

The documentation for this class was generated from the following files: