#include "wx/image.h"
#include "wx/splash.h"
+#include "wx/mediactrl.h"
// ----------------------------------------------------------------------------
// resources
// the application icon (under Windows and OS/2 it is in resources and even
// though we could still include the XPM here it would be unused)
-#if !defined(__WXMSW__) && !defined(__WXPM__)
+#ifndef wxHAS_IMAGES_IN_RESOURCES
#include "../sample.xpm"
#endif
+// for smartphone, pda and other small screens use resized embedded image
+// instead of full colour png dedicated to desktops
+#include "mobile.xpm"
+
// ----------------------------------------------------------------------------
// private classes
// ----------------------------------------------------------------------------
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
+ bool m_isPda;
+
private:
// any class wishing to process wxWidgets events must use this macro
DECLARE_EVENT_TABLE()
// IDs for the controls and the menu commands
enum
{
- Minimal_Run = wxID_HIGHEST + 1,
+ Minimal_Run = wxID_HIGHEST + 1
};
// ----------------------------------------------------------------------------
// 'Main program' equivalent: the program execution "starts" here
bool MyApp::OnInit()
{
+ if ( !wxApp::OnInit() )
+ return false;
+
wxImage::AddHandler(new wxPNGHandler);
+ // create the main application window
+ MyFrame *frame = new MyFrame(wxT("wxSplashScreen sample application"));
+
wxBitmap bitmap;
- if (bitmap.LoadFile(_T("splash.png"), wxBITMAP_TYPE_PNG))
+
+ if (frame->m_isPda)
+ bitmap = wxBitmap(mobile_xpm);
+
+ bool ok = frame->m_isPda
+ ? bitmap.IsOk()
+ : bitmap.LoadFile(wxT("splash.png"), wxBITMAP_TYPE_PNG);
+
+ if (ok)
{
new wxSplashScreen(bitmap,
wxSPLASH_CENTRE_ON_SCREEN|wxSPLASH_TIMEOUT,
- 6000, NULL, wxID_ANY, wxDefaultPosition, wxDefaultSize,
+ 6000, frame, wxID_ANY, wxDefaultPosition, wxDefaultSize,
wxSIMPLE_BORDER|wxSTAY_ON_TOP);
}
- wxYield();
- // create the main application window
- MyFrame *frame = new MyFrame(_T("wxSplashScreen sample application"));
+#if !defined(__WXGTK20__)
+ // we don't need it at least on wxGTK with GTK+ 2.12.9
+ wxYield();
+#endif
// and show it (the frames, unlike simple controls, are not shown when
// created initially)
MyFrame::MyFrame(const wxString& title)
: wxFrame(NULL, wxID_ANY, title)
{
+ m_isPda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA);
+
// set the frame icon
SetIcon(wxICON(sample));
// the "About" item should be in the help menu
wxMenu *helpMenu = new wxMenu;
- helpMenu->Append(wxID_ABOUT, _T("&About...\tF1"), _T("Show about frame"));
+ helpMenu->Append(wxID_ABOUT, wxT("&About\tF1"), wxT("Show about frame"));
- menuFile->Append(wxID_EXIT, _T("E&xit\tAlt-X"), _T("Quit this program"));
+ menuFile->Append(wxID_EXIT, wxT("E&xit\tAlt-X"), wxT("Quit this program"));
// now append the freshly created menu to the menu bar...
wxMenuBar *menuBar = new wxMenuBar();
- menuBar->Append(menuFile, _T("&File"));
- menuBar->Append(helpMenu, _T("&Help"));
+ menuBar->Append(menuFile, wxT("&File"));
+ menuBar->Append(helpMenu, wxT("&Help"));
// ... and attach this menu bar to the frame
SetMenuBar(menuBar);
#if wxUSE_STATUSBAR
// create a status bar just for fun (by default with 1 pane only)
CreateStatusBar(2);
- SetStatusText(_T("Welcome to wxWidgets!"));
+ SetStatusText(wxT("Welcome to wxWidgets!"));
#endif // wxUSE_STATUSBAR
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxBitmap bitmap;
- if (bitmap.LoadFile(_T("splash.png"), wxBITMAP_TYPE_PNG))
+
+ if (m_isPda) bitmap = wxBitmap(mobile_xpm);
+
+ bool ok = m_isPda
+ ? bitmap.IsOk()
+ : bitmap.LoadFile(wxT("splash.png"), wxBITMAP_TYPE_PNG);
+
+ if (ok)
{
wxImage image = bitmap.ConvertToImage();
- image.Rescale( bitmap.GetWidth()/2, bitmap.GetHeight()/2 );
- bitmap = wxBitmap(image);
+
+ // do not scale on already small screens
+ if (!m_isPda)
+ image.Rescale( bitmap.GetWidth()/2, bitmap.GetHeight()/2 );
+
+ bitmap = wxBitmap(image);
wxSplashScreen *splash = new wxSplashScreen(bitmap,
wxSPLASH_CENTRE_ON_PARENT | wxSPLASH_NO_TIMEOUT,
0, this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
wxSIMPLE_BORDER|wxSTAY_ON_TOP);
- wxStaticText *text = new wxStaticText( splash->GetSplashWindow(), wxID_EXIT, _T("click somewhere\non image"), wxPoint(13,11) );
+
+ wxWindow *win = splash->GetSplashWindow();
+#if wxUSE_MEDIACTRL
+ wxMediaCtrl *media = new wxMediaCtrl( win, wxID_EXIT, wxT("press.mpg"), wxPoint(2,2));
+ media->Play();
+#else
+ wxStaticText *text = new wxStaticText( win,
+ wxID_EXIT,
+ wxT("click somewhere\non this image"),
+ wxPoint(m_isPda ? 0 : 13,
+ m_isPda ? 0 : 11)
+ );
text->SetBackgroundColour(*wxWHITE);
text->SetForegroundColour(*wxBLACK);
wxFont font = text->GetFont();
font.SetPointSize(2*font.GetPointSize()/3);
text->SetFont(font);
+#endif
}
}