Commit 63f259b4 authored by Oleg.Korshul's avatar Oleg.Korshul Committed by Alexander Trofimov

переход на кроссплатформенную панель

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@64322 954022d7-b5bf-4e40-9824-e11837661b57
parent cf72f99d
......@@ -767,54 +767,7 @@ DesktopEditor/ChromiumBasedEditors[!!-~]2/app/corebuilds/win64/debug/ascdocument
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/corebuilds/win64/debug/ascdocumentscore.lib svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test svnc_tsvn_003alogminsize=5
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Debug svnc_tsvn_003alogminsize=5
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons svnc_tsvn_003alogminsize=5
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/Documents_active_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/Documents_active_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/Documents_disabled_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/Documents_disabled_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/changetab_left_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/changetab_left_disabled.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/changetab_left_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/changetab_left_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/changetab_right_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/changetab_right_disabled.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/changetab_right_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/changetab_right_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/collapse_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/collapse_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/collapse_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/deploy2_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/deploy2_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/deploy2_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/deploy_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/deploy_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/deploy_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/exit_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/exit_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/exit_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/first_tab_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/first_tab_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/first_tab_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/new_collapse_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/new_collapse_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/new_deploy2_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/new_deploy2_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/new_deploy_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/new_deploy_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/new_exit_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/new_exit_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/output_tab_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/output_tab_hover.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/output_tab_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/tabicon_DE_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/tabicon_DE_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/tabicon_PE_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/tabicon_PE_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/tabicon_SE_active.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Icons/tabicon_SE_normal.png svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/Release svnc_tsvn_003alogminsize=5
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/asceditor_32.ico svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/asceditor_64.ico svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/src svnc_tsvn_003alogminsize=5
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/src/Icons svnc_tsvn_003alogminsize=5
DesktopEditor/ChromiumBasedEditors[!!-~]2/app/test/src/Icons/Documents_active_hover.png svn_mime_002dtype=application%2Foctet-stream
......@@ -27,58 +27,20 @@ CONFIG(debug, debug|release) {
PLATFORM_BUILD2 = $$PLATFORM_BUILD
}
include($$PWD/src/AscDocumentEditor.pri)
HEADERS += \
mainwindow.h \
qmainpanel.h \
qwinhost.h \
qwinwidget.h \
asctabwidget.h \
../../lib/qcefview/qcefview.h \
QAscApplicationManager.h \
../../lib/include/qascprinter.h
qwinwidget.h
SOURCES += \
main.cpp \
mainwindow.cpp \
qmainpanel.cpp \
qwinhost.cpp \
qwinwidget.cpp \
../../lib/qcefview/qcefview.cpp
RESOURCES += \
Icons.qrc
LIBS += -lwininet \
-ldnsapi \
-lversion \
-lmsimg32 \
-lws2_32 \
-lusp10 \
-lpsapi \
-ldbghelp \
-lwinmm \
-lshlwapi \
-lkernel32 \
-lgdi32 \
-lwinspool \
-lcomdlg32 \
-ladvapi32 \
-lshell32 \
-lole32 \
-loleaut32 \
-luser32 \
-luuid \
-lodbc32 \
-lodbccp32 \
-ldelayimp \
-lcredui \
-lnetapi32 \
-lcomctl32 \
-lrpcrt4 \
-ldwmapi \
-lOpenGL32
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.02
qwinwidget.cpp
LIBS += -L$$PWD/../cefbuilds/$$PLATFORM_BUILD -llibcef
LIBS += -L$$PWD/../corebuilds/$$PLATFORM_BUILD2 -lascdocumentscore
<RCC>
<qresource prefix="/">
<file>Icons/collapse_active.png</file>
<file>Icons/collapse_hover.png</file>
<file>Icons/collapse_normal.png</file>
<file>Icons/deploy_active.png</file>
<file>Icons/deploy_hover.png</file>
<file>Icons/deploy_normal.png</file>
<file>Icons/exit_active.png</file>
<file>Icons/exit_hover.png</file>
<file>Icons/exit_normal.png</file>
<file>Icons/first_tab_active.png</file>
<file>Icons/first_tab_hover.png</file>
<file>Icons/first_tab_normal.png</file>
<file>Icons/output_tab_active.png</file>
<file>Icons/output_tab_hover.png</file>
<file>Icons/output_tab_normal.png</file>
<file>Icons/tabicon_DE_active.png</file>
<file>Icons/tabicon_DE_normal.png</file>
<file>Icons/tabicon_PE_active.png</file>
<file>Icons/tabicon_PE_normal.png</file>
<file>Icons/tabicon_SE_active.png</file>
<file>Icons/tabicon_SE_normal.png</file>
<file>Icons/changetab_left_active.png</file>
<file>Icons/changetab_left_hover.png</file>
<file>Icons/changetab_left_normal.png</file>
<file>Icons/changetab_right_active.png</file>
<file>Icons/changetab_right_hover.png</file>
<file>Icons/changetab_right_normal.png</file>
<file>Icons/changetab_left_disabled.png</file>
<file>Icons/changetab_right_disabled.png</file>
<file>Icons/deploy2_active.png</file>
<file>Icons/deploy2_hover.png</file>
<file>Icons/deploy2_normal.png</file>
<file>Icons/Documents_active_hover.png</file>
<file>Icons/Documents_active_normal.png</file>
<file>Icons/Documents_disabled_hover.png</file>
<file>Icons/Documents_disabled_normal.png</file>
<file>Icons/new_collapse_normal.png</file>
<file>Icons/new_deploy_hover.png</file>
<file>Icons/new_deploy_normal.png</file>
<file>Icons/new_exit_hover.png</file>
<file>Icons/new_exit_normal.png</file>
<file>Icons/new_deploy2_hover.png</file>
<file>Icons/new_deploy2_normal.png</file>
<file>Icons/new_collapse_hover.png</file>
</qresource>
</RCC>
#ifndef QASCAPPLICATIONMANAGER
#define QASCAPPLICATIONMANAGER
#include "../../lib/include/cefapplication.h"
#include "../../lib/include/applicationmanager.h"
#include <shlwapi.h>
#include <shlobj.h>
#include <QFileDialog>
#include "qmainpanel.h"
class QAscApplicationManager : public CAscApplicationManager
{
public:
QMainPanel* m_pPanel;
public:
QAscApplicationManager()
{
m_pPanel = NULL;
}
public:
virtual void StartSaveDialog(const std::wstring& sName)
{
// сделал через QMainPanel - чтобы использовать сигналы-слоты.
// если сделать QAscApplicationManager : public QObject, то он будет прокидывать
// слоты родителю. Т.е. классу CAscApplicationManager.
// А в либе я не буду затачиваться на QT
((QMainPanel*)m_pPanel)->sendDialogSave(sName);
}
};
#endif // QASCAPPLICATIONMANAGER
#ifndef ASCEDITORWIDGET
#define ASCEDITORWIDGET
#include <QWidget>
#include <QTabWidget>
#include <QTabBar>
#include <QStyleOption>
#include <QPainter>
#include <QApplication>
namespace NSAscEditor
{
enum EditorType
{
etDocument = 0,
etPresentation = 1,
etSpreadsheet = 2
};
}
#if 0
class CAscEditorWidget : public QWidget
{
Q_OBJECT
public:
NSAscEditor::EditorType m_etType;
public:
CAscEditorWidget(QWidget *parent = 0, NSAscEditor::EditorType etType = NSAscEditor::etDocument) : QWidget(parent)
{
m_etType = etType;
setStyleSheet("background-color:#FF00FF");
}
~CAscEditorWidget()
{
}
void SetIcon(int nIndex, QTabWidget* pWidget)
{
int nSelectedIndex = pWidget->tabBar()->currentIndex();
QTabBar* pTabBar = pWidget->tabBar();
bool bIsActive = (nIndex == nSelectedIndex) ? true : false;
switch (m_etType)
{
case NSAscEditor::etPresentation:
{
pTabBar->setTabIcon(nIndex, bIsActive ? QIcon(":/Icons/tabicon_PE_active.png") : QIcon(":/Icons/tabicon_PE_normal.png"));
break;
}
case NSAscEditor::etSpreadsheet:
{
pTabBar->setTabIcon(nIndex, bIsActive ? QIcon(":/Icons/tabicon_SE_active.png") : QIcon(":/Icons/tabicon_SE_normal.png"));
break;
}
case NSAscEditor::etDocument:
default:
{
pTabBar->setTabIcon(nIndex, bIsActive ? QIcon(":/Icons/tabicon_DE_active.png") : QIcon(":/Icons/tabicon_DE_normal.png"));
break;
}
}
pTabBar->setTabTextColor(nIndex, bIsActive ? QColor(255, 255, 255) : QColor(51, 51, 51));
}
protected:
void paintEvent(QPaintEvent* e)
{
Q_UNUSED(e);
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
};
#else
#include "./cef/qcefwebview.h"
class CAscEditorWidget : public QCefWebView
{
Q_OBJECT
public:
NSAscEditor::EditorType m_etType;
public:
CAscEditorWidget(QWidget *parent = 0, NSAscEditor::EditorType etType = NSAscEditor::etDocument, std::wstring strUrl = L"") : QCefWebView(parent)
{
this->setParentTabs((QTabWidget*)parent);
m_etType = etType;
std::wstring sUrl = QApplication::applicationDirPath().toStdWString();
sUrl += L"/deploy/apps/api/documents/index.html";
if (etType == NSAscEditor::etSpreadsheet)
sUrl += L"?doctype=spreadsheet";
if (etType == NSAscEditor::etPresentation)
sUrl += L"?doctype=presentation";
if (strUrl.length() != 0)
sUrl = strUrl;
this->load(sUrl);
}
virtual ~CAscEditorWidget()
{
}
void SetIcon(int nIndex, QTabWidget* pWidget)
{
int nSelectedIndex = pWidget->tabBar()->currentIndex();
QTabBar* pTabBar = pWidget->tabBar();
bool bIsActive = (nIndex == nSelectedIndex) ? true : false;
switch (m_etType)
{
case NSAscEditor::etPresentation:
{
pTabBar->setTabIcon(nIndex, bIsActive ? QIcon(":/Icons/tabicon_PE_active.png") : QIcon(":/Icons/tabicon_PE_normal.png"));
break;
}
case NSAscEditor::etSpreadsheet:
{
pTabBar->setTabIcon(nIndex, bIsActive ? QIcon(":/Icons/tabicon_SE_active.png") : QIcon(":/Icons/tabicon_SE_normal.png"));
break;
}
case NSAscEditor::etDocument:
default:
{
pTabBar->setTabIcon(nIndex, bIsActive ? QIcon(":/Icons/tabicon_DE_active.png") : QIcon(":/Icons/tabicon_DE_normal.png"));
break;
}
}
//pTabBar->setTabTextColor(nIndex, bIsActive ? QColor(255, 255, 255) : QColor(51, 51, 51));
pTabBar->setTabTextColor(nIndex, QColor(51, 51, 51));
}
};
#endif
#endif // ASCEDITORWIDGET
#pragma once
#include <QFile>
#include "QAscApplicationManager.h"
#include "mainwindow.h"
#include <QScreen>
#include <QDir>
#include "mainwindow.h"
#include "./src/QAscApplicationManager.h"
#ifdef WIN32
#include <shlwapi.h>
#include <shlobj.h>
#endif
int main( int argc, char *argv[] )
#include <QStandardPaths>
static std::wstring GetAppDataPath()
{
#ifdef WIN32
WCHAR szPath[MAX_PATH];
// Get path for each computer, non-user specific and non-roaming data.
if ( SUCCEEDED( SHGetFolderPathW( NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath ) ) )
{
// TODO: [0]
// QStringList arr = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
// Append product-specific path
std::wstring sAppData(szPath);
sAppData += L"/ONLYOFFICE";
return sAppData;
}
#else
std::wstring sAppData = QDir::homePath().toStdWString();
sAppData += L"/ONLYOFFICE";
return sAppData;
#endif
return L"";
}
static int AscEditor_MainWindows( int argc, char *argv[] )
{
bool bIsChromiumSubprocess = false;
for (int i = 0; i < argc; ++i)
......@@ -38,15 +70,8 @@ int main( int argc, char *argv[] )
CApplicationCEF oCef;
CAscApplicationManager oManager;
WCHAR szPath[MAX_PATH];
// Get path for each computer, non-user specific and non-roaming data.
if ( SUCCEEDED( SHGetFolderPathW( NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath ) ) )
{
// Append product-specific path
std::wstring sAppData(szPath);
sAppData += L"/ONLYOFFICE";
oManager.m_oSettings.SetUserDataPath(sAppData);
}
std::wstring sUserPath = GetAppDataPath();
oManager.m_oSettings.SetUserDataPath(sUserPath);
oCef.Init_CEF(&oManager);
return aa.exec();
......@@ -57,15 +82,8 @@ int main( int argc, char *argv[] )
CAscApplicationManager* pApplicationManager = new QAscApplicationManager();
WCHAR szPath[MAX_PATH];
// Get path for each computer, non-user specific and non-roaming data.
if ( SUCCEEDED( SHGetFolderPathW( NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath ) ) )
{
// Append product-specific path
std::wstring sAppData(szPath);
sAppData += L"/ONLYOFFICE";
pApplicationManager->m_oSettings.SetUserDataPath(sAppData);
}
std::wstring sUserPath = GetAppDataPath();
pApplicationManager->m_oSettings.SetUserDataPath(sUserPath);
qreal ww = a.primaryScreen()->logicalDotsPerInch();
qreal hh = a.primaryScreen()->physicalDotsPerInch();
......@@ -90,7 +108,10 @@ int main( int argc, char *argv[] )
CMainWindow window( &a, windowBackground, 100, 100, 1024 * 2, 600 * 2, pApplicationManager );
window.setMinimumSize( 100, 100 );
((QAscApplicationManager*)pApplicationManager)->m_pPanel = window.mainPanel;
((QAscApplicationManager*)pApplicationManager)->m_pPanel = window.mainPanel->m_pPanel;
pApplicationManager->StartSpellChecker();
pApplicationManager->StartKeyboardChecker();
// Launch
a.exec();
......@@ -100,4 +121,11 @@ int main( int argc, char *argv[] )
delete application_cef;
delete pApplicationManager;
return 0;
}
int main( int argc, char *argv[] )
{
return AscEditor_MainWindows(argc, argv);
}
......@@ -5,7 +5,6 @@
#include <windows.h>
#include <stdexcept>
#include <QtWidgets/QPushButton>
#include <QFile>
#include <QPixmap>
......@@ -13,9 +12,6 @@
HWND winId = 0;
//QMainPanel* CMainWindow::mainPanel;
//QApplication* CMainWindow::a;
CMainWindow::CMainWindow( QApplication *app, HBRUSH windowBackground, const int x, const int y, const int width, const int height, CAscApplicationManager* pManager ) :
hWnd(0),
hInstance( GetModuleHandle( NULL ) ),
......@@ -28,7 +24,6 @@ CMainWindow::CMainWindow( QApplication *app, HBRUSH windowBackground, const int
mainPanel = NULL;
m_pManager = pManager;
m_pManager->StartSpellChecker();
WNDCLASSEXW wcx = { 0 };
wcx.cbSize = sizeof( WNDCLASSEX );
......@@ -75,22 +70,12 @@ CMainWindow::CMainWindow( QApplication *app, HBRUSH windowBackground, const int
toggleBorderless();
a = app;
m_nTimerLanguageId = 5000;
SetTimer(hWnd, m_nTimerLanguageId, 100, NULL);
}
CMainWindow::~CMainWindow()
{
if (-1 != m_nTimerLanguageId)
::KillTimer(hWnd, m_nTimerLanguageId);
hide();
DestroyWindow( hWnd );
//m_pManager->StopSpellChecker();
//RELEASEOBJECT(m_pManager);
}
LRESULT CALLBACK CMainWindow::WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
......@@ -188,13 +173,6 @@ LRESULT CALLBACK CMainWindow::WndProc( HWND hWnd, UINT message, WPARAM wParam, L
break;
}
case WM_TIMER:
{
if (NULL != window->m_pManager)
window->m_pManager->CheckKeyboard();
break;
}
case WM_NCHITTEST:
{
if ( window->borderless )
......@@ -444,13 +422,6 @@ QPushButton::pressed {background-image:url(:/Icons/new_deploy_hover.png);border:
case WM_ENDSESSION:
{
window->m_pManager->CloseApplication();
if (-1 != window->m_nTimerLanguageId)
{
::KillTimer(hWnd, window->m_nTimerLanguageId);
window->m_nTimerLanguageId = -1;
}
break;
}
#if 0
......
#include <windows.h>
#include "../../lib/include/applicationmanager.h"
#include "qmainpanel.h"
#include "qwinwidget.h"
#include <QtWidgets/QApplication>
#include <QApplication>
class CMainWindow
{
......@@ -71,6 +69,4 @@ private:
sizeType minimumSize;
sizeType maximumSize;
UINT_PTR m_nTimerLanguageId;
};
#ifndef QMAINPANEL_H
#define QMAINPANEL_H
#ifndef QMAINPANELW_H
#define QMAINPANELW_H
#include <QMouseEvent>
#include <QResizeEvent>
#include <QtWidgets/QTabWidget>
#include <QtWidgets/QPushButton>
#include "qwinwidget.h"
#include <QLabel>
#include "./src/QAscMainPanel.h"
#include "../../lib/include/applicationmanager.h"
class QMainPanel : public QWinWidget, public NSEditorApi::CAscMenuEventListener
class QMainPanel : public QWinWidget, public CMainButtonsController
{
Q_OBJECT
signals:
void downloadEvent( NSEditorApi::CAscDownloadFileInfo* );
void setModified(int, bool);
void signalPrint(int, int);
void dialogSave(std::wstring sName);
public:
QMainPanel( HWND hWnd, CAscApplicationManager* pManager );
bool nativeEvent(const QByteArray &, void *msg, long *result);
......@@ -27,58 +15,15 @@ public:
void mousePressEvent( QMouseEvent *event );
void resizeEvent(QResizeEvent* event);
public slots:
void pushButtonSaveClicked();
void pushButtonMinimizeClicked();
void pushButtonMaximizeClicked();
void pushButtonCloseClicked();
void pushButtonMainClicked();
void downloadEventSlot( NSEditorApi::CAscDownloadFileInfo* );
void onSetModified(int, bool);
void slotPrint(int, int);
void onDialogSave(std::wstring sName);
virtual void pushButtonMinimizeClicked();
virtual void pushButtonMaximizeClicked();
virtual void pushButtonCloseClicked();
private:
HWND windowHandle;
QPushButton* m_pButtonMain;
QWidget* m_pMainWidget;
QPushButton* m_pButtonMinimize;
QPushButton* m_pButtonMaximize;
QPushButton* m_pButtonClose;
QPushButton* m_pSaveModifiedButton;
QTabWidget* m_pTabs;
QWidget* m_pSeparator;
std::wstring m_sDownloadName;
CAscApplicationManager* m_pManager;
std::map<int, NSEditorApi::CAscDownloadFileInfo*> m_mapDownloads;
QWidget* m_pDownloadBackground;
QLabel* m_pDownloadLable;
public:
HWND GetHwndForKeyboard()
{
return (HWND)((QWidget*)m_pTabs->parent())->winId();
}
public:
virtual void OnEvent(NSEditorApi::CAscMenuEvent* pEvent);
virtual bool IsSupportEvent(int nEventType)
{
return true;
}
void sendDialogSave(std::wstring sName);
private:
void RecalculatePlaces();
QAscMainPanel* m_pPanel;
};
#endif // QMAINPANEL_H
#endif // QMAINPANELW_H
#ifndef QWINHOST_H
#define QWINHOST_H
#include <QtWidgets/QWidget>
#include <QWidget>
#include <Windows.h>
class QWinHost : public QWidget
......
#include <qevent.h>
#include "qwinwidget.h"
#include <qt_windows.h>
#include <QtWidgets/QApplication>
#include <QApplication>
#include <QWindow>
#include <qpa/qplatformnativeinterface.h>
......
#ifndef QWINWIDGET_H
#define QWINWIDGET_H
#include <QtWidgets/QWidget>
#include <QWidget>
class QWinWidget : public QWidget
{
......
......@@ -15,7 +15,7 @@ SOURCES += \
$$PWD/QAscMainPanel.cpp
RESOURCES += \
Icons.qrc
$$PWD/Icons.qrc
win32 {
LIBS += -lwininet \
......
......@@ -16,6 +16,7 @@
QAscMainPanel::QAscMainPanel( QWidget* parent, CAscApplicationManager* pManager, bool bIsCustomWindow ) : QWidget( parent )
{
m_bIsCustomWindow = bIsCustomWindow;
m_pMainButtonsController = NULL;
QObject::connect(this, SIGNAL( signal_Download(NSEditorApi::CAscDownloadFileInfo*)), this, SLOT( slot_Download(NSEditorApi::CAscDownloadFileInfo*)), Qt::QueuedConnection );
QObject::connect(this, SIGNAL( signal_Modified(int,bool)) , this, SLOT( slot_Modified(int,bool)), Qt::QueuedConnection );
......@@ -168,8 +169,6 @@ QPushButton::pressed {background-image:url(:/Icons/Documents_active_hover.png);b
RecalculatePlaces();
show();
m_pManager->SetEventListener(this);
}
......@@ -278,15 +277,18 @@ void QAscMainPanel::pushButtonMainClicked()
void QAscMainPanel::pushButtonMinimizeClicked()
{
if (m_pMainButtonsController)
m_pMainButtonsController->pushButtonMinimizeClicked();
}
void QAscMainPanel::pushButtonMaximizeClicked()
{
if (m_pMainButtonsController)
m_pMainButtonsController->pushButtonMaximizeClicked();
}
void QAscMainPanel::pushButtonCloseClicked()
{
if (m_pMainButtonsController)
m_pMainButtonsController->pushButtonCloseClicked();
}
void QAscMainPanel::slot_Download(NSEditorApi::CAscDownloadFileInfo* pInfo)
......
......@@ -9,6 +9,14 @@
#include "../../../lib/include/applicationmanager.h"
class CMainButtonsController
{
public:
virtual void pushButtonMinimizeClicked() {}
virtual void pushButtonMaximizeClicked() {}
virtual void pushButtonCloseClicked() {}
};
class QAscMainPanel : public QWidget, public NSEditorApi::CAscMenuEventListener
{
Q_OBJECT
......@@ -42,6 +50,10 @@ public:
{
return ((QWidget*)m_pTabs->parent())->winId();
}
void SetMainButtonsController(CMainButtonsController* pController)
{
m_pMainButtonsController = pController;
}
public:
void resizeEvent(QResizeEvent* event);
......@@ -77,6 +89,8 @@ protected:
QLabel* m_pDownloadLable;
bool m_bIsCustomWindow;
CMainButtonsController* m_pMainButtonsController;
};
#endif // QMAINPANEL_H
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment