#include "krypto.h"


Krypto::Krypto(QWidget *parent)
    : QMainWindow(parent)
{
//      { Krypto Design

    this->setWindowTitle("Krypto RC");
    this->setFixedSize(510,375);


    QIcon *german_I = new QIcon("D:/Bilder/Icons/german.png");
    QIcon *english_I = new QIcon("D:/Bilder/Icons/greatbritain.png");
    QIcon *french_I = new QIcon("D:/Bilder/Icons/frankreich.png");
    QIcon *copy_I = new QIcon("D:/Bilder/Icons/copy.png");
    QIcon *cut_I = new QIcon("D:/Bilder/Icons/cut.png");
    QIcon *insert_I = new QIcon("D:/Bilder/Icons/einfuegen.png");
    QIcon *delete_I = new QIcon("D:/Bilder/Icons/delete.png");
    QIcon *design_I = new QIcon("D:/Bilder/Icons/design.png");
    QIcon *decrypt_I = new QIcon("D:/Bilder/Icons/decrypt.png");
    QIcon *encrypt_I = new QIcon("D:/Bilder/Icons/encrypt.png");
    QIcon *left_I = new QIcon("D:/Bilder/Icons/left.png");
    QIcon *right_I = new QIcon("D:/Bilder/Icons/right.png");
    QIcon *open_I = new QIcon("D:/Bilder/Icons/open.png");
    QIcon *redo_I = new QIcon("D:/Bilder/Icons/redo.png");
    QIcon *undo_I = new QIcon("D:/Bilder/Icons/undo.png");
    QIcon *save_I = new QIcon("D:/Bilder/Icons/save.png");
    QIcon *saveAs_I = new QIcon("D:/Bilder/Icons/save-as.png");
    QIcon *close_I = new QIcon("D:/Bilder/Icons/schließen.png");

    QSpacerItem *vspacer_1 = new QSpacerItem(30,30,
    QSizePolicy::Expanding, QSizePolicy::Minimum);

    QSpacerItem *vspacer_2 = new QSpacerItem(-5,-5,
    QSizePolicy::Expanding, QSizePolicy::Minimum);

    german_A = new QAction(tr("&Deutsch"),this);
    german_A->setIcon(*german_I);
    german_A->setVisible(true);
    german_A->setIconVisibleInMenu(true);
    english_A = new QAction(tr("&Englisch"),this);
    english_A->setIcon(*english_I);
    english_A->setVisible(true);
    english_A->setIconVisibleInMenu(true);
    french_A = new QAction(tr("&Französisch"),this);
    french_A->setIcon(*french_I);
    french_A->setVisible(true);
    french_A->setIconVisibleInMenu(true);
    open_A = new QAction(tr("&Öffnen..."),this);
    open_A->setIcon(*open_I);
    open_A->setVisible(true);
    open_A->setIconVisibleInMenu(true);
    open_A->setShortcuts(QKeySequence::Open);
    save_A = new QAction(tr("&Speichern"),this);
    save_A->setIcon(*save_I);
    save_A->setVisible(true);
    save_A->setIconVisibleInMenu(true);
    save_A->setShortcuts(QKeySequence::Save);
    saveAs_A = new QAction(tr("&Speichern unter..."),this);
    saveAs_A->setIcon(*saveAs_I);
    saveAs_A->setVisible(true);
    saveAs_A->setIconVisibleInMenu(true);
    saveAs_A->setShortcut(QKeySequence(Qt::CTRL+Qt::SHIFT+Qt::Key_S));
    close_A = new QAction(tr("&Beenden"),this);
    close_A->setIcon(*close_I);
    close_A->setVisible(true);
    close_A->setIconVisibleInMenu(true);
    close_A->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_B));
    connect(close_A,SIGNAL(triggered()),this,SLOT(close()));

    undo_A = new QAction(tr("&Rückgängig"),this);
    undo_A->setIcon(*undo_I);
    undo_A->setVisible(true);
    undo_A->setIconVisibleInMenu(true);
    undo_A->setShortcuts(QKeySequence::Undo);
    redo_A = new QAction(tr("&Wiederherstellen"),this);
    redo_A->setIcon(*redo_I);
    redo_A->setVisible(true);
    redo_A->setIconVisibleInMenu(true);
    redo_A->setShortcuts(QKeySequence::Redo);
    stepBack_A = new QAction(tr("&Schritt zurück"),this);
    stepBack_A->setIcon(*left_I);
    stepBack_A->setVisible(true);
    stepBack_A->setIconVisibleInMenu(true);
    stepBack_A->setShortcuts(QKeySequence::Back);
    stepForward_A = new QAction(tr("&Schritt wiederholen"),this);
    stepForward_A->setIcon(*right_I);
    stepForward_A->setVisible(true);
    stepForward_A->setIconVisibleInMenu(true);
    stepForward_A->setShortcuts(QKeySequence::Forward);
    selectAll_A = new QAction(tr("&Alles markieren"),this);
    selectAll_A->setShortcuts(QKeySequence::SelectAll);
    cut_A = new QAction(tr("&Ausschneiden"),this);
    cut_A->setIcon(*cut_I);
    cut_A->setVisible(true);
    cut_A->setIconVisibleInMenu(true);
    cut_A->setShortcuts(QKeySequence::Cut);
    copy_A = new QAction(tr("&Kopieren"),this);
    copy_A->setIcon(*copy_I);
    copy_A->setVisible(true);
    copy_A->setIconVisibleInMenu(true);
    copy_A->setShortcuts(QKeySequence::Copy);
    paste_A = new QAction(tr("&Einfügen"),this);
    paste_A->setIcon(*insert_I);
    paste_A->setVisible(true);
    paste_A->setIconVisibleInMenu(true);
    paste_A->setShortcuts(QKeySequence::Paste);
    delete_A = new QAction(tr("&Entfernen"),this);
    delete_A->setIcon(*delete_I);
    delete_A->setVisible(true);
    delete_A->setIconVisibleInMenu(true);
    delete_A->setShortcuts(QKeySequence::Delete);

    encrypt_A = new QAction(tr("&Verschlüsselung"),this);
    encrypt_A->setIcon(*encrypt_I);
    encrypt_A->setVisible(true);
    encrypt_A->setIconVisibleInMenu(true);
    decrypt_A = new QAction(tr("&Entschlüsselung"),this);
    decrypt_A->setIcon(*decrypt_I);
    decrypt_A->setVisible(true);
    decrypt_A->setIconVisibleInMenu(true);
    design_A = new QAction(tr("&Design"),this);
    design_A->setIcon(*design_I);
    design_A->setVisible(true);
    design_A->setIconVisibleInMenu(true);
    security_A = new QAction(tr("&Sicherheit"),this);

    onlineHelp_A = new QAction(tr("&Online Hilfe"),this);
    openHelp_A = new QAction(tr("&Hilfe öffnen"),this);
    openHelp_A->setShortcuts(QKeySequence::HelpContents);
    activeKrypto_A = new QAction(tr("&Krypto aktivieren"),this);
    aboutKrypto_A = new QAction(tr("&Über Krypto..."),this);

    input_TE = new QTextEdit("");
    input_TE->setPlaceholderText(tr("Bitte geben Sie ihren Text ein"));
    input_TE->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    input_TE->setFixedSize(491,141);
    input_TE->setAlignment(Qt::AlignTop);

    crypt_PB = new QPushButton(tr("Verschlüsseln"));
    crypt_PB->setFixedSize(91,51);
    encrypt_PB = new QPushButton(tr("Entschlüsseln"));
    encrypt_PB->setFixedSize(91,51);

    reset_PB = new QPushButton(tr("Reset"));
    reset_PB->setFixedSize(91,23);
    searchRead_PB = new QPushButton(tr("Durchsuchen..."));
    searchRead_PB->setFixedSize(91,23);
    searchWrite_PB = new QPushButton(tr("Durchsuchen..."));
    searchWrite_PB->setFixedSize(91,23);
    cancel_PB = new QPushButton(tr("Abbrechen"));
    cancel_PB->setFixedSize(91,23);

    path_L = new QLabel(tr("Pfad:"));
    path_L->setFixedSize(181,16);
    readFile_LE = new QLineEdit("");
    readFile_LE->setPlaceholderText(tr("Pfad eingeben"));
    writeFile_LE = new QLineEdit("");
    writeFile_LE->setPlaceholderText(tr("Pfad eingeben"));
    close_CB = new QCheckBox(tr("Programm nach Prozess beenden?"));
    close_CB->setFixedSize(400,18);

    readInput_RB = new QRadioButton(tr("Eingabe lesen"));
    readInput_RB->setFixedSize(101,21);
    readInput_RB->setChecked(true);
    readFile_RB = new QRadioButton(tr("Datei lesen"));
    readFile_RB->setFixedSize(101,21);
    writeFile_CB = new QCheckBox(tr("Datei schreiben"));
    writeFile_CB->setFixedSize(101,21);

    progress_L = new QLabel(tr("Fortschritt"));
    progress_L->setFixedSize(61,16);
    progress_PBar = new QProgressBar;
    progress_PBar->setFixedSize(421,16);
    progress_PBar->setTextVisible(true);
    progress_PBar->setMaximum(0);
    progress_PBar->setMinimum(0);


    output_TB = new QTextBrowser;
    output_TB->setFixedSize(491,51);
    output_TB->setPlaceholderText(tr("Informationen zum Fortschritt"));

    file_M = menuBar()->addMenu(tr("&Datei"));
    file_M->addAction(open_A);
    file_M->addSeparator();
    file_M->addAction(save_A);
    file_M->addAction(saveAs_A);
    file_M->addSeparator();
    file_M->addAction(close_A);

    edit_M = menuBar()->addMenu(tr("&Bearbeiten"));
    edit_M->addAction(undo_A);
    edit_M->addAction(redo_A);
    edit_M->addSeparator();
    edit_M->addAction(stepBack_A);
    edit_M->addAction(stepForward_A);
    edit_M->addSeparator();
    edit_M->addAction(cut_A);
    edit_M->addAction(copy_A);
    edit_M->addAction(paste_A);
    edit_M->addAction(delete_A);
    edit_M->addSeparator();
    edit_M->addAction(selectAll_A);

    preferences_M = menuBar()->addMenu(tr("&Einstellungen"));
    language_M = preferences_M->addMenu(tr("&Sprache"));
    language_M->addAction(german_A);
    language_M->addAction(english_A);
    language_M->addAction(french_A);



    preferences_M->addSeparator();
    preferences_M->addAction(encrypt_A);
    preferences_M->addAction(decrypt_A);
    preferences_M->addSeparator();
    preferences_M->addAction(design_A);
    preferences_M->addSeparator();
    preferences_M->addAction(security_A);

    help_M = menuBar()->addMenu(tr("&Hilfe"));
    help_M->addAction(onlineHelp_A);
    help_M->addAction(openHelp_A);
    help_M->addSeparator();
    help_M->addAction(activeKrypto_A);
    help_M->addAction(aboutKrypto_A);

//    1. Layout
    QVBoxLayout *vBox_1 = new QVBoxLayout;
    vBox_1->setSpacing(0);
    vBox_1->addWidget(input_TE,0,0);

//    2. Layout
    QVBoxLayout *vbox_2 = new QVBoxLayout;
    vbox_2->setSpacing(6);
    vbox_2->addWidget(crypt_PB);
    vbox_2->addWidget(encrypt_PB);

//    3. Layout
    QVBoxLayout *vbox_3 = new QVBoxLayout;
    vbox_3->setSpacing(5);
    vbox_3->addWidget(reset_PB);
    vbox_3->addWidget(searchRead_PB);
    vbox_3->addWidget(searchWrite_PB);
    vbox_3->addWidget(cancel_PB);

//    4. Layout
    QVBoxLayout *vbox_4 = new QVBoxLayout;
    vbox_4->setSpacing(2);
    vbox_4->addWidget(path_L);
    vbox_4->addWidget(readFile_LE);
    vbox_4->addWidget(writeFile_LE);
    vbox_4->addWidget(close_CB);
    vbox_4->addSpacerItem(vspacer_2);


//    5. Layout
    QVBoxLayout *vbox_5 = new QVBoxLayout;
    vbox_5->setSpacing(5);
    vbox_5->addWidget(readInput_RB);
    vbox_5->addWidget(readFile_RB);
    vbox_5->addWidget(writeFile_CB);
    vbox_5->addSpacerItem(vspacer_1);

//    6. Layout
    QHBoxLayout *hbox_2 = new QHBoxLayout;
    hbox_2->setSpacing(5);
    hbox_2->addWidget(progress_L);
    hbox_2->addWidget(progress_PBar);

//    7. Layout
    QHBoxLayout *hbox_3 = new QHBoxLayout;
    hbox_3->setSpacing(5);
    hbox_3->addWidget(output_TB);

//   Gesamt Layout
    QHBoxLayout *hbox_1 = new QHBoxLayout;
    hbox_1->setSpacing(5);
    hbox_1->addLayout(vbox_2);
    hbox_1->addLayout(vbox_3);
    hbox_1->addLayout(vbox_4);
    hbox_1->addLayout(vbox_5);

    QVBoxLayout *gesamt = new QVBoxLayout;
    gesamt->setSpacing(5);
    gesamt->addLayout(vBox_1);
    gesamt->addLayout(hbox_1);
    gesamt->addLayout(hbox_2);
    gesamt->addLayout(hbox_3);

//    CentralWidget
    QWidget *widget = new QWidget;
    widget->setLayout(gesamt);
    this->setCentralWidget(widget);
//      } Krypto Design
}


Krypto::~Krypto()
{
}









