00001 #ifndef MAINWINDOW_H 00002 #define MAINWINDOW_H 00003 00004 #include <gui/window.h> 00005 #include <gui/image.h> 00006 #include <util/message.h> 00007 #include <util/resources.h> 00008 #include <util/string.h> 00009 #include <gui/toolbar.h> 00010 #include <gui/menu.h> 00011 #include <gui/statusbar.h> 00012 00013 class ContainerView; 00014 class ConnectBar; 00015 class SettingsMenu; 00016 class Server; 00017 class AppSettings; 00018 00019 using namespace os; 00020 00024 class MainWindow : public os::Window 00025 { 00026 public: 00027 MainWindow(); 00028 ~MainWindow(); 00029 void HandleMessage( os::Message* ); 00030 void OpenConnection(const String& zScheme, const String& zHost, const String& nPort, const String& zUser, const String& zPassword ); 00031 00032 private: 00033 bool OkToQuit(); 00034 void Layout(); 00035 void SetupMenus(); 00036 void SetupToolBar(); 00037 void SetupStatusBar(); 00038 void UpdateStatusBar(Message* update); 00039 void PositionWindows(); 00040 00041 String ConstructURL( const String& zHost, int nPort, const String& zUser, const String& zPassword ); 00042 bool isValidHost(const String& zHost); 00043 bool isValidUser(const String& zUser); 00044 bool isValidPassword(const String& zPassword); 00045 bool isValidPort(int nPort); 00046 00047 private: 00048 00050 os::Window* m_pcProgressWindow; 00051 00053 os::Menu* m_pcMainMenu; 00054 00056 os::ToolBar* m_pcToolBar; 00057 00059 os::StatusBar* m_pcStatusBar; 00060 00062 ContainerView* m_pcView; 00063 00065 ConnectBar* m_pcConnectBar; 00066 00068 Server* m_pcServer; 00069 00071 AppSettings* m_pcSettings; 00072 00074 SettingsMenu* m_pcSettingsMenu; 00075 00076 // These were created for ease of syntax checking. 00077 // They correspond to the grammar for URI's expressed 00078 // in RFC 3986. 00079 static const os::String sUnreserved; 00080 static const os::String sPctEncoded; 00081 static const os::String sSubDelims; 00082 static const os::String sUserinfo_nc; 00083 static const os::String sDecOctet; 00084 static const os::String sIPv4address; 00085 static const os::String sH16; 00086 static const os::String sLS32; 00087 static const os::String sIPvFuture; 00088 static const os::String sIPv6address; 00089 static const os::String sIP_literal; 00091 }; 00092 00093 #endif /* MAINWINDOW_H */ 00094