cleaning, moved toolbar mode resource here

This commit is contained in:
fluxgen 2003-06-24 16:27:18 +00:00
parent 11a0b784b3
commit 44fbcc447e
2 changed files with 84 additions and 27 deletions

View file

@ -20,7 +20,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: ToolbarHandler.cc,v 1.16 2003/06/24 10:37:39 fluxgen Exp $
// $Id: ToolbarHandler.cc,v 1.17 2003/06/24 16:27:18 fluxgen Exp $
/**
* The ToolbarHandler class acts as a rough interface to the toolbar.
@ -41,6 +41,58 @@
#include "IntResMenuItem.hh"
#include "BoolMenuItem.hh"
#include <string>
using namespace std;
template<>
void FbTk::Resource<ToolbarHandler::ToolbarMode>::
setFromString(const char *strval) {
if (strcasecmp(strval, "Off") == 0)
m_value = ToolbarHandler::OFF;
else if (strcasecmp(strval, "None") == 0)
m_value = ToolbarHandler::NONE;
else if (strcasecmp(strval, "Icons") == 0)
m_value = ToolbarHandler::ICONS;
else if (strcasecmp(strval, "WorkspaceIcons") == 0)
m_value = ToolbarHandler::WORKSPACEICONS;
else if (strcasecmp(strval, "Workspace") == 0)
m_value = ToolbarHandler::WORKSPACE;
else if (strcasecmp(strval, "AllWindows") == 0)
m_value = ToolbarHandler::ALLWINDOWS;
else
setDefaultValue();
}
template<>
string FbTk::Resource<ToolbarHandler::ToolbarMode>::
getString() {
switch (m_value) {
case ToolbarHandler::OFF:
return string("Off");
break;
case ToolbarHandler::NONE:
return string("None");
break;
case ToolbarHandler::LASTMODE:
case ToolbarHandler::ICONS:
return string("Icons");
break;
case ToolbarHandler::WORKSPACEICONS:
return string("WorkspaceIcons");
break;
case ToolbarHandler::WORKSPACE:
return string("Workspace");
break;
case ToolbarHandler::ALLWINDOWS:
return string("AllWindows");
break;
}
// default string
return string("Icons");
}
namespace {
class ToolbarModeMenuItem : public FbTk::MenuItem {
@ -50,7 +102,7 @@ public:
FbTk::RefCount<FbTk::Command> &cmd):
FbTk::MenuItem(label, cmd), m_handler(handler), m_mode(mode) {
}
bool isEnabled() const { return m_handler.getMode() != m_mode; }
bool isEnabled() const { return m_handler.mode() != m_mode; }
void click(int button, int time) {
m_handler.setMode(m_mode);
FbTk::MenuItem::click(button, time);
@ -88,26 +140,29 @@ void setupModeMenu(FbTk::Menu &menu, ToolbarHandler &handler) {
}; // end anonymous namespace
ToolbarHandler::ToolbarHandler(BScreen &screen, ToolbarMode mode)
: m_screen(screen), m_mode(mode), m_toolbar(0), m_current_workspace(0),
ToolbarHandler::ToolbarHandler(BScreen &screen)
: m_screen(screen),
m_rc_mode(screen.resourceManager(), ToolbarHandler::ICONS,
screen.name() + ".toolbar.mode", screen.altName() + ".Toolbar.Mode"),
m_toolbar(0),
m_current_workspace(0),
m_modemenu(*screen.menuTheme(),
screen.screenNumber(), screen.imageControl()),
m_toolbarmenu(*screen.menuTheme(),
screen.screenNumber(), screen.imageControl())
{
screen.screenNumber(), screen.imageControl()) {
m_modemenu.setInternalMenu();
m_toolbarmenu.setInternalMenu();
setupModeMenu(m_modemenu, *this);
setMode(mode, false); // the atomhandler part will initialise it shortly
setMode(*m_rc_mode, false); // the atomhandler part will initialise it shortly
}
void ToolbarHandler::setMode(ToolbarMode mode, bool initialise) {
if (mode < 0 || mode >= LASTMODE || (mode == m_mode && initialise))
void ToolbarHandler::setMode(ToolbarMode newmode, bool initialise) {
if (newmode < 0 || newmode >= LASTMODE || (newmode == mode() && initialise))
return;
m_screen.saveToolbarMode(mode);
if (mode == OFF) {
m_mode = mode;
*m_rc_mode = newmode;
if (newmode == OFF) {
m_toolbarmenu.removeAll();
//TODO: nls
m_toolbarmenu.insert("Mode...", &m_modemenu);
@ -127,7 +182,7 @@ void ToolbarHandler::setMode(ToolbarMode mode, bool initialise) {
}
if (mode == NONE) {
if (newmode == NONE) {
// disableIconBar will clean up
m_toolbar->disableIconBar();
} else {
@ -136,8 +191,7 @@ void ToolbarHandler::setMode(ToolbarMode mode, bool initialise) {
m_toolbar->enableIconBar();
m_toolbar->delAllIcons();
}
// reset Toolbar, and reload it (initForScreen)
m_mode = mode;
if (initialise)
initForScreen(m_screen);
}
@ -145,7 +199,7 @@ void ToolbarHandler::setMode(ToolbarMode mode, bool initialise) {
void ToolbarHandler::initForScreen(BScreen &screen) {
if (&m_screen != &screen)
return;
switch (m_mode) {
switch (mode()) {
case OFF:
break;
case NONE:
@ -207,7 +261,7 @@ void ToolbarHandler::setupWindow(FluxboxWindow &win) {
if (&win.screen() != &m_screen)
return;
switch (m_mode) {
switch (mode()) {
case OFF:
case NONE:
break;
@ -236,7 +290,7 @@ void ToolbarHandler::updateWindowClose(FluxboxWindow &win) {
return;
// check status of window (in current workspace, etc) and remove if necessary
switch (m_mode) {
switch (mode()) {
case OFF:
case NONE:
break;
@ -265,7 +319,7 @@ void ToolbarHandler::updateState(FluxboxWindow &win) {
return;
// this function only relevant for icons
switch (m_mode) {
switch (mode()) {
case OFF:
case NONE:
case WORKSPACE:
@ -296,7 +350,9 @@ void ToolbarHandler::updateWorkspace(FluxboxWindow &win) {
return;
// don't care about current workspace except if in workspace mode
if (!(m_mode == WORKSPACE || (m_mode == WORKSPACEICONS && win.isIconic()))) return;
if (!(mode() == WORKSPACE ||
(mode() == WORKSPACEICONS && win.isIconic())))
return;
if (win.workspaceNumber() == m_current_workspace) {
//!! TODO
@ -317,7 +373,7 @@ void ToolbarHandler::updateCurrentWorkspace(BScreen &screen) {
return;
// if only displaying current workspace, update list
// otherwise ignore it
if (m_mode != WORKSPACE && m_mode != WORKSPACEICONS)
if (mode() != WORKSPACE && mode() != WORKSPACEICONS)
return;
m_toolbar->delAllIcons();
initForScreen(m_screen);

View file

@ -20,7 +20,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: ToolbarHandler.hh,v 1.3 2003/06/18 13:35:36 fluxgen Exp $
// $Id: ToolbarHandler.hh,v 1.4 2003/06/24 16:27:18 fluxgen Exp $
#ifndef TOOLBARHANDLER_HH
#define TOOLBARHANDLER_HH
@ -28,6 +28,7 @@
#include "AtomHandler.hh"
#include "Menu.hh"
#include "Toolbar.hh"
#include "Resource.hh"
class BScreen;
class FluxboxWindow;
@ -44,14 +45,14 @@ public:
LASTMODE
};
ToolbarHandler(BScreen &screen, ToolbarMode mode);
explicit ToolbarHandler(BScreen &screen);
~ToolbarHandler() { }
void setMode(ToolbarMode mode, bool initialise = true);
ToolbarMode getMode() { return m_mode; };
ToolbarMode mode() const { return *m_rc_mode; };
inline const Toolbar *getToolbar() const { return m_toolbar.get(); }
inline Toolbar *getToolbar() { return m_toolbar.get(); }
inline const Toolbar *toolbar() const { return m_toolbar.get(); }
inline Toolbar *toolbar() { return m_toolbar.get(); }
void initForScreen(BScreen &screen);
@ -84,7 +85,7 @@ public:
private:
BScreen &m_screen;
ToolbarMode m_mode;
FbTk::Resource<ToolbarMode> m_rc_mode;
std::auto_ptr<Toolbar> m_toolbar;
unsigned int m_current_workspace;