diff --git a/Makefile.in b/Makefile.in index ececa01420..c26c547782 100644 --- a/Makefile.in +++ b/Makefile.in @@ -5398,7 +5398,8 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS = \ monodll_iphone_toolbar.o \ monodll_iphone_utils.o \ monodll_iphone_window.o \ - monodll_cocoa_stdpaths.o + monodll_cocoa_stdpaths.o \ + monodll_iphone_settings.o @COND_TOOLKIT_OSX_IPHONE@__GUI_SRC_OBJECTS = $(COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS) @COND_TOOLKIT_QT@__GUI_SRC_OBJECTS = COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_1 = \ @@ -7394,7 +7395,8 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_1 = \ monolib_iphone_toolbar.o \ monolib_iphone_utils.o \ monolib_iphone_window.o \ - monolib_cocoa_stdpaths.o + monolib_cocoa_stdpaths.o \ + monolib_iphone_settings.o @COND_TOOLKIT_OSX_IPHONE@__GUI_SRC_OBJECTS_1 = $(COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_1) @COND_TOOLKIT_QT@__GUI_SRC_OBJECTS_1 = COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_3 = \ @@ -9533,7 +9535,8 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_2 = \ coredll_iphone_toolbar.o \ coredll_iphone_utils.o \ coredll_iphone_window.o \ - coredll_stdpaths.o + coredll_stdpaths.o \ + coredll_iphone_settings.o @COND_TOOLKIT_OSX_IPHONE@__GUI_SRC_OBJECTS_2 = $(COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_2) @COND_TOOLKIT_QT@__GUI_SRC_OBJECTS_2 = COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_5 = \ @@ -10998,7 +11001,8 @@ COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_3 = \ corelib_iphone_toolbar.o \ corelib_iphone_utils.o \ corelib_iphone_window.o \ - corelib_stdpaths.o + corelib_stdpaths.o \ + corelib_iphone_settings.o @COND_TOOLKIT_OSX_IPHONE@__GUI_SRC_OBJECTS_3 = $(COND_TOOLKIT_OSX_IPHONE___GUI_SRC_OBJECTS_3) @COND_TOOLKIT_QT@__GUI_SRC_OBJECTS_3 = COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_7 = \ @@ -16463,6 +16467,9 @@ monodll_iphone_utils.o: $(srcdir)/src/osx/iphone/utils.mm $(MONODLL_ODEP) monodll_iphone_window.o: $(srcdir)/src/osx/iphone/window.mm $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/window.mm +monodll_iphone_settings.o: $(srcdir)/src/osx/iphone/settings.mm $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/settings.mm + monodll_univ_anybutton.o: $(srcdir)/src/univ/anybutton.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/univ/anybutton.cpp @@ -21266,6 +21273,9 @@ monolib_iphone_utils.o: $(srcdir)/src/osx/iphone/utils.mm $(MONOLIB_ODEP) monolib_iphone_window.o: $(srcdir)/src/osx/iphone/window.mm $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/window.mm +monolib_iphone_settings.o: $(srcdir)/src/osx/iphone/settings.mm $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/settings.mm + monolib_univ_anybutton.o: $(srcdir)/src/univ/anybutton.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/univ/anybutton.cpp @@ -26723,6 +26733,9 @@ coredll_iphone_window.o: $(srcdir)/src/osx/iphone/window.mm $(COREDLL_ODEP) coredll_stdpaths.o: $(srcdir)/src/osx/cocoa/stdpaths.mm $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/stdpaths.mm +coredll_iphone_settings.o: $(srcdir)/src/osx/iphone/settings.mm $(COREDLL_ODEP) + $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/settings.mm + coredll_univ_anybutton.o: $(srcdir)/src/univ/anybutton.cpp $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/univ/anybutton.cpp @@ -30107,6 +30120,9 @@ corelib_iphone_window.o: $(srcdir)/src/osx/iphone/window.mm $(CORELIB_ODEP) corelib_stdpaths.o: $(srcdir)/src/osx/cocoa/stdpaths.mm $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/stdpaths.mm +corelib_iphone_settings.o: $(srcdir)/src/osx/iphone/settings.mm $(CORELIB_ODEP) + $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/iphone/settings.mm + corelib_univ_anybutton.o: $(srcdir)/src/univ/anybutton.cpp $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/univ/anybutton.cpp diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 94f3e22073..859c8d0ec9 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -2478,6 +2478,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/osx/iphone/utils.mm src/osx/iphone/window.mm src/osx/cocoa/stdpaths.mm + src/osx/iphone/settings.mm diff --git a/build/files b/build/files index 101dcc076a..a4800dd251 100644 --- a/build/files +++ b/build/files @@ -2109,6 +2109,7 @@ OSX_IPHONE_SRC = src/osx/iphone/msgdlg.mm src/osx/iphone/nonownedwnd.mm src/osx/iphone/scrolbar.mm + src/osx/iphone/settings.mm src/osx/iphone/slider.mm src/osx/iphone/stattext.mm src/osx/iphone/textctrl.mm diff --git a/src/osx/iphone/settings.mm b/src/osx/iphone/settings.mm new file mode 100644 index 0000000000..807e63b0c8 --- /dev/null +++ b/src/osx/iphone/settings.mm @@ -0,0 +1,250 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/osx/iphone/settings.mm +// Purpose: wxSettings +// Author: David Elliott +// Modified by: Tobias Taschner +// Created: 2005/01/11 +// Copyright: (c) 2005 David Elliott +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "wx/wxprec.h" + +#include "wx/settings.h" + +#ifndef WX_PRECOMP + #include "wx/utils.h" + #include "wx/gdicmn.h" +#endif + +#include "wx/osx/core/private.h" + +#include "UIKit/UIKit.h" + +// ---------------------------------------------------------------------------- +// wxSystemSettingsNative +// ---------------------------------------------------------------------------- + +// ---------------------------------------------------------------------------- +// colours +// ---------------------------------------------------------------------------- + +wxColour wxSystemSettingsNative::GetColour(wxSystemColour index) +{ + wxColour resultColor; +#if wxOSX_USE_COCOA_OR_CARBON + ThemeBrush colorBrushID; +#endif + + switch ( index ) + { + case wxSYS_COLOUR_WINDOW: + resultColor = *wxWHITE; + break ; + case wxSYS_COLOUR_SCROLLBAR : + case wxSYS_COLOUR_BACKGROUND: + case wxSYS_COLOUR_ACTIVECAPTION: + case wxSYS_COLOUR_INACTIVECAPTION: + case wxSYS_COLOUR_MENU: + case wxSYS_COLOUR_WINDOWFRAME: + case wxSYS_COLOUR_ACTIVEBORDER: + case wxSYS_COLOUR_INACTIVEBORDER: + case wxSYS_COLOUR_BTNFACE: + case wxSYS_COLOUR_MENUBAR: + resultColor = wxColour( 0xBE, 0xBE, 0xBE ) ; + break ; + + case wxSYS_COLOUR_LISTBOX : + resultColor = *wxWHITE ; + break ; + + case wxSYS_COLOUR_BTNSHADOW: + resultColor = wxColour( 0xBE, 0xBE, 0xBE ); + break ; + + case wxSYS_COLOUR_BTNTEXT: + case wxSYS_COLOUR_MENUTEXT: + case wxSYS_COLOUR_WINDOWTEXT: + case wxSYS_COLOUR_CAPTIONTEXT: + case wxSYS_COLOUR_INFOTEXT: + case wxSYS_COLOUR_INACTIVECAPTIONTEXT: + case wxSYS_COLOUR_LISTBOXTEXT: + resultColor = *wxBLACK; + break ; + + case wxSYS_COLOUR_HIGHLIGHT: + { + resultColor = wxColor( 0xCC, 0xCC, 0xFF ); + } + break ; + + case wxSYS_COLOUR_BTNHIGHLIGHT: + case wxSYS_COLOUR_GRAYTEXT: + resultColor = wxColor( 0xCC, 0xCC, 0xCC ); + break ; + + case wxSYS_COLOUR_3DDKSHADOW: + resultColor = wxColor( 0x44, 0x44, 0x44 ); + break ; + + case wxSYS_COLOUR_3DLIGHT: + resultColor = wxColor( 0xCC, 0xCC, 0xCC ); + break ; + + case wxSYS_COLOUR_HIGHLIGHTTEXT : + case wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT : + resultColor = *wxWHITE ; + break ; + + case wxSYS_COLOUR_INFOBK : + // we don't have a way to detect tooltip color, so use the + // standard value used at least on 10.4: + resultColor = wxColour( 0xFF, 0xFF, 0xD3 ) ; + break ; + case wxSYS_COLOUR_APPWORKSPACE: + resultColor = wxColor( 0x80, 0x80, 0x80 ); ; + break ; + + case wxSYS_COLOUR_HOTLIGHT: + case wxSYS_COLOUR_GRADIENTACTIVECAPTION: + case wxSYS_COLOUR_GRADIENTINACTIVECAPTION: + case wxSYS_COLOUR_MENUHILIGHT: + // TODO: + resultColor = *wxBLACK; + break ; + + default: + resultColor = *wxWHITE; + break ; + } + + return resultColor; +} + +// ---------------------------------------------------------------------------- +// fonts +// ---------------------------------------------------------------------------- + +wxFont wxSystemSettingsNative::GetFont(wxSystemFont index) +{ + switch (index) + { + case wxSYS_ANSI_VAR_FONT : + case wxSYS_SYSTEM_FONT : + case wxSYS_DEVICE_DEFAULT_FONT : + case wxSYS_DEFAULT_GUI_FONT : + { + return *wxSMALL_FONT ; + } ; + break ; + case wxSYS_OEM_FIXED_FONT : + case wxSYS_ANSI_FIXED_FONT : + case wxSYS_SYSTEM_FIXED_FONT : + default : + { + return *wxNORMAL_FONT ; + } ; + break ; + + } + return *wxNORMAL_FONT; +} + +// ---------------------------------------------------------------------------- +// system metrics/features +// ---------------------------------------------------------------------------- + +// Get a system metric, e.g. scrollbar size +int wxSystemSettingsNative::GetMetric(wxSystemMetric index, wxWindow *WXUNUSED(win)) +{ + int value; + + switch ( index ) + { + case wxSYS_MOUSE_BUTTONS: + return 2; // we emulate a two button mouse (ctrl + click = right button ) + + // TODO case wxSYS_BORDER_X: + // TODO case wxSYS_BORDER_Y: + // TODO case wxSYS_CURSOR_X: + // TODO case wxSYS_CURSOR_Y: + // TODO case wxSYS_DCLICK_X: + // TODO case wxSYS_DCLICK_Y: + // TODO case wxSYS_DRAG_X: + // TODO case wxSYS_DRAG_Y: + // TODO case wxSYS_EDGE_X: + // TODO case wxSYS_EDGE_Y: + + case wxSYS_HSCROLL_ARROW_X: + return 16; + case wxSYS_HSCROLL_ARROW_Y: + return 16; + case wxSYS_HTHUMB_X: + return 16; + + // TODO case wxSYS_ICON_X: + // TODO case wxSYS_ICON_Y: + // TODO case wxSYS_ICONSPACING_X: + // TODO case wxSYS_ICONSPACING_Y: + // TODO case wxSYS_WINDOWMIN_X: + // TODO case wxSYS_WINDOWMIN_Y: + + case wxSYS_SCREEN_X: + wxDisplaySize(&value, NULL); + return value; + + case wxSYS_SCREEN_Y: + wxDisplaySize(NULL, &value); + return value; + + // TODO case wxSYS_FRAMESIZE_X: + // TODO case wxSYS_FRAMESIZE_Y: + // TODO case wxSYS_SMALLICON_X: + // TODO case wxSYS_SMALLICON_Y: + + case wxSYS_HSCROLL_Y: + return 16; + case wxSYS_VSCROLL_X: + return 16; + case wxSYS_VSCROLL_ARROW_X: + return 16; + case wxSYS_VSCROLL_ARROW_Y: + return 16; + case wxSYS_VTHUMB_Y: + return 16; + + // TODO case wxSYS_CAPTION_Y: + // TODO case wxSYS_MENU_Y: + // TODO case wxSYS_NETWORK_PRESENT: + + case wxSYS_PENWINDOWS_PRESENT: + return 0; + + // TODO case wxSYS_SHOW_SOUNDS: + + case wxSYS_SWAP_BUTTONS: + return 0; + + case wxSYS_DCLICK_MSEC: + // default on mac is 30 ticks, we shouldn't really use wxSYS_DCLICK_MSEC anyway + // but rather rely on the 'click-count' by the system delivered in a mouse event + return 500; + + default: + return -1; // unsupported metric + } + return 0; +} + +bool wxSystemSettingsNative::HasFeature(wxSystemFeature index) +{ + switch (index) + { + case wxSYS_CAN_ICONIZE_FRAME: + case wxSYS_CAN_DRAW_FRAME_DECORATIONS: + return true; + + default: + return false; + } +}