From: Włodzimierz Skiba Date: Thu, 23 Sep 2004 08:39:47 +0000 (+0000) Subject: Smartphone native look and feel. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/d2cdad17e38fa530ea9376e1d69c1d2a8df35a08 Smartphone native look and feel. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29270 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/generic/dirdlgg.cpp b/src/generic/dirdlgg.cpp index dc756a642c..72ede7a30c 100644 --- a/src/generic/dirdlgg.cpp +++ b/src/generic/dirdlgg.cpp @@ -103,7 +103,19 @@ wxGenericDirDialog::wxGenericDirDialog(wxWindow* parent, const wxString& title, // Smartphone does not have buttons #if defined(__SMARTPHONE__) - // FIXME: make 'new dir' and 'home' in local dialog menu + wxMenu *dirMenu = new wxMenu; + dirMenu->Append(ID_GO_HOME, _("Home")); + + if (style & wxDD_NEW_DIR_BUTTON) + { + dirMenu->Append(ID_NEW, _("New directory")); + } + + dirMenu->AppendCheckItem(ID_SHOW_HIDDEN, _("Show hidden directories")); + dirMenu->AppendSeparator(); + dirMenu->Append(wxID_CANCEL, _("Cancel")); + + SetRightMenu(wxID_ANY, _("Options"), dirMenu); #else @@ -170,11 +182,7 @@ wxGenericDirDialog::wxGenericDirDialog(wxWindow* parent, const wxString& title, m_input = new wxTextCtrl( this, ID_TEXTCTRL, m_path, wxDefaultPosition ); topsizer->Add( m_input, 0, wxTOP|wxLEFT|wxRIGHT | wxEXPAND, wxLARGESMALL(10,0) ); -#ifdef __SMARTPHONE__ - - SetRightMenu(wxID_CANCEL, _("Cancel")); - -#else // __SMARTPHONE__/!__SMARTPHONE__ +#ifndef __SMARTPHONE__ #if wxUSE_STATLINE // 3) Static line diff --git a/src/generic/numdlgg.cpp b/src/generic/numdlgg.cpp index 2aa9f3300f..3ac47c5bfb 100644 --- a/src/generic/numdlgg.cpp +++ b/src/generic/numdlgg.cpp @@ -58,6 +58,20 @@ #define wxSpinCtrl wxTextCtrl #endif +// --------------------------------------------------------------------------- +// macros +// --------------------------------------------------------------------------- + +/* Macro for avoiding #ifdefs when value have to be different depending on size of + device we display on + */ + +#if defined(__SMARTPHONE__) + #define wxLARGESMALL(large,small) small +#else + #define wxLARGESMALL(large,small) large +#endif + // ============================================================================ // implementation // ============================================================================ @@ -111,6 +125,12 @@ wxNumberEntryDialog::wxNumberEntryDialog(wxWindow *parent, // add both topsizer->Add( inputsizer, 1, wxEXPAND | wxLEFT|wxRIGHT, 5 ); +#ifdef __SMARTPHONE__ + + SetRightMenu(wxID_CANCEL, _("Cancel")); + +#else // __SMARTPHONE__/!__SMARTPHONE__ + #if wxUSE_STATLINE // 3) static line topsizer->Add( new wxStaticLine( this, wxID_ANY ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 ); @@ -119,6 +139,8 @@ wxNumberEntryDialog::wxNumberEntryDialog(wxWindow *parent, // 4) buttons topsizer->Add( CreateButtonSizer( wxOK|wxCANCEL ), 0, wxCENTRE | wxALL, 10 ); +#endif // !__SMARTPHONE__ + SetSizer( topsizer ); SetAutoLayout( true ); diff --git a/src/generic/progdlgg.cpp b/src/generic/progdlgg.cpp index f3747acd89..b8010a4813 100644 --- a/src/generic/progdlgg.cpp +++ b/src/generic/progdlgg.cpp @@ -46,11 +46,25 @@ #include "wx/generic/progdlgg.h" +// --------------------------------------------------------------------------- +// macros +// --------------------------------------------------------------------------- + +/* Macro for avoiding #ifdefs when value have to be different depending on size of + device we display on + */ + +#if defined(__SMARTPHONE__) + #define wxLARGESMALL(large,small) small +#else + #define wxLARGESMALL(large,small) large +#endif + // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- -#define LAYOUT_MARGIN 8 +#define LAYOUT_MARGIN wxLARGESMALL(8,2) // ---------------------------------------------------------------------------- // private functions @@ -105,6 +119,10 @@ wxProgressDialog::wxProgressDialog(wxString const &title, } #endif // wxMSW +#if defined(__SMARTPHONE__) + SetLeftMenu(); +#endif + m_state = hasAbortButton ? Continue : Uncancelable; m_maximum = maximum; @@ -123,7 +141,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title, dc.GetTextExtent(message, &widthText, NULL, NULL, NULL, NULL); wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); - + m_msg = new wxStaticText(this, wxID_ANY, message); sizer->Add(m_msg, 0, wxLEFT | wxTOP, 2*LAYOUT_MARGIN); @@ -193,6 +211,10 @@ wxProgressDialog::wxProgressDialog(wxString const &title, if ( hasAbortButton ) { +#if defined(__SMARTPHONE__) + SetLeftMenu(wxID_CANCEL, _("Cancel")); + } +#else m_btnAbort = new wxButton(this, wxID_CANCEL); // Windows dialogs usually have buttons in the lower right corner @@ -204,6 +226,7 @@ wxProgressDialog::wxProgressDialog(wxString const &title, sizeDlg.y += 2*LAYOUT_MARGIN + wxButton::GetDefaultSize().y; } else // no "Cancel" button +#endif // __SMARTPHONE__/!__SMARTPHONE__ { m_btnAbort = (wxButton *)NULL; } @@ -248,22 +271,28 @@ wxProgressDialog::wxProgressDialog(wxString const &title, wxStaticText *wxProgressDialog::CreateLabel(const wxString& text, wxSizer *sizer) { - wxBoxSizer *locsizer = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer *locsizer = new wxBoxSizer(wxLARGESMALL(wxHORIZONTAL,wxVERTICAL)); - wxStaticText *dummy = new wxStaticText(this, -1, text); + wxStaticText *dummy = new wxStaticText(this, wxID_ANY, text); wxStaticText *label = new wxStaticText(this, wxID_ANY, _("unknown")); - // VZ: I like the labels be centered - if the others don't mind, you may - // remove "#ifdef __WXMSW__" and use it for all ports -#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMAC__) - locsizer->Add(dummy, 1, wxALIGN_RIGHT); + // select placement most native or nice on target GUI +#if defined(__SMARTPHONE__) + // label and time to the left in two rows + locsizer->Add(dummy, 1, wxALIGN_LEFT); + locsizer->Add(label, 1, wxALIGN_LEFT); + sizer->Add(locsizer, 0, wxALIGN_LEFT | wxTOP | wxLEFT, LAYOUT_MARGIN); +#elif defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMAC__) + // label and time centered in one row + locsizer->Add(dummy, 1, wxLARGESMALL(wxALIGN_RIGHT,wxALIGN_LEFT)); locsizer->Add(label, 1, wxALIGN_LEFT | wxLEFT, LAYOUT_MARGIN); sizer->Add(locsizer, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, LAYOUT_MARGIN); -#else // !MSW +#else + // label and time to the right in one row sizer->Add(locsizer, 0, wxALIGN_RIGHT | wxRIGHT | wxTOP, LAYOUT_MARGIN); locsizer->Add(dummy); locsizer->Add(label, 0, wxLEFT, LAYOUT_MARGIN); -#endif // MSW/!MSW +#endif return label; } @@ -362,6 +391,9 @@ wxProgressDialog::Update(int value, const wxString& newmsg) m_state = Finished; if( !(GetWindowStyle() & wxPD_AUTO_HIDE) ) { +#if defined(__SMARTPHONE__) + SetLeftMenu(wxID_CANCEL, _("Close")); +#endif if ( m_btnAbort ) { // tell the user what he should do... @@ -415,7 +447,11 @@ void wxProgressDialog::Resume() // it may have been disabled by OnCancel(), so enable it back to let the // user interrupt us again if needed - m_btnAbort->Enable(); + if(m_btnAbort) + m_btnAbort->Enable(); +#if defined(__SMARTPHONE__) + SetLeftMenu(wxID_CANCEL, _("Cancel")); +#endif } bool wxProgressDialog::Show( bool show ) @@ -449,7 +485,12 @@ void wxProgressDialog::OnCancel(wxCommandEvent& event) // update the button state immediately so that the user knows that the // request has been noticed - m_btnAbort->Disable(); + if(m_btnAbort) + m_btnAbort->Disable(); + +#if defined(__SMARTPHONE__) + SetLeftMenu(); +#endif // save the time when the dialog was stopped m_timeStop = wxGetCurrentTime(); @@ -472,7 +513,11 @@ void wxProgressDialog::OnClose(wxCloseEvent& event) { // next Update() will notice it m_state = Canceled; - m_btnAbort->Disable(); + if(m_btnAbort) + m_btnAbort->Disable(); +#if defined(__SMARTPHONE__) + SetLeftMenu(); +#endif m_timeStop = wxGetCurrentTime(); } }