// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
/*
* Copyright (C) 2011 Canonical Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* Authored by: Mirco Müller
*/
#ifndef PLACES_VSCROLLBAR_H
#define PLACES_VSCROLLBAR_H
#include "Nux/Nux.h"
#include "Nux/View.h"
#include "Nux/ScrollView.h"
#include "Nux/BaseWindow.h"
#include "Nux/VScrollBar.h"
#include "NuxImage/CairoGraphics.h"
typedef enum
{
STATE_OFF = 0,
STATE_OVER,
STATE_DOWN,
STATE_LAST
} State;
class PlacesVScrollBar : public nux::VScrollBar
{
public:
PlacesVScrollBar (NUX_FILE_LINE_PROTO);
~PlacesVScrollBar ();
void RecvMouseEnter (int x,
int y,
unsigned long button_flags,
unsigned long key_flags);
void RecvMouseLeave (int x,
int y,
unsigned long button_flags,
unsigned long key_flags);
void RecvMouseDown (int x,
int y,
unsigned long button_flags,
unsigned long key_flags);
void RecvMouseUp (int x,
int y,
unsigned long button_flags,
unsigned long key_flags);
void RecvMouseDrag (int x,
int y,
int dx,
int dy,
unsigned long button_flags,
unsigned long key_flags);
protected:
virtual void PreLayoutManagement ();
virtual long PostLayoutManagement (long LayoutResult);
void Draw (nux::GraphicsEngine& gfxContext,
bool forceDraw);
private:
void UpdateTexture ();
private:
bool _drag;
bool _entered;
State _state;
nux::BaseTexture* _slider[STATE_LAST];
nux::BaseTexture* _track;
};
#endif // PLACES_VSCROLLBAR_H