mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-27 15:24:05 +00:00
added zoom buttons
This commit is contained in:
parent
e94ed0f25d
commit
3e2ae16e96
|
@ -59,12 +59,12 @@ public:
|
|||
/// Clears the view and sets the application-global waiting cursor,
|
||||
/// which will be restored when some article loads eventually.
|
||||
void showAnticipation();
|
||||
|
||||
|
||||
/// Opens the given link. Supposed to be used in response to
|
||||
/// openLinkInNewTab() signal. The link scheme is therefore supposed to be
|
||||
/// one of the internal ones.
|
||||
void openLink( QUrl const & url, QUrl const & referrer );
|
||||
|
||||
|
||||
/// Goes back in history
|
||||
void back()
|
||||
{ ui.definition->back(); }
|
||||
|
@ -83,6 +83,9 @@ public:
|
|||
/// Plays the first audio reference on the page, if any.
|
||||
void playSound();
|
||||
|
||||
void setZoomFactor( qreal factor )
|
||||
{ ui.definition->setZoomFactor( factor ); }
|
||||
|
||||
signals:
|
||||
|
||||
void iconChanged( ArticleView *, QIcon const & icon );
|
||||
|
@ -92,7 +95,7 @@ signals:
|
|||
void pageLoaded();
|
||||
|
||||
/// Singals that the following link was requested to be opened in new tab
|
||||
void openLinkInNewTab( QUrl const &, QUrl const & referrer );
|
||||
void openLinkInNewTab( QUrl const &, QUrl const & referrer );
|
||||
/// Singals that the following definition was requested to be showed in new tab
|
||||
void showDefinitionInNewTab( QString const & word, unsigned group );
|
||||
|
||||
|
@ -114,7 +117,7 @@ private:
|
|||
|
||||
/// Attempts removing last temporary file created.
|
||||
void cleanupTemp();
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// We need this to hide the search bar when we're showed
|
||||
|
|
|
@ -88,7 +88,9 @@ Preferences::Preferences():
|
|||
scanPopupAltModeSecs( 3 ),
|
||||
pronounceOnLoadMain( false ),
|
||||
pronounceOnLoadPopup( false ),
|
||||
checkForNewReleases( true )
|
||||
checkForNewReleases( true ),
|
||||
|
||||
zoomFactor( 1 )
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -333,6 +335,15 @@ Class load() throw( exError )
|
|||
c.preferences.closeToTray = ( preferences.namedItem( "closeToTray" ).toElement().text() == "1" );
|
||||
c.preferences.autoStart = ( preferences.namedItem( "autoStart" ).toElement().text() == "1" );
|
||||
|
||||
if ( !preferences.namedItem( "zoomFactor" ).isNull() )
|
||||
{
|
||||
c.preferences.zoomFactor = preferences.namedItem( "zoomFactor" ).toElement().text().toDouble();
|
||||
if ( c.preferences.zoomFactor < 0.5 )
|
||||
c.preferences.zoomFactor = 0.5;
|
||||
else if ( c.preferences.zoomFactor > 5 )
|
||||
c.preferences.zoomFactor = 5;
|
||||
}
|
||||
|
||||
applyBoolOption( c.preferences.enableMainWindowHotkey, preferences.namedItem( "enableMainWindowHotkey" ) );
|
||||
if ( !preferences.namedItem( "mainWindowHotkey" ).isNull() )
|
||||
c.preferences.mainWindowHotkey = QKeySequence::fromString( preferences.namedItem( "mainWindowHotkey" ).toElement().text() );
|
||||
|
@ -582,6 +593,10 @@ void save( Class const & c ) throw( exError )
|
|||
opt.appendChild( dd.createTextNode( c.preferences.autoStart ? "1":"0" ) );
|
||||
preferences.appendChild( opt );
|
||||
|
||||
opt = dd.createElement( "zoomFactor" );
|
||||
opt.appendChild( dd.createTextNode( QString::number( c.preferences.zoomFactor ) ) );
|
||||
preferences.appendChild( opt );
|
||||
|
||||
opt = dd.createElement( "enableMainWindowHotkey" );
|
||||
opt.appendChild( dd.createTextNode( c.preferences.enableMainWindowHotkey ? "1":"0" ) );
|
||||
preferences.appendChild( opt );
|
||||
|
|
|
@ -155,6 +155,8 @@ struct Preferences
|
|||
|
||||
bool checkForNewReleases;
|
||||
|
||||
qreal zoomFactor;
|
||||
|
||||
Preferences();
|
||||
};
|
||||
|
||||
|
|
BIN
src/icons/icon32_zoombase.png
Normal file
BIN
src/icons/icon32_zoombase.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
src/icons/icon32_zoomin.png
Normal file
BIN
src/icons/icon32_zoomin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
BIN
src/icons/icon32_zoomout.png
Normal file
BIN
src/icons/icon32_zoomout.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
|
@ -77,6 +77,20 @@ MainWindow::MainWindow( Config::Class & cfg_ ):
|
|||
connect( navPronounce, SIGNAL( triggered() ),
|
||||
this, SLOT( pronounce() ) );
|
||||
|
||||
// zooming
|
||||
navToolbar->addSeparator();
|
||||
zoomIn = navToolbar->addAction( QIcon( ":/icons/icon32_zoomin.png" ), tr( "Increase zoom factor" ) );
|
||||
zoomOut = navToolbar->addAction( QIcon( ":/icons/icon32_zoomout.png" ), tr( "Decrease zoom factor" ) );
|
||||
zoomBase = navToolbar->addAction( QIcon( ":/icons/icon32_zoombase.png" ), tr( "Reset zoom factor to default" ) );
|
||||
|
||||
connect( zoomIn, SIGNAL( triggered() ),
|
||||
this, SLOT( zoomin() ) );
|
||||
connect( zoomOut, SIGNAL( triggered() ),
|
||||
this, SLOT( zoomout() ) );
|
||||
connect( zoomBase, SIGNAL( triggered() ),
|
||||
this, SLOT( unzoom() ) );
|
||||
|
||||
// tray icon
|
||||
connect( trayIconMenu.addAction( tr( "Show &Main Window" ) ), SIGNAL( activated() ),
|
||||
this, SLOT( showMainWindow() ) );
|
||||
trayIconMenu.addAction( enableScanPopup );
|
||||
|
@ -466,6 +480,8 @@ ArticleView * MainWindow::createNewTab( bool switchToIt,
|
|||
if ( switchToIt )
|
||||
ui.tabWidget->setCurrentIndex( index );
|
||||
|
||||
view->setZoomFactor( cfg.preferences.zoomFactor );
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -569,18 +585,18 @@ void MainWindow::editDictionaries()
|
|||
{
|
||||
hotkeyWrapper.reset(); // No hotkeys while we're editing dictionaries
|
||||
scanPopup.reset(); // No scan popup either. No one should use dictionaries.
|
||||
|
||||
|
||||
EditDictionaries dicts( this, cfg, dictionaries, dictNetMgr );
|
||||
|
||||
dicts.exec();
|
||||
|
||||
|
||||
if ( dicts.areDictionariesChanged() || dicts.areGroupsChanged() )
|
||||
{
|
||||
updateGroupList();
|
||||
|
||||
|
||||
Config::save( cfg );
|
||||
}
|
||||
|
||||
|
||||
makeScanPopup();
|
||||
installHotKeys();
|
||||
}
|
||||
|
@ -1198,3 +1214,37 @@ void MainWindow::on_actionCloseToTray_activated()
|
|||
{
|
||||
toggleMainWindow( !cfg.preferences.enableTrayIcon );
|
||||
}
|
||||
|
||||
void MainWindow::zoomin()
|
||||
{
|
||||
if ( cfg.preferences.zoomFactor >= 5 )
|
||||
return; // 5x is maximum
|
||||
|
||||
cfg.preferences.zoomFactor += 0.1;
|
||||
applyZoomFactor();
|
||||
}
|
||||
|
||||
void MainWindow::zoomout()
|
||||
{
|
||||
if ( cfg.preferences.zoomFactor <= 0.5 )
|
||||
return; // 0.5x is minimum
|
||||
|
||||
cfg.preferences.zoomFactor -= 0.1;
|
||||
applyZoomFactor();
|
||||
}
|
||||
|
||||
void MainWindow::unzoom()
|
||||
{
|
||||
cfg.preferences.zoomFactor = 1;
|
||||
applyZoomFactor();
|
||||
}
|
||||
|
||||
void MainWindow::applyZoomFactor()
|
||||
{
|
||||
for ( int i = 0; i < ui.tabWidget->count(); i++ )
|
||||
{
|
||||
ArticleView & view =
|
||||
dynamic_cast< ArticleView & >( *( ui.tabWidget->widget(i) ) );
|
||||
view.setZoomFactor( cfg.preferences.zoomFactor );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ private:
|
|||
switchToNextTabAction, switchToPrevTabAction;
|
||||
QToolBar * navToolbar;
|
||||
QAction * navBack, * navForward, * navPronounce, * enableScanPopup;
|
||||
QAction * zoomIn, * zoomOut, * zoomBase;
|
||||
QMenu trayIconMenu;
|
||||
QToolButton addTab;
|
||||
Config::Class & cfg;
|
||||
|
@ -100,6 +101,8 @@ private:
|
|||
/// Creates hotkeyWrapper and hooks the currently set keys for it
|
||||
void installHotKeys();
|
||||
|
||||
void applyZoomFactor();
|
||||
|
||||
private slots:
|
||||
|
||||
void hotKeyActivated( int );
|
||||
|
@ -143,6 +146,10 @@ private slots:
|
|||
/// reference, if it has any.
|
||||
void pronounce();
|
||||
|
||||
void zoomin();
|
||||
void zoomout();
|
||||
void unzoom();
|
||||
|
||||
void editDictionaries();
|
||||
void editPreferences();
|
||||
|
||||
|
|
|
@ -21,5 +21,8 @@
|
|||
<file>icons/icon32_dictd.png</file>
|
||||
<file>icons/icon32_hunspell.png</file>
|
||||
<file>icons/icon32_wiki.png</file>
|
||||
<file>icons/icon32_zoombase.png</file>
|
||||
<file>icons/icon32_zoomin.png</file>
|
||||
<file>icons/icon32_zoomout.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
Loading…
Reference in a new issue