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

preferencesAboutTextFull
Ivan Ilin 13 years ago
commit d79f36eb9b
  1. 19
      src/board/UBBoardController.cpp
  2. 229
      src/frameworks/UBPlatformUtils.h
  3. 9
      src/frameworks/UBPlatformUtils_linux.cpp
  4. 16
      src/frameworks/UBPlatformUtils_mac.mm
  5. 9
      src/frameworks/UBPlatformUtils_win.cpp
  6. 5
      src/gui/UBDownloadWidget.cpp
  7. 79
      src/gui/UBLibraryWidget.cpp
  8. 1
      src/gui/UBLibraryWidget.h

@ -1846,7 +1846,7 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
QString qsHtml = pMimeData->html(); QString qsHtml = pMimeData->html();
QString url = UBApplication::urlFromHtml(qsHtml); QString url = UBApplication::urlFromHtml(qsHtml);
if(!("" == url)) if("" != url)
{ {
downloadURL(url, pPos); downloadURL(url, pPos);
return; return;
@ -1883,7 +1883,22 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint
if (pMimeData->hasText()) if (pMimeData->hasText())
{ {
mActiveScene->addText(pMimeData->text(), pPos); if("" != pMimeData->text()){
mActiveScene->addText(pMimeData->text(), pPos);
}
else{
#ifdef Q_WS_MACX
// With Safari, in 95% of the drops, the mime datas are hidden in Apple Web Archive pasteboard type.
// This is due to the way Safari is working so we have to dig into the pasteboard in order to retrieve
// the data.
QString qsUrl = UBPlatformUtils::urlFromClipboard();
if("" != qsUrl){
// We finally got the url of the dropped ressource! Let's import it!
downloadURL(qsUrl, pPos);
return;
}
#endif
}
} }
} }

@ -12,124 +12,111 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef UBPLATFORMUTILS_H_ #ifndef UBPLATFORMUTILS_H_
#define UBPLATFORMUTILS_H_ #define UBPLATFORMUTILS_H_
#include <QtCore> #include <QtCore>
#include <QIcon> #include <QIcon>
class QMainWindow; class QMainWindow;
#define SYMBOL_KEYS_COUNT 47 #define SYMBOL_KEYS_COUNT 47
struct KEYBT struct KEYBT
{ {
const QChar symbol1; const QChar symbol1;
const int code1; const int code1;
const QChar symbol2; const QChar symbol2;
const int code2; const int code2;
KEYBT(unsigned int _symbol1, KEYBT(unsigned int _symbol1,
unsigned int _symbol2): unsigned int _symbol2):
symbol1(_symbol1), symbol1(_symbol1),
code1(_symbol1), code1(_symbol1),
symbol2(_symbol2), symbol2(_symbol2),
code2(_symbol2){} code2(_symbol2){}
KEYBT(QChar _symbol1, KEYBT(QChar _symbol1,
int _code1, int _code1,
QChar _symbol2, QChar _symbol2,
int _code2): int _code2):
symbol1(_symbol1), symbol1(_symbol1),
code1(_code1), code1(_code1),
symbol2(_symbol2), symbol2(_symbol2),
code2(_code2){} code2(_code2){}
}; };
class UBKeyboardLocale class UBKeyboardLocale
{ {
public: public:
UBKeyboardLocale(const QString& _fullName, UBKeyboardLocale(const QString& _fullName,
const QString& _name, const QString& _name,
const QString& _id, const QString& _id,
QIcon* _icon, QIcon* _icon,
KEYBT** _symbols) KEYBT** _symbols)
:fullName(_fullName),name(_name), id(_id), icon(_icon), :fullName(_fullName),name(_name), id(_id), icon(_icon),
constSymbols(NULL), varSymbols(_symbols) constSymbols(NULL), varSymbols(_symbols)
{} {}
UBKeyboardLocale(const QString& _fullName, UBKeyboardLocale(const QString& _fullName,
const QString& _name, const QString& _name,
const QString& _id, const QString& _id,
QIcon* _icon, QIcon* _icon,
const KEYBT _symbols[]) const KEYBT _symbols[])
:fullName(_fullName),name(_name), id(_id), icon(_icon), :fullName(_fullName),name(_name), id(_id), icon(_icon),
constSymbols(_symbols), varSymbols(NULL) constSymbols(_symbols), varSymbols(NULL)
{} {}
~UBKeyboardLocale(); ~UBKeyboardLocale();
const QString fullName; const QString fullName;
const QString name; const QString name;
const QString id; const QString id;
QIcon* icon; QIcon* icon;
const KEYBT* operator[] (int index) const const KEYBT* operator[] (int index) const
{ {
return (varSymbols==NULL)? constSymbols + index : varSymbols[index]; return (varSymbols==NULL)? constSymbols + index : varSymbols[index];
} }
private: private:
const KEYBT* constSymbols; const KEYBT* constSymbols;
KEYBT** varSymbols; KEYBT** varSymbols;
}; };
class UBPlatformUtils class UBPlatformUtils
{ {
private: private:
UBPlatformUtils(); UBPlatformUtils();
virtual ~UBPlatformUtils(); virtual ~UBPlatformUtils();
static void initializeKeyboardLayouts(); static void initializeKeyboardLayouts();
static void destroyKeyboardLayouts(); static void destroyKeyboardLayouts();
static int nKeyboardLayouts; static int nKeyboardLayouts;
static UBKeyboardLocale** keyboardLayouts; static UBKeyboardLocale** keyboardLayouts;
public: public:
static void init(); static void init();
static void destroy(); static void destroy();
static QString applicationResourcesDirectory();
static QString applicationResourcesDirectory(); static void hideFile(const QString &filePath);
static void setFileType(const QString &filePath, unsigned long fileType);
static void hideFile(const QString &filePath); static void fadeDisplayOut();
static void setFileType(const QString &filePath, unsigned long fileType); static void fadeDisplayIn();
static QString preferredTranslation();
static void fadeDisplayOut(); static QString preferredLanguage();
static void fadeDisplayIn(); static bool hasVirtualKeyboard();
//static void showVirtualKeyboard();
static QString preferredTranslation(); static void runInstaller(const QString &installerFilePath);
static QString preferredLanguage(); static void bringPreviousProcessToFront();
static QString osUserLoginName();
static bool hasVirtualKeyboard(); static void setDesktopMode(bool desktop);
//static void showVirtualKeyboard(); static void setWindowNonActivableFlag(QWidget* widget, bool nonAcivable);
static QString computerName();
static void runInstaller(const QString &installerFilePath); static UBKeyboardLocale** getKeyboardLayouts(int& nCount);
static QString urlFromClipboard();
static void bringPreviousProcessToFront(); };
static QString osUserLoginName();
static void setDesktopMode(bool desktop); #endif /* UBPLATFORMUTILS_H_ */
static void setWindowNonActivableFlag(QWidget* widget, bool nonAcivable);
static QString computerName();
static UBKeyboardLocale** getKeyboardLayouts(int& nCount);
};
#endif /* UBPLATFORMUTILS_H_ */

@ -331,3 +331,12 @@ void UBPlatformUtils::destroyKeyboardLayouts()
delete [] keyboardLayouts; delete [] keyboardLayouts;
keyboardLayouts = NULL; keyboardLayouts = NULL;
} }
QString UBPlatformUtils::urlFromClipboard()
{
QString qsRet;
// Not used on Linux
return qsRet;
}

@ -12,6 +12,8 @@
#import <Foundation/NSAutoreleasePool.h> #import <Foundation/NSAutoreleasePool.h>
#import <Carbon/Carbon.h> #import <Carbon/Carbon.h>
#import <APELite.h> #import <APELite.h>
#import <WebKit/WebKit.h>
#import <AppKit/AppKit.h>
NSString* bundleShortVersion(NSBundle *bundle) NSString* bundleShortVersion(NSBundle *bundle)
@ -537,3 +539,17 @@ void UBPlatformUtils::initializeKeyboardLayouts()
void UBPlatformUtils::destroyKeyboardLayouts() void UBPlatformUtils::destroyKeyboardLayouts()
{} {}
QString UBPlatformUtils::urlFromClipboard()
{
QString qsRet;
NSPasteboard* pPasteboard = [NSPasteboard pasteboardWithName:@"Apple CFPasteboard drag"];
WebArchive* pArchive = [[WebArchive alloc] initWithData:[pPasteboard dataForType:@"com.apple.webarchive"]];
qsRet = [[[[pArchive mainResource] URL] absoluteString] UTF8String];
[pArchive release];
return qsRet;
}

@ -367,4 +367,11 @@ void UBPlatformUtils::destroyKeyboardLayouts()
delete keyboardLayouts[i]; delete keyboardLayouts[i];
delete [] keyboardLayouts; delete [] keyboardLayouts;
keyboardLayouts = NULL; keyboardLayouts = NULL;
} }
QString UBPlatformUtils::urlFromClipboard()
{
QString qsRet;
// Not implemented yet
return qsRet;
}

@ -66,11 +66,6 @@ UBDownloadWidget::UBDownloadWidget(QWidget *parent, const char *name):QWidget(pa
*/ */
UBDownloadWidget::~UBDownloadWidget() UBDownloadWidget::~UBDownloadWidget()
{ {
if(NULL != mpItem)
{
delete mpItem;
mpItem = NULL;
}
if(NULL != mpCancelBttn) if(NULL != mpCancelBttn)
{ {
delete mpCancelBttn; delete mpCancelBttn;

@ -27,6 +27,7 @@
#include "core/UBDownloadManager.h" #include "core/UBDownloadManager.h"
#include "frameworks/UBFileSystemUtils.h" #include "frameworks/UBFileSystemUtils.h"
#include "frameworks/UBPlatformUtils.h"
#include "core/memcheck.h" #include "core/memcheck.h"
@ -348,18 +349,30 @@ void UBLibraryWidget::dropEvent(QDropEvent *event)
} }
} }
} }
else else{
{
bool bDropAccepted = false; bool bDropAccepted = false;
if (pMimeData->hasImage())
{ // We must check the URLs first because an image dropped from the web can contains the image datas, as well as the URLs
qDebug() << "hasImage"; // and if we want to display the download widget in order to make the user wait for the end of the download, we need
QImage image = qvariant_cast<QImage>(pMimeData->imageData()); // to check the URLs first!
mLibraryController->importImageOnLibrary(image); if (pMimeData->hasUrls()){
bDropAccepted = true; qDebug() << "hasUrls";
QList<QUrl> urlList = pMimeData->urls();
for (int i = 0; i < urlList.size() && i < 32; ++i){
QString filePath;
#ifdef Q_WS_MACX
filePath = QUrl(urlList.at(i)).toString();
#else
filePath = QUrl(urlList.at(i).path()).toLocalFile();
#endif
mLibraryController->importItemOnLibrary(filePath);
bDropAccepted = true;
}
} }
else if (pMimeData->hasHtml()) // When an HTML is present, it means that we dropped something from the web. Normally, the HTML contains the element
{ // of the webpage and has a 'src' attribute containing the URL of the web ressource. Here we are looking for this
// 'src' attribute, get its value and download the ressource from this URL.
else if (pMimeData->hasHtml()){
qDebug() << "hasHtml"; qDebug() << "hasHtml";
QString html = pMimeData->html(); QString html = pMimeData->html();
QString url = UBApplication::urlFromHtml(html); QString url = UBApplication::urlFromHtml(html);
@ -369,37 +382,47 @@ void UBLibraryWidget::dropEvent(QDropEvent *event)
bDropAccepted = true; bDropAccepted = true;
} }
} }
else if (pMimeData->hasText()) else if (pMimeData->hasText()){
{
// On linux external dragged element are considered as text; // On linux external dragged element are considered as text;
qDebug() << "hasText: " << pMimeData->text(); qDebug() << "hasText: " << pMimeData->text();
QString filePath = QUrl(pMimeData->text()).toLocalFile(); QString filePath = QUrl(pMimeData->text()).toLocalFile();
mLibraryController->importItemOnLibrary(filePath); if("" != filePath){
bDropAccepted = true;
}
else if (pMimeData->hasUrls())
{
qDebug() << "hasUrls";
QList<QUrl> urlList = pMimeData->urls();
for (int i = 0; i < urlList.size() && i < 32; ++i)
{
QString filePath = QUrl(urlList.at(i).path()).toLocalFile();
mLibraryController->importItemOnLibrary(filePath); mLibraryController->importItemOnLibrary(filePath);
bDropAccepted = true; bDropAccepted = true;
} }
else{
#ifdef Q_WS_MACX
// With Safari, in 95% of the drops, the mime datas are hidden in Apple Web Archive pasteboard type.
// This is due to the way Safari is working so we have to dig into the pasteboard in order to retrieve
// the data.
QString qsUrl = UBPlatformUtils::urlFromClipboard();
if("" != qsUrl){
// We finally got the url of the dropped ressource! Let's import it!
mLibraryController->importItemOnLibrary(qsUrl);
bDropAccepted = true;
}
#endif
}
} }
else else if (pMimeData->hasImage()){
{ qDebug() << "hasImage";
QImage image = qvariant_cast<QImage>(pMimeData->imageData());
mLibraryController->importImageOnLibrary(image);
bDropAccepted = true;
}
else{
qWarning() << "Cannot import data"; qWarning() << "Cannot import data";
} }
if(bDropAccepted) if(bDropAccepted){
{
onRefreshCurrentFolder(); onRefreshCurrentFolder();
#ifdef Q_WS_MACX
event->acceptProposedAction();
#else
event->accept(); event->accept();
#endif
} }
else else{
{
event->ignore(); event->ignore();
} }
} }

@ -79,6 +79,7 @@ private:
void refreshView(); void refreshView();
void generateItems(); void generateItems();
void appendChainedElement(UBChainedLibElement* element, UBChainedLibElement* toElem); void appendChainedElement(UBChainedLibElement* element, UBChainedLibElement* toElem);
UBLibElement* elementAt(QPoint p); UBLibElement* elementAt(QPoint p);
UBLibElement* elementFromFilePath(const QString& filePath); UBLibElement* elementFromFilePath(const QString& filePath);
UBLibraryController* mLibraryController; UBLibraryController* mLibraryController;

Loading…
Cancel
Save