225 lines
6.3 KiB
C++
225 lines
6.3 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/qt/settings.cpp
|
|
// Author: Mariano Reingart, Peter Most
|
|
// Copyright: (c) 2010 wxWidgets dev team
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// For compilers that support precompilation, includes "wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#include "wx/settings.h"
|
|
#include "wx/qt/private/converter.h"
|
|
#include <QtGui/QPalette>
|
|
#include <QtWidgets/QApplication>
|
|
#include <QtWidgets/QDesktopWidget>
|
|
#include <QtWidgets/QStyle>
|
|
|
|
wxColour wxSystemSettingsNative::GetColour(wxSystemColour index)
|
|
{
|
|
QPalette pal = qApp->palette();
|
|
QColor color;
|
|
switch (index)
|
|
{
|
|
case wxSYS_COLOUR_SCROLLBAR:
|
|
case wxSYS_COLOUR_BACKGROUND:
|
|
//case wxSYS_COLOUR_DESKTOP:
|
|
case wxSYS_COLOUR_INACTIVECAPTION:
|
|
case wxSYS_COLOUR_MENU:
|
|
case wxSYS_COLOUR_WINDOWFRAME:
|
|
case wxSYS_COLOUR_ACTIVEBORDER:
|
|
case wxSYS_COLOUR_INACTIVEBORDER:
|
|
color = pal.color(QPalette::Window);
|
|
break;
|
|
|
|
//case wxSYS_COLOUR_3DFACE:
|
|
case wxSYS_COLOUR_3DLIGHT:
|
|
color = pal.color(QPalette::Light);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_BTNFACE:
|
|
color = pal.color(QPalette::Button);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_WINDOW:
|
|
color = pal.color(QPalette::Base);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_MENUBAR:
|
|
color = pal.window().color();
|
|
break;
|
|
|
|
case wxSYS_COLOUR_3DDKSHADOW:
|
|
color = pal.color(QPalette::Shadow);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_BTNSHADOW:
|
|
color = pal.color(QPalette::Dark);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_GRAYTEXT:
|
|
//case wxSYS_COLOUR_3DSHADOW:
|
|
color = pal.color(QPalette::Disabled, QPalette::Text);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_BTNHIGHLIGHT:
|
|
//case wxSYS_COLOUR_BTNHILIGHT:
|
|
//case wxSYS_COLOUR_3DHIGHLIGHT:
|
|
//case wxSYS_COLOUR_3DHILIGHT:
|
|
color = pal.color(QPalette::Light);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_HIGHLIGHT:
|
|
color = pal.highlight().color();
|
|
break;
|
|
|
|
case wxSYS_COLOUR_LISTBOX:
|
|
color = pal.base().color();
|
|
break;
|
|
|
|
case wxSYS_COLOUR_LISTBOXTEXT:
|
|
color = pal.color(QPalette::WindowText);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT:
|
|
// This is for the text in a list control (or tree) when the
|
|
// item is selected, but not focused
|
|
color = pal.color(QPalette::HighlightedText);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_WINDOWTEXT:
|
|
color = pal.color(QPalette::Text);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_MENUTEXT:
|
|
case wxSYS_COLOUR_CAPTIONTEXT:
|
|
case wxSYS_COLOUR_INACTIVECAPTIONTEXT:
|
|
case wxSYS_COLOUR_BTNTEXT:
|
|
color = pal.color(QPalette::ButtonText);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_INFOBK:
|
|
color = pal.color(QPalette::ToolTipBase);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_INFOTEXT:
|
|
color = pal.color(QPalette::ToolTipText);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_HIGHLIGHTTEXT:
|
|
color = pal.color(QPalette::BrightText);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_APPWORKSPACE:
|
|
color = QColor(Qt::white); // ?
|
|
break;
|
|
|
|
case wxSYS_COLOUR_ACTIVECAPTION:
|
|
case wxSYS_COLOUR_MENUHILIGHT:
|
|
color = pal.color(QPalette::Highlight);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_HOTLIGHT:
|
|
case wxSYS_COLOUR_GRADIENTACTIVECAPTION:
|
|
case wxSYS_COLOUR_GRADIENTINACTIVECAPTION:
|
|
// TODO
|
|
color = QColor(Qt::black);
|
|
break;
|
|
|
|
case wxSYS_COLOUR_MAX:
|
|
default:
|
|
wxFAIL_MSG( wxT("unknown system colour index") );
|
|
color = QColor(Qt::white);
|
|
break;
|
|
}
|
|
|
|
return wxColor( color.red(), color.green(), color.blue(), color.alpha() );
|
|
}
|
|
|
|
wxFont wxSystemSettingsNative::GetFont(wxSystemFont index)
|
|
{
|
|
wxFont font;
|
|
switch (index)
|
|
{
|
|
case wxSYS_OEM_FIXED_FONT:
|
|
case wxSYS_ANSI_FIXED_FONT:
|
|
case wxSYS_SYSTEM_FIXED_FONT:
|
|
font.SetFamily(wxFONTFAMILY_TELETYPE);
|
|
break;
|
|
|
|
case wxSYS_ANSI_VAR_FONT:
|
|
case wxSYS_SYSTEM_FONT:
|
|
case wxSYS_DEVICE_DEFAULT_FONT:
|
|
case wxSYS_DEFAULT_GUI_FONT:
|
|
default:
|
|
// Let Qt select any sans serif font.
|
|
font.SetFamily(wxFONTFAMILY_SWISS);
|
|
break;
|
|
}
|
|
|
|
wxASSERT( font.IsOk() );
|
|
|
|
return font;
|
|
|
|
}
|
|
|
|
int wxSystemSettingsNative::GetMetric(wxSystemMetric index, const wxWindow* WXUNUSED(win))
|
|
{
|
|
switch (index)
|
|
{
|
|
case wxSYS_BORDER_X:
|
|
case wxSYS_BORDER_Y:
|
|
case wxSYS_EDGE_X:
|
|
case wxSYS_EDGE_Y:
|
|
case wxSYS_FRAMESIZE_X:
|
|
case wxSYS_FRAMESIZE_Y:
|
|
return QApplication::style()->pixelMetric(QStyle::PM_FocusFrameVMargin);
|
|
|
|
|
|
case wxSYS_CURSOR_X:
|
|
case wxSYS_CURSOR_Y:
|
|
return 32; // default recomended in docs
|
|
|
|
case wxSYS_DCLICK_X:
|
|
case wxSYS_DCLICK_Y:
|
|
return QApplication::startDragDistance();
|
|
|
|
case wxSYS_DCLICK_MSEC:
|
|
return QApplication::doubleClickInterval();
|
|
|
|
case wxSYS_DRAG_X:
|
|
case wxSYS_DRAG_Y:
|
|
return QApplication::style()->pixelMetric(QStyle::PM_ScrollBarSliderMin);
|
|
|
|
case wxSYS_ICON_X:
|
|
case wxSYS_ICON_Y:
|
|
return QApplication::style()->pixelMetric(QStyle::PM_IconViewIconSize);
|
|
|
|
case wxSYS_SCREEN_X:
|
|
return QApplication::desktop()->screenGeometry().width();
|
|
|
|
case wxSYS_SCREEN_Y:
|
|
return QApplication::desktop()->screenGeometry().height();
|
|
|
|
case wxSYS_HSCROLL_Y:
|
|
case wxSYS_VSCROLL_X:
|
|
return QApplication::style()->pixelMetric(QStyle::PM_ScrollBarSliderMin);
|
|
|
|
case wxSYS_CAPTION_Y:
|
|
return QApplication::style()->pixelMetric(QStyle::PM_TitleBarHeight);
|
|
|
|
case wxSYS_PENWINDOWS_PRESENT:
|
|
// No MS Windows for Pen computing extension available in X11 based gtk+.
|
|
return 0;
|
|
|
|
default:
|
|
return -1; // metric is unknown
|
|
}
|
|
}
|
|
|
|
bool wxSystemSettingsNative::HasFeature(wxSystemFeature WXUNUSED(index))
|
|
{
|
|
return false;
|
|
}
|
|
|