mirror of
https://github.com/clangen/musikcube.git
synced 2025-02-06 12:39:54 +00:00
Added a 'cursespp' namespace, and removed all 'using' statements from
header files in the app source.
This commit is contained in:
parent
c6c12cbab6
commit
dcb3d6bfb3
@ -36,55 +36,51 @@
|
|||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <core/sdk/IBuffer.h>
|
#include <core/sdk/IBuffer.h>
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
namespace musik { namespace core { namespace audio {
|
namespace musik { namespace core { namespace audio {
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
class Buffer;
|
class Buffer;
|
||||||
class Stream;
|
class Stream;
|
||||||
typedef std::shared_ptr<Buffer> BufferPtr;
|
typedef std::shared_ptr<Buffer> BufferPtr;
|
||||||
|
|
||||||
//////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
///\brief
|
///\brief
|
||||||
///Buffer is the only implementation of the IBuffer and is used
|
///Buffer is the only implementation of the IBuffer and is used
|
||||||
///in the audioengine to pass along the raw audio data
|
///in the audioengine to pass along the raw audio data
|
||||||
//////////////////////////////////////////
|
//////////////////////////////////////////
|
||||||
class Buffer : public IBuffer {
|
class Buffer : public IBuffer {
|
||||||
private:
|
private:
|
||||||
Buffer(void);
|
Buffer(void);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static BufferPtr Create();
|
static BufferPtr Create();
|
||||||
~Buffer(void);
|
~Buffer(void);
|
||||||
|
|
||||||
virtual long SampleRate() const;
|
virtual long SampleRate() const;
|
||||||
virtual void SetSampleRate(long sampleRate);
|
virtual void SetSampleRate(long sampleRate);
|
||||||
virtual int Channels() const;
|
virtual int Channels() const;
|
||||||
virtual void SetChannels(int channels);
|
virtual void SetChannels(int channels);
|
||||||
virtual float* BufferPointer() const;
|
virtual float* BufferPointer() const;
|
||||||
virtual long Samples() const;
|
virtual long Samples() const;
|
||||||
virtual void SetSamples(long samples);
|
virtual void SetSamples(long samples);
|
||||||
virtual long Bytes() const;
|
virtual long Bytes() const;
|
||||||
virtual double Position() const;
|
virtual double Position() const;
|
||||||
|
|
||||||
bool Append(BufferPtr appendBuffer);
|
bool Append(BufferPtr appendBuffer);
|
||||||
void CopyFormat(BufferPtr fromBuffer);
|
void CopyFormat(BufferPtr fromBuffer);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void ResizeBuffer();
|
void ResizeBuffer();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
float *buffer;
|
float *buffer;
|
||||||
long sampleSize;
|
long sampleSize;
|
||||||
long internalBufferSize;
|
long internalBufferSize;
|
||||||
long sampleRate;
|
long sampleRate;
|
||||||
int channels;
|
int channels;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class Stream;
|
friend class Stream;
|
||||||
double position;
|
double position;
|
||||||
};
|
};
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
} } }
|
} } }
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
@ -45,11 +45,11 @@
|
|||||||
|
|
||||||
namespace musik { namespace core { namespace audio {
|
namespace musik { namespace core { namespace audio {
|
||||||
|
|
||||||
class Stream;
|
class Stream;
|
||||||
class Player;
|
class Player;
|
||||||
typedef std::shared_ptr<Stream> StreamPtr;
|
typedef std::shared_ptr<Stream> StreamPtr;
|
||||||
|
|
||||||
class Stream {
|
class Stream {
|
||||||
public:
|
public:
|
||||||
static StreamPtr Create(unsigned int options=0);
|
static StreamPtr Create(unsigned int options=0);
|
||||||
|
|
||||||
|
@ -59,13 +59,10 @@
|
|||||||
|
|
||||||
#define IDLE_TIMEOUT_MS 0
|
#define IDLE_TIMEOUT_MS 0
|
||||||
|
|
||||||
using musik::core::audio::Transport;
|
using namespace musik::core;
|
||||||
using musik::core::LibraryFactory;
|
using namespace musik::core::audio;
|
||||||
|
using namespace musik::box;
|
||||||
using musik::box::LibraryLayout;
|
using namespace cursespp;
|
||||||
using musik::box::MainLayout;
|
|
||||||
using musik::box::PlaybackService;
|
|
||||||
using musik::box::GlobalHotkeys;
|
|
||||||
|
|
||||||
struct WindowState {
|
struct WindowState {
|
||||||
ILayoutPtr layout;
|
ILayoutPtr layout;
|
||||||
|
@ -15,6 +15,13 @@ using namespace musik::core::library::constants;
|
|||||||
|
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
|
||||||
|
using musik::core::LibraryPtr;
|
||||||
|
using musik::core::audio::Transport;
|
||||||
|
|
||||||
|
using cursespp::LayoutBase;
|
||||||
|
using cursespp::ListWindow;
|
||||||
|
using cursespp::Screen;
|
||||||
|
|
||||||
LibraryLayout::LibraryLayout(PlaybackService& playback, LibraryPtr library)
|
LibraryLayout::LibraryLayout(PlaybackService& playback, LibraryPtr library)
|
||||||
: LayoutBase()
|
: LayoutBase()
|
||||||
, playback(playback)
|
, playback(playback)
|
||||||
|
@ -12,14 +12,14 @@
|
|||||||
|
|
||||||
#include <sigslot/sigslot.h>
|
#include <sigslot/sigslot.h>
|
||||||
|
|
||||||
using musik::core::LibraryPtr;
|
|
||||||
using musik::core::audio::Transport;
|
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class LibraryLayout : public LayoutBase, public sigslot::has_slots<> {
|
class LibraryLayout : public cursespp::LayoutBase, public sigslot::has_slots<> {
|
||||||
public:
|
public:
|
||||||
LibraryLayout(PlaybackService& playback, LibraryPtr library);
|
LibraryLayout(
|
||||||
|
PlaybackService& playback,
|
||||||
|
musik::core::LibraryPtr library);
|
||||||
|
|
||||||
virtual ~LibraryLayout();
|
virtual ~LibraryLayout();
|
||||||
|
|
||||||
virtual void Layout();
|
virtual void Layout();
|
||||||
@ -38,8 +38,8 @@ namespace musik {
|
|||||||
ListWindow *view, size_t selectedIndex);
|
ListWindow *view, size_t selectedIndex);
|
||||||
|
|
||||||
PlaybackService& playback;
|
PlaybackService& playback;
|
||||||
Transport& transport;
|
musik::core::audio::Transport& transport;
|
||||||
LibraryPtr library;
|
musik::core::LibraryPtr library;
|
||||||
std::shared_ptr<CategoryListView> categoryList;
|
std::shared_ptr<CategoryListView> categoryList;
|
||||||
std::shared_ptr<TrackListView> trackList;
|
std::shared_ptr<TrackListView> trackList;
|
||||||
std::shared_ptr<TransportWindow> transportView;
|
std::shared_ptr<TransportWindow> transportView;
|
||||||
|
@ -8,7 +8,10 @@
|
|||||||
#define MESSAGE_TYPE_UPDATE 1001
|
#define MESSAGE_TYPE_UPDATE 1001
|
||||||
#define UPDATE_INTERVAL_MS 1000
|
#define UPDATE_INTERVAL_MS 1000
|
||||||
|
|
||||||
|
using namespace musik::core;
|
||||||
|
using namespace musik::core::audio;
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
MainLayout::MainLayout(Transport& transport, LibraryPtr library)
|
MainLayout::MainLayout(Transport& transport, LibraryPtr library)
|
||||||
: LayoutBase() {
|
: LayoutBase() {
|
||||||
|
@ -13,18 +13,19 @@
|
|||||||
#include <core/playback/Transport.h>
|
#include <core/playback/Transport.h>
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
using musik::core::audio::Transport;
|
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class MainLayout : public LayoutBase {
|
class MainLayout : public cursespp::LayoutBase {
|
||||||
public:
|
public:
|
||||||
MainLayout(Transport& transport, LibraryPtr library);
|
MainLayout(
|
||||||
|
musik::core::audio::Transport& transport,
|
||||||
|
musik::core::LibraryPtr library);
|
||||||
|
|
||||||
~MainLayout();
|
~MainLayout();
|
||||||
|
|
||||||
virtual void Layout();
|
virtual void Layout();
|
||||||
virtual void Show();
|
virtual void Show();
|
||||||
virtual void ProcessMessage(IMessage &message);
|
virtual void ProcessMessage(cursespp::IMessage &message);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void UpdateWindows();
|
void UpdateWindows();
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
using musik::core::db::Statement;
|
using musik::core::db::Statement;
|
||||||
using musik::core::db::Row;
|
using musik::core::db::Row;
|
||||||
|
|
||||||
|
using namespace musik::core::db;
|
||||||
using namespace musik::core::library::constants;
|
using namespace musik::core::library::constants;
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
|
||||||
|
@ -4,12 +4,9 @@
|
|||||||
#include <core/db/Connection.h>
|
#include <core/db/Connection.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
using musik::core::query::QueryBase;
|
|
||||||
using musik::core::db::Connection;
|
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class CategoryListViewQuery : public QueryBase {
|
class CategoryListViewQuery : public musik::core::query::QueryBase {
|
||||||
public:
|
public:
|
||||||
struct Result {
|
struct Result {
|
||||||
std::string displayValue;
|
std::string displayValue;
|
||||||
@ -27,7 +24,7 @@ namespace musik {
|
|||||||
virtual ResultList GetResult();
|
virtual ResultList GetResult();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool OnRun(Connection &db);
|
virtual bool OnRun(musik::core::db::Connection &db);
|
||||||
|
|
||||||
std::string trackField;
|
std::string trackField;
|
||||||
ResultList result;
|
ResultList result;
|
||||||
|
@ -13,6 +13,7 @@ using musik::core::TrackPtr;
|
|||||||
using musik::core::LibraryTrack;
|
using musik::core::LibraryTrack;
|
||||||
|
|
||||||
using namespace musik::core::library::constants;
|
using namespace musik::core::library::constants;
|
||||||
|
using namespace musik::core::db;
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
|
||||||
SingleTrackQuery::SingleTrackQuery(const std::string& filename) {
|
SingleTrackQuery::SingleTrackQuery(const std::string& filename) {
|
||||||
|
@ -5,26 +5,21 @@
|
|||||||
#include <core/library/track/Track.h>
|
#include <core/library/track/Track.h>
|
||||||
#include "CategoryListViewQuery.h"
|
#include "CategoryListViewQuery.h"
|
||||||
|
|
||||||
using musik::core::query::QueryBase;
|
|
||||||
using musik::core::db::Connection;
|
|
||||||
using musik::core::TrackPtr;
|
|
||||||
using musik::core::LibraryPtr;
|
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class SingleTrackQuery : public QueryBase {
|
class SingleTrackQuery : public musik::core::query::QueryBase {
|
||||||
public:
|
public:
|
||||||
SingleTrackQuery(const std::string& path);
|
SingleTrackQuery(const std::string& path);
|
||||||
virtual ~SingleTrackQuery();
|
virtual ~SingleTrackQuery();
|
||||||
|
|
||||||
virtual std::string Name() { return "SingleTrackQuery"; }
|
virtual std::string Name() { return "SingleTrackQuery"; }
|
||||||
virtual TrackPtr GetResult();
|
virtual musik::core::TrackPtr GetResult();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool OnRun(Connection &db);
|
virtual bool OnRun(musik::core::db::Connection &db);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TrackPtr result;
|
musik::core::TrackPtr result;
|
||||||
std::string filename;
|
std::string filename;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,9 @@ using musik::core::db::Statement;
|
|||||||
using musik::core::db::Row;
|
using musik::core::db::Row;
|
||||||
using musik::core::TrackPtr;
|
using musik::core::TrackPtr;
|
||||||
using musik::core::LibraryTrack;
|
using musik::core::LibraryTrack;
|
||||||
|
using musik::core::LibraryPtr;
|
||||||
|
|
||||||
|
using namespace musik::core::db;
|
||||||
using namespace musik::core::library::constants;
|
using namespace musik::core::library::constants;
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
|
||||||
|
@ -5,18 +5,17 @@
|
|||||||
#include <core/library/track/Track.h>
|
#include <core/library/track/Track.h>
|
||||||
#include "CategoryListViewQuery.h"
|
#include "CategoryListViewQuery.h"
|
||||||
|
|
||||||
using musik::core::query::QueryBase;
|
|
||||||
using musik::core::db::Connection;
|
|
||||||
using musik::core::TrackPtr;
|
|
||||||
using musik::core::LibraryPtr;
|
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class TrackListViewQuery : public QueryBase {
|
class TrackListViewQuery : public musik::core::query::QueryBase {
|
||||||
public:
|
public:
|
||||||
typedef std::shared_ptr<std::vector<TrackPtr>> Result;
|
typedef std::shared_ptr<
|
||||||
|
std::vector<musik::core::TrackPtr>> Result;
|
||||||
|
|
||||||
|
TrackListViewQuery(
|
||||||
|
musik::core::LibraryPtr library,
|
||||||
|
const std::string& column, DBID id);
|
||||||
|
|
||||||
TrackListViewQuery(LibraryPtr library, const std::string& column, DBID id);
|
|
||||||
virtual ~TrackListViewQuery();
|
virtual ~TrackListViewQuery();
|
||||||
|
|
||||||
std::string Name() { return "TrackListViewQuery"; }
|
std::string Name() { return "TrackListViewQuery"; }
|
||||||
@ -24,12 +23,12 @@ namespace musik {
|
|||||||
virtual Result GetResult();
|
virtual Result GetResult();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool OnRun(Connection &db);
|
virtual bool OnRun(musik::core::db::Connection &db);
|
||||||
|
|
||||||
Result result;
|
Result result;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LibraryPtr library;
|
musik::core::LibraryPtr library;
|
||||||
std::string column;
|
std::string column;
|
||||||
DBID id;
|
DBID id;
|
||||||
};
|
};
|
||||||
|
@ -15,10 +15,6 @@ using namespace musik::box;
|
|||||||
#define URI_AT_INDEX(x) this->playlist.at(x)->URI()
|
#define URI_AT_INDEX(x) this->playlist.at(x)->URI()
|
||||||
#define PREVIOUS_GRACE_PERIOD 2.0f
|
#define PREVIOUS_GRACE_PERIOD 2.0f
|
||||||
|
|
||||||
class StreamEvent : public IMessage {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
PlaybackService::PlaybackService(Transport& transport)
|
PlaybackService::PlaybackService(Transport& transport)
|
||||||
: transport(transport) {
|
: transport(transport) {
|
||||||
transport.StreamEvent.connect(this, &PlaybackService::OnStreamEvent);
|
transport.StreamEvent.connect(this, &PlaybackService::OnStreamEvent);
|
||||||
|
@ -10,6 +10,9 @@
|
|||||||
using musik::core::TrackPtr;
|
using musik::core::TrackPtr;
|
||||||
using musik::core::audio::Transport;
|
using musik::core::audio::Transport;
|
||||||
|
|
||||||
|
using cursespp::IMessageTarget;
|
||||||
|
using cursespp::IMessage;
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class PlaybackService : public IMessageTarget, public sigslot::has_slots<> {
|
class PlaybackService : public IMessageTarget, public sigslot::has_slots<> {
|
||||||
|
@ -5,22 +5,22 @@
|
|||||||
#include <app/service/PlaybackService.h>
|
#include <app/service/PlaybackService.h>
|
||||||
#include <core/library/ILibrary.h>
|
#include <core/library/ILibrary.h>
|
||||||
|
|
||||||
using musik::core::audio::Transport;
|
|
||||||
using musik::core::LibraryPtr;
|
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class GlobalHotkeys {
|
class GlobalHotkeys {
|
||||||
public:
|
public:
|
||||||
GlobalHotkeys(PlaybackService& playback, LibraryPtr library);
|
GlobalHotkeys(
|
||||||
|
PlaybackService& playback,
|
||||||
|
musik::core::LibraryPtr library);
|
||||||
|
|
||||||
~GlobalHotkeys(); /* non-virtual; do not use as a base class */
|
~GlobalHotkeys(); /* non-virtual; do not use as a base class */
|
||||||
|
|
||||||
bool Handle(int64 ch);
|
bool Handle(int64 ch);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PlaybackService& playback;
|
PlaybackService& playback;
|
||||||
Transport& transport;
|
musik::core::audio::Transport& transport;
|
||||||
LibraryPtr library;
|
musik::core::LibraryPtr library;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,6 @@
|
|||||||
|
|
||||||
#include <core/playback/Transport.h>
|
#include <core/playback/Transport.h>
|
||||||
|
|
||||||
using musik::core::audio::Transport;
|
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
namespace text {
|
namespace text {
|
||||||
|
@ -18,6 +18,7 @@ using musik::core::LibraryPtr;
|
|||||||
using musik::core::IQuery;
|
using musik::core::IQuery;
|
||||||
using namespace musik::core::library::constants;
|
using namespace musik::core::library::constants;
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
using cursespp::SingleLineEntry;
|
||||||
|
|
||||||
#define WINDOW_MESSAGE_QUERY_COMPLETED 1002
|
#define WINDOW_MESSAGE_QUERY_COMPLETED 1002
|
||||||
|
|
||||||
|
@ -13,6 +13,11 @@
|
|||||||
using musik::core::QueryPtr;
|
using musik::core::QueryPtr;
|
||||||
using musik::core::LibraryPtr;
|
using musik::core::LibraryPtr;
|
||||||
|
|
||||||
|
using cursespp::IMessage;
|
||||||
|
using cursespp::ListWindow;
|
||||||
|
using cursespp::IScrollAdapter;
|
||||||
|
using cursespp::ScrollAdapterBase;
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class CategoryListView : public ListWindow, public sigslot::has_slots<> {
|
class CategoryListView : public ListWindow, public sigslot::has_slots<> {
|
||||||
|
@ -28,7 +28,9 @@ using musik::core::LibraryPtr;
|
|||||||
using musik::core::TrackPtr;
|
using musik::core::TrackPtr;
|
||||||
using musik::core::QueryPtr;
|
using musik::core::QueryPtr;
|
||||||
|
|
||||||
|
using namespace musik::core::audio;
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
bool tostr(T& t, const std::string& s) {
|
bool tostr(T& t, const std::string& s) {
|
||||||
|
@ -7,18 +7,18 @@
|
|||||||
#include <core/library/LibraryFactory.h>
|
#include <core/library/LibraryFactory.h>
|
||||||
#include "OutputWindow.h"
|
#include "OutputWindow.h"
|
||||||
|
|
||||||
using musik::core::LibraryPtr;
|
|
||||||
using musik::core::QueryPtr;
|
|
||||||
using namespace musik::core::audio;
|
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class CommandWindow : public Window, public IInput, public sigslot::has_slots<> {
|
class CommandWindow :
|
||||||
|
public cursespp::Window,
|
||||||
|
public cursespp::IInput,
|
||||||
|
public sigslot::has_slots<>
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
CommandWindow(
|
CommandWindow(
|
||||||
IWindow *parent,
|
cursespp::IWindow *parent,
|
||||||
Transport& transport,
|
musik::core::audio::Transport& transport,
|
||||||
LibraryPtr library,
|
musik::core::LibraryPtr library,
|
||||||
OutputWindow& output);
|
OutputWindow& output);
|
||||||
|
|
||||||
~CommandWindow();
|
~CommandWindow();
|
||||||
@ -41,8 +41,8 @@ namespace musik {
|
|||||||
char* buffer;
|
char* buffer;
|
||||||
int bufferPosition;
|
int bufferPosition;
|
||||||
OutputWindow* output;
|
OutputWindow* output;
|
||||||
Transport* transport;
|
musik::core::audio::Transport* transport;
|
||||||
LibraryPtr library;
|
musik::core::LibraryPtr library;
|
||||||
bool paused;
|
bool paused;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <cursespp/Screen.h>
|
#include <cursespp/Screen.h>
|
||||||
|
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
typedef IScrollAdapter::IEntry IEntry;
|
typedef IScrollAdapter::IEntry IEntry;
|
||||||
|
|
||||||
|
@ -11,15 +11,15 @@
|
|||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class LogWindow : public ScrollableWindow, public sigslot::has_slots<> {
|
class LogWindow : public cursespp::ScrollableWindow, public sigslot::has_slots<> {
|
||||||
public:
|
public:
|
||||||
LogWindow(IWindow *parent = NULL);
|
LogWindow(cursespp::IWindow *parent = NULL);
|
||||||
~LogWindow();
|
~LogWindow();
|
||||||
|
|
||||||
void Update();
|
void Update();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual IScrollAdapter& GetScrollAdapter();
|
virtual cursespp::IScrollAdapter& GetScrollAdapter();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnLogged(
|
void OnLogged(
|
||||||
@ -35,7 +35,7 @@ namespace musik {
|
|||||||
|
|
||||||
boost::mutex pendingMutex;
|
boost::mutex pendingMutex;
|
||||||
std::vector<LogEntry*> pending;
|
std::vector<LogEntry*> pending;
|
||||||
SimpleScrollAdapter* adapter;
|
cursespp::SimpleScrollAdapter* adapter;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <cursespp/MultiLineEntry.h>
|
#include <cursespp/MultiLineEntry.h>
|
||||||
|
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
typedef IScrollAdapter::EntryPtr EntryPtr;
|
typedef IScrollAdapter::EntryPtr EntryPtr;
|
||||||
|
|
||||||
|
@ -7,16 +7,16 @@
|
|||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class OutputWindow : public ScrollableWindow {
|
class OutputWindow : public cursespp::ScrollableWindow {
|
||||||
public:
|
public:
|
||||||
OutputWindow(IWindow *parent = NULL);
|
OutputWindow(cursespp::IWindow *parent = NULL);
|
||||||
~OutputWindow();
|
~OutputWindow();
|
||||||
|
|
||||||
void WriteLine(const std::string& line, int64 attrs = -1);
|
void WriteLine(const std::string& line, int64 attrs = -1);
|
||||||
virtual IScrollAdapter& GetScrollAdapter();
|
virtual cursespp::IScrollAdapter& GetScrollAdapter();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SimpleScrollAdapter* adapter;
|
cursespp::SimpleScrollAdapter* adapter;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include <core/debug.h>
|
#include <core/debug.h>
|
||||||
|
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
#define BYTES_PER_MEGABYTE 1048576.0f
|
#define BYTES_PER_MEGABYTE 1048576.0f
|
||||||
|
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class ResourcesWindow : public Window {
|
class ResourcesWindow : public cursespp::Window {
|
||||||
public:
|
public:
|
||||||
ResourcesWindow(IWindow *parent = NULL);
|
ResourcesWindow(cursespp::IWindow *parent = NULL);
|
||||||
virtual ~ResourcesWindow();
|
virtual ~ResourcesWindow();
|
||||||
|
|
||||||
virtual void Update();
|
virtual void Update();
|
||||||
|
@ -20,18 +20,18 @@
|
|||||||
|
|
||||||
#define WINDOW_MESSAGE_QUERY_COMPLETED 1002
|
#define WINDOW_MESSAGE_QUERY_COMPLETED 1002
|
||||||
|
|
||||||
using musik::core::IQuery;
|
using namespace musik::core;
|
||||||
using musik::core::audio::Transport;
|
using namespace musik::core::audio;
|
||||||
using namespace musik::core::library::constants;
|
using namespace musik::core::library;
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
using namespace cursespp;
|
||||||
using boost::io::group;
|
using boost::io::group;
|
||||||
using std::setw;
|
using std::setw;
|
||||||
using std::setfill;
|
using std::setfill;
|
||||||
using std::setiosflags;
|
using std::setiosflags;
|
||||||
|
|
||||||
TrackListView::TrackListView(PlaybackService& playback, LibraryPtr library, IWindow *parent)
|
TrackListView::TrackListView(PlaybackService& playback, LibraryPtr library)
|
||||||
: ListWindow(parent)
|
: ListWindow(NULL)
|
||||||
, playback(playback) {
|
, playback(playback) {
|
||||||
this->SetContentColor(BOX_COLOR_WHITE_ON_BLACK);
|
this->SetContentColor(BOX_COLOR_WHITE_ON_BLACK);
|
||||||
this->library = library;
|
this->library = library;
|
||||||
@ -105,12 +105,11 @@ IScrollAdapter::EntryPtr TrackListView::Adapter::GetEntry(size_t index) {
|
|||||||
int64 attrs = (index == parent.GetSelectedIndex()) ? COLOR_PAIR(BOX_COLOR_BLACK_ON_GREEN) : -1;
|
int64 attrs = (index == parent.GetSelectedIndex()) ? COLOR_PAIR(BOX_COLOR_BLACK_ON_GREEN) : -1;
|
||||||
|
|
||||||
TrackPtr track = parent.metadata->at(index);
|
TrackPtr track = parent.metadata->at(index);
|
||||||
std::string trackNum = track->GetValue(Track::TRACK_NUM);
|
std::string trackNum = track->GetValue(constants::Track::TRACK_NUM);
|
||||||
std::string artist = track->GetValue(Track::ARTIST_ID);
|
std::string artist = track->GetValue(constants::Track::ARTIST_ID);
|
||||||
std::string album = track->GetValue(Track::ALBUM_ID);
|
std::string album = track->GetValue(constants::Track::ALBUM_ID);
|
||||||
std::string title = track->GetValue(Track::TITLE);
|
std::string title = track->GetValue(constants::Track::TITLE);
|
||||||
std::string duration = track->GetValue(Track::DURATION);
|
std::string duration = track->GetValue(constants::Track::DURATION);
|
||||||
|
|
||||||
|
|
||||||
int column0Width = DISPLAY_WIDTH(TRACK_COL_WIDTH, trackNum);
|
int column0Width = DISPLAY_WIDTH(TRACK_COL_WIDTH, trackNum);
|
||||||
int column2Width = DISPLAY_WIDTH(DURATION_COL_WIDTH, duration);
|
int column2Width = DISPLAY_WIDTH(DURATION_COL_WIDTH, duration);
|
||||||
|
@ -11,36 +11,35 @@
|
|||||||
#include <core/playback/Transport.h>
|
#include <core/playback/Transport.h>
|
||||||
#include <core/library/ILibrary.h>
|
#include <core/library/ILibrary.h>
|
||||||
|
|
||||||
using musik::core::QueryPtr;
|
|
||||||
using musik::core::LibraryPtr;
|
|
||||||
using musik::core::audio::Transport;
|
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class TrackListView : public ListWindow, public sigslot::has_slots<> {
|
class TrackListView : public cursespp::ListWindow, public sigslot::has_slots<> {
|
||||||
public:
|
public:
|
||||||
TrackListView(PlaybackService& playback, LibraryPtr library, IWindow *parent = NULL);
|
TrackListView(
|
||||||
|
PlaybackService& playback,
|
||||||
|
musik::core::LibraryPtr library);
|
||||||
|
|
||||||
~TrackListView();
|
~TrackListView();
|
||||||
|
|
||||||
virtual void ProcessMessage(IMessage &message);
|
virtual void ProcessMessage(cursespp::IMessage &message);
|
||||||
virtual bool KeyPress(int64 ch);
|
virtual bool KeyPress(int64 ch);
|
||||||
|
|
||||||
void Requery(const std::string& column, DBID id);
|
void Requery(const std::string& column, DBID id);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual IScrollAdapter& GetScrollAdapter();
|
virtual cursespp::IScrollAdapter& GetScrollAdapter();
|
||||||
void OnQueryCompleted(QueryPtr query);
|
void OnQueryCompleted(musik::core::QueryPtr query);
|
||||||
|
|
||||||
class Adapter : public ScrollAdapterBase {
|
class Adapter : public cursespp::ScrollAdapterBase {
|
||||||
public:
|
public:
|
||||||
Adapter(TrackListView &parent);
|
Adapter(TrackListView &parent);
|
||||||
|
|
||||||
virtual size_t GetEntryCount();
|
virtual size_t GetEntryCount();
|
||||||
virtual EntryPtr GetEntry(size_t index);
|
virtual EntryPtr GetEntry(size_t index);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TrackListView &parent;
|
TrackListView &parent;
|
||||||
IScrollAdapter::ScrollPosition spos;
|
IScrollAdapter::ScrollPosition spos;
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -48,7 +47,7 @@ namespace musik {
|
|||||||
std::shared_ptr<std::vector<TrackPtr>> metadata;
|
std::shared_ptr<std::vector<TrackPtr>> metadata;
|
||||||
Adapter* adapter;
|
Adapter* adapter;
|
||||||
PlaybackService& playback;
|
PlaybackService& playback;
|
||||||
LibraryPtr library;
|
musik::core::LibraryPtr library;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,16 +18,14 @@
|
|||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/chrono.hpp>
|
#include <boost/chrono.hpp>
|
||||||
|
|
||||||
using musik::core::audio::Transport;
|
using namespace musik::core;
|
||||||
using musik::core::TrackPtr;
|
using namespace musik::core::audio;
|
||||||
using musik::core::LibraryTrack;
|
using namespace musik::core::library;
|
||||||
using musik::core::NonLibraryTrackHelper;
|
using namespace musik::core::query;
|
||||||
using musik::core::QueryPtr;
|
using namespace musik::core::db;
|
||||||
|
|
||||||
using namespace musik::core::library::constants;
|
|
||||||
using namespace musik::box;
|
using namespace musik::box;
|
||||||
|
|
||||||
using namespace boost::chrono;
|
using namespace boost::chrono;
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
#define REFRESH_TRANSPORT_READOUT 1001
|
#define REFRESH_TRANSPORT_READOUT 1001
|
||||||
#define REFRESH_INTERVAL_MS 1000
|
#define REFRESH_INTERVAL_MS 1000
|
||||||
@ -101,9 +99,9 @@ void TransportWindow::Update() {
|
|||||||
std::string title, album, duration;
|
std::string title, album, duration;
|
||||||
|
|
||||||
if (this->currentTrack) {
|
if (this->currentTrack) {
|
||||||
title = this->currentTrack->GetValue(Track::TITLE);
|
title = this->currentTrack->GetValue(constants::Track::TITLE);
|
||||||
album = this->currentTrack->GetValue(Track::ALBUM);
|
album = this->currentTrack->GetValue(constants::Track::ALBUM);
|
||||||
duration = this->currentTrack->GetValue(Track::DURATION);
|
duration = this->currentTrack->GetValue(constants::Track::DURATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
title = title.size() ? title : "song title";
|
title = title.size() ? title : "song title";
|
||||||
|
@ -8,19 +8,17 @@
|
|||||||
#include <sigslot/sigslot.h>
|
#include <sigslot/sigslot.h>
|
||||||
#include "OutputWindow.h"
|
#include "OutputWindow.h"
|
||||||
|
|
||||||
using namespace musik::core::audio;
|
|
||||||
using musik::core::TrackPtr;
|
|
||||||
using musik::core::LibraryPtr;
|
|
||||||
using musik::core::QueryPtr;
|
|
||||||
|
|
||||||
namespace musik {
|
namespace musik {
|
||||||
namespace box {
|
namespace box {
|
||||||
class TransportWindow : public Window, public sigslot::has_slots<> {
|
class TransportWindow : public cursespp::Window, public sigslot::has_slots<> {
|
||||||
public:
|
public:
|
||||||
TransportWindow(LibraryPtr library, Transport& transport);
|
TransportWindow(
|
||||||
|
musik::core::LibraryPtr library,
|
||||||
|
musik::core::audio::Transport& transport);
|
||||||
|
|
||||||
~TransportWindow();
|
~TransportWindow();
|
||||||
|
|
||||||
virtual void ProcessMessage(IMessage &message);
|
virtual void ProcessMessage(cursespp::IMessage &message);
|
||||||
virtual void Show();
|
virtual void Show();
|
||||||
void Update();
|
void Update();
|
||||||
|
|
||||||
@ -28,12 +26,12 @@ namespace musik {
|
|||||||
void OnTransportStreamEvent(int eventType, std::string url);
|
void OnTransportStreamEvent(int eventType, std::string url);
|
||||||
void OnTransportVolumeChanged();
|
void OnTransportVolumeChanged();
|
||||||
void OnTransportTimeChanged(double time);
|
void OnTransportTimeChanged(double time);
|
||||||
void OnQueryCompleted(QueryPtr query);
|
void OnQueryCompleted(musik::core::QueryPtr query);
|
||||||
|
|
||||||
bool paused;
|
bool paused;
|
||||||
LibraryPtr library;
|
musik::core::LibraryPtr library;
|
||||||
Transport* transport;
|
musik::core::audio::Transport* transport;
|
||||||
TrackPtr currentTrack;
|
musik::core::TrackPtr currentTrack;
|
||||||
std::shared_ptr<SingleTrackQuery> trackQuery;
|
std::shared_ptr<SingleTrackQuery> trackQuery;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
#include <stdafx.h>
|
#include <stdafx.h>
|
||||||
#include "Colors.h"
|
#include "Colors.h"
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
Colors::Colors() {
|
Colors::Colors() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,10 +14,12 @@
|
|||||||
#define BOX_COLOR_GREEN_ON_BLACK 10
|
#define BOX_COLOR_GREEN_ON_BLACK 10
|
||||||
#define BOX_COLOR_BLACK_ON_BLACK 11
|
#define BOX_COLOR_BLACK_ON_BLACK 11
|
||||||
|
|
||||||
class Colors {
|
namespace cursespp {
|
||||||
private:
|
class Colors {
|
||||||
Colors();
|
private:
|
||||||
|
Colors();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void Init();
|
static void Init();
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
class IDisplayable {
|
namespace cursespp {
|
||||||
public:
|
class IDisplayable {
|
||||||
virtual ~IDisplayable() = 0 { }
|
public:
|
||||||
|
virtual ~IDisplayable() = 0 { }
|
||||||
|
virtual void Show() = 0;
|
||||||
|
virtual void Hide() = 0;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
virtual void Show() = 0;
|
|
||||||
virtual void Hide() = 0;
|
|
||||||
};
|
|
@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
#include <stdafx.h>
|
#include <stdafx.h>
|
||||||
|
|
||||||
class IInput {
|
namespace cursespp {
|
||||||
public:
|
class IInput {
|
||||||
virtual ~IInput() = 0 { }
|
public:
|
||||||
|
virtual ~IInput() = 0 { }
|
||||||
virtual void WriteChar(int64 ch) = 0;
|
virtual void WriteChar(int64 ch) = 0;
|
||||||
};
|
};
|
||||||
|
}
|
@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
#include <stdafx.h>
|
#include <stdafx.h>
|
||||||
|
|
||||||
class IKeyHandler {
|
namespace cursespp {
|
||||||
public:
|
class IKeyHandler {
|
||||||
virtual ~IKeyHandler() = 0 { }
|
public:
|
||||||
virtual bool KeyPress(int64 ch) = 0;
|
virtual ~IKeyHandler() = 0 { }
|
||||||
};
|
virtual bool KeyPress(int64 ch) = 0;
|
||||||
|
};
|
||||||
|
}
|
@ -5,17 +5,19 @@
|
|||||||
#include "IKeyHandler.h"
|
#include "IKeyHandler.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class ILayoutStack;
|
namespace cursespp {
|
||||||
|
class ILayoutStack;
|
||||||
|
|
||||||
class ILayout : public IWindowGroup, public IKeyHandler, public IOrderable, public IDisplayable {
|
class ILayout : public IWindowGroup, public IKeyHandler, public IOrderable, public IDisplayable {
|
||||||
public:
|
public:
|
||||||
virtual ~ILayout() = 0 { }
|
virtual ~ILayout() = 0 { }
|
||||||
virtual IWindowPtr FocusNext() = 0;
|
virtual IWindowPtr FocusNext() = 0;
|
||||||
virtual IWindowPtr FocusPrev() = 0;
|
virtual IWindowPtr FocusPrev() = 0;
|
||||||
virtual IWindowPtr GetFocus() = 0;
|
virtual IWindowPtr GetFocus() = 0;
|
||||||
virtual ILayoutStack* GetLayoutStack() = 0;
|
virtual ILayoutStack* GetLayoutStack() = 0;
|
||||||
virtual void SetLayoutStack(ILayoutStack* stack) = 0;
|
virtual void SetLayoutStack(ILayoutStack* stack) = 0;
|
||||||
virtual void Layout() = 0;
|
virtual void Layout() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::shared_ptr<ILayout> ILayoutPtr;
|
typedef std::shared_ptr<ILayout> ILayoutPtr;
|
||||||
|
}
|
@ -3,11 +3,13 @@
|
|||||||
#include <stdafx.h>
|
#include <stdafx.h>
|
||||||
#include "ILayout.h"
|
#include "ILayout.h"
|
||||||
|
|
||||||
class ILayoutStack {
|
namespace cursespp {
|
||||||
public:
|
class ILayoutStack {
|
||||||
virtual ~ILayoutStack() = 0 { }
|
public:
|
||||||
virtual bool Push(ILayoutPtr layout) = 0;
|
virtual ~ILayoutStack() = 0 { }
|
||||||
virtual bool Pop(ILayoutPtr layout) = 0;
|
virtual bool Push(ILayoutPtr layout) = 0;
|
||||||
virtual bool BringToTop(ILayoutPtr layout) = 0;
|
virtual bool Pop(ILayoutPtr layout) = 0;
|
||||||
virtual bool SendToBottom(ILayoutPtr layout) = 0;
|
virtual bool BringToTop(ILayoutPtr layout) = 0;
|
||||||
};
|
virtual bool SendToBottom(ILayoutPtr layout) = 0;
|
||||||
|
};
|
||||||
|
}
|
@ -3,15 +3,18 @@
|
|||||||
#include <stdafx.h>
|
#include <stdafx.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class IMessageTarget;
|
namespace cursespp {
|
||||||
|
|
||||||
class IMessage {
|
class IMessageTarget;
|
||||||
public:
|
|
||||||
virtual ~IMessage() = 0 { }
|
|
||||||
virtual IMessageTarget* Target() = 0;
|
|
||||||
virtual int MessageType() = 0;
|
|
||||||
virtual int64 UserData1() = 0;
|
|
||||||
virtual int64 UserData2() = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef std::shared_ptr<IMessage> IMessagePtr;
|
class IMessage {
|
||||||
|
public:
|
||||||
|
virtual ~IMessage() = 0 { }
|
||||||
|
virtual IMessageTarget* Target() = 0;
|
||||||
|
virtual int MessageType() = 0;
|
||||||
|
virtual int64 UserData1() = 0;
|
||||||
|
virtual int64 UserData2() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef std::shared_ptr<IMessage> IMessagePtr;
|
||||||
|
}
|
@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
#include "IMessage.h"
|
#include "IMessage.h"
|
||||||
|
|
||||||
class IMessageTarget {
|
namespace cursespp {
|
||||||
public:
|
class IMessageTarget {
|
||||||
virtual bool IsAcceptingMessages() = 0;
|
public:
|
||||||
virtual void ProcessMessage(IMessage &message) = 0;
|
virtual bool IsAcceptingMessages() = 0;
|
||||||
};
|
virtual void ProcessMessage(IMessage &message) = 0;
|
||||||
|
};
|
||||||
|
}
|
@ -1,8 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
class IOrderable {
|
namespace cursespp {
|
||||||
public:
|
class IOrderable {
|
||||||
virtual ~IOrderable() = 0 { }
|
public:
|
||||||
virtual void BringToTop() = 0;
|
virtual ~IOrderable() = 0 { }
|
||||||
virtual void SendToBottom() = 0;
|
virtual void BringToTop() = 0;
|
||||||
};
|
virtual void SendToBottom() = 0;
|
||||||
|
};
|
||||||
|
}
|
@ -2,42 +2,44 @@
|
|||||||
|
|
||||||
#include <stdafx.h>
|
#include <stdafx.h>
|
||||||
|
|
||||||
class IScrollAdapter {
|
namespace cursespp {
|
||||||
public:
|
class IScrollAdapter {
|
||||||
virtual ~IScrollAdapter() = 0 { }
|
|
||||||
|
|
||||||
struct ScrollPosition {
|
|
||||||
ScrollPosition() {
|
|
||||||
firstVisibleEntryIndex = 0;
|
|
||||||
visibleEntryCount = 0;
|
|
||||||
lineCount = 0;
|
|
||||||
logicalIndex = 0;
|
|
||||||
totalEntries = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t firstVisibleEntryIndex;
|
|
||||||
size_t visibleEntryCount;
|
|
||||||
size_t lineCount;
|
|
||||||
size_t totalEntries;
|
|
||||||
size_t logicalIndex;
|
|
||||||
};
|
|
||||||
|
|
||||||
class IEntry {
|
|
||||||
public:
|
public:
|
||||||
virtual ~IEntry() = 0 { }
|
virtual ~IScrollAdapter() = 0 { }
|
||||||
virtual size_t GetLineCount() = 0;
|
|
||||||
virtual std::string GetLine(size_t line) = 0;
|
|
||||||
virtual std::string GetValue() = 0;
|
|
||||||
virtual void SetWidth(size_t width) = 0;
|
|
||||||
virtual void SetAttrs(int64 attrs) = 0;
|
|
||||||
virtual int64 GetAttrs() = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef std::shared_ptr<IEntry> EntryPtr;
|
struct ScrollPosition {
|
||||||
|
ScrollPosition() {
|
||||||
|
firstVisibleEntryIndex = 0;
|
||||||
|
visibleEntryCount = 0;
|
||||||
|
lineCount = 0;
|
||||||
|
logicalIndex = 0;
|
||||||
|
totalEntries = 0;
|
||||||
|
}
|
||||||
|
|
||||||
virtual void SetDisplaySize(size_t width, size_t height) = 0;
|
size_t firstVisibleEntryIndex;
|
||||||
virtual size_t GetEntryCount() = 0;
|
size_t visibleEntryCount;
|
||||||
virtual EntryPtr GetEntry(size_t index) = 0;
|
size_t lineCount;
|
||||||
virtual void DrawPage(WINDOW* window, size_t index, ScrollPosition *result = NULL) = 0;
|
size_t totalEntries;
|
||||||
};
|
size_t logicalIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
class IEntry {
|
||||||
|
public:
|
||||||
|
virtual ~IEntry() = 0 { }
|
||||||
|
virtual size_t GetLineCount() = 0;
|
||||||
|
virtual std::string GetLine(size_t line) = 0;
|
||||||
|
virtual std::string GetValue() = 0;
|
||||||
|
virtual void SetWidth(size_t width) = 0;
|
||||||
|
virtual void SetAttrs(int64 attrs) = 0;
|
||||||
|
virtual int64 GetAttrs() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef std::shared_ptr<IEntry> EntryPtr;
|
||||||
|
|
||||||
|
virtual void SetDisplaySize(size_t width, size_t height) = 0;
|
||||||
|
virtual size_t GetEntryCount() = 0;
|
||||||
|
virtual EntryPtr GetEntry(size_t index) = 0;
|
||||||
|
virtual void DrawPage(WINDOW* window, size_t index, ScrollPosition *result = NULL) = 0;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
class IScrollable {
|
namespace cursespp {
|
||||||
public:
|
class IScrollable {
|
||||||
virtual ~IScrollable() = 0 { }
|
public:
|
||||||
virtual void ScrollToTop() = 0;
|
virtual ~IScrollable() = 0 { }
|
||||||
virtual void ScrollToBottom() = 0;
|
virtual void ScrollToTop() = 0;
|
||||||
virtual void ScrollUp(int delta = 1) = 0;
|
virtual void ScrollToBottom() = 0;
|
||||||
virtual void ScrollDown(int delta = 1) = 0;
|
virtual void ScrollUp(int delta = 1) = 0;
|
||||||
virtual void PageUp() = 0;
|
virtual void ScrollDown(int delta = 1) = 0;
|
||||||
virtual void PageDown() = 0;
|
virtual void PageUp() = 0;
|
||||||
};
|
virtual void PageDown() = 0;
|
||||||
|
};
|
||||||
|
}
|
@ -5,32 +5,34 @@
|
|||||||
#include "IOrderable.h"
|
#include "IOrderable.h"
|
||||||
#include "IMessageTarget.h"
|
#include "IMessageTarget.h"
|
||||||
|
|
||||||
class IMessage;
|
namespace cursespp {
|
||||||
|
class IMessage;
|
||||||
|
|
||||||
class IWindow : public IOrderable, public IDisplayable, public IMessageTarget {
|
class IWindow : public IOrderable, public IDisplayable, public IMessageTarget {
|
||||||
public:
|
public:
|
||||||
virtual ~IWindow() = 0 { }
|
virtual ~IWindow() = 0 { }
|
||||||
virtual void Repaint() = 0;
|
virtual void Repaint() = 0;
|
||||||
virtual void SetParent(IWindow* parent) = 0;
|
virtual void SetParent(IWindow* parent) = 0;
|
||||||
virtual void Show() = 0;
|
virtual void Show() = 0;
|
||||||
virtual void Hide() = 0;
|
virtual void Hide() = 0;
|
||||||
virtual void Focus() = 0;
|
virtual void Focus() = 0;
|
||||||
virtual void Blur() = 0;
|
virtual void Blur() = 0;
|
||||||
virtual void SetContentColor(int64 color) = 0;
|
virtual void SetContentColor(int64 color) = 0;
|
||||||
virtual void SetFrameColor(int64 color) = 0;
|
virtual void SetFrameColor(int64 color) = 0;
|
||||||
virtual void SetSize(int width, int height) = 0;
|
virtual void SetSize(int width, int height) = 0;
|
||||||
virtual void SetPosition(int x, int y) = 0;
|
virtual void SetPosition(int x, int y) = 0;
|
||||||
virtual int GetWidth() const = 0;
|
virtual int GetWidth() const = 0;
|
||||||
virtual int GetHeight() const = 0;
|
virtual int GetHeight() const = 0;
|
||||||
virtual int GetContentHeight() const = 0;
|
virtual int GetContentHeight() const = 0;
|
||||||
virtual int GetContentWidth() const = 0;
|
virtual int GetContentWidth() const = 0;
|
||||||
virtual int GetX() const = 0;
|
virtual int GetX() const = 0;
|
||||||
virtual int GetY() const = 0;
|
virtual int GetY() const = 0;
|
||||||
virtual int GetId() const = 0;
|
virtual int GetId() const = 0;
|
||||||
virtual int GetFocusOrder() = 0;
|
virtual int GetFocusOrder() = 0;
|
||||||
virtual void SetFocusOrder(int order = -1) = 0;
|
virtual void SetFocusOrder(int order = -1) = 0;
|
||||||
virtual WINDOW* GetFrame() const = 0;
|
virtual WINDOW* GetFrame() const = 0;
|
||||||
virtual WINDOW* GetContent() const = 0;
|
virtual WINDOW* GetContent() const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::shared_ptr<IWindow> IWindowPtr;
|
typedef std::shared_ptr<IWindow> IWindowPtr;
|
||||||
|
}
|
@ -2,11 +2,13 @@
|
|||||||
|
|
||||||
#include "IWindow.h"
|
#include "IWindow.h"
|
||||||
|
|
||||||
class IWindowGroup {
|
namespace cursespp {
|
||||||
public:
|
class IWindowGroup {
|
||||||
virtual ~IWindowGroup() = 0 { }
|
public:
|
||||||
virtual bool AddWindow(IWindowPtr window) = 0;
|
virtual ~IWindowGroup() = 0 { }
|
||||||
virtual bool RemoveWindow(IWindowPtr window) = 0;
|
virtual bool AddWindow(IWindowPtr window) = 0;
|
||||||
virtual size_t GetWindowCount() = 0;
|
virtual bool RemoveWindow(IWindowPtr window) = 0;
|
||||||
virtual IWindowPtr GetWindowAt(size_t position) = 0;
|
virtual size_t GetWindowCount() = 0;
|
||||||
};
|
virtual IWindowPtr GetWindowAt(size_t position) = 0;
|
||||||
|
};
|
||||||
|
}
|
@ -3,6 +3,8 @@
|
|||||||
#include "LayoutStack.h"
|
#include "LayoutStack.h"
|
||||||
#include "Colors.h"
|
#include "Colors.h"
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
template <typename T> static int find(std::vector<T>& haystack, T& needle) {
|
template <typename T> static int find(std::vector<T>& haystack, T& needle) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
std::vector<T>::iterator it = haystack.begin();
|
std::vector<T>::iterator it = haystack.begin();
|
||||||
|
@ -6,46 +6,48 @@
|
|||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class LayoutBase : public Window, public ILayout {
|
namespace cursespp {
|
||||||
public:
|
class LayoutBase : public Window, public ILayout {
|
||||||
LayoutBase(IWindow* parent = NULL);
|
public:
|
||||||
virtual ~LayoutBase();
|
LayoutBase(IWindow* parent = NULL);
|
||||||
|
virtual ~LayoutBase();
|
||||||
|
|
||||||
/* IWindow */
|
/* IWindow */
|
||||||
virtual void Show();
|
virtual void Show();
|
||||||
virtual void Hide();
|
virtual void Hide();
|
||||||
virtual void Repaint();
|
virtual void Repaint();
|
||||||
|
|
||||||
/* IOrderable */
|
/* IOrderable */
|
||||||
virtual void BringToTop();
|
virtual void BringToTop();
|
||||||
virtual void SendToBottom();
|
virtual void SendToBottom();
|
||||||
|
|
||||||
/* ILayout */
|
/* ILayout */
|
||||||
virtual IWindowPtr FocusNext();
|
virtual IWindowPtr FocusNext();
|
||||||
virtual IWindowPtr FocusPrev();
|
virtual IWindowPtr FocusPrev();
|
||||||
virtual IWindowPtr GetFocus();
|
virtual IWindowPtr GetFocus();
|
||||||
virtual ILayoutStack* GetLayoutStack();
|
virtual ILayoutStack* GetLayoutStack();
|
||||||
virtual void SetLayoutStack(ILayoutStack* stack);
|
virtual void SetLayoutStack(ILayoutStack* stack);
|
||||||
|
|
||||||
virtual void Layout() = 0;
|
virtual void Layout() = 0;
|
||||||
|
|
||||||
/* IKeyHandler */
|
/* IKeyHandler */
|
||||||
virtual bool KeyPress(int64 ch);
|
virtual bool KeyPress(int64 ch);
|
||||||
|
|
||||||
/* IWindowGroup */
|
|
||||||
virtual bool AddWindow(IWindowPtr window);
|
|
||||||
virtual bool RemoveWindow(IWindowPtr window);
|
|
||||||
virtual size_t GetWindowCount();
|
|
||||||
virtual IWindowPtr GetWindowAt(size_t position);
|
|
||||||
|
|
||||||
private:
|
/* IWindowGroup */
|
||||||
void AddFocusable(IWindowPtr window);
|
virtual bool AddWindow(IWindowPtr window);
|
||||||
void RemoveFocusable(IWindowPtr window);
|
virtual bool RemoveWindow(IWindowPtr window);
|
||||||
void SortFocusables();
|
virtual size_t GetWindowCount();
|
||||||
void IndexFocusables();
|
virtual IWindowPtr GetWindowAt(size_t position);
|
||||||
|
|
||||||
ILayoutStack* layoutStack;
|
private:
|
||||||
std::vector<IWindowPtr> children;
|
void AddFocusable(IWindowPtr window);
|
||||||
std::vector<IWindowPtr> focusable;
|
void RemoveFocusable(IWindowPtr window);
|
||||||
int focused;
|
void SortFocusables();
|
||||||
};
|
void IndexFocusables();
|
||||||
|
|
||||||
|
ILayoutStack* layoutStack;
|
||||||
|
std::vector<IWindowPtr> children;
|
||||||
|
std::vector<IWindowPtr> focusable;
|
||||||
|
int focused;
|
||||||
|
};
|
||||||
|
}
|
@ -3,6 +3,8 @@
|
|||||||
#include <stdafx.h>
|
#include <stdafx.h>
|
||||||
#include "LayoutStack.h"
|
#include "LayoutStack.h"
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
LayoutStack::LayoutStack() {
|
LayoutStack::LayoutStack() {
|
||||||
this->visible = false;
|
this->visible = false;
|
||||||
this->stack = 0;
|
this->stack = 0;
|
||||||
|
@ -5,44 +5,46 @@
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class LayoutStack : public ILayout, public ILayoutStack {
|
namespace cursespp {
|
||||||
public:
|
class LayoutStack : public ILayout, public ILayoutStack {
|
||||||
LayoutStack();
|
public:
|
||||||
virtual ~LayoutStack();
|
LayoutStack();
|
||||||
|
virtual ~LayoutStack();
|
||||||
|
|
||||||
/* ILayout */
|
/* ILayout */
|
||||||
virtual IWindowPtr FocusNext();
|
virtual IWindowPtr FocusNext();
|
||||||
virtual IWindowPtr FocusPrev();
|
virtual IWindowPtr FocusPrev();
|
||||||
virtual IWindowPtr GetFocus();
|
virtual IWindowPtr GetFocus();
|
||||||
virtual ILayoutStack* GetLayoutStack();
|
virtual ILayoutStack* GetLayoutStack();
|
||||||
virtual void SetLayoutStack(ILayoutStack* stack);
|
virtual void SetLayoutStack(ILayoutStack* stack);
|
||||||
virtual void Layout() { }
|
virtual void Layout() { }
|
||||||
|
|
||||||
/* IOrderable */
|
/* IOrderable */
|
||||||
virtual void BringToTop();
|
virtual void BringToTop();
|
||||||
virtual void SendToBottom();
|
virtual void SendToBottom();
|
||||||
|
|
||||||
/* IDisplayable */
|
/* IDisplayable */
|
||||||
virtual void Show();
|
virtual void Show();
|
||||||
virtual void Hide();
|
virtual void Hide();
|
||||||
|
|
||||||
/* IKeyHandler */
|
/* IKeyHandler */
|
||||||
virtual bool KeyPress(int64 ch);
|
virtual bool KeyPress(int64 ch);
|
||||||
|
|
||||||
/* IWindowGroup */
|
/* IWindowGroup */
|
||||||
virtual bool AddWindow(IWindowPtr window);
|
virtual bool AddWindow(IWindowPtr window);
|
||||||
virtual bool RemoveWindow(IWindowPtr window);
|
virtual bool RemoveWindow(IWindowPtr window);
|
||||||
virtual size_t GetWindowCount();
|
virtual size_t GetWindowCount();
|
||||||
virtual IWindowPtr GetWindowAt(size_t position);
|
virtual IWindowPtr GetWindowAt(size_t position);
|
||||||
|
|
||||||
/* ILayoutStack */
|
/* ILayoutStack */
|
||||||
virtual bool Push(ILayoutPtr layout);
|
virtual bool Push(ILayoutPtr layout);
|
||||||
virtual bool Pop(ILayoutPtr layout);
|
virtual bool Pop(ILayoutPtr layout);
|
||||||
virtual bool BringToTop(ILayoutPtr layout);
|
virtual bool BringToTop(ILayoutPtr layout);
|
||||||
virtual bool SendToBottom(ILayoutPtr layout);
|
virtual bool SendToBottom(ILayoutPtr layout);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::deque<ILayoutPtr> layouts;
|
std::deque<ILayoutPtr> layouts;
|
||||||
ILayoutStack* stack;
|
ILayoutStack* stack;
|
||||||
bool visible;
|
bool visible;
|
||||||
};
|
};
|
||||||
|
}
|
@ -1,6 +1,8 @@
|
|||||||
#include <stdafx.h>
|
#include <stdafx.h>
|
||||||
#include "ListWindow.h"
|
#include "ListWindow.h"
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
typedef IScrollAdapter::ScrollPosition ScrollPos;
|
typedef IScrollAdapter::ScrollPosition ScrollPos;
|
||||||
|
|
||||||
size_t ListWindow::NO_SELECTION = (size_t) -1;
|
size_t ListWindow::NO_SELECTION = (size_t) -1;
|
||||||
|
@ -5,35 +5,37 @@
|
|||||||
#include "ScrollableWindow.h"
|
#include "ScrollableWindow.h"
|
||||||
#include <sigslot/sigslot.h>
|
#include <sigslot/sigslot.h>
|
||||||
|
|
||||||
class ListWindow : public ScrollableWindow {
|
namespace cursespp {
|
||||||
public:
|
class ListWindow : public ScrollableWindow {
|
||||||
static size_t NO_SELECTION;
|
public:
|
||||||
|
static size_t NO_SELECTION;
|
||||||
|
|
||||||
sigslot::signal3<ListWindow*, size_t, size_t> SelectionChanged;
|
sigslot::signal3<ListWindow*, size_t, size_t> SelectionChanged;
|
||||||
sigslot::signal2<ListWindow*, size_t> Invalidated;
|
sigslot::signal2<ListWindow*, size_t> Invalidated;
|
||||||
|
|
||||||
ListWindow(IWindow *parent = NULL);
|
ListWindow(IWindow *parent = NULL);
|
||||||
virtual ~ListWindow();
|
virtual ~ListWindow();
|
||||||
|
|
||||||
virtual void ScrollToTop();
|
virtual void ScrollToTop();
|
||||||
virtual void ScrollToBottom();
|
virtual void ScrollToBottom();
|
||||||
virtual void ScrollUp(int delta = 1);
|
virtual void ScrollUp(int delta = 1);
|
||||||
virtual void ScrollDown(int delta = 1);
|
virtual void ScrollDown(int delta = 1);
|
||||||
virtual void PageUp();
|
virtual void PageUp();
|
||||||
virtual void PageDown();
|
virtual void PageDown();
|
||||||
virtual void Focus();
|
virtual void Focus();
|
||||||
|
|
||||||
virtual size_t GetSelectedIndex();
|
virtual size_t GetSelectedIndex();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void SetSelectedIndex(size_t index);
|
virtual void SetSelectedIndex(size_t index);
|
||||||
virtual void OnAdapterChanged();
|
virtual void OnAdapterChanged();
|
||||||
virtual void OnSelectionChanged(size_t newIndex, size_t oldIndex);
|
virtual void OnSelectionChanged(size_t newIndex, size_t oldIndex);
|
||||||
virtual void OnInvalidated();
|
virtual void OnInvalidated();
|
||||||
|
|
||||||
virtual IScrollAdapter::ScrollPosition& GetScrollPosition();
|
virtual IScrollAdapter::ScrollPosition& GetScrollPosition();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
IScrollAdapter::ScrollPosition scrollPosition;
|
IScrollAdapter::ScrollPosition scrollPosition;
|
||||||
size_t selectedIndex;
|
size_t selectedIndex;
|
||||||
};
|
};
|
||||||
|
}
|
@ -1,6 +1,8 @@
|
|||||||
#include <stdafx.h>
|
#include <stdafx.h>
|
||||||
#include "Message.h"
|
#include "Message.h"
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
IMessagePtr Message::Create(
|
IMessagePtr Message::Create(
|
||||||
IMessageTarget* target,
|
IMessageTarget* target,
|
||||||
int messageType,
|
int messageType,
|
||||||
|
@ -2,28 +2,30 @@
|
|||||||
|
|
||||||
#include "IMessage.h"
|
#include "IMessage.h"
|
||||||
|
|
||||||
class Message : public IMessage {
|
namespace cursespp {
|
||||||
private:
|
class Message : public IMessage {
|
||||||
Message(
|
private:
|
||||||
IMessageTarget* target,
|
Message(
|
||||||
int messageType,
|
IMessageTarget* target,
|
||||||
int64 data1,
|
int messageType,
|
||||||
int64 data2);
|
int64 data1,
|
||||||
|
int64 data2);
|
||||||
public:
|
|
||||||
static IMessagePtr Create(
|
|
||||||
IMessageTarget* target,
|
|
||||||
int messageType,
|
|
||||||
int64 data1,
|
|
||||||
int64 data2);
|
|
||||||
|
|
||||||
virtual IMessageTarget* Target();
|
|
||||||
virtual int MessageType();
|
|
||||||
virtual int64 UserData1();
|
|
||||||
virtual int64 UserData2();
|
|
||||||
|
|
||||||
private:
|
public:
|
||||||
IMessageTarget* target;
|
static IMessagePtr Create(
|
||||||
int messageType;
|
IMessageTarget* target,
|
||||||
int64 data1, data2;
|
int messageType,
|
||||||
};
|
int64 data1,
|
||||||
|
int64 data2);
|
||||||
|
|
||||||
|
virtual IMessageTarget* Target();
|
||||||
|
virtual int MessageType();
|
||||||
|
virtual int64 UserData1();
|
||||||
|
virtual int64 UserData2();
|
||||||
|
|
||||||
|
private:
|
||||||
|
IMessageTarget* target;
|
||||||
|
int messageType;
|
||||||
|
int64 data1, data2;
|
||||||
|
};
|
||||||
|
}
|
@ -2,6 +2,7 @@
|
|||||||
#include "MessageQueue.h"
|
#include "MessageQueue.h"
|
||||||
|
|
||||||
using namespace boost::chrono;
|
using namespace boost::chrono;
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
MessageQueue MessageQueue::instance;
|
MessageQueue MessageQueue::instance;
|
||||||
|
|
||||||
|
@ -6,27 +6,27 @@
|
|||||||
#include <boost/thread/recursive_mutex.hpp>
|
#include <boost/thread/recursive_mutex.hpp>
|
||||||
#include <boost/chrono.hpp>
|
#include <boost/chrono.hpp>
|
||||||
|
|
||||||
class MessageQueue {
|
namespace cursespp {
|
||||||
public:
|
class MessageQueue {
|
||||||
static MessageQueue& Instance();
|
public:
|
||||||
|
static MessageQueue& Instance();
|
||||||
|
|
||||||
void Post(IMessagePtr message, int64 delayMs = 0);
|
void Post(IMessagePtr message, int64 delayMs = 0);
|
||||||
void Remove(IMessageTarget *target, int type = -1);
|
void Remove(IMessageTarget *target, int type = -1);
|
||||||
void Dispatch();
|
void Dispatch();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static MessageQueue instance;
|
static MessageQueue instance;
|
||||||
|
|
||||||
|
struct EnqueuedMessage {
|
||||||
|
IMessagePtr message;
|
||||||
|
boost::chrono::milliseconds time;
|
||||||
|
};
|
||||||
|
|
||||||
struct EnqueuedMessage {
|
boost::recursive_mutex queueMutex;
|
||||||
IMessagePtr message;
|
std::list<EnqueuedMessage*> queue;
|
||||||
boost::chrono::milliseconds time;
|
|
||||||
};
|
|
||||||
|
|
||||||
boost::recursive_mutex queueMutex;
|
MessageQueue();
|
||||||
std::list<EnqueuedMessage*> queue;
|
void Dispatch(IMessagePtr message);
|
||||||
|
};
|
||||||
MessageQueue();
|
}
|
||||||
void Dispatch(IMessagePtr message);
|
|
||||||
|
|
||||||
};
|
|
@ -2,6 +2,8 @@
|
|||||||
#include "MultiLineEntry.h"
|
#include "MultiLineEntry.h"
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
MultiLineEntry::MultiLineEntry(const std::string& value, int64 attrs) {
|
MultiLineEntry::MultiLineEntry(const std::string& value, int64 attrs) {
|
||||||
this->value = value;
|
this->value = value;
|
||||||
this->charCount = value.size();
|
this->charCount = value.size();
|
||||||
|
@ -2,24 +2,26 @@
|
|||||||
|
|
||||||
#include "IScrollAdapter.h"
|
#include "IScrollAdapter.h"
|
||||||
|
|
||||||
class MultiLineEntry : public IScrollAdapter::IEntry {
|
namespace cursespp {
|
||||||
public:
|
class MultiLineEntry : public IScrollAdapter::IEntry {
|
||||||
MultiLineEntry(const std::string& value, int64 attrs = -1);
|
public:
|
||||||
|
MultiLineEntry(const std::string& value, int64 attrs = -1);
|
||||||
|
|
||||||
size_t GetIndex();
|
size_t GetIndex();
|
||||||
void SetIndex(size_t index);
|
void SetIndex(size_t index);
|
||||||
size_t GetLineCount();
|
size_t GetLineCount();
|
||||||
std::string GetLine(size_t line);
|
std::string GetLine(size_t line);
|
||||||
std::string GetValue();
|
std::string GetValue();
|
||||||
void SetWidth(size_t width);
|
void SetWidth(size_t width);
|
||||||
void SetAttrs(int64 attrs);
|
void SetAttrs(int64 attrs);
|
||||||
int64 GetAttrs();
|
int64 GetAttrs();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
size_t index;
|
size_t index;
|
||||||
std::string value;
|
std::string value;
|
||||||
std::vector<std::string> lines;
|
std::vector<std::string> lines;
|
||||||
size_t charCount;
|
size_t charCount;
|
||||||
int64 attrs;
|
int64 attrs;
|
||||||
size_t width;
|
size_t width;
|
||||||
};
|
};
|
||||||
|
}
|
@ -3,6 +3,8 @@
|
|||||||
#include <stdafx.h>
|
#include <stdafx.h>
|
||||||
#include "Screen.h"
|
#include "Screen.h"
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
Screen::Screen() {
|
Screen::Screen() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,11 +2,13 @@
|
|||||||
|
|
||||||
#include "curses_config.h"
|
#include "curses_config.h"
|
||||||
|
|
||||||
class Screen {
|
namespace cursespp {
|
||||||
private:
|
class Screen {
|
||||||
Screen();
|
private:
|
||||||
|
Screen();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static int GetWidth();
|
static int GetWidth();
|
||||||
static int GetHeight();
|
static int GetHeight();
|
||||||
};
|
};
|
||||||
|
}
|
@ -2,6 +2,8 @@
|
|||||||
#include "ScrollAdapterBase.h"
|
#include "ScrollAdapterBase.h"
|
||||||
#include "MultiLineEntry.h"
|
#include "MultiLineEntry.h"
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
typedef IScrollAdapter::EntryPtr EntryPtr;
|
typedef IScrollAdapter::EntryPtr EntryPtr;
|
||||||
|
|
||||||
ScrollAdapterBase::ScrollAdapterBase() {
|
ScrollAdapterBase::ScrollAdapterBase() {
|
||||||
|
@ -4,24 +4,26 @@
|
|||||||
#include "IScrollAdapter.h"
|
#include "IScrollAdapter.h"
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
|
||||||
class ScrollAdapterBase : public IScrollAdapter {
|
namespace cursespp {
|
||||||
public:
|
class ScrollAdapterBase : public IScrollAdapter {
|
||||||
ScrollAdapterBase();
|
public:
|
||||||
virtual ~ScrollAdapterBase();
|
ScrollAdapterBase();
|
||||||
|
virtual ~ScrollAdapterBase();
|
||||||
|
|
||||||
virtual void SetDisplaySize(size_t width, size_t height);
|
virtual void SetDisplaySize(size_t width, size_t height);
|
||||||
virtual size_t GetLineCount();
|
virtual size_t GetLineCount();
|
||||||
virtual void DrawPage(WINDOW* window, size_t index, ScrollPosition *result = NULL);
|
virtual void DrawPage(WINDOW* window, size_t index, ScrollPosition *result = NULL);
|
||||||
|
|
||||||
virtual size_t GetEntryCount() = 0;
|
virtual size_t GetEntryCount() = 0;
|
||||||
virtual EntryPtr GetEntry(size_t index) = 0;
|
virtual EntryPtr GetEntry(size_t index) = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void GetVisibleItems(size_t desired, std::deque<EntryPtr>& target, size_t& start);
|
void GetVisibleItems(size_t desired, std::deque<EntryPtr>& target, size_t& start);
|
||||||
|
|
||||||
size_t GetWidth() { return this->width; }
|
size_t GetWidth() { return this->width; }
|
||||||
size_t GetHeight() { return this->height; }
|
size_t GetHeight() { return this->height; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
size_t width, height;
|
size_t width, height;
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
#include <core/debug.h>
|
#include <core/debug.h>
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
typedef IScrollAdapter::ScrollPosition ScrollPos;
|
typedef IScrollAdapter::ScrollPosition ScrollPos;
|
||||||
|
|
||||||
ScrollableWindow::ScrollableWindow(IWindow *parent)
|
ScrollableWindow::ScrollableWindow(IWindow *parent)
|
||||||
|
@ -6,31 +6,33 @@
|
|||||||
#include "IScrollable.h"
|
#include "IScrollable.h"
|
||||||
#include "IKeyHandler.h"
|
#include "IKeyHandler.h"
|
||||||
|
|
||||||
class ScrollableWindow : public IScrollable, public IKeyHandler, public Window {
|
namespace cursespp {
|
||||||
public:
|
class ScrollableWindow : public IScrollable, public IKeyHandler, public Window {
|
||||||
ScrollableWindow(IWindow *parent = NULL);
|
public:
|
||||||
virtual ~ScrollableWindow();
|
ScrollableWindow(IWindow *parent = NULL);
|
||||||
|
virtual ~ScrollableWindow();
|
||||||
|
|
||||||
virtual void Show();
|
virtual void Show();
|
||||||
virtual void SetSize(int width, int height);
|
virtual void SetSize(int width, int height);
|
||||||
|
|
||||||
virtual bool KeyPress(int64 ch);
|
virtual bool KeyPress(int64 ch);
|
||||||
|
|
||||||
virtual void ScrollToTop();
|
virtual void ScrollToTop();
|
||||||
virtual void ScrollToBottom();
|
virtual void ScrollToBottom();
|
||||||
virtual void ScrollUp(int delta = 1);
|
virtual void ScrollUp(int delta = 1);
|
||||||
virtual void ScrollDown(int delta = 1);
|
virtual void ScrollDown(int delta = 1);
|
||||||
virtual void PageUp();
|
virtual void PageUp();
|
||||||
virtual void PageDown();
|
virtual void PageDown();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual IScrollAdapter& GetScrollAdapter() = 0;
|
virtual IScrollAdapter& GetScrollAdapter() = 0;
|
||||||
virtual IScrollAdapter::ScrollPosition& GetScrollPosition();
|
virtual IScrollAdapter::ScrollPosition& GetScrollPosition();
|
||||||
virtual void OnAdapterChanged();
|
virtual void OnAdapterChanged();
|
||||||
|
|
||||||
size_t GetPreviousPageEntryIndex();
|
size_t GetPreviousPageEntryIndex();
|
||||||
bool IsLastItemVisible();
|
bool IsLastItemVisible();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
IScrollAdapter::ScrollPosition scrollPosition;
|
IScrollAdapter::ScrollPosition scrollPosition;
|
||||||
};
|
};
|
||||||
|
}
|
@ -6,6 +6,8 @@
|
|||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <utf8/utf8/unchecked.h>
|
#include <utf8/utf8/unchecked.h>
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
#define MAX_ENTRY_COUNT 0xffffffff
|
#define MAX_ENTRY_COUNT 0xffffffff
|
||||||
|
|
||||||
typedef IScrollAdapter::EntryPtr EntryPtr;
|
typedef IScrollAdapter::EntryPtr EntryPtr;
|
||||||
|
@ -4,21 +4,23 @@
|
|||||||
#include "ScrollAdapterBase.h"
|
#include "ScrollAdapterBase.h"
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
|
||||||
class SimpleScrollAdapter : public ScrollAdapterBase {
|
namespace cursespp {
|
||||||
public:
|
class SimpleScrollAdapter : public ScrollAdapterBase {
|
||||||
SimpleScrollAdapter();
|
public:
|
||||||
virtual ~SimpleScrollAdapter();
|
SimpleScrollAdapter();
|
||||||
|
virtual ~SimpleScrollAdapter();
|
||||||
|
|
||||||
virtual void AddEntry(EntryPtr entry);
|
virtual void AddEntry(EntryPtr entry);
|
||||||
virtual void SetMaxEntries(const size_t size = 500);
|
virtual void SetMaxEntries(const size_t size = 500);
|
||||||
|
|
||||||
virtual size_t GetEntryCount();
|
virtual size_t GetEntryCount();
|
||||||
virtual EntryPtr GetEntry(size_t index);
|
virtual EntryPtr GetEntry(size_t index);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef std::deque<EntryPtr> EntryList;
|
typedef std::deque<EntryPtr> EntryList;
|
||||||
typedef EntryList::iterator Iterator;
|
typedef EntryList::iterator Iterator;
|
||||||
|
|
||||||
EntryList entries;
|
EntryList entries;
|
||||||
size_t maxEntries;
|
size_t maxEntries;
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
#include "SingleLineEntry.h"
|
#include "SingleLineEntry.h"
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
SingleLineEntry::SingleLineEntry(const std::string& value) {
|
SingleLineEntry::SingleLineEntry(const std::string& value) {
|
||||||
this->value = value;
|
this->value = value;
|
||||||
this->attrs = -1;
|
this->attrs = -1;
|
||||||
|
@ -2,22 +2,24 @@
|
|||||||
|
|
||||||
#include "IScrollAdapter.h"
|
#include "IScrollAdapter.h"
|
||||||
|
|
||||||
class SingleLineEntry : public IScrollAdapter::IEntry {
|
namespace cursespp {
|
||||||
public:
|
class SingleLineEntry : public IScrollAdapter::IEntry {
|
||||||
SingleLineEntry(const std::string& value);
|
public:
|
||||||
|
SingleLineEntry(const std::string& value);
|
||||||
|
|
||||||
size_t GetIndex();
|
size_t GetIndex();
|
||||||
void SetIndex(size_t index);
|
void SetIndex(size_t index);
|
||||||
void SetWidth(size_t width);
|
void SetWidth(size_t width);
|
||||||
void SetAttrs(int64 attrs);
|
void SetAttrs(int64 attrs);
|
||||||
int64 GetAttrs();
|
int64 GetAttrs();
|
||||||
|
|
||||||
size_t GetLineCount();
|
size_t GetLineCount();
|
||||||
std::string GetLine(size_t line);
|
std::string GetLine(size_t line);
|
||||||
std::string GetValue();
|
std::string GetValue();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
size_t index, width;
|
size_t index, width;
|
||||||
std::string value;
|
std::string value;
|
||||||
int64 attrs;
|
int64 attrs;
|
||||||
};
|
};
|
||||||
|
}
|
@ -6,6 +6,8 @@
|
|||||||
#include "Message.h"
|
#include "Message.h"
|
||||||
#include "MessageQueue.h"
|
#include "MessageQueue.h"
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
static int NEXT_ID = 0;
|
static int NEXT_ID = 0;
|
||||||
static bool drawPending = false;
|
static bool drawPending = false;
|
||||||
|
|
||||||
|
@ -3,70 +3,72 @@
|
|||||||
#include "curses_config.h"
|
#include "curses_config.h"
|
||||||
#include "IWindow.h"
|
#include "IWindow.h"
|
||||||
|
|
||||||
class Window : public IWindow, public std::enable_shared_from_this<IWindow> {
|
namespace cursespp {
|
||||||
public:
|
class Window : public IWindow, public std::enable_shared_from_this<IWindow> {
|
||||||
Window(IWindow* parent = NULL);
|
public:
|
||||||
virtual ~Window();
|
Window(IWindow* parent = NULL);
|
||||||
|
virtual ~Window();
|
||||||
|
|
||||||
virtual void SetParent(IWindow* parent);
|
virtual void SetParent(IWindow* parent);
|
||||||
|
|
||||||
virtual void Show();
|
virtual void Show();
|
||||||
virtual void Hide();
|
virtual void Hide();
|
||||||
|
|
||||||
virtual void Repaint();
|
virtual void Repaint();
|
||||||
|
|
||||||
void SetFrameVisible(bool enabled);
|
void SetFrameVisible(bool enabled);
|
||||||
bool IsFrameVisible();
|
bool IsFrameVisible();
|
||||||
|
|
||||||
virtual void Focus();
|
virtual void Focus();
|
||||||
virtual void Blur();
|
virtual void Blur();
|
||||||
|
|
||||||
virtual void SetContentColor(int64 color);
|
virtual void SetContentColor(int64 color);
|
||||||
virtual void SetFrameColor(int64 color);
|
virtual void SetFrameColor(int64 color);
|
||||||
virtual void SetSize(int width, int height);
|
virtual void SetSize(int width, int height);
|
||||||
virtual void SetPosition(int x, int y);
|
virtual void SetPosition(int x, int y);
|
||||||
|
|
||||||
virtual int GetWidth() const;
|
virtual int GetWidth() const;
|
||||||
virtual int GetHeight() const;
|
virtual int GetHeight() const;
|
||||||
virtual int GetContentHeight() const;
|
virtual int GetContentHeight() const;
|
||||||
virtual int GetContentWidth() const;
|
virtual int GetContentWidth() const;
|
||||||
virtual int GetX() const;
|
virtual int GetX() const;
|
||||||
virtual int GetY() const;
|
virtual int GetY() const;
|
||||||
virtual int GetId() const;
|
virtual int GetId() const;
|
||||||
|
|
||||||
virtual void BringToTop();
|
virtual void BringToTop();
|
||||||
virtual void SendToBottom();
|
virtual void SendToBottom();
|
||||||
|
|
||||||
virtual void ProcessMessage(IMessage &message);
|
virtual void ProcessMessage(IMessage &message);
|
||||||
virtual bool IsAcceptingMessages();
|
virtual bool IsAcceptingMessages();
|
||||||
|
|
||||||
virtual WINDOW* GetFrame() const;
|
virtual WINDOW* GetFrame() const;
|
||||||
virtual WINDOW* GetContent() const;
|
virtual WINDOW* GetContent() const;
|
||||||
|
|
||||||
virtual int GetFocusOrder();
|
virtual int GetFocusOrder();
|
||||||
virtual void SetFocusOrder(int order = -1);
|
virtual void SetFocusOrder(int order = -1);
|
||||||
|
|
||||||
static void WriteToScreen();
|
static void WriteToScreen();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
IWindow* GetParent() const;
|
IWindow* GetParent() const;
|
||||||
void PostMessage(int messageType, int64 user1 = 0, int64 user2 = 0, int64 delay = 0);
|
void PostMessage(int messageType, int64 user1 = 0, int64 user2 = 0, int64 delay = 0);
|
||||||
void RemoveMessage(int messageType);
|
void RemoveMessage(int messageType);
|
||||||
bool IsVisible();
|
bool IsVisible();
|
||||||
void Create();
|
void Create();
|
||||||
void Destroy();
|
void Destroy();
|
||||||
void Clear();
|
void Clear();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
IWindow* parent;
|
IWindow* parent;
|
||||||
PANEL* framePanel;
|
PANEL* framePanel;
|
||||||
WINDOW* frame;
|
WINDOW* frame;
|
||||||
PANEL* contentPanel;
|
PANEL* contentPanel;
|
||||||
WINDOW* content;
|
WINDOW* content;
|
||||||
bool drawFrame;
|
bool drawFrame;
|
||||||
bool isVisible;
|
bool isVisible;
|
||||||
int focusOrder;
|
int focusOrder;
|
||||||
int id;
|
int id;
|
||||||
int64 contentColor, frameColor;
|
int64 contentColor, frameColor;
|
||||||
int width, height, x, y;
|
int width, height, x, y;
|
||||||
};
|
};
|
||||||
|
}
|
@ -4,6 +4,8 @@
|
|||||||
#include "WindowLayout.h"
|
#include "WindowLayout.h"
|
||||||
#include "LayoutStack.h"
|
#include "LayoutStack.h"
|
||||||
|
|
||||||
|
using namespace cursespp;
|
||||||
|
|
||||||
WindowLayout::WindowLayout(IWindowPtr window) {
|
WindowLayout::WindowLayout(IWindowPtr window) {
|
||||||
this->window = window;
|
this->window = window;
|
||||||
this->stack = 0;
|
this->stack = 0;
|
||||||
|
@ -2,37 +2,39 @@
|
|||||||
|
|
||||||
#include "ILayout.h"
|
#include "ILayout.h"
|
||||||
|
|
||||||
class WindowLayout : public ILayout, public std::enable_shared_from_this<ILayout> {
|
namespace cursespp {
|
||||||
public:
|
class WindowLayout : public ILayout, public std::enable_shared_from_this<ILayout> {
|
||||||
WindowLayout(IWindowPtr window);
|
public:
|
||||||
virtual ~WindowLayout();
|
WindowLayout(IWindowPtr window);
|
||||||
|
virtual ~WindowLayout();
|
||||||
|
|
||||||
/* ILayout */
|
/* ILayout */
|
||||||
virtual IWindowPtr FocusNext();
|
virtual IWindowPtr FocusNext();
|
||||||
virtual IWindowPtr FocusPrev();
|
virtual IWindowPtr FocusPrev();
|
||||||
virtual IWindowPtr GetFocus();
|
virtual IWindowPtr GetFocus();
|
||||||
virtual ILayoutStack* GetLayoutStack();
|
virtual ILayoutStack* GetLayoutStack();
|
||||||
virtual void SetLayoutStack(ILayoutStack* stack);
|
virtual void SetLayoutStack(ILayoutStack* stack);
|
||||||
virtual void Layout() { }
|
virtual void Layout() { }
|
||||||
|
|
||||||
/* IOrderable */
|
/* IOrderable */
|
||||||
virtual void BringToTop();
|
virtual void BringToTop();
|
||||||
virtual void SendToBottom();
|
virtual void SendToBottom();
|
||||||
|
|
||||||
/* IDisplayable */
|
/* IDisplayable */
|
||||||
virtual void Show();
|
virtual void Show();
|
||||||
virtual void Hide();
|
virtual void Hide();
|
||||||
|
|
||||||
/* IKeyHandler */
|
/* IKeyHandler */
|
||||||
virtual bool KeyPress(int64 ch);
|
virtual bool KeyPress(int64 ch);
|
||||||
|
|
||||||
/* IWindowGroup */
|
/* IWindowGroup */
|
||||||
virtual bool AddWindow(IWindowPtr window);
|
virtual bool AddWindow(IWindowPtr window);
|
||||||
virtual bool RemoveWindow(IWindowPtr window);
|
virtual bool RemoveWindow(IWindowPtr window);
|
||||||
virtual size_t GetWindowCount();
|
virtual size_t GetWindowCount();
|
||||||
virtual IWindowPtr GetWindowAt(size_t position);
|
virtual IWindowPtr GetWindowAt(size_t position);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ILayoutStack* stack;
|
ILayoutStack* stack;
|
||||||
IWindowPtr window;
|
IWindowPtr window;
|
||||||
};
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user