NxWM update

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4677 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2012-04-30 01:21:26 +00:00
parent ff3967512e
commit b4e9aa7fbf
15 changed files with 217 additions and 238 deletions

View File

@ -42,7 +42,7 @@ NXWIDGETDIR := $(NXWMDIR)/../libnxwidgets
ASRCS = ASRCS =
CSRCS = CSRCS =
# Window Manager # Window Manager
CXXSRCS = capplicationwindow.cxx cnxconsole.cxx cnxtaskbar.cxx CXXSRCS = capplicationwindow.cxx cnxconsole.cxx ctaskbar.cxx
# Images # Images
CXXSRCS += glyph_minimize.cxx glyph_nsh.cxx glyph_start.cxx glyph_stop.cxx CXXSRCS += glyph_minimize.cxx glyph_nsh.cxx glyph_start.cxx glyph_stop.cxx

View File

@ -55,7 +55,7 @@
****************************************************************************/ ****************************************************************************/
/**************************************************************************** /****************************************************************************
* Abstract Base Classes * Implementation Classes
****************************************************************************/ ****************************************************************************/
#if defined(__cplusplus) #if defined(__cplusplus)

View File

@ -33,8 +33,8 @@
* *
****************************************************************************/ ****************************************************************************/
#ifndef __NXWM_INCLUDE_CNXBACKIMAGE_HXX #ifndef __NXWM_INCLUDE_CBACKGROUNDIMAGE_HXX
#define __NXWM_INCLUDE_CNXBACKIMAGE_HXX #define __NXWM_INCLUDE_CBACKGROUNDIMAGE_HXX
/**************************************************************************** /****************************************************************************
* Included Files * Included Files
@ -64,25 +64,25 @@ namespace NxWM
* This class describes the NX windo manager's background image. * This class describes the NX windo manager's background image.
*/ */
class CNxBackImage : public NXWidgets::CImage class CBackgroundImage : public NXWidgets::CImage
{ {
private: private:
NXWidgets::CWidgetControl *m_widgetControl; // The controlling widget for the window NXWidgets::CWidgetControl *m_widgetControl; // The controlling widget for the window
public: public:
/** /**
* CNxBackImage Constructor * CBackgroundImage Constructor
*/ */
CNxBackImage(void); CBackgroundImage(void);
/** /**
* CNxBackImage Destructor * CBackgroundImage Destructor
*/ */
~CNxBackImage(void); ~CBackgroundImage(void);
}; };
} }
#endif // __cplusplus #endif // __cplusplus
#endif // __NXWM_INCLUDE_CNXBACKIMAGE_HXX #endif // __NXWM_INCLUDE_CBACKGROUNDIMAGE_HXX

View File

@ -42,9 +42,7 @@
#include <nuttx/config.h> #include <nuttx/config.h>
#include "crlepalettebitmap.hxx" #include "iapplication.hxx"
#include "inxwindow.hxx"
#include "cnxapplication.hxx"
/**************************************************************************** /****************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
@ -62,7 +60,7 @@ namespace NxWM
* This class implements the NxConsole application. * This class implements the NxConsole application.
*/ */
class CNxConsole : public CNxApplication class CNxConsole : public IApplication
{ {
protected: protected:
/** /**
@ -83,12 +81,12 @@ namespace NxWM
/** /**
* Get the icon associated with the application * Get the icon associated with the application
* *
* @return An instance if INxBitmap that may be used to rend the * @return An instance if IBitmap that may be used to rend the
* application's icon. This is an new INxBitmap instance that must * application's icon. This is an new IBitmap instance that must
* be deleted by the caller when it is no long needed. * be deleted by the caller when it is no long needed.
*/ */
NXWidgets::INxBitmap *getIcon(void); NXWidgets::IBitmap *getIcon(void);
}; };
} }
#endif // __cplusplus #endif // __cplusplus

View File

@ -33,8 +33,8 @@
* *
****************************************************************************/ ****************************************************************************/
#ifndef __INCLUDE_CNXSTART_NXX #ifndef __INCLUDE_CSTARTWINDOW_NXX
#define __INCLUDE_CNXSTART_NXX #define __INCLUDE_CSTARTWINDOW_NXX
/**************************************************************************** /****************************************************************************
* Included Files * Included Files
@ -42,7 +42,8 @@
#include <nuttx/config.h> #include <nuttx/config.h>
#include "cnxapplication.hxx" #include "iapplication.hxx"
#include "tnxarray.hxx"
/**************************************************************************** /****************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
@ -56,33 +57,34 @@
namespace NxWM namespace NxWM
{ {
class CNxTaskbar; class CTaskbar;
class CApplicationWindow; class CApplicationWindow;
class CNxStart : public INxApplication class CStartWindow : public IApplication
{ {
protected: protected:
CNxTaskbar *m_taskbar; /**< Reference to the "parent" taskbar */ CTaskbar *m_taskbar; /**< Reference to the "parent" taskbar */
TNxArray<CApplication*> m_applications; /**< List of apps in the start window */
/** /**
* CNxStart Constructor * CStartWindow Constructor
*/ */
~CNxStart(void); ~CStartWindow(void);
public: public:
/** /**
* CNxStart Constructor * CStartWindow Constructor
* *
* @param taskbar. A pointer to the parent task bar instance * @param taskbar. A pointer to the parent task bar instance
* @param window. The window to be used by this application. * @param window. The window to be used by this application.
*/ */
CNxStart(CNxTaskbar *taskbar, CApplicationWindow *window); CStartWindow(CTaskbar *taskbar, CApplicationWindow *window);
/** /**
* Each implementation of INxApplication must provide a method to recover * Each implementation of IApplication must provide a method to recover
* the contained CApplicationWindow instance. * the contained CApplicationWindow instance.
*/ */
@ -91,12 +93,12 @@ namespace NxWM
/** /**
* Get the icon associated with the application * Get the icon associated with the application
* *
* @return An instance if INxBitmap that may be used to rend the * @return An instance if IBitmap that may be used to rend the
* application's icon. This is an new INxBitmap instance that must * application's icon. This is an new IBitmap instance that must
* be deleted by the caller when it is no long needed. * be deleted by the caller when it is no long needed.
*/ */
NXWidgets::INxBitmap *getIcon(void); NXWidgets::IBitmap *getIcon(void);
/** /**
* Get the name string associated with the application * Get the name string associated with the application
@ -119,17 +121,23 @@ namespace NxWM
stop(void); stop(void);
/** /**
* Add the application to the start window * Add the application to the start window. The general sequence for
* setting up the start window is:
*
* 1. Call CTaskBar::openApplicationWindow to create a window for the start window,
* 2. Call CStartMenu::addApplication numerous times to install applications
* in the start window.
* 3. Call CTaskBar::startApplication (initially minimized) to start the start
* window application.
* *
* @param application. The new application to add to the start window * @param application. The new application to add to the start window
* @return true on success * @return true on success
*/ */
bool addApplication(INxApplication *application); bool addApplication(IApplication *application);
}; };
} }
#endif // __cplusplus #endif // __cplusplus
#endif // __INCLUDE_CNXSTART_NXX #endif // __INCLUDE_CSTARTWINDOW_NXX

View File

@ -33,8 +33,8 @@
* *
****************************************************************************/ ****************************************************************************/
#ifndef __NXWM_INCLUDE_CNXTASKBAR_HXX #ifndef __NXWM_INCLUDE_CTASKBAR_HXX
#define __NXWM_INCLUDE_CNXTASKBAR_HXX #define __NXWM_INCLUDE_CTASKBAR_HXX
/**************************************************************************** /****************************************************************************
* Included Files * Included Files
@ -43,6 +43,13 @@
#include <nuttx/config.h> #include <nuttx/config.h>
#include "nxconfig.hxx" #include "nxconfig.hxx"
#include "tnxarray.hxx"
#include "inxwindow.hxx"
#include "cnxserver.hxx"
#include "cwidgeteventhandler.hxx"
#include "cwidgeteventargs.hxx"
#include "iapplication.hxx"
/**************************************************************************** /****************************************************************************
* Pre-processor Definitions * Pre-processor Definitions
@ -60,12 +67,12 @@ namespace NxWM
* This class describes the NX window manager's task bar * This class describes the NX window manager's task bar
*/ */
class CNxTaskBar : public NXWidgets::CNxServer, private NXWidgets::CWidgetEventHandler class CTaskbar : public NXWidgets::CNxServer, private NXWidgets::CWidgetEventHandler
{ {
private: private:
NXWidgets:INxWindow *m_taskbar; /**< The toolbar window */ NXWidgets::INxWindow *m_taskbar; /**< The toolbar window */
NXWidgets:INxWindow *m_background; /**< The background window */ NXWidgets::INxWindow *m_background; /**< The background window */
INxApplication *m_start; /**< The start window */ TNxArray<IApplication*> m_applications; /**< List of apps in the task bar */
/** /**
* Connect to the server * Connect to the server
@ -97,7 +104,7 @@ namespace NxWM
/** /**
* Create a framed application window * Create a framed application window
* *
* This may be used to provide the window parater to the INxApplication constructor * This may be used to provide the window parater to the IApplication constructor
* *
* @return A partially initialized application window instance. * @return A partially initialized application window instance.
*/ */
@ -135,66 +142,50 @@ namespace NxWM
* @param e The event data. * @param e The event data.
*/ */
void handleClickEvent(const CWidgetEventArgs &e); void handleClickEvent(const NXWidgets::CWidgetEventArgs &e);
/** /**
* CNxTaskBar Destructor * CTaskbar Destructor
*/ */
~CNxTaskBar(void); ~CTaskbar(void);
public: public:
/** /**
* CNxTaskBar Constructor * CTaskbar Constructor
* *
* @param hWnd - NX server handle * @param hWnd - NX server handle
*/ */
CNxTaskBar(void); CTaskbar(void);
/**
* Add the application to the start window. The window manager start-up
* sequence is:
*
* 1. Create the CNxTaskBar instance,
* 2. Call addApplication repeatedly to add applications to the start window
* 3. Call startWindowManager to start the display
*
* @param application. The new application to add to the start window
* @return true on success
*/
bool addApplication(INxApplication *application);
/** /**
* Start the window manager and present the initial displays. The window * Start the window manager and present the initial displays. The window
* manager start-up sequence is: * manager start-up sequence is:
* *
* 1. Create the CNxTaskBar instance, * 1. Create the CTaskbar instance,
* 2. Call addApplication repeatedly to add applications to the start window * 2. Call CTaskBar::startApplication repeatedly to add applications to the task bar
* 3. Call startWindowManager to start the display * 3. Call CTaskBar::startWindowManager to start the display with applications in place
* *
* startWindowManager will present the taskar and the background image. The * startWindowManager will present the taskar and the background image. The
* initial taskbar will contain only the start window icon. * initial taskbar will contain only the start window icon.
*
* @param application. The new application to add to the start window
* @return true on success
*/ */
bool startWindowManager(start); bool startWindowManager(void);
/** /**
* Create an application window. Creating a new applicatino in the start * Create an application window. Creating a new application in the start
* window requires three steps: * window requires three steps:
* *
* 1. Call openApplicationWindow to create a window for the application, * 1. Call CTaskBar::openApplicationWindow to create a window for the application,
* 2. Instantiate the application, providing the window to the application's * 2. Instantiate the application, providing the window to the application's
* constructor, * constructor,
* 3. Then call addApplication to add the application to the start window. * 3. Then call CStartWindow::addApplication to add the application to the
* start window.
* *
* When the application is selected from the start window: * When the application is selected from the start window:
* *
* 4. Call startApplication start the application and bring its window to * 4. Call CTaskBar::startApplication start the application and bring its window to
* the top. * the top.
*/ */
@ -202,24 +193,25 @@ namespace NxWM
/** /**
* Start an application and add its icon to the taskbar. The applications's * Start an application and add its icon to the taskbar. The applications's
* window is brought to the top. Creating a new applicatino in the start * window is brought to the top. Creating a new application in the start
* window requires three steps: * window requires three steps:
* *
* 1. Call openApplicationWindow to create a window for the application, * 1. Call CTaskBar::openApplicationWindow to create a window for the application,
* 2. Instantiate the application, providing the window to the application's * 2. Instantiate the application, providing the window to the application's
* constructor, * constructor,
* 3. Then call addApplication to add the application to the start window. * 3. Then call CStartWindow::addApplication to add the application to the start window.
* *
* When the application is selected from the start window: * When the application is selected from the start window:
* *
* 4. Call startApplication start the application and bring its window to * 4. Call CTaskBar::startApplication start the application and bring its window to
* the top. * the top.
* *
* @param application. The new application to add to the task bar * @param app. The new application to add to the task bar
* @param minimized. The new application starts in the minimized state
* @return true on success * @return true on success
*/ */
bool startApplication(INxApplication *application); bool startApplication(IApplication *app, bool minimized);
/** /**
* Hide an application by moving its window to the bottom. * Hide an application by moving its window to the bottom.
@ -228,7 +220,7 @@ namespace NxWM
* @return true on success * @return true on success
*/ */
bool hideApplication(INxApplication *application); bool hideApplication(IApplication *application);
/** /**
* Destroy an application. Move its window to the bottom and remove its * Destroy an application. Move its window to the bottom and remove its
@ -238,9 +230,9 @@ namespace NxWM
* @return true on success * @return true on success
*/ */
bool stopApplication(INxApplication *application); bool stopApplication(IApplication *application);
}; };
} }
#endif // __cplusplus #endif // __cplusplus
#endif // __NXWM_INCLUDE_CNXTASKBAR_HXX #endif // __NXWM_INCLUDE_CTASKBAR_HXX

View File

@ -1,5 +1,5 @@
/**************************************************************************** /****************************************************************************
* NxWidgets/nxwm/include/inxapplication.hxx * NxWidgets/nxwm/include/iapplication.hxx
* *
* Copyright (C) 2012 Gregory Nutt. All rights reserved. * Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org> * Author: Gregory Nutt <gnutt@nuttx.org>
@ -33,8 +33,8 @@
* *
****************************************************************************/ ****************************************************************************/
#ifndef __INCLUDE_INXAPPLICATION_NXX #ifndef __INCLUDE_IAPPLICATION_NXX
#define __INCLUDE_INXAPPLICATION_NXX #define __INCLUDE_IAPPLICATION_NXX
/**************************************************************************** /****************************************************************************
* Included Files * Included Files
@ -42,6 +42,10 @@
#include <nuttx/config.h> #include <nuttx/config.h>
#include "cnxstring.hxx"
#include "ibitmap.hxx"
#include "capplicationwindow.hxx"
/**************************************************************************** /****************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
****************************************************************************/ ****************************************************************************/
@ -54,18 +58,15 @@
namespace NxWM namespace NxWM
{ {
class CApplicationWindow;
class NxWidget::CNxString;
/** /**
* INxApplication provides the abstract base class for each NxWM application. * IApplication provides the abstract base class for each NxWM application.
*/ */
class INxApplication class IApplication
{ {
public: public:
/** /**
* Each implementation of INxApplication must provide a method to recover * Each implementation of IApplication must provide a method to recover
* the contained CApplicationWindow instance. * the contained CApplicationWindow instance.
*/ */
@ -74,12 +75,12 @@ namespace NxWM
/** /**
* Get the icon associated with the application * Get the icon associated with the application
* *
* @return An instance if INxBitmap that may be used to rend the * @return An instance if IBitmap that may be used to rend the
* application's icon. This is an new INxBitmap instance that must * application's icon. This is an new IBitmap instance that must
* be deleted by the caller when it is no long needed. * be deleted by the caller when it is no long needed.
*/ */
virtual NXWidgets::INxBitmap *getIcon(void) = 0; virtual NXWidgets::IBitmap *getIcon(void) = 0;
/** /**
* Get the name string associated with the application * Get the name string associated with the application
@ -93,16 +94,16 @@ namespace NxWM
* Start the application. * Start the application.
*/ */
virtual run(void) = 0; virtual void run(void) = 0;
/** /**
* Stop the application. * Stop the application.
*/ */
virtual stop(void) = 0; virtual void stop(void) = 0;
}; };
} }
#endif // __cplusplus #endif // __cplusplus
#endif // __INCLUDE_INXAPPLICATION_NXX #endif // __INCLUDE_IAPPLICATION_NXX

View File

@ -71,7 +71,7 @@
*/ */
#ifndef CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR #ifndef CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR
# define CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR # define CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR MKRGB(160,160,160)
#endif #endif
/** /**
@ -79,7 +79,7 @@
*/ */
#ifndef CONFIG_NXWM_DEFAULT_SELECTEDBACKGROUNDCOLOR #ifndef CONFIG_NXWM_DEFAULT_SELECTEDBACKGROUNDCOLOR
# define CONFIG_NXWM_DEFAULT_SELECTEDBACKGROUNDCOLOR CONFIG_NXWM_DEFAULT_SELECTEDBACKGROUNDCOLOR # define CONFIG_NXWM_DEFAULT_SELECTEDBACKGROUNDCOLOR MKRGB(120,192,192)
#endif #endif
/** /**
@ -127,18 +127,18 @@
#if defined(CONFIG_NXWM_TASKBAR_TOP) #if defined(CONFIG_NXWM_TASKBAR_TOP)
# if defined(CONFIG_NXWM_TASKBAR_BOTTOM) || defined (CONFIG_NXWM_TASKBAR_LEFT) || defined (CONFIG_NXWM_TASKBAR_RIGHT) # if defined(CONFIG_NXWM_TASKBAR_BOTTOM) || defined (CONFIG_NXWM_TASKBAR_LEFT) || defined (CONFIG_NXWM_TASKBAR_RIGHT)
# warning "Multiple task positions specified" # warning "Multiple task bar positions specified"
# endif # endif
#elif defined(CONFIG_NXWM_TASKBAR_BOTTOM) #elif defined(CONFIG_NXWM_TASKBAR_BOTTOM)
# if defined (CONFIG_NXWM_TASKBAR_LEFT) || defined (CONFIG_NXWM_TASKBAR_RIGHT) # if defined (CONFIG_NXWM_TASKBAR_LEFT) || defined (CONFIG_NXWM_TASKBAR_RIGHT)
# warning "Multiple task positions specified" # warning "Multiple task bar positions specified"
# endif # endif
#elif defined(CONFIG_NXWM_TASKBAR_LEFT) #elif defined(CONFIG_NXWM_TASKBAR_LEFT)
# if defined defined (CONFIG_NXWM_TASKBAR_RIGHT) # if defined defined (CONFIG_NXWM_TASKBAR_RIGHT)
# warning "Multiple task positions specified" # warning "Multiple task bar positions specified"
# endif # endif
#elif !defined(CONFIG_NXWM_TASKBAR_RIGHT) #elif !defined(CONFIG_NXWM_TASKBAR_RIGHT)
# warning "No task positions specified" # warning "No task bar position specified"
# define CONFIG_NXWM_TASKBAR_TOP 1 # define CONFIG_NXWM_TASKBAR_TOP 1
#endif #endif

View File

@ -1,5 +1,5 @@
/******************************************************************************************** /********************************************************************************************
* NxWidgets/nxwm/src/cnxtaskbar.cxx * NxWidgets/nxwm/src/capplicationwindow.cxx
* *
* Copyright (C) 2012 Gregory Nutt. All rights reserved. * Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org> * Author: Gregory Nutt <gnutt@nuttx.org>

View File

@ -41,6 +41,7 @@
#include "nxwmconfig.hxx" #include "nxwmconfig.hxx"
#include "cnxconsole.hxx" #include "cnxconsole.hxx"
#include "nxwmglyphs.hxx"
/******************************************************************************************** /********************************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
@ -50,6 +51,8 @@
* CNxConsole Method Implementations * CNxConsole Method Implementations
********************************************************************************************/ ********************************************************************************************/
using namespace NxWM;
/** /**
* CNxConsole constructor * CNxConsole constructor
* *
@ -63,14 +66,14 @@ CNxConsole::CNxConsole(NXWidgets::INxWindow *window)
/** /**
* Get the icon associated with the application * Get the icon associated with the application
* *
* @return An instance if INxBitmap that may be used to rend the * @return An instance if IBitmap that may be used to rend the
* application's icon. This is an new INxBitmap instance that must * application's icon. This is an new IBitmap instance that must
* be deleted by the caller when it is no long needed. * be deleted by the caller when it is no long needed.
*/ */
NXWidgets::INxBitmap *CNxConsole::getIcon(void) NXWidgets::IBitmap *CNxConsole::getIcon(void)
{ {
NXWidgets::CRlePaletteBitmap *bitmap = new NXWidgets::CRlePaletteBitmap(&g_nshBitmap); NXWidgets::CRlePaletteBitmap *bitmap = new NXWidgets::CRlePaletteBitmap(&g_nshBitmap);
return static_cast<INxBitmap>(bitmap); return static_cast<NXWidgets::IBitmap *>(bitmap);
} }

View File

@ -1,5 +1,5 @@
/******************************************************************************************** /********************************************************************************************
* NxWidgets/nxwm/src/cnxtaskbar.cxx * NxWidgets/nxwm/src/ctaskbar.cxx
* *
* Copyright (C) 2012 Gregory Nutt. All rights reserved. * Copyright (C) 2012 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org> * Author: Gregory Nutt <gnutt@nuttx.org>
@ -39,8 +39,14 @@
#include <nuttx/config.h> #include <nuttx/config.h>
#include <nuttx/nx/nxglib.h>
#include "crect.hxx"
#include "cwidgetcontrol.hxx"
#include "cnxtkwindow.hxx"
#include "nxwmconfig.hxx" #include "nxwmconfig.hxx"
#include "cnxconsole.hxx" #include "ctaskbar.hxx"
/******************************************************************************************** /********************************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
@ -53,49 +59,33 @@
using namespace NxWM; using namespace NxWM;
/** /**
* CNxTaskBar Constructor * CTaskbar Constructor
* *
* @param hWnd - NX server handle * @param hWnd - NX server handle
*/ */
CNxTaskBar::CNxTaskBar(void) CTaskbar::CTaskbar(void)
{ {
m_taskbar = (INxWindow *)NULL; m_taskbar = (NXWidgets::INxWindow *)0;
m_background = (INxWindow *)NULL; m_background = (NXWidgets::INxWindow *)0;
m_start = (INxWindow *)NULL;
} }
/** /**
* CNxTaskBar Destructor * CTaskbar Destructor
*/ */
CNxTaskBar::~CNxTaskBar(void) CTaskbar::~CTaskbar(void)
{ {
disconnect(); disconnect();
} }
/**
* Add the application to the start window. The window manager start-up
* sequence is:
*
* 1. Create the CNxTaskBar instance,
* 2. Call addApplication repeatedly to add applications to the start window
* 3. Call startWindowManager to start the display
*
* @param application. The new application to add to the start window
* @return true on success
*/
bool CNxTaskBar::addApplication(INxApplication *application)
{
}
/** /**
* Start the window manager and present the initial displays. The window * Start the window manager and present the initial displays. The window
* manager start-up sequence is: * manager start-up sequence is:
* *
* 1. Create the CNxTaskBar instance, * 1. Create the CTaskbar instance,
* 2. Call addApplication repeatedly to add applications to the start window * 2. Call startApplication repeatedly to add applications to the task bar
* 3. Call startWindowManager to start the display * 3. Call startWindowManager to start the display with applications in place
* *
* startWindowManager will present the taskar and the background image. The * startWindowManager will present the taskar and the background image. The
* initial taskbar will contain only the start window icon. * initial taskbar will contain only the start window icon.
@ -104,10 +94,14 @@ bool CNxTaskBar::addApplication(INxApplication *application)
* @return true on success * @return true on success
*/ */
bool CNxTaskBar::startWindowManager(start); bool CTaskbar::startWindowManager(void)
{
#warning "Missing logic"
return false;
}
/** /**
* Create an application window. Creating a new applicatino in the start * Create an application window. Creating a new application in the start
* window requires three steps: * window requires three steps:
* *
* 1. Call openApplicationWindow to create a window for the application, * 1. Call openApplicationWindow to create a window for the application,
@ -121,29 +115,35 @@ bool CNxTaskBar::startWindowManager(start);
* the top. * the top.
*/ */
CApplicationWindow *CNxTaskBar::openApplicationWindow(void); CApplicationWindow *CTaskbar::openApplicationWindow(void)
{
#warning "Missing logic"
return (CApplicationWindow *)0;
}
/** /**
* Start an application and add its icon to the taskbar. The applications's * Start an application and add its icon to the taskbar. The applications's
* window is brought to the top. Creating a new applicatino in the start * window is brought to the top. Creating a new applicatino in the start
* window requires three steps: * window requires three steps:
* *
* 1. Call openApplicationWindow to create a window for the application, * 1. Create the CTaskbar instance,
* 2. Instantiate the application, providing the window to the application's * 2. Call startApplication repeatedly to add applications to the task bar
* constructor, * 3. Call startWindowManager to start the display with applications in place
* 3. Then call addApplication to add the application to the start window.
* *
* When the application is selected from the start window: * When the application is selected from the start window:
* *
* 4. Call startApplication start the application and bring its window to * 4. Call startApplication start the application and bring its window to
* the top. * the top.
* *
* @param application. The new application to add to the task bar * @param app. The new application to add to the task bar
* @param minimized. The new application starts in the minimized state
* @return true on success * @return true on success
*/ */
bool CNxTaskBar::startApplication(INxApplication *application) bool CTaskbar::startApplication(IApplication *app, bool minimized)
{ {
#warning "Missing logic"
return false;
} }
/** /**
@ -153,8 +153,23 @@ bool CNxTaskBar::startApplication(INxApplication *application)
* @return true on success * @return true on success
*/ */
bool CNxTaskBar::hideApplication(INxApplication *application) bool CTaskbar::hideApplication(IApplication *application)
{ {
// Every application provides a method to obtain its applicatin window
CApplicationWindow *appWindow = application->getWindow();
// Each application window provides a method to get the underlying NX window
NXWidgets::CNxTkWindow *window = appWindow->getWindow();
// Lower the window
window->lower();
// Grey out the image in task bar
#warning "Missing logic"
return true;
} }
/** /**
@ -165,15 +180,17 @@ bool CNxTaskBar::hideApplication(INxApplication *application)
* @return true on success * @return true on success
*/ */
bool CNxTaskBar::stopApplication(INxApplication *application) bool CTaskbar::stopApplication(IApplication *application)
{ {
#warning "Missing logic"
return false;
} }
/** /**
* Connect to the server * Connect to the server
*/ */
bool CNxTaskBar::connect(void) bool CTaskbar::connect(void)
{ {
// Connect to the server // Connect to the server
@ -182,9 +199,9 @@ bool CNxTaskBar::connect(void)
{ {
// Set the background color // Set the background color
if (!setBackgroundColor(CONFIG_CNXWM_BGCOLOR)) if (!setBackgroundColor(CONFIG_NXWM_DEFAULT_BACKGROUNDCOLOR))
{ {
message("CNxwm::connect: setBackgroundColor failed\n"); // Failed
} }
} }
@ -195,10 +212,17 @@ bool CNxTaskBar::connect(void)
* Disconnect from the server * Disconnect from the server
*/ */
void CNxTaskBar::disconnect(void) void CTaskbar::disconnect(void)
{ {
// Delete all applications // Stop all applications and remove them from the task bar. Clearly, there
#warning "Missing logic // are some ordering issues here... On an orderly system shutdown, disconnection
// should really occur priority to deleting instances
while (!m_applications.empty())
{
IApplication *app = m_applications.at(0);
stopApplication(app);
}
// Close the windows // Close the windows
@ -235,22 +259,6 @@ void CNxTaskBar::disconnect(void)
delete m_background; delete m_background;
} }
if (m_start)
{
// Delete the contained widget control. We are responsible for it
// because we created it
control = m_start->getWidgetControl();
if (control)
{
delete control;
}
// Then delete the start window
delete m_start;
}
// And disconnect from the server // And disconnect from the server
CNxServer::disconnect(); CNxServer::disconnect();
@ -269,19 +277,18 @@ void CNxTaskBar::disconnect(void)
* widget constructor * widget constructor
*/ */
NXWidgets::CNxWindow *CNxTaskBar::openRawWindow(void) NXWidgets::CNxWindow *CTaskbar::openRawWindow(void)
{ {
// Initialize the widget control using the default style // Initialize the widget control using the default style
NXWidgets::CWidgetControl *widgetControl = new CWidgetControl((CWidgetStyle *)NULL); NXWidgets::CWidgetControl *widgetControl = new NXWidgets::CWidgetControl((NXWidgets::CWidgetStyle *)NULL);
// Get an (uninitialized) instance of the background window as a class // Get an (uninitialized) instance of the background window as a class
// that derives from INxWindow. // that derives from INxWindow.
NXWidgets::CNxWindow window = createRawWindow(widgetControl); NXWidgets::CNxWindow *window = createRawWindow(widgetControl);
if (!window) if (!window)
{ {
message("CNxwm::createGraphics: Failed to create background window\n");
delete widgetControl; delete widgetControl;
return false; return false;
} }
@ -291,9 +298,8 @@ NXWidgets::CNxWindow *CNxTaskBar::openRawWindow(void)
bool success = window->open(); bool success = window->open();
if (!success) if (!success)
{ {
message("CNxwm::createGraphics: Failed to open background window\n");
delete window; delete window;
window = (NXWidgets::INxWindow *)0; window = (NXWidgets::CNxWindow *)0;
return false; return false;
} }
@ -303,24 +309,23 @@ NXWidgets::CNxWindow *CNxTaskBar::openRawWindow(void)
/** /**
* Create a framed application window * Create a framed application window
* *
* This may be used to provide the window parater to the INxApplication constructor * This may be used to provide the window parater to the IApplication constructor
* *
* @return A partially initialized application window instance. * @return A partially initialized application window instance.
*/ */
NXWidgets::CNxTkWindow *CNxTaskBar::openFramedWindow(void) NXWidgets::CNxTkWindow *CTaskbar::openFramedWindow(void)
{ {
// Initialize the widget control using the default style // Initialize the widget control using the default style
NXWidgets::CWidgetControl *widgetControl = new CWidgetControl((CWidgetStyle *)NULL); NXWidgets::CWidgetControl *widgetControl = new NXWidgets::CWidgetControl((NXWidgets::CWidgetStyle *)NULL);
// Get an (uninitialized) instance of the background window as a class // Get an (uninitialized) instance of the background window as a class
// that derives from INxWindow. // that derives from INxWindow.
NXWidgets:CNxTkWindow window = createRawWindow(widgetControl); NXWidgets::CNxTkWindow *window = createFramedWindow(widgetControl);
if (!window) if (!window)
{ {
message("CNxwm::createGraphics: Failed to create background window\n");
delete widgetControl; delete widgetControl;
return false; return false;
} }
@ -330,9 +335,8 @@ NXWidgets::CNxTkWindow *CNxTaskBar::openFramedWindow(void)
bool success = window->open(); bool success = window->open();
if (!success) if (!success)
{ {
message("CNxwm::createGraphics: Failed to open background window\n");
delete window; delete window;
window = (NXWidgets::INxWindow *)0; window = (NXWidgets::CNxTkWindow *)0;
return false; return false;
} }
@ -347,18 +351,22 @@ NXWidgets::CNxTkWindow *CNxTaskBar::openFramedWindow(void)
* @return true on success * @return true on success
*/ */
bool CNxTaskBar::setApplicationGeometry(NXWidgets::INxWindow *window) void CTaskbar::setApplicationGeometry(NXWidgets::INxWindow *window)
{ {
// Get the widget control from the toolbar window. The physical window geometry // Get the widget control from the toolbar window. The physical window geometry
// should be the same for all windows. // should be the same for all windows.
NXWidgets::CWidgetControl *control = m_taskbar->getWidgetControl(); NXWidgets::CWidgetControl *control = m_taskbar->getWidgetControl();
// Get the size of the window from the widget control
NXWidgets::CRect rect = control->getWindowBoundingBox();
// Now position and size the application. This will depend on the position and // Now position and size the application. This will depend on the position and
// orientation of the toolbar. // orientation of the toolbar.
nxgl_point_t pos; struct nxgl_point_s pos;
nxgl_size_t size; struct nxgl_size_s size;
#if defined(CONFIG_NXWM_TASKBAR_TOP) #if defined(CONFIG_NXWM_TASKBAR_TOP)
pos.x = 0; pos.x = 0;
@ -402,14 +410,13 @@ bool CNxTaskBar::setApplicationGeometry(NXWidgets::INxWindow *window)
* @return true on success * @return true on success
*/ */
bool CNxTaskBar::createToolbarWindow(void) bool CTaskbar::createToolbarWindow(void)
{ {
// Create a raw window to present the toolbar // Create a raw window to present the toolbar
m_taskbar = openRawWindow(); m_taskbar = openRawWindow();
if (!m_taskbar) if (!m_taskbar)
{ {
message("CNxwm::createGraphics: Failed to create CBgWindow instance\n");
return false; return false;
} }
@ -419,13 +426,13 @@ bool CNxTaskBar::createToolbarWindow(void)
// Get the size of the window from the widget control // Get the size of the window from the widget control
CRect rect = control->getWindowBoundingBox(); NXWidgets::CRect rect = control->getWindowBoundingBox();
// Now position and size the toolbar. This will depend on the position and // Now position and size the toolbar. This will depend on the position and
// orientation of the toolbar. // orientation of the toolbar.
nxgl_point_t pos; struct nxgl_point_s pos;
nxgl_size_t size; struct nxgl_size_s size;
#if defined(CONFIG_NXWM_TASKBAR_TOP) #if defined(CONFIG_NXWM_TASKBAR_TOP)
pos.x = 0; pos.x = 0;
@ -464,7 +471,7 @@ bool CNxTaskBar::createToolbarWindow(void)
/* And raise the window to the top of the display */ /* And raise the window to the top of the display */
m_taskbar->raise(void); m_taskbar->raise();
// Add the start menu's icon to the toolbar // Add the start menu's icon to the toolbar
#warning "Missing logic" #warning "Missing logic"
@ -477,67 +484,34 @@ bool CNxTaskBar::createToolbarWindow(void)
* @return true on success * @return true on success
*/ */
bool CNxTaskBar::createBackgroundWindow(void) bool CTaskbar::createBackgroundWindow(void)
{ {
// Create a raw window to present the background image // Create a raw window to present the background image
m_background = openRawWindow(); m_background = openRawWindow();
if (!m_background) if (!m_background)
{ {
message("CNxwm::createGraphics: Failed to create background window\n");
return false; return false;
} }
// Set the geometry to fit in the application window space // Set the geometry to fit in the application window space
setApplicationGeometry(static_cast<NXWidgets::INxWidget>(m_background)); setApplicationGeometry(static_cast<NXWidgets::INxWindow*>(m_background));
/* And lower the background window to the bottom of the display */ /* And lower the background window to the bottom of the display */
m_background->lower(void); m_background->lower();
return true; return true;
} }
/**
* Create the start window.
*
* @return true on success
*/
bool CNxTaskBar::createStartWindow(void)
{
// Create a raw window to present the background image
m_start = openFramedWindow();
if (!m_start)
{
message("CNxwm::createGraphics: Failed to create start window\n");
return false;
}
// Set the geometry to fit in the application window space
setApplicationGeometry(static_cast<NXWidgets::INxWidget>(m_start));
/* And lower the background window to the top of the display */
m_start->raise(void);
// Now create the start up application
#warning "Missing logic"
// m_start
return true;
}
/** /**
* Handle a mouse button click event. * Handle a mouse button click event.
* *
* @param e The event data. * @param e The event data.
*/ */
void CNxApplicationWindow::handleClickEvent(const NXWidgets::CWidgetEventArgs &e) void CTaskbar::handleClickEvent(const NXWidgets::CWidgetEventArgs &e)
{ {
#warning "Missing logic" #warning "Missing logic"
} }

View File

@ -49,7 +49,7 @@
#include "nxconfig.hxx" #include "nxconfig.hxx"
#include "crlepalettebitmap.hxx" #include "crlepalettebitmap.hxx"
#include "glyphs.hxx" #include "nxwmglyphs.hxx"
/******************************************************************************************** /********************************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
@ -121,7 +121,7 @@ static const nxgl_mxpixel_t g_minimizeLut[BITMAP_NLUTCODES] =
# error "Unsupport pixel format" # error "Unsupport pixel format"
#endif #endif
static const struct SRlePaletteBitmapEntry g_minimizeRleEntries[] = static const struct NXWidgets::SRlePaletteBitmapEntry g_minimizeRleEntries[] =
{ {
{ 25, 0}, /* Row 0 */ { 25, 0}, /* Row 0 */
{ 25, 0}, /* Row 1 */ { 25, 0}, /* Row 1 */
@ -170,7 +170,7 @@ static const struct SRlePaletteBitmapEntry g_minimizeRleEntries[] =
* Public Bitmap Structure Defintions * Public Bitmap Structure Defintions
********************************************************************************************/ ********************************************************************************************/
const struct SRlePaletteBitmap NXWidgets::g_minimizeBitmap = const struct NXWidgets::SRlePaletteBitmap g_minimizeBitmap =
{ {
CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel
CONFIG_NXWIDGETS_FMT, // fmt - Color format CONFIG_NXWIDGETS_FMT, // fmt - Color format

View File

@ -49,7 +49,8 @@
#include "nxconfig.hxx" #include "nxconfig.hxx"
#include "crlepalettebitmap.hxx" #include "crlepalettebitmap.hxx"
#include "glyphs.hxx"
#include "nxwmglyphs.hxx"
/******************************************************************************************** /********************************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
@ -125,7 +126,7 @@ static const nxgl_mxpixel_t g_nshLut[BITMAP_NLUTCODES] =
# error "Unsupport pixel format" # error "Unsupport pixel format"
#endif #endif
static const struct SRlePaletteBitmapEntry g_nshRleEntries[] = static const struct NXWidgets::SRlePaletteBitmapEntry g_nshRleEntries[] =
{ {
{ 11, 0}, { 1, 1}, { 1, 2}, { 1, 1}, { 11, 0}, /* Row 0 */ { 11, 0}, { 1, 1}, { 1, 2}, { 1, 1}, { 11, 0}, /* Row 0 */
{ 11, 0}, { 3, 3}, { 11, 0}, /* Row 1 */ { 11, 0}, { 3, 3}, { 11, 0}, /* Row 1 */
@ -195,7 +196,7 @@ static const struct SRlePaletteBitmapEntry g_nshRleEntries[] =
* Public Bitmap Structure Defintions * Public Bitmap Structure Defintions
********************************************************************************************/ ********************************************************************************************/
const struct SRlePaletteBitmap NXWidgets::g_nshBitmap = const struct NXWidgets::SRlePaletteBitmap g_nshBitmap =
{ {
CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel
CONFIG_NXWIDGETS_FMT, // fmt - Color format CONFIG_NXWIDGETS_FMT, // fmt - Color format

View File

@ -49,7 +49,8 @@
#include "nxconfig.hxx" #include "nxconfig.hxx"
#include "crlepalettebitmap.hxx" #include "crlepalettebitmap.hxx"
#include "glyphs.hxx"
#include "nxwmglyphs.hxx"
/******************************************************************************************** /********************************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
@ -125,7 +126,7 @@ static const nxgl_mxpixel_t g_startLut[BITMAP_NLUTCODES] =
# error "Unsupport pixel format" # error "Unsupport pixel format"
#endif #endif
static const struct SRlePaletteBitmapEntry g_startRleEntries[] = static const struct NXWidgets::SRlePaletteBitmapEntry g_startRleEntries[] =
{ {
{ 7, 0}, { 1, 1}, { 3, 2}, { 1, 3}, { 4, 2}, { 1, 4}, { 1, 5}, { 7, 0}, /* Row 0 */ { 7, 0}, { 1, 1}, { 3, 2}, { 1, 3}, { 4, 2}, { 1, 4}, { 1, 5}, { 7, 0}, /* Row 0 */
{ 5, 0}, { 1, 6}, { 2, 7}, { 1, 8}, { 1, 9}, { 2, 1}, { 1, 10}, { 2, 9}, /* Row 1 */ { 5, 0}, { 1, 6}, { 2, 7}, { 1, 8}, { 1, 9}, { 2, 1}, { 1, 10}, { 2, 9}, /* Row 1 */
@ -196,7 +197,7 @@ static const struct SRlePaletteBitmapEntry g_startRleEntries[] =
* Public Bitmap Structure Defintions * Public Bitmap Structure Defintions
********************************************************************************************/ ********************************************************************************************/
const struct SRlePaletteBitmap NXWidgets::g_startBitmap = const struct NXWidgets::SRlePaletteBitmap g_startBitmap =
{ {
CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel
CONFIG_NXWIDGETS_FMT, // fmt - Color format CONFIG_NXWIDGETS_FMT, // fmt - Color format

View File

@ -49,7 +49,8 @@
#include "nxconfig.hxx" #include "nxconfig.hxx"
#include "crlepalettebitmap.hxx" #include "crlepalettebitmap.hxx"
#include "glyphs.hxx"
#include "nxwmglyphs.hxx"
/******************************************************************************************** /********************************************************************************************
* Pre-Processor Definitions * Pre-Processor Definitions
@ -136,7 +137,7 @@ static const nxgl_mxpixel_t g_stopLut[BITMAP_NLUTCODES] =
# error "Unsupport pixel format" # error "Unsupport pixel format"
#endif #endif
static const struct SRlePaletteBitmapEntry g_stopRleEntries[] = static const struct NXWidgets::SRlePaletteBitmapEntry g_stopRleEntries[] =
{ {
{ 25, 0}, /* Row 0 */ { 25, 0}, /* Row 0 */
{ 25, 0}, /* Row 1 */ { 25, 0}, /* Row 1 */
@ -208,7 +209,7 @@ static const struct SRlePaletteBitmapEntry g_stopRleEntries[] =
* Public Bitmap Structure Defintions * Public Bitmap Structure Defintions
********************************************************************************************/ ********************************************************************************************/
const struct SRlePaletteBitmap NXWidgets::g_stopBitmap = const struct NXWidgets::SRlePaletteBitmap g_stopBitmap =
{ {
CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel CONFIG_NXWIDGETS_BPP, // bpp - Bits per pixel
CONFIG_NXWIDGETS_FMT, // fmt - Color format CONFIG_NXWIDGETS_FMT, // fmt - Color format