/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
**   * Redistributions of source code must retain the above copyright
**     notice, this list of conditions and the following disclaimer.
**   * Redistributions in binary form must reproduce the above copyright
**     notice, this list of conditions and the following disclaimer in
**     the documentation and/or other materials provided with the
**     distribution.
**   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
**     of its contributors may be used to endorse or promote products derived
**     from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/

#ifndef SUBWINDOW_H
#define SUBWINDOW_H
#include <QMainWindow>
#include <QTabWidget>
//#include "widget.h"
//#include "sanaly1.h"
//#include "sanaly2.h"
#include "ymorpherewidget.h"
#include <QList>
#include "sdictionary.h"
#include "tablealgorithm_interface.h"
#include <QCloseEvent>
#include "ymuploadwidget.h"

QT_BEGIN_NAMESPACE
class QAction;
class QActionGroup;
class QLabel;
class QMenu;
QT_END_NAMESPACE

//! [0]
class SubWindow : public QMainWindow
{
    Q_OBJECT

public:
    SubWindow();
protected:
    //void contextMenuEvent(QContextMenuEvent *event) Q_DECL_OVERRIDE;
//! [0]

//! [1]
private slots:
    void newDB();
    void importDB();
    void exportDB();
    void exportMorphere();
    void importMorphere();
    void slotAnalyze();
    void slotDictionary();
    void exportOriginalMorphere();
    void slotTestUpload();
    void slotD3View();
    void slotShowUpload();
    void slotD3ViewTree();
    void slotD3ViewFile();
    void slotD3ViewTreeFile();
protected:
    void closeEvent(QCloseEvent *);


//! [1]

//! [2]
private:
    void createActions();
    void createMenus();
//! [2]

//! [3]
//!
//!

    QTabWidget *m_ptwSource;
    QTabWidget *m_ptwResult;
    QWidget *m_qwMain;

    //Widget *p_qwDB;
    QWidget *p_qwFile;
    QWidget *p_qwAnalyzed1;
    QWidget *p_qwText;
    SDictionary *p_qwDict;
    YMUploadWidget* m_pUploadWidget;


    //SAnaly1 *p_qwAnalyzer1;
    //SAnaly2 *p_qwAnalyzer2;
    YMorphereWidget *m_pYMBasicWidget;
    YMorphereWidget *m_pYMOneDepthWidget;
    YMorphereWidget *m_pYMNxNMatrixWidget;
    YMorphereWidget *m_pYMTwoDepthWidget;
    YMorphereWidget *m_pYMTwoDepthAWidget;
    YMorphereWidget *m_pYMPlatformWidget;
    YMorphereWidget *m_pYMCenterKeywordWidget;


    QAction *actDBNew;
    QAction *actDBCsvImport;
    QAction *actDBCsvExport;
    QAction *actMorphereExport;
    QAction *actMorphereImport;
    QAction *actMorphereOriginalExport;

    QAction *actExit;
    QAction *actAnalyze;
    QAction *actDictionary;

    QAction *actTestUpload;

    QMenu *menuFile;
    QMenu *menuAnalyze;
    QMenu *menuDictionary;
    QMenu *menuTestUpload;
    QMenu *menuShowUpload;
    QMenu *menuD3View;


    QAction *actD3View;
    QAction *actD3ViewTree;

    QAction *actD3ViewFile;
    QAction *actD3ViewTreeFile;

    QAction *actShowUpload;
    //AnalyzerThread m_pThread[16];
    /*
    QMutex mutex;
    AnalyzerThread **m_pThread;
    QList<STable*> m_lTable;
    QList<QTabWidget*> m_lTabWidget;
    */
    QTabWidget* m_ptwTable;
    TableAlgorithmInterface* m_pTAInterface;



};
//! [3]

#endif
