mirror of
https://github.com/ONLYOFFICE/desktop-apps.git
synced 2026-04-07 14:09:22 +08:00
Merge pull request #933 from ONLYOFFICE/feature/add-mi-create-from-template
Feature/add mi create from template
This commit is contained in:
@ -1926,6 +1926,16 @@ QString CAscApplicationManagerWrapper::newFileName(int format)
|
||||
}
|
||||
}
|
||||
|
||||
QString CAscApplicationManagerWrapper::newFileName(const std::wstring& format)
|
||||
{
|
||||
int _f = format == L"word" ? AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX :
|
||||
format == L"cell" ? AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX :
|
||||
format == L"form" ? AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF :
|
||||
format == L"slide" ? AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX : AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
|
||||
return newFileName(_f);
|
||||
}
|
||||
|
||||
/*void CAscApplicationManagerWrapper::checkUpdates()
|
||||
{
|
||||
//APP_CAST(_app);
|
||||
|
||||
@ -189,6 +189,7 @@ public:
|
||||
static bool canAppClose();
|
||||
static QCefView * createViewer(QWidget * parent);
|
||||
static QString newFileName(int format);
|
||||
static QString newFileName(const std::wstring& format);
|
||||
static CThemes & themes();
|
||||
static CPrintData& printData();
|
||||
|
||||
|
||||
@ -239,16 +239,31 @@ public:
|
||||
} else
|
||||
if ( cmd.compare(L"create:new") == 0 ) {
|
||||
const std::wstring & format = data.get_Param();
|
||||
int _f = format == L"word" ? AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX :
|
||||
format == L"cell" ? AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX :
|
||||
format == L"form" ? AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF :
|
||||
format == L"slide" ? AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX : AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
|
||||
COpenOptions opts{m_appmanager.newFileName(_f), etNewFile};
|
||||
opts.format = _f;
|
||||
opts.parent_id = event.m_nSenderId;
|
||||
if ( format.rfind(L"template:", 0) == 0 ) {
|
||||
std::wstring type = format.substr(format.size() - 4);
|
||||
std::wstring file_path = CEditorTools::getlocaltemplate(type, event.m_nSenderId).toStdWString();
|
||||
|
||||
if ( !file_path.empty() ) {
|
||||
COpenOptions opts{file_path, etTemplateFile};
|
||||
opts.name = m_appmanager.newFileName(type);
|
||||
opts.parent_id = event.m_nSenderId;
|
||||
|
||||
openDocument(opts);
|
||||
}
|
||||
} else {
|
||||
int _f = format == L"word" ? AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX :
|
||||
format == L"cell" ? AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX :
|
||||
format == L"form" ? AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCXF :
|
||||
format == L"slide" ? AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX : AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
|
||||
COpenOptions opts{m_appmanager.newFileName(_f), etNewFile};
|
||||
opts.format = _f;
|
||||
opts.parent_id = event.m_nSenderId;
|
||||
|
||||
openDocument(opts);
|
||||
}
|
||||
|
||||
openDocument(opts);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -199,6 +199,33 @@ namespace CEditorTools
|
||||
return _path;
|
||||
}
|
||||
|
||||
QString getlocaltemplate(const std::wstring& editor, int parentid)
|
||||
{
|
||||
ParentHandle parent;
|
||||
if ( !(parentid < 0) )
|
||||
parent = AscAppManager::windowHandleFromId(parentid);
|
||||
else parent = qApp->activeWindow();
|
||||
|
||||
QString _filter;
|
||||
if ( editor.compare(L"cell") == 0 ) {
|
||||
_filter = CFileDialogWrapper::tr("Spreadsheet template") + " (*.xltx *.xltm *.ots)";
|
||||
} else
|
||||
if ( editor.compare(L"slide") == 0 ) {
|
||||
_filter = CFileDialogWrapper::tr("Presentation template") + " (*.potx *.otp)";
|
||||
} else {
|
||||
_filter = CFileDialogWrapper::tr("Document template") + " (*.dotx *.ott)";
|
||||
}
|
||||
|
||||
CFileDialogWrapper dlg(parent);
|
||||
|
||||
QString _path = Utils::lastPath(LOCAL_PATH_OPEN);
|
||||
if ( !(_path = dlg.modalOpenSingle(_path, _filter)).isEmpty() ) {
|
||||
Utils::keepLastPath(LOCAL_PATH_OPEN, QFileInfo(_path).absolutePath());
|
||||
}
|
||||
|
||||
return _path;
|
||||
}
|
||||
|
||||
std::wstring getFolder(const std::wstring& path, int parentid)
|
||||
{
|
||||
ParentHandle parent;
|
||||
@ -252,6 +279,9 @@ namespace CEditorTools
|
||||
} else
|
||||
if (opts.srctype == etNewFile) {
|
||||
panel->createLocalFile(editorTypeFromFormat(opts.format), opts.name.toStdWString());
|
||||
} else
|
||||
if (opts.srctype == etTemplateFile) {
|
||||
panel->createLocalFile(L"", opts.name.toStdWString());
|
||||
} else {
|
||||
panel->cef()->load(opts.wurl);
|
||||
}
|
||||
@ -259,7 +289,7 @@ namespace CEditorTools
|
||||
if ( result ) {
|
||||
CAscTabData * data = new CAscTabData(opts.name);
|
||||
data->setUrl(opts.wurl);
|
||||
data->setIsLocal( opts.srctype == etLocalFile || opts.srctype == etNewFile ||
|
||||
data->setIsLocal( opts.srctype == etLocalFile || opts.srctype == etNewFile || opts.srctype == etTemplateFile ||
|
||||
(opts.srctype == etRecentFile && !CExistanceController::isFileRemote(opts.url)) );
|
||||
|
||||
if ( opts.srctype == etNewFile )
|
||||
|
||||
@ -57,6 +57,7 @@ namespace CEditorTools
|
||||
void print(const sPrintConf&);
|
||||
void getlocalfile(void * data);
|
||||
QString getlocalfile(const std::wstring& path, int parentid = -1);
|
||||
QString getlocaltemplate(const std::wstring& editor, int parentid);
|
||||
std::wstring getFolder(const std::wstring&, int parentid = -1);
|
||||
|
||||
auto createEditorPanel(const COpenOptions& opts, const QRect& rect = QRect()) -> CTabPanel *;
|
||||
|
||||
@ -38,6 +38,7 @@
|
||||
#include "cscalingwrapper.h"
|
||||
#include "ctabpanel.h"
|
||||
|
||||
#define etTemplateFile AscEditorType(255)
|
||||
#define etLocalFile AscEditorType(254)
|
||||
#define etRecoveryFile AscEditorType(253)
|
||||
#define etRecentFile AscEditorType(252)
|
||||
|
||||
@ -63,11 +63,11 @@ CFileDialogWrapper::CFileDialogWrapper(QWidget * parent) : QObject(parent)
|
||||
{
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_UNKNOWN] = tr("All files (*.*)");
|
||||
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX] = tr("DOCX Document (*.docx)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX] = tr("Document template (*.dotx)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX] = tr("DOCX Document") + " (*.docx)";
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_DOTX] = tr("Document template") + " (*.dotx)";
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC] = tr("DOC Document (*.doc)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT] = tr("ODT Document (*.odt)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT] = tr("OpenDocument Document template (*.ott)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_OTT] = tr("OpenDocument Document template") + " (*.ott)";
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF] = tr("RTF File (*.rtf)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT] = tr("TXT File (*.txt)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML] = tr("HTML File (*.html)");
|
||||
@ -80,18 +80,18 @@ CFileDialogWrapper::CFileDialogWrapper(QWidget * parent) : QObject(parent)
|
||||
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX] = tr("PPTX File (*.pptx)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT] = tr("PPT File (*.ppt)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX] = tr("Presentation template (*.potx)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_PRESENTATION_POTX] = tr("Presentation template") + " (*.potx)";
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP] = tr("ODP File (*.odp)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP] = tr("OpenDocument Presentation Template (*.otp)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_PRESENTATION_OTP] = tr("OpenDocument Presentation Template") + " (*.otp)";
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_PRESENTATION_PPSX] = tr("PPSX File (*.ppsx)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTM] = tr("Macro-enabled Presentation File (*.pptm)");
|
||||
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX] = tr("XLSX File (*.xlsx)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX] = tr("Spreadsheet template (*.xltx)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM] = tr("Macro-enabled spreadsheet template (*.xltm)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTX] = tr("Spreadsheet template") + " (*.xltx)";
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLTM] = tr("Macro-enabled spreadsheet template") + " (*.xltm)";
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS] = tr("XLS File (*.xls)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS] = tr("ODS File (*.ods)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS] = tr("OpenDocument Spreadsheet Template (*.ots)");
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_SPREADSHEET_OTS] = tr("OpenDocument Spreadsheet Template") + " (*.ots)";
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV] = tr("CSV File (*.csv)");
|
||||
|
||||
m_mapFilters[AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF] = tr("PDF File (*.pdf)");
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
|
||||
#include "components/ctabpanel.h"
|
||||
#include "ctabpanel.h"
|
||||
#include "cascapplicationmanagerwrapper.h"
|
||||
#include "defines.h"
|
||||
#include "cefview.h"
|
||||
@ -124,6 +124,11 @@ void CTabPanel::createLocalFile(int format, const std::wstring& name)
|
||||
static_cast<CCefViewEditor *>(m_pViewer->GetCefView())->CreateLocalFile(format, name);
|
||||
}
|
||||
|
||||
void CTabPanel::createLocalFile(const std::wstring& templatepath, const std::wstring& name)
|
||||
{
|
||||
static_cast<CCefViewEditor *>(m_pViewer->GetCefView())->CreateLocalFile(0, name, templatepath);
|
||||
}
|
||||
|
||||
bool CTabPanel::openRecoverFile(int id)
|
||||
{
|
||||
return static_cast<CCefViewEditor *>(m_pViewer->GetCefView())->OpenRecoverFile(id);
|
||||
|
||||
@ -30,6 +30,7 @@ public:
|
||||
void openLocalFile(const std::wstring& sFilePath, int nFileFormat, const std::wstring& params);
|
||||
bool openLocalFile(const std::wstring& sFilePath, const std::wstring& params);
|
||||
void createLocalFile(int nFileFormat, const std::wstring& sName = L"");
|
||||
void createLocalFile(const std::wstring& templatepath, const std::wstring& name);
|
||||
bool openRecoverFile(int id);
|
||||
bool openRecentFile(int id);
|
||||
bool isReady();
|
||||
|
||||
Reference in New Issue
Block a user