/*
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                 ┃
┃            Class Name: infodialog.cpp                                                           ┃
┃                Author: Michael Krämer                                                           ┃
┃                 Email: Michael@dk8pp.de                                                         ┃
┃                  Date: 10.11.2025                                                               ┃
┃                  Tool: Qt                                                                       ┃
┃                Device: Windows/Linux                                                            ┃
┃               Version: 0.1                                                                      ┃
┃        Program status: still testing                                                            ┃
┃                                                                                                 ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃                                                                                                 ┃
┃  Purpose: Show program information                                                              ┃
┃                                                                                                 ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃                                                                                                 ┃
┃  © Copyright 2024-2026 Michael Krämer, DK8PP                                                    ┃
┃                                                                                                 ┃
┃  This program is free software: you can redistribute it and/or modify it under the terms of     ┃
┃  the GNU Lesser General Public License as published by the Free Software Foundation, either     ┃
┃  version 3 of the License, or (at your option) any later version.                               ┃
┃                                                                                                 ┃
┃  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;      ┃
┃  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.      ┃
┃  See the GNU Lesser General Public License for more details.                                    ┃
┃                                                                                                 ┃
┃  You should have received a copy of the GNU Lesser General Public License along with this       ┃
┃  program.   If not, see <http://www.gnu.org/licenses/>.                                         ┃
┃                                                                                                 ┃
┃  ============================================================================================   ┃
┃                                                                                                 ┃
┃  Dieses Programm ist Freie Software: Sie können es unter den Bedingungen der GNU Lesser         ┃
┃  General Public License, wie von der Free Software Foundation, Version 3 der Lizenz oder        ┃
┃  (nach Ihrer Wahl) jeder neueren veröffentlichten Version, weiter verteilen und/oder            ┃
┃  modifizieren.                                                                                  ┃
┃                                                                                                 ┃
┃  Dieses Programm wird in der Hoffnung bereitgestellt, dass es nützlich sein wird, jedoch OHNE   ┃
┃  JEDE GEWÄHR,; sogar ohne die implizite Gewähr der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN        ┃
┃  BESTIMMTEN ZWECK. Siehe die GNU Lesser General Public License für weitere Einzelheiten.        ┃
┃                                                                                                 ┃
┃  Sie sollten eine Kopie der GNU Lesser General Public License zusammen mit diesem Programm      ┃
┃  erhalten haben. Wenn nicht, siehe <https://www.gnu.org/licenses/>.                             ┃
┃                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
*/

#include "infodialog.h"
#include "ui_infodialog.h"
#include "ui_showfile.h"
#include <QMessageBox>
#include <QFile>
#include <QListView>
#include <QStringListModel>

/*
╭─────────────────────────────────────────────────────────────────────────────────────────────────╮
│       InfoDialog                                                                                │
├─────────────────────────────────────────────────────────────────────────────────────────────────┤
│                                                                                                 │
│ Constructor of InfoDialog class                                                                 │
│                                                                                                 │
╰─────────────────────────────────────────────────────────────────────────────────────────────────╯
*/
InfoDialog::InfoDialog(QWidget *parent, QString *ProgramInfo) :
    QDialog(parent),
    ui(new Ui::InfoDialog)
{
    ui->setupUi(this);
    ui->LAB_InfoText->setText(*ProgramInfo) ;
}

InfoDialog::~InfoDialog()
{
    delete ui;
}

/*
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                 ┃
┃       Slots                                                                                     ┃
┃                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
*/

/*
╭─────────────────────────────────────────────────────────────────────────────────────────────────╮
│       on_QtInfoButton_clicked                                                                   │
╰─────────────────────────────────────────────────────────────────────────────────────────────────╯
*/
void InfoDialog::on_PUB_QtInfoButton_clicked()
{
    QMessageBox::aboutQt(this, "About Qt") ;
}

/*
╭─────────────────────────────────────────────────────────────────────────────────────────────────╮
│       on_PUB_LGPL_clicked                                                                       │
╰─────────────────────────────────────────────────────────────────────────────────────────────────╯
*/
void InfoDialog::on_PUB_LGPL_clicked()
{
QString file = ":/resource/resource/COPYING.LESSER" ;
    ShowFile ShowFile(nullptr, &file) ;
    ShowFile.exec() ;
}


ShowFile::ShowFile(QDialog *parent, QString *FileName)
   : QDialog(parent, Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint),
   ui(new Ui::ShowFile)
{
QListView *listView ;
QStringListModel *model = new QStringListModel ;
QStringList list;
QFile file ;

    file.setFileName(*FileName) ;

    ui->setupUi(this) ;
    listView = ui->LV_Textfile ;
    listView->setViewMode(QListView::ListMode) ;

    if(!file.open(QIODevice::ReadOnly))
    {
        QMessageBox::information(0, "error", file.errorString()) ;
    }
    else
    {
        QTextStream in(&file) ;
        while(!in.atEnd()) list << in.readLine() ;
        model->setStringList(list);
        listView->setModel(model) ;
    }
}
