diff --git a/icons/reticle.png b/icons/reticle.png new file mode 100644 index 00000000..c9ff5fb9 Binary files /dev/null and b/icons/reticle.png differ diff --git a/resources.qrc b/resources.qrc index 58ea0097..c4d384c5 100644 --- a/resources.qrc +++ b/resources.qrc @@ -13,5 +13,6 @@ icons/timer.png icons/movie.png icons/camera.png + icons/reticle.png diff --git a/src/drivers/Qt/ConsoleVideoConf.cpp b/src/drivers/Qt/ConsoleVideoConf.cpp index d984e793..37e8a119 100644 --- a/src/drivers/Qt/ConsoleVideoConf.cpp +++ b/src/drivers/Qt/ConsoleVideoConf.cpp @@ -367,9 +367,11 @@ ConsoleVideoConfDialog_t::ConsoleVideoConfDialog_t(QWidget *parent) grid = new QGridLayout(); cursorSelect = new QComboBox(); - cursorSelect->addItem( tr("Arrow"), 0 ); - cursorSelect->addItem( tr("Cross"), 1 ); - cursorSelect->addItem( tr("Blank"), 2 ); + cursorSelect->addItem( tr("Arrow") , 0 ); + cursorSelect->addItem( tr("Cross") , 1 ); + cursorSelect->addItem( tr("Blank") , 2 ); + cursorSelect->addItem( tr("Reticle 1x"), 3 ); + cursorSelect->addItem( tr("Reticle 2x"), 4 ); setComboBoxFromProperty( cursorSelect, "SDL.CursorType" ); @@ -751,30 +753,15 @@ void ConsoleVideoConfDialog_t::regionChanged(int index) void ConsoleVideoConfDialog_t::cursorShapeChanged(int index) { int cursorSel; - Qt::CursorShape s; //printf("Scaler: %i : %i \n", index, scalerSelect->itemData(index).toInt() ); cursorSel = cursorSelect->itemData(index).toInt(); - switch ( cursorSel ) - { - case 2: - s = Qt::BlankCursor; - break; - case 1: - s = Qt::CrossCursor; - break; - default: - case 0: - s = Qt::ArrowCursor; - cursorSel = 0; - break; - } - consoleWindow->setViewerCursor( s ); - g_config->setOption ("SDL.CursorType", cursorSel); g_config->save (); + + consoleWindow->loadCursor(); } //---------------------------------------------------- void ConsoleVideoConfDialog_t::cursorVisChanged( int value ) @@ -787,32 +774,7 @@ void ConsoleVideoConfDialog_t::cursorVisChanged( int value ) g_config->setOption("SDL.CursorVis", vis ); g_config->save (); - if ( vis ) - { - int opt; - Qt::CursorShape s; - - g_config->getOption("SDL.CursorType", &opt ); - - switch ( opt ) - { - case 2: - s = Qt::BlankCursor; - break; - case 1: - s = Qt::CrossCursor; - break; - default: - case 0: - s = Qt::ArrowCursor; - break; - } - consoleWindow->setViewerCursor( s ); - } - else - { - consoleWindow->setViewerCursor( Qt::BlankCursor ); - } + consoleWindow->loadCursor(); } //---------------------------------------------------- QSize ConsoleVideoConfDialog_t::calcNewScreenSize(void) diff --git a/src/drivers/Qt/ConsoleWindow.cpp b/src/drivers/Qt/ConsoleWindow.cpp index fe5b3e51..91a509b7 100644 --- a/src/drivers/Qt/ConsoleWindow.cpp +++ b/src/drivers/Qt/ConsoleWindow.cpp @@ -90,7 +90,6 @@ consoleWin_t::consoleWin_t(QWidget *parent) int opt, xWinSize = 256, yWinSize = 240; int use_SDL_video = false; int setFullScreen = false; - int cursorVis = true; //QString libpath = QLibraryInfo::location(QLibraryInfo::PluginsPath); //printf("LibPath: '%s'\n", libpath.toStdString().c_str() ); @@ -193,32 +192,7 @@ consoleWin_t::consoleWin_t(QWidget *parent) recentRomMenuReset = false; // Viewport Cursor Type and Visibility - g_config->getOption("SDL.CursorVis", &cursorVis ); - - if ( cursorVis ) - { - int cursorType; - - g_config->getOption("SDL.CursorType", &cursorType ); - - switch ( cursorType ) - { - case 2: - setViewerCursor( Qt::BlankCursor ); - break; - case 1: - setViewerCursor( Qt::CrossCursor ); - break; - default: - case 0: - setViewerCursor( Qt::ArrowCursor ); - break; - } - } - else - { - setViewerCursor( Qt::BlankCursor ); - } + loadCursor(); } consoleWin_t::~consoleWin_t(void) @@ -352,6 +326,65 @@ QSize consoleWin_t::calcRequiredSize(void) return out; } +void consoleWin_t::loadCursor(void) +{ + int cursorVis; + + // Viewport Cursor Type and Visibility + g_config->getOption("SDL.CursorVis", &cursorVis ); + + if ( cursorVis ) + { + int cursorType; + + g_config->getOption("SDL.CursorType", &cursorType ); + + switch ( cursorType ) + { + case 4: + { + QPixmap reticle(":/icons/reticle.png"); + + setViewerCursor( QCursor(reticle.scaled(64,64)) ); + } + break; + case 3: + { + QPixmap reticle(":/icons/reticle.png"); + + setViewerCursor( QCursor(reticle.scaled(32,32)) ); + } + break; + case 2: + setViewerCursor( Qt::BlankCursor ); + break; + case 1: + setViewerCursor( Qt::CrossCursor ); + break; + default: + case 0: + setViewerCursor( Qt::ArrowCursor ); + break; + } + } + else + { + setViewerCursor( Qt::BlankCursor ); + } +} + +void consoleWin_t::setViewerCursor( QCursor s ) +{ + if ( viewport_GL ) + { + viewport_GL->setCursor(s); + } + else if ( viewport_SDL ) + { + viewport_SDL->setCursor(s); + } +} + void consoleWin_t::setViewerCursor( Qt::CursorShape s ) { if ( viewport_GL ) diff --git a/src/drivers/Qt/ConsoleWindow.h b/src/drivers/Qt/ConsoleWindow.h index 26ef4ce7..d9601827 100644 --- a/src/drivers/Qt/ConsoleWindow.h +++ b/src/drivers/Qt/ConsoleWindow.h @@ -119,6 +119,8 @@ class consoleWin_t : public QMainWindow QSize calcRequiredSize(void); + void loadCursor(void); + void setViewerCursor( QCursor s ); void setViewerCursor( Qt::CursorShape s ); Qt::CursorShape getViewerCursor(void); protected: