HaikuDepot: Extracted MessagePackageListener...

... from PackageInfoView into its own files.
This commit is contained in:
Stephan Aßmus 2014-10-26 17:54:38 +01:00
parent 7d0ce97b27
commit 73a3f44915
5 changed files with 105 additions and 67 deletions

View File

@ -39,11 +39,13 @@ Application HaikuDepot :
BitmapButton.cpp
BitmapView.cpp
DecisionProvider.cpp
FeaturedPackageView.cpp
FilterView.cpp
JobStateListener.cpp
LinkView.cpp
main.cpp
MainWindow.cpp
MessagePackageListener.cpp
Model.cpp
PackageAction.cpp
PackageActionHandler.cpp

View File

@ -0,0 +1,64 @@
/*
* Copyright 2013-214, Stephan Aßmus <superstippi@gmx.de>.
* All rights reserved. Distributed under the terms of the MIT License.
*/
#include "MessagePackageListener.h"
#include <Messenger.h>
#include <View.h>
#include "PackageInfo.h"
MessagePackageListener::MessagePackageListener(BView* view)
:
fView(view)
{
}
MessagePackageListener::~MessagePackageListener()
{
}
void
MessagePackageListener::PackageChanged(const PackageInfoEvent& event)
{
BMessenger messenger(fView);
if (!messenger.IsValid())
return;
BMessage message(MSG_UPDATE_PACKAGE);
message.AddString("title", event.Package()->Title());
message.AddUInt32("changes", event.Changes());
messenger.SendMessage(&message);
}
void
MessagePackageListener::SetPackage(const PackageInfoRef& package)
{
if (fPackage == package)
return;
PackageInfoListenerRef listener(this);
if (fPackage.Get() != NULL)
fPackage->RemoveListener(listener);
fPackage = package;
if (fPackage.Get() != NULL)
fPackage->AddListener(listener);
}
const PackageInfoRef&
MessagePackageListener::Package() const
{
return fPackage;
}

View File

@ -0,0 +1,35 @@
/*
* Copyright 2013-214, Stephan Aßmus <superstippi@gmx.de>.
* All rights reserved. Distributed under the terms of the MIT License.
*/
#ifndef MESSAGE_PACKAGE_LISTENER_H
#define MESSAGE_PACKAGE_LISTENER_H
#include "PackageInfoListener.h"
enum {
MSG_UPDATE_PACKAGE = 'updp'
};
class BView;
class MessagePackageListener : public PackageInfoListener {
public:
MessagePackageListener(BView* view);
virtual ~MessagePackageListener();
virtual void PackageChanged(const PackageInfoEvent& event);
void SetPackage(const PackageInfoRef& package);
const PackageInfoRef& Package() const;
private:
BView* fView;
PackageInfoRef fPackage;
};
#endif // MESSAGE_PACKAGE_LISTENER_H

View File

@ -31,6 +31,7 @@
#include "BitmapView.h"
#include "LinkView.h"
#include "MarkupParser.h"
#include "MessagePackageListener.h"
#include "PackageActionHandler.h"
#include "PackageManager.h"
#include "RatingView.h"
@ -1318,68 +1319,6 @@ private:
};
// #pragma mark - PackageInfoViewListener
enum {
MSG_UPDATE_PACKAGE = 'updp'
};
class PackageInfoView::Listener : public PackageInfoListener {
public:
Listener(PackageInfoView* view)
:
fView(view)
{
}
virtual ~Listener()
{
}
virtual void PackageChanged(const PackageInfoEvent& event)
{
BMessenger messenger(fView);
if (!messenger.IsValid())
return;
const PackageInfo& package = *event.Package().Get();
BMessage message(MSG_UPDATE_PACKAGE);
message.AddString("title", package.Title());
message.AddUInt32("changes", event.Changes());
messenger.SendMessage(&message);
}
void SetPackage(const PackageInfoRef& package)
{
if (fPackage == package)
return;
PackageInfoListenerRef listener(this);
if (fPackage.Get() != NULL)
fPackage->RemoveListener(listener);
fPackage = package;
if (fPackage.Get() != NULL)
fPackage->AddListener(listener);
}
const PackageInfoRef& Package() const
{
return fPackage;
}
private:
PackageInfoView* fView;
PackageInfoRef fPackage;
};
// #pragma mark - PackageInfoView
@ -1388,7 +1327,7 @@ PackageInfoView::PackageInfoView(BLocker* modelLock,
:
BView("package info view", 0),
fModelLock(modelLock),
fPackageListener(new(std::nothrow) Listener(this))
fPackageListener(new(std::nothrow) MessagePackageListener(this))
{
fCardLayout = new BCardLayout();
SetLayout(fCardLayout);

View File

@ -13,6 +13,7 @@
class BCardLayout;
class BLocker;
class MessagePackageListener;
class TitleView;
class PackageActionHandler;
class PackageActionView;
@ -39,9 +40,6 @@ public:
{ return fPackage; }
void Clear();
private:
class Listener;
private:
BLocker* fModelLock;
@ -51,7 +49,7 @@ private:
PagesView* fPagesView;
PackageInfoRef fPackage;
Listener* fPackageListener;
MessagePackageListener* fPackageListener;
};
#endif // PACKAGE_INFO_VIEW_H