1/* 2 * Copyright 2013-2014, Stephan A��mus <superstippi@gmx.de>. 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5 6 7#include "MessagePackageListener.h" 8 9#include <Messenger.h> 10#include <View.h> 11 12#include "PackageInfo.h" 13 14 15// #pragma mark - MessagePackageListener 16 17 18MessagePackageListener::MessagePackageListener(BHandler* target) 19 : 20 fTarget(target), 21 fChangesMask(0xffffffff) 22{ 23} 24 25 26MessagePackageListener::~MessagePackageListener() 27{ 28} 29 30 31void 32MessagePackageListener::PackageChanged(const PackageInfoEvent& event) 33{ 34 if ((event.Changes() & fChangesMask) == 0) 35 return; 36 37 BMessenger messenger(fTarget); 38 if (!messenger.IsValid()) 39 return; 40 41 BMessage message(MSG_UPDATE_PACKAGE); 42 message.AddString("name", event.Package()->Name()); 43 message.AddUInt32("changes", event.Changes()); 44 45 messenger.SendMessage(&message); 46} 47 48 49void 50MessagePackageListener::SetChangesMask(uint32 mask) 51{ 52 fChangesMask = mask; 53} 54 55 56// #pragma mark - OnePackageMessagePackageListener 57 58 59OnePackageMessagePackageListener::OnePackageMessagePackageListener(BHandler* target) 60 : 61 MessagePackageListener(target) 62{ 63} 64 65 66OnePackageMessagePackageListener::~OnePackageMessagePackageListener() 67{ 68} 69 70 71void 72OnePackageMessagePackageListener::SetPackage(const PackageInfoRef& package) 73{ 74 if (fPackage == package) 75 return; 76 77 PackageInfoListenerRef listener(this); 78 79 if (fPackage.IsSet()) 80 fPackage->RemoveListener(listener); 81 82 fPackage = package; 83 84 if (fPackage.IsSet()) 85 fPackage->AddListener(listener); 86} 87 88 89const PackageInfoRef& 90OnePackageMessagePackageListener::Package() const 91{ 92 return fPackage; 93} 94