mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
added the basic methods to YACRreaderMacOSXToolbar, some of them have been implemented succesfully. Tested in YACReader
This commit is contained in:
parent
bd0dbd91f1
commit
039378457d
@ -49,7 +49,7 @@ CONFIG += objective_c
|
|||||||
QT += macextras
|
QT += macextras
|
||||||
|
|
||||||
|
|
||||||
LIBS += -framework Foundation -framework ApplicationServices
|
LIBS += -framework Foundation -framework ApplicationServices -framework AppKit
|
||||||
|
|
||||||
OBJECTIVE_SOURCES += $$PWD/../common/pdf_comic.mm
|
OBJECTIVE_SOURCES += $$PWD/../common/pdf_comic.mm
|
||||||
HEADERS += $$PWD/../common/pdf_comic.h
|
HEADERS += $$PWD/../common/pdf_comic.h
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
#include <QDate>
|
#include <QDate>
|
||||||
#include <QMenuBar>
|
#include <QMenuBar>
|
||||||
|
|
||||||
|
/* TODO remove, no longer used
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
class MacToolBarSeparator : public QWidget
|
class MacToolBarSeparator : public QWidget
|
||||||
{
|
{
|
||||||
@ -66,7 +66,7 @@ public:
|
|||||||
painter.fillRect(1,0,1,height(),lG2);
|
painter.fillRect(1,0,1,height(),lG2);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
#endif
|
#endif*/
|
||||||
|
|
||||||
MainWindowViewer::MainWindowViewer()
|
MainWindowViewer::MainWindowViewer()
|
||||||
:QMainWindow(),fullscreen(false),toolbars(true),alwaysOnTop(false),currentDirectory("."),currentDirectoryImgDest("."),isClient(false)
|
:QMainWindow(),fullscreen(false),toolbars(true),alwaysOnTop(false),currentDirectory("."),currentDirectoryImgDest("."),isClient(false)
|
||||||
@ -414,10 +414,14 @@ void MainWindowViewer::createActions()
|
|||||||
|
|
||||||
void MainWindowViewer::createToolBars()
|
void MainWindowViewer::createToolBars()
|
||||||
{
|
{
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
comicToolBar = new YACReaderMacOSXToolbar(this);
|
||||||
|
#else
|
||||||
comicToolBar = addToolBar(tr("&File"));
|
comicToolBar = addToolBar(tr("&File"));
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
comicToolBar->setIconSize(QSize(16,16));
|
//comicToolBar->setIconSize(QSize(16,16));
|
||||||
#else
|
#else
|
||||||
comicToolBar->setIconSize(QSize(18,18));
|
comicToolBar->setIconSize(QSize(18,18));
|
||||||
comicToolBar->setStyleSheet("QToolBar{border:none;}");
|
comicToolBar->setStyleSheet("QToolBar{border:none;}");
|
||||||
@ -433,11 +437,9 @@ void MainWindowViewer::createToolBars()
|
|||||||
comicToolBar->addAction(saveImageAction);
|
comicToolBar->addAction(saveImageAction);
|
||||||
comicToolBar->addAction(openPreviousComicAction);
|
comicToolBar->addAction(openPreviousComicAction);
|
||||||
comicToolBar->addAction(openNextComicAction);
|
comicToolBar->addAction(openNextComicAction);
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
comicToolBar->addWidget(new MacToolBarSeparator);
|
|
||||||
#else
|
|
||||||
comicToolBar->addSeparator();
|
comicToolBar->addSeparator();
|
||||||
#endif
|
|
||||||
comicToolBar->addAction(prevAction);
|
comicToolBar->addAction(prevAction);
|
||||||
comicToolBar->addAction(nextAction);
|
comicToolBar->addAction(nextAction);
|
||||||
comicToolBar->addAction(goToPageAction);
|
comicToolBar->addAction(goToPageAction);
|
||||||
@ -449,11 +451,8 @@ void MainWindowViewer::createToolBars()
|
|||||||
// alwaysOnTopAction->setEnabled(false);
|
// alwaysOnTopAction->setEnabled(false);
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
comicToolBar->addWidget(new MacToolBarSeparator);
|
|
||||||
#else
|
|
||||||
comicToolBar->addSeparator();
|
comicToolBar->addSeparator();
|
||||||
#endif
|
|
||||||
|
|
||||||
//QWidget * widget = new QWidget();
|
//QWidget * widget = new QWidget();
|
||||||
|
|
||||||
@ -491,39 +490,31 @@ void MainWindowViewer::createToolBars()
|
|||||||
//tb2->addAction();
|
//tb2->addAction();
|
||||||
tb2->setPopupMode(QToolButton::MenuButtonPopup);
|
tb2->setPopupMode(QToolButton::MenuButtonPopup);
|
||||||
tb2->setDefaultAction(adjustWidthAction);
|
tb2->setDefaultAction(adjustWidthAction);
|
||||||
comicToolBar->addWidget(tb2);
|
comicToolBar->addWidget(tb2);
|
||||||
comicToolBar->addAction(adjustHeightAction);
|
comicToolBar->addAction(adjustHeightAction);
|
||||||
comicToolBar->addAction(adjustToFullSizeAction);
|
comicToolBar->addAction(adjustToFullSizeAction);
|
||||||
comicToolBar->addAction(leftRotationAction);
|
comicToolBar->addAction(leftRotationAction);
|
||||||
comicToolBar->addAction(rightRotationAction);
|
comicToolBar->addAction(rightRotationAction);
|
||||||
comicToolBar->addAction(doublePageAction);
|
comicToolBar->addAction(doublePageAction);
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
comicToolBar->addSeparator();
|
||||||
comicToolBar->addWidget(new MacToolBarSeparator);
|
|
||||||
#else
|
|
||||||
comicToolBar->addSeparator();
|
|
||||||
#endif
|
|
||||||
comicToolBar->addAction(showMagnifyingGlassAction);
|
comicToolBar->addAction(showMagnifyingGlassAction);
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
comicToolBar->addWidget(new MacToolBarSeparator);
|
|
||||||
#else
|
|
||||||
comicToolBar->addSeparator();
|
comicToolBar->addSeparator();
|
||||||
#endif
|
|
||||||
comicToolBar->addAction(setBookmarkAction);
|
comicToolBar->addAction(setBookmarkAction);
|
||||||
comicToolBar->addAction(showBookmarksAction);
|
comicToolBar->addAction(showBookmarksAction);
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
|
||||||
comicToolBar->addWidget(new MacToolBarSeparator);
|
|
||||||
#else
|
|
||||||
comicToolBar->addSeparator();
|
comicToolBar->addSeparator();
|
||||||
#endif
|
|
||||||
comicToolBar->addAction(showDictionaryAction);
|
comicToolBar->addAction(showDictionaryAction);
|
||||||
comicToolBar->addAction(showFlowAction);
|
comicToolBar->addAction(showFlowAction);
|
||||||
comicToolBar->addAction(showInfoAction);
|
comicToolBar->addAction(showInfoAction);
|
||||||
|
|
||||||
#ifdef Q_OS_MAC
|
#ifdef Q_OS_MAC
|
||||||
comicToolBar->addWidget(new MacToolBarSeparator);
|
comicToolBar->addStretch();
|
||||||
#else
|
#else
|
||||||
comicToolBar->addWidget(new QToolBarStretch());
|
comicToolBar->addWidget(new QToolBarStretch());
|
||||||
#endif
|
#endif
|
||||||
@ -534,8 +525,9 @@ void MainWindowViewer::createToolBars()
|
|||||||
comicToolBar->addAction(helpAboutAction);
|
comicToolBar->addAction(helpAboutAction);
|
||||||
//comicToolBar->addAction(closeAction);
|
//comicToolBar->addAction(closeAction);
|
||||||
|
|
||||||
|
#ifndef Q_OS_MAC
|
||||||
comicToolBar->setMovable(false);
|
comicToolBar->setMovable(false);
|
||||||
|
#endif
|
||||||
|
|
||||||
viewer->addAction(openAction);
|
viewer->addAction(openAction);
|
||||||
viewer->addAction(openFolderAction);
|
viewer->addAction(openFolderAction);
|
||||||
@ -598,6 +590,11 @@ void MainWindowViewer::createToolBars()
|
|||||||
|
|
||||||
menuBar->addMenu(fileMenu);
|
menuBar->addMenu(fileMenu);
|
||||||
//menu->addMenu(toolbarMenu);
|
//menu->addMenu(toolbarMenu);
|
||||||
|
|
||||||
|
//attach toolbar
|
||||||
|
|
||||||
|
comicToolBar->attachToWindow(this->windowHandle());
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -891,8 +888,9 @@ void MainWindowViewer::toggleToolBars()
|
|||||||
toolbars?hideToolBars():showToolBars();
|
toolbars?hideToolBars():showToolBars();
|
||||||
|
|
||||||
Configuration::getConfiguration().setShowToolbars(toolbars);
|
Configuration::getConfiguration().setShowToolbars(toolbars);
|
||||||
|
#ifndef Q_OS_MAC
|
||||||
comicToolBar->setMovable(false);
|
comicToolBar->setMovable(false);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
void MainWindowViewer::hideToolBars()
|
void MainWindowViewer::hideToolBars()
|
||||||
{
|
{
|
||||||
|
@ -9,6 +9,10 @@
|
|||||||
#include <QCloseEvent>
|
#include <QCloseEvent>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
|
#include "yacreader_macosx_toolbar.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "comic_db.h"
|
#include "comic_db.h"
|
||||||
|
|
||||||
class Comic;
|
class Comic;
|
||||||
@ -77,7 +81,11 @@ class EditShortcutsDialog;
|
|||||||
EditShortcutsDialog * editShortcutsDialog;
|
EditShortcutsDialog * editShortcutsDialog;
|
||||||
|
|
||||||
//! ToolBars
|
//! ToolBars
|
||||||
QToolBar *comicToolBar;
|
#ifdef Q_OS_MAC
|
||||||
|
YACReaderMacOSXToolbar * comicToolBar;
|
||||||
|
#else
|
||||||
|
QToolBar * comicToolBar;
|
||||||
|
#endif
|
||||||
|
|
||||||
//! Actions
|
//! Actions
|
||||||
QAction *openAction;
|
QAction *openAction;
|
||||||
|
@ -58,7 +58,7 @@ macx{
|
|||||||
#}
|
#}
|
||||||
#QT += macextras
|
#QT += macextras
|
||||||
|
|
||||||
LIBS += -framework Foundation -framework ApplicationServices
|
LIBS += -framework Foundation -framework ApplicationServices -framework AppKit
|
||||||
|
|
||||||
OBJECTIVE_SOURCES += $$PWD/../common/pdf_comic.mm
|
OBJECTIVE_SOURCES += $$PWD/../common/pdf_comic.mm
|
||||||
HEADERS += $$PWD/../common/pdf_comic.h
|
HEADERS += $$PWD/../common/pdf_comic.h
|
||||||
|
@ -2,17 +2,29 @@
|
|||||||
#define YACREADER_MACOSX_TOOLBAR_H
|
#define YACREADER_MACOSX_TOOLBAR_H
|
||||||
|
|
||||||
#include <QMacToolBar>
|
#include <QMacToolBar>
|
||||||
|
#include <QtWidgets>
|
||||||
|
|
||||||
class YACReaderMacOSXToolbar : public QMacToolBar
|
class YACReaderMacOSXToolbar : public QMacToolBar
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit YACReaderMacOSXToolbar(QWidget *window, QObject *parent = 0);
|
explicit YACReaderMacOSXToolbar(QObject *parent = 0);
|
||||||
|
void addAction(QAction * action);
|
||||||
|
void addDropDownItem(const QList<QAction*> & actions, const QAction * defaultAction = 0);
|
||||||
|
void addSpace(int size); //size in points
|
||||||
|
void addSeparator();
|
||||||
|
void addStretch();
|
||||||
|
void addWidget(QWidget * widget);
|
||||||
|
void show();
|
||||||
|
void hide();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
|
protected:
|
||||||
|
NSToolbar * nativeToolBar;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // YACREADER_MACOSX_TOOLBAR_H
|
#endif // YACREADER_MACOSX_TOOLBAR_H
|
||||||
|
@ -1,20 +1,39 @@
|
|||||||
#include "yacreader_macosx_toolbar.h"
|
#include "yacreader_macosx_toolbar.h"
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <QMacNativeWidget>
|
||||||
|
|
||||||
#import <AppKit/AppKit.h>
|
#import <AppKit/AppKit.h>
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
YACReaderMacOSXToolbar::YACReaderMacOSXToolbar(QWidget * window, QObject *parent) :
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
@interface CustomSeparator : NSView
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
@implementation CustomSeparator
|
||||||
|
|
||||||
|
- (void) drawRect:(NSRect)rect {
|
||||||
|
[[NSColor colorWithDeviceRed:0.5 green:0.5 blue:0.5 alpha:1] setFill];
|
||||||
|
NSRectFill(rect);
|
||||||
|
[super drawRect:rect];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
YACReaderMacOSXToolbar::YACReaderMacOSXToolbar(QObject *parent) :
|
||||||
QMacToolBar(parent)
|
QMacToolBar(parent)
|
||||||
{
|
{
|
||||||
//setup native toolbar
|
//setup native toolbar
|
||||||
NSToolbar * nativeToolBar= nativeToolbar();
|
nativeToolBar= nativeToolbar();
|
||||||
[nativeToolBar setSizeMode:NSToolbarSizeModeSmall];
|
[nativeToolBar setSizeMode:NSToolbarSizeModeSmall];
|
||||||
[nativeToolBar setDisplayMode:NSToolbarDisplayModeIconOnly];
|
[nativeToolBar setDisplayMode:NSToolbarDisplayModeIconOnly];
|
||||||
|
|
||||||
//button testing
|
//button testing
|
||||||
QPixmap p(100,100);
|
/*QPixmap p(100,100);
|
||||||
|
|
||||||
QIcon icon(p);
|
QIcon icon(p);
|
||||||
QMacToolBarItem *toolBarItem = addItem(icon,"hola");
|
QMacToolBarItem *toolBarItem = addItem(icon,"hola");
|
||||||
@ -22,10 +41,83 @@ YACReaderMacOSXToolbar::YACReaderMacOSXToolbar(QWidget * window, QObject *parent
|
|||||||
|
|
||||||
|
|
||||||
[nativeItem setMaxSize:NSMakeSize(10,50)];
|
[nativeItem setMaxSize:NSMakeSize(10,50)];
|
||||||
[nativeItem setMinSize:NSMakeSize(10,50)];
|
[nativeItem setMinSize:NSMakeSize(10,50)];*/
|
||||||
//toolBarItem->setStandardItem(QMacToolBarItem::FlexibleSpace);
|
//toolBarItem->setStandardItem(QMacToolBarItem::FlexibleSpace);
|
||||||
//connect(toolButton, SIGNAL(activated()), this, SLOT(fooClicked()))
|
//connect(toolButton, SIGNAL(activated()), this, SLOT(fooClicked()))
|
||||||
|
|
||||||
window->window()->winId(); // create window->windowhandle()
|
//window->window()->winId(); // create window->windowhandle()
|
||||||
attachToWindow(window->window()->windowHandle());
|
//attachToWindow(window->window()->windowHandle());
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderMacOSXToolbar::addAction(QAction *action)
|
||||||
|
{
|
||||||
|
QMacToolBarItem *toolBarItem = addItem(action->icon(),action->text());
|
||||||
|
|
||||||
|
connect(toolBarItem,SIGNAL(activated()),action, SIGNAL(triggered()));
|
||||||
|
|
||||||
|
//TODO add support for enable/disable toolbaritems
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderMacOSXToolbar::addDropDownItem(const QList<QAction *> &actions, const QAction *defaultAction)
|
||||||
|
{
|
||||||
|
foreach(QAction * action, actions)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderMacOSXToolbar::addSpace(int size)
|
||||||
|
{
|
||||||
|
QMacToolBarItem *toolBarItem = addItem(QIcon(),"");
|
||||||
|
//NSToolbarItem * nativeItem = toolBarItem->nativeToolBarItem();
|
||||||
|
toolBarItem->setStandardItem(QMacToolBarItem::Space);
|
||||||
|
|
||||||
|
NSToolbarItem * nativeItem = toolBarItem->nativeToolBarItem();
|
||||||
|
|
||||||
|
//TODO this doesn't work
|
||||||
|
[nativeItem setMaxSize:NSMakeSize(size,24)];
|
||||||
|
[nativeItem setMinSize:NSMakeSize(size,24)];
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderMacOSXToolbar::addSeparator()
|
||||||
|
{
|
||||||
|
//QMacToolBar::addSeparator();
|
||||||
|
|
||||||
|
QMacToolBarItem *toolBarItem = addItem(QIcon(),"");
|
||||||
|
NSToolbarItem * nativeItem = toolBarItem->nativeToolBarItem();
|
||||||
|
|
||||||
|
static const NSRect buttonFrameRect = { { 0.0, 0.0 }, { 1, 16.0 } };
|
||||||
|
CustomSeparator *view = [[CustomSeparator alloc] initWithFrame:buttonFrameRect];
|
||||||
|
|
||||||
|
[nativeItem setView:view];
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderMacOSXToolbar::addStretch()
|
||||||
|
{
|
||||||
|
QMacToolBarItem *toolBarItem = addItem(QIcon(),"");
|
||||||
|
toolBarItem->setStandardItem(QMacToolBarItem::FlexibleSpace);
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderMacOSXToolbar::addWidget(QWidget *widget)
|
||||||
|
{
|
||||||
|
/* QMacNativeWidget *nativeWidget = new QMacNativeWidget();
|
||||||
|
QVBoxLayout *layout = new QVBoxLayout();
|
||||||
|
layout->addWidget(widget);
|
||||||
|
nativeWidget->setLayout(layout);
|
||||||
|
|
||||||
|
|
||||||
|
NSView *nativeWidgetView = reinterpret_cast<NSView *>(nativeWidget->winId());
|
||||||
|
QMacToolBarItem *toolBarItem = addItem(QIcon(),"");
|
||||||
|
NSToolbarItem * nativeItem = toolBarItem->nativeToolBarItem();
|
||||||
|
[nativeItem setView:nativeWidgetView];*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderMacOSXToolbar::show()
|
||||||
|
{
|
||||||
|
[nativeToolBar setVisible:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
void YACReaderMacOSXToolbar::hide()
|
||||||
|
{
|
||||||
|
[nativeToolBar setVisible:NO];
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user