Commit 63a71fad authored by ivan.ilyin's avatar ivan.ilyin

Merge branch 'master' of github.com:Sankore/Sankore-3.1

parents 2a693c50 32f979fe
......@@ -57,8 +57,8 @@
},
setNewColor = function (hsb, cal) {
$(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
window.uniboard.setTool('pen');
window.uniboard.setPenColor('#' + HSBToHex(hsb));
window.sankore.setTool('pen');
window.sankore.setPenColor('#' + HSBToHex(hsb));
},
keyDown = function (ev) {
var pressedKey = ev.charCode || ev.keyCode || -1;
......
// uniboard = {
// sankore = {
// preference : function(){},
// setPreference : function(){}
// }
......@@ -14,7 +14,7 @@ $(document).ready(function()
function _init()
{
w.setSplashContent( '<img src="custom_icon.png" alt="Click">' );
w.setEditContent('<textarea style="width: 100%; height: 100%;">'+(window.uniboard.preference("text") || 'Type a note here')+'</textarea>');
w.setEditContent('<textarea style="width: 100%; height: 100%;">'+(window.sankore.preference("text") || 'Type a note here')+'</textarea>');
w.elements.containerEdit.find( "textarea" ).tinymce(
{
script_url : 'tinymcejq/tiny_mce.js',
......@@ -41,16 +41,16 @@ $(document).ready(function()
{
ed.onKeyUp.add(function(ed, e)
{
if (window.uniboard)
if (window.sankore)
{
window.uniboard.setPreference("text", ed.getContent());
window.sankore.setPreference("text", ed.getContent());
}
});
ed.onExecCommand.add(function(ed, e)
{
if (window.uniboard)
if (window.sankore)
{
window.uniboard.setPreference("text", ed.getContent());
window.sankore.setPreference("text", ed.getContent());
}
});
},
......@@ -63,9 +63,9 @@ $(document).ready(function()
});
w.modeView(); // init view mode
w.modeEdit(); // init edit mode
if (window.uniboard.preference("state") == 'view') // back to view mode if last state was it
if (window.sankore.preference("state") == 'view') // back to view mode if last state was it
w.modeView();
if (window.uniboard.preference("is_splash") == '1')
if (window.sankore.preference("is_splash") == '1')
w.modeSplash(true);
w.allowResize = true;
};
......@@ -84,15 +84,15 @@ $(document).ready(function()
w.getWidth = function()
{
var res = 360;
if (window.uniboard && window.uniboard.preference("width"))
res = parseInt(window.uniboard.preference("width"));
if (window.sankore && window.sankore.preference("width"))
res = parseInt(window.sankore.preference("width"));
return res;
};
w.getHeight = function()
{
var res = 230;
if (window.uniboard && window.uniboard.preference("height"))
res = parseInt(window.uniboard.preference("height"));
if (window.sankore && window.sankore.preference("height"))
res = parseInt(window.sankore.preference("height"));
return res;
};
......@@ -121,24 +121,24 @@ $(document).ready(function()
w.elements.container.width(winwidth);
w.elements.container.height(winheight);
tinyMCE.activeEditor.theme.resizeTo(winwidth, winheight-98);
if(window.uniboard)
if(window.sankore)
{
window.uniboard.setPreference("width", winwidth);
window.uniboard.setPreference("height", winheight-33);
window.sankore.setPreference("width", winwidth);
window.sankore.setPreference("height", winheight-33);
}
};
w.modeView = function()
{
if (w.allowResize)
window.uniboard.setPreference("state", "view");
window.sankore.setPreference("state", "view");
return _super_modeView.call(this);
}
w.modeEdit = function()
{
if (w.allowResize)
window.uniboard.setPreference("state", "edit");
window.sankore.setPreference("state", "edit");
return _super_modeEdit.call(this);
}
......@@ -146,7 +146,7 @@ $(document).ready(function()
{
if (enable == undefined)
enable = true;
window.uniboard.setPreference("is_splash", (w.allowResize && enable)?1:0);
window.sankore.setPreference("is_splash", (w.allowResize && enable)?1:0);
return _super_modeSplash.call(this, enable);
}
......
......@@ -175,11 +175,15 @@ UBDocumentProxy* UBImportDocument::importFile(const QFile& pFile, const QString&
QString documentRootFolder = expandFileToDir(pFile, path);
if(!documentRootFolder.length()){
UBApplication::showMessage(tr("Import of file %1 failed.").arg(fi.baseName()));
return 0;
}
else{
UBDocumentProxy* newDocument = UBPersistenceManager::persistenceManager()->createDocumentFromDir(documentRootFolder);
UBApplication::showMessage(tr("Import successful."));
return newDocument;
}
}
......
......@@ -10,11 +10,62 @@
#define DOCPUBLICATION_URL "http://sankore.devxwiki.com/xwiki/bin/view/CreateResources/UniboardUpload"
#define XWIKI_ORIGIN_HEADER "http://sankore.devxwiki.com"
typedef struct
{
QString title;
QString description;
} sDocumentInfos;
class UBDocumentProxy;
class UBServerXMLHttpRequest;
class UBGraphicsW3CWidgetItem;
class QWebView;
class UBProxyLoginDlg : public QDialog
{
Q_OBJECT
public:
UBProxyLoginDlg(QWidget* parent=0, const char* name="ProxyLoginDlg");
~UBProxyLoginDlg();
QString username(){return mpUsername->text();}
QString password(){return mpPassword->text();}
private:
QVBoxLayout* mpLayout;
QHBoxLayout* mpUserLayout;
QHBoxLayout* mpPasswordLayout;
QDialogButtonBox* mpButtons;
QLabel* mpUserLabel;
QLabel* mpPasswordLabel;
QLineEdit* mpUsername;
QLineEdit* mpPassword;
};
class UBPublicationDlg : public QDialog
{
Q_OBJECT
public:
UBPublicationDlg(QWidget* parent=0, const char* name="UBPublicationDlg");
~UBPublicationDlg();
QString title(){return mpTitle->text();}
QString description(){return mpDescription->document()->toPlainText();}
private slots:
void onTextChanged();
private:
QVBoxLayout* mpLayout;
QHBoxLayout* mpTitleLayout;
QLabel* mpTitleLabel;
QLineEdit* mpTitle;
QLabel* mpDescLabel;
QTextEdit* mpDescription;
QDialogButtonBox* mpButtons;
};
class UBDocumentPublisher : public UBAbstractPublisher
{
Q_OBJECT;
......@@ -42,6 +93,7 @@ private slots:
void onLinkClicked(const QUrl& url);
void onLoadFinished(bool result);
void onLoginDone();
void onProxyAuthenticationRequired(const QNetworkProxy & proxy, QAuthenticator * authenticator);
private:
......@@ -65,6 +117,7 @@ private:
void login(QString username, QString password);
QString mTmpZipFile;
QList<QNetworkCookie> mCookies;
sDocumentInfos mDocInfos;
};
#endif // UBDOCUMENTPUBLISHER_H
......@@ -74,8 +74,14 @@ int main(int argc, char *argv[])
UBApplication app("Sankore 3.1", argc, argv);
//BUGFIX:
//when importing a sankore file that contains a non standard character
//the codecForLocale or the codecForCString is used to convert the file path
//into a const char*. This is why in french windows setup the codec name shouldn't be
//set to UTF-8. For example, setting UTF-8, will convert "Hati" into "Ha-ti.
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
//QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QStringList args = app.arguments();
......
......@@ -7,61 +7,166 @@
UBUpdateDlg::UBUpdateDlg(QWidget *parent, int nbFiles, const QString& bkpPath)
: QDialog(parent)
, mMainLayout(NULL)
, mNbFilesLabel(NULL)
, mBkpLabel(NULL)
, mBkpPath(NULL)
, mBrowseBttn(NULL)
, mpDlgBttn(NULL)
, mLayout(NULL)
, mHLayout(NULL)
, mStackedWidget(NULL)
, mDialogWidget(NULL)
, mProgressWidget(NULL)
, mProgressLayout(NULL)
, mProgressLabel(NULL)
{
setFixedSize(400, 110);
mDialogWidget = new QWidget(this);
mProgressWidget = new QWidget(this);
mStackedWidget = new QStackedWidget(this);
mStackedWidget->addWidget(mDialogWidget);
mStackedWidget->addWidget(mProgressWidget);
setFixedSize(450, 110);
setModal(true);
setWindowTitle(tr("Document updater"));
setLayout(&mLayout);
mLayout = new QVBoxLayout();
setLayout(mLayout);
QString str = QString::number(nbFiles);
str.append(tr(" files require an update."));
mNbFilesLabel.setText(str);
mLayout.addWidget(&mNbFilesLabel);
mBkpLabel.setText(tr("Backup path: "));
mBkpPath.setText(bkpPath);
mBrowseBttn.setText(tr("Browse"));
mHLayout.addWidget(&mBkpLabel);
mHLayout.addWidget(&mBkpPath, 1);
mHLayout.addWidget(&mBrowseBttn);
mLayout.addLayout(&mHLayout);
mpDlgBttn = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this);
mLayout.addWidget(mpDlgBttn);
mNbFilesLabel = new QLabel(mDialogWidget);
mNbFilesLabel->setText(str);
mLayout->addWidget(mNbFilesLabel);
mBkpLabel = new QLabel(mDialogWidget);
mBkpLabel->setText(tr("Backup path: "));
mBkpPath = new QLineEdit(mDialogWidget);
mBkpPath->setText(bkpPath);
mBrowseBttn = new QPushButton(mDialogWidget);
mBrowseBttn->setText(tr("Browse"));
mHLayout = new QHBoxLayout();
mHLayout->addWidget(mBkpLabel);
mHLayout->addWidget(mBkpPath, 1);
mHLayout->addWidget(mBrowseBttn);
mLayout->addLayout(mHLayout);
mpDlgBttn = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, mDialogWidget);
mLayout->addWidget(mpDlgBttn);
mpDlgBttn->button(QDialogButtonBox::Ok)->setText(tr("Update"));
mpDlgBttn->button(QDialogButtonBox::Cancel)->setText("Remind me later");
QObject::connect(&mBrowseBttn, SIGNAL(clicked()), this, SLOT(onBrowse()));
QObject::connect(mBrowseBttn, SIGNAL(clicked()), this, SLOT(onBrowse()));
QObject::connect(mpDlgBttn, SIGNAL(accepted()), this, SLOT(onUpdate()));
QObject::connect(mpDlgBttn, SIGNAL(rejected()), this, SLOT(reject()));
mDialogWidget->setLayout(mLayout);
mStackedWidget->setCurrentWidget(mDialogWidget);
mMainLayout = new QVBoxLayout();
this->setLayout(mMainLayout);
mMainLayout->addWidget(mStackedWidget);
}
UBUpdateDlg::~UBUpdateDlg()
{
if(NULL != mpDlgBttn)
if (NULL != mpDlgBttn)
{
delete mpDlgBttn;
mpDlgBttn = NULL;
}
if (mNbFilesLabel) {
delete mNbFilesLabel;
mNbFilesLabel = NULL;
}
if (mBkpLabel) {
delete mBkpLabel;
mBkpLabel = NULL;
}
if (mBkpPath) {
delete mBkpPath;
mBkpPath = NULL;
}
if (mBrowseBttn) {
delete mBrowseBttn;
mBrowseBttn = NULL;
}
if (mProgressLabel) {
delete mProgressLabel;
mProgressLabel = NULL;
}
if (mHLayout) {
delete mHLayout;
mHLayout = NULL;
}
if (mLayout) {
delete mLayout;
mLayout = NULL;
}
if (mProgressLayout) {
delete mProgressLayout;
mProgressLayout = NULL;
}
if (mDialogWidget) {
delete mDialogWidget;
mDialogWidget = NULL;
}
if (mProgressWidget) {
delete mProgressWidget;
mProgressWidget = NULL;
}
if (mStackedWidget) {
delete mStackedWidget;
mStackedWidget = NULL;
}
if (mMainLayout) {
delete mMainLayout;
mMainLayout = NULL;
}
}
void UBUpdateDlg::onBrowse()
{
QString qsSelectedDir;
qsSelectedDir = QFileDialog::getExistingDirectory(this, tr("Select a backup folder"), mBkpPath.text());
mBkpPath.setText(qsSelectedDir);
qsSelectedDir = QFileDialog::getExistingDirectory(this, tr("Select a backup folder"), mBkpPath->text());
mBkpPath->setText(qsSelectedDir);
}
void UBUpdateDlg::onUpdate()
{
mProgressLabel = new QLabel(mProgressWidget);
mProgressLayout = new QHBoxLayout();
mProgressLayout->addWidget(mProgressLabel);
mProgressWidget->setLayout(mProgressLayout);
mStackedWidget->setCurrentWidget(mProgressWidget);
emit updateFiles();
}
void UBUpdateDlg::onFilesUpdated(bool bResult)
{
this->hide();
QString qsMsg;
if(bResult)
if (bResult)
{
qsMsg = tr("Files update successful!\nPlease reboot the application to access the updated documents.");
}
......@@ -74,5 +179,11 @@ void UBUpdateDlg::onFilesUpdated(bool bResult)
QString UBUpdateDlg::backupPath()
{
return mBkpPath.text();
return mBkpPath->text();
}
void UBUpdateDlg::transitioningFile(QString fileName)
{
mProgressLabel->setText(tr("Updating file ") + fileName);
}
......@@ -8,6 +8,7 @@
#include <QDialogButtonBox>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QStackedWidget>
class UBUpdateDlg : public QDialog
{
......@@ -27,15 +28,25 @@ signals:
private slots:
void onBrowse();
void onUpdate();
void transitioningFile(QString fileName);
private:
QLabel mNbFilesLabel;
QLabel mBkpLabel;
QLineEdit mBkpPath;
QPushButton mBrowseBttn;
QVBoxLayout* mMainLayout;
QLabel* mNbFilesLabel;
QLabel* mBkpLabel;
QLineEdit* mBkpPath;
QPushButton* mBrowseBttn;
QDialogButtonBox* mpDlgBttn;
QVBoxLayout mLayout;
QHBoxLayout mHLayout;
QVBoxLayout* mLayout;
QHBoxLayout* mHLayout;
QStackedWidget* mStackedWidget;
QWidget* mDialogWidget;
QWidget* mProgressWidget;
QHBoxLayout* mProgressLayout;
QLabel* mProgressLabel;
};
#endif // UBUPDATEDLG_H
......@@ -8,9 +8,9 @@
UniboardSankoreTransition::UniboardSankoreTransition(QObject *parent) :
QObject(parent)
, mTransitionDlg(NULL)
, mThread(NULL)
{
mOldSankoreDirectory = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation));
qDebug() << mOldSankoreDirectory;
mUniboardSourceDirectory = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation));
#if defined(Q_WS_MACX)
......@@ -28,6 +28,11 @@ UniboardSankoreTransition::~UniboardSankoreTransition()
delete mTransitionDlg;
mTransitionDlg = NULL;
}
if(mThread){
delete mThread;
mThread = NULL;
}
}
void UniboardSankoreTransition::rollbackDocumentsTransition(QFileInfoList& fileInfoList)
......@@ -56,7 +61,7 @@ void UniboardSankoreTransition::documentTransition()
QString backupDirectoryPath = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DesktopLocation));
if (fileInfoList.count() != 0){
mTransitionDlg = new UBUpdateDlg(0, fileInfoList.count(), backupDirectoryPath);
mTransitionDlg = new UBUpdateDlg(NULL, fileInfoList.count(), backupDirectoryPath);
connect(mTransitionDlg, SIGNAL(updateFiles()), this, SLOT(startDocumentTransition()));
connect(this, SIGNAL(transitionFinished(bool)), mTransitionDlg, SLOT(onFilesUpdated(bool)));
mTransitionDlg->show();
......@@ -65,6 +70,13 @@ void UniboardSankoreTransition::documentTransition()
}
void UniboardSankoreTransition::startDocumentTransition()
{
mThread = new UniboardSankoreThread(this);
mThread->start();
connect(this,SIGNAL(transitioningFile(QString)),mTransitionDlg,SLOT(transitioningFile(QString)));
}
void UniboardSankoreTransition::executeTransition()
{
bool result = false;
QString backupDestinationPath = mTransitionDlg->backupPath() + "/OldSankoreAndUniboardVersionsBackup";
......@@ -78,14 +90,12 @@ void UniboardSankoreTransition::startDocumentTransition()
QFileInfoList::iterator fileInfo;
QString sankoreDocumentDirectory = UBSettings::uniboardDocumentDirectory();
QStringList qslNewDocs;
for (fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end() && result; fileInfo += 1) {
if (fileInfo->isDir() && (fileInfo->fileName().startsWith("Uniboard Document ") || fileInfo->fileName().startsWith("Sankore Document "))){
QString sankoreDocumentName = fileInfo->fileName();
emit transitioningFile(sankoreDocumentName);
sankoreDocumentName.replace("Uniboard","Sankore");
result = UBFileSystemUtils::copyDir(fileInfo->filePath(),sankoreDocumentDirectory + "/" + sankoreDocumentName);
qslNewDocs << sankoreDocumentName;
}
}
......@@ -100,6 +110,23 @@ void UniboardSankoreTransition::startDocumentTransition()
}
emit transitionFinished(result);
}
UniboardSankoreThread::UniboardSankoreThread(QObject* parent):QThread(parent)
{
mTransitionDlg->hide();
}
UniboardSankoreThread::~UniboardSankoreThread()
{
}
void UniboardSankoreThread::run()
{
UniboardSankoreTransition* pTransition = dynamic_cast<UniboardSankoreTransition*>(parent());
pTransition->executeTransition();
}
......@@ -3,9 +3,21 @@
#include <QObject>
#include <QFileInfo>
#include <QThread>
#include "gui/UBUpdateDlg.h"
#include "document/UBDocumentProxy.h"
class UniboardSankoreThread : public QThread
{
Q_OBJECT
public:
UniboardSankoreThread(QObject* parent = 0);
~UniboardSankoreThread();
void run();
};
class UniboardSankoreTransition : public QObject
{
Q_OBJECT
......@@ -13,6 +25,7 @@ public:
explicit UniboardSankoreTransition(QObject *parent = 0);
~UniboardSankoreTransition();
void documentTransition();
void executeTransition();
private:
......@@ -22,10 +35,12 @@ private:
protected:
QString mUniboardSourceDirectory;
QString mOldSankoreDirectory;
UniboardSankoreThread* mThread;
signals:
void transitionFinished(bool result);
void docAdded(UBDocumentProxy* doc);
void transitioningFile(QString documentName);
private slots:
void startDocumentTransition();
......
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