* Removed superfluous B_AVOID_FRONT flag.

* Renamed BCatalog member from "cat" to fCatalog.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34457 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2009-12-03 12:11:14 +00:00
parent f7d3982857
commit b69c120bfd
3 changed files with 219 additions and 221 deletions
+100 -100
View File
@@ -5,12 +5,27 @@
* Authors: * Authors:
* Clemens Zeidler, [email protected] * Clemens Zeidler, [email protected]
*/ */
#ifndef PREFERENCES_WINDOW_h
#define PREFERENCES_WINDOW_h
#ifndef PREFERENCESWINDOW_h
#define PREFERENCESWINDOW_h
#define DEBUG 1 #include <Application.h>
#include <Button.h>
#include <Catalog.h>
#include <Debug.h> #include <Debug.h>
#include <Entry.h>
#include <FindDirectory.h>
#include <File.h>
#include <GroupView.h>
#include <Locale.h>
#include <MessageFilter.h>
#include <NodeMonitor.h>
#include <Path.h>
#include <Screen.h>
#include <SpaceLayoutItem.h>
#include <String.h>
#include <Window.h>
#if DEBUG #if DEBUG
# define LOG(text...) PRINT((text)) # define LOG(text...) PRINT((text))
@@ -18,103 +33,84 @@
# define LOG(text...) # define LOG(text...)
#endif #endif
#include <Button.h>
#include <Catalog.h>
#include <Locale.h>
#include <NodeMonitor.h>
#include <Path.h>
#include <Window.h>
// headers PreferencesStorage
#include <Entry.h>
#include <FindDirectory.h>
#include <File.h>
#include <String.h>
// headers PrefFileWatcher
#include <MessageFilter.h>
// headers PreferencesWindow
#include <Application.h>
#include <GroupView.h>
#include <Screen.h>
#include <SpaceLayoutItem.h>
#define TR_CONTEXT "Pref Window" #define TR_CONTEXT "Pref Window"
// messages PrefFileWatcher // messages PrefFileWatcher
const uint32 kUpdatedPreferences = '&UdP'; const uint32 kUpdatedPreferences = '&UdP';
template<typename Preferences> template<typename Preferences>
class PreferencesStorage class PreferencesStorage {
{ public:
public: PreferencesStorage(const char* file,
PreferencesStorage(const char* file, const Preferences& defaultPreferences);
const Preferences& defaultPreferences); ~PreferencesStorage();
~PreferencesStorage();
void Revert(); void Revert();
void Defaults(); void Defaults();
BPoint WindowPosition(){return fWindowPosition;} BPoint WindowPosition() {return fWindowPosition; }
void SetWindowPosition(BPoint position){ void SetWindowPosition(BPoint position)
fWindowPosition = position;} { fWindowPosition = position; }
Preferences* GetPreferences(){return &fPreferences;} Preferences* GetPreferences() { return &fPreferences; }
status_t LoadPreferences(); status_t LoadPreferences();
status_t SavePreferences(); status_t SavePreferences();
BString& PreferencesFile() { return fPreferencesFile; } BString& PreferencesFile() { return fPreferencesFile; }
status_t GetPreferencesPath(BPath &path); status_t GetPreferencesPath(BPath &path);
private: private:
BString fPreferencesFile; BString fPreferencesFile;
Preferences fPreferences; Preferences fPreferences;
Preferences fStartPreferences; Preferences fStartPreferences;
const Preferences& fDefaultPreferences; const Preferences& fDefaultPreferences;
BPoint fWindowPosition; BPoint fWindowPosition;
}; };
template<typename Preferences> template<typename Preferences>
class PrefFileWatcher : public BMessageFilter class PrefFileWatcher : public BMessageFilter {
{ public:
public: PrefFileWatcher(
PrefFileWatcher(PreferencesStorage<Preferences>* storage, PreferencesStorage<Preferences>* storage,
BHandler* target); BHandler* target);
~PrefFileWatcher(); virtual ~PrefFileWatcher();
virtual filter_result Filter(BMessage *message, BHandler **target);
private: virtual filter_result Filter(BMessage* message, BHandler** _target);
PreferencesStorage<Preferences>* fPreferencesStorage;
node_ref fPreferencesNode;
node_ref fPreferencesDirectoryNode;
BHandler* fTarget; private:
PreferencesStorage<Preferences>* fPreferencesStorage;
node_ref fPreferencesNode;
node_ref fPreferencesDirectoryNode;
BHandler* fTarget;
}; };
template<typename Preferences> template<typename Preferences>
class PreferencesWindow : public BWindow, public PreferencesStorage<Preferences> class PreferencesWindow : public BWindow,
{ public PreferencesStorage<Preferences> {
public: public:
PreferencesWindow(const char* title, PreferencesWindow(const char* title,
const char* file, const char* file,
const Preferences& defaultPreferences); const Preferences& defaultPreferences);
~PreferencesWindow(); virtual ~PreferencesWindow();
virtual void MessageReceived(BMessage *msg); virtual void MessageReceived(BMessage *msg);
virtual bool QuitRequested(); virtual bool QuitRequested();
virtual bool SetPreferencesView(BView* prefView); virtual bool SetPreferencesView(BView* prefView);
private: private:
void _MoveToPosition(); void _MoveToPosition();
BView* fPreferencesView;
BButton* fRevertButton; BView* fPreferencesView;
BButton* fDefaultButton; BButton* fRevertButton;
BGroupLayout* fRootLayout; BButton* fDefaultButton;
BGroupLayout* fRootLayout;
}; };
@@ -122,10 +118,12 @@ const uint32 kDefaultMsg = 'dems';
const uint32 kRevertMsg = 'rems'; const uint32 kRevertMsg = 'rems';
const uint32 kConfigChangedMsg = '&cgh'; const uint32 kConfigChangedMsg = '&cgh';
template<typename Preferences> template<typename Preferences>
PreferencesStorage<Preferences>::PreferencesStorage(const char* file, PreferencesStorage<Preferences>::PreferencesStorage(const char* file,
const Preferences& defaultPreferences) const Preferences& defaultPreferences)
: fDefaultPreferences(defaultPreferences) :
fDefaultPreferences(defaultPreferences)
{ {
// default center position // default center position
fWindowPosition.x = -1; fWindowPosition.x = -1;
@@ -236,23 +234,25 @@ PreferencesStorage<Preferences>::SavePreferences()
template<typename Preferences> template<typename Preferences>
PrefFileWatcher<Preferences>::PrefFileWatcher(PreferencesStorage<Preferences>* storage, PrefFileWatcher<Preferences>::PrefFileWatcher(
BHandler* target) PreferencesStorage<Preferences>* storage, BHandler* target)
: BMessageFilter(B_PROGRAMMED_DELIVERY, B_ANY_SOURCE), :
fPreferencesStorage(storage), BMessageFilter(B_PROGRAMMED_DELIVERY, B_ANY_SOURCE),
fTarget(target) fPreferencesStorage(storage),
fTarget(target)
{ {
BPath path; BPath path;
find_directory(B_USER_SETTINGS_DIRECTORY, &path); find_directory(B_USER_SETTINGS_DIRECTORY, &path);
BEntry entry(path.Path()); BEntry entry(path.Path());
entry.GetNodeRef(&fPreferencesDirectoryNode); if (entry.GetNodeRef(&fPreferencesDirectoryNode) == B_OK)
watch_node(&fPreferencesDirectoryNode, B_WATCH_DIRECTORY, watch_node(&fPreferencesDirectoryNode, B_WATCH_DIRECTORY, fTarget);
fTarget);
path.Append(fPreferencesStorage->PreferencesFile().String()); path.Append(fPreferencesStorage->PreferencesFile().String());
entry.SetTo(path.Path()); entry.SetTo(path.Path());
entry.GetNodeRef(&fPreferencesNode);
watch_node(&fPreferencesNode, B_WATCH_STAT, if (entry.GetNodeRef(&fPreferencesNode) == B_OK)
fTarget); watch_node(&fPreferencesNode, B_WATCH_STAT, fTarget);
} }
@@ -278,12 +278,12 @@ PrefFileWatcher<Preferences>::Filter(BMessage *msg, BHandler **target)
|| msg->FindInt32("opcode", &opcode) != B_OK) || msg->FindInt32("opcode", &opcode) != B_OK)
return result; return result;
switch(opcode) switch (opcode) {
{
case B_ENTRY_MOVED: case B_ENTRY_MOVED:
msg->FindInt64("to directory", dir); msg->FindInt64("to directory", dir);
if (dir != fPreferencesDirectoryNode.node) if (dir != fPreferencesDirectoryNode.node)
break; break;
// supposed to fall through
case B_ENTRY_CREATED: case B_ENTRY_CREATED:
msg->FindString("name", &name); msg->FindString("name", &name);
@@ -305,7 +305,7 @@ PrefFileWatcher<Preferences>::Filter(BMessage *msg, BHandler **target)
stop_watching(fTarget); stop_watching(fTarget);
// and start watching the directory again // and start watching the directory again
watch_node(&fPreferencesDirectoryNode, B_WATCH_DIRECTORY, watch_node(&fPreferencesDirectoryNode, B_WATCH_DIRECTORY,
fTarget); fTarget);
msg->what = kUpdatedPreferences; msg->what = kUpdatedPreferences;
} }
break; break;
@@ -325,17 +325,15 @@ PrefFileWatcher<Preferences>::Filter(BMessage *msg, BHandler **target)
template<typename Preferences> template<typename Preferences>
PreferencesWindow<Preferences>::PreferencesWindow(const char* title, PreferencesWindow<Preferences>::PreferencesWindow(const char* title,
const char* file, const char* file, const Preferences& defaultPreferences)
const Preferences& defaultPreferences) :
: BWindow(BRect(50, 50, 400, 350), title, B_TITLED_WINDOW, BWindow(BRect(50, 50, 400, 350), title, B_TITLED_WINDOW,
B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_AVOID_FRONT B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_ASYNCHRONOUS_CONTROLS),
| B_ASYNCHRONOUS_CONTROLS), PreferencesStorage<Preferences>(file, defaultPreferences),
PreferencesStorage<Preferences>(file, defaultPreferences), fPreferencesView(NULL)
fPreferencesView(NULL)
{ {
BGroupView* buttonView = new BGroupView(B_HORIZONTAL); BGroupView* buttonView = new BGroupView(B_HORIZONTAL);
fDefaultButton = new BButton(TR("Defaults"), fDefaultButton = new BButton(TR("Defaults"), new BMessage(kDefaultMsg));
new BMessage(kDefaultMsg));
buttonView->AddChild(fDefaultButton); buttonView->AddChild(fDefaultButton);
buttonView->GetLayout()->AddItem(BSpaceLayoutItem::CreateHorizontalStrut(7)); buttonView->GetLayout()->AddItem(BSpaceLayoutItem::CreateHorizontalStrut(7));
@@ -431,7 +429,7 @@ PreferencesWindow<Preferences>::_MoveToPosition()
{ {
BPoint position = PreferencesStorage<Preferences>::WindowPosition(); BPoint position = PreferencesStorage<Preferences>::WindowPosition();
// center window on screen if it had a bad position // center window on screen if it had a bad position
if(position.x < 0 && position.y < 0){ if (position.x < 0 && position.y < 0){
BRect rect = BScreen().Frame(); BRect rect = BScreen().Frame();
BRect windowFrame = Frame(); BRect windowFrame = Frame();
position.x = (rect.Width() - windowFrame.Width()) / 2; position.x = (rect.Width() - windowFrame.Width()) / 2;
@@ -440,4 +438,6 @@ PreferencesWindow<Preferences>::_MoveToPosition()
MoveTo(position); MoveTo(position);
} }
#endif #undef TR_CONTEXT
#endif // PREFERENCES_WINDOW_h
+20 -17
View File
@@ -6,6 +6,7 @@
* Clemens Zeidler, [email protected] * Clemens Zeidler, [email protected]
*/ */
#include "StatusView.h" #include "StatusView.h"
#include <string.h> #include <string.h>
@@ -24,12 +25,11 @@
#include "CPUFrequencyView.h" #include "CPUFrequencyView.h"
#define TR_CONTEXT "Status view"
extern "C" _EXPORT BView *instantiate_deskbar_item(void); extern "C" _EXPORT BView *instantiate_deskbar_item(void);
#define TR_CONTEXT "Status view"
#define MAX_FREQ_STRING "9999MHz" #define MAX_FREQ_STRING "9999MHz"
// messages FrequencySwitcher // messages FrequencySwitcher
@@ -48,7 +48,8 @@ const char* kDeskbarItemName = "CPUFreqStatusView";
FrequencySwitcher::FrequencySwitcher(CPUFreqDriverInterface* interface, FrequencySwitcher::FrequencySwitcher(CPUFreqDriverInterface* interface,
BHandler* target) BHandler* target)
: BMessageFilter(B_PROGRAMMED_DELIVERY, B_ANY_SOURCE), :
BMessageFilter(B_PROGRAMMED_DELIVERY, B_ANY_SOURCE),
fDriverInterface(interface), fDriverInterface(interface),
fTarget(target), fTarget(target),
fMessageRunner(NULL), fMessageRunner(NULL),
@@ -194,21 +195,21 @@ FrequencyMenu::FrequencyMenu(BMenu* menu, BHandler* target,
fStorage(storage), fStorage(storage),
fInterface(interface) fInterface(interface)
{ {
BCatalog cat("x-vnd.Haiku-CPUFrequencyPref"); BCatalog catalog("x-vnd.Haiku-CPUFrequencyPref");
fDynamicPerformance = new BMenuItem( fDynamicPerformance = new BMenuItem(
cat.GetString("Dynamic Performance",TR_CONTEXT), catalog.GetString("Dynamic Performance",TR_CONTEXT),
new BMessage(kMsgPolicyDynamic)); new BMessage(kMsgPolicyDynamic));
fHighPerformance = new BMenuItem( fHighPerformance = new BMenuItem(
cat.GetString("High Performance",TR_CONTEXT), catalog.GetString("High Performance",TR_CONTEXT),
new BMessage(kMsgPolicyPerformance)); new BMessage(kMsgPolicyPerformance));
fLowEnergie = new BMenuItem(cat.GetString("Low Energy",TR_CONTEXT), fLowEnergie = new BMenuItem(catalog.GetString("Low Energy",TR_CONTEXT),
new BMessage(kMsgPolicyLowEnergy)); new BMessage(kMsgPolicyLowEnergy));
menu->AddItem(fDynamicPerformance); menu->AddItem(fDynamicPerformance);
menu->AddItem(fHighPerformance); menu->AddItem(fHighPerformance);
menu->AddItem(fLowEnergie); menu->AddItem(fLowEnergie);
fCustomStateMenu = new BMenu(cat.GetString("Set State",TR_CONTEXT)); fCustomStateMenu = new BMenu(catalog.GetString("Set State",TR_CONTEXT));
StateList* stateList = fInterface->GetCpuFrequencyStates(); StateList* stateList = fInterface->GetCpuFrequencyStates();
for (int i = 0; i < stateList->CountItems(); i++) { for (int i = 0; i < stateList->CountItems(); i++) {
@@ -346,13 +347,14 @@ FrequencyMenu::UpdateMenu()
StatusView::StatusView(BRect frame, bool inDeskbar, StatusView::StatusView(BRect frame, bool inDeskbar,
PreferencesStorage<freq_preferences>* storage) PreferencesStorage<freq_preferences>* storage)
: BView(frame, kDeskbarItemName, B_FOLLOW_LEFT | B_FOLLOW_TOP, :
BView(frame, kDeskbarItemName, B_FOLLOW_LEFT | B_FOLLOW_TOP,
B_WILL_DRAW | B_FRAME_EVENTS), B_WILL_DRAW | B_FRAME_EVENTS),
fInDeskbar(inDeskbar), fInDeskbar(inDeskbar),
fCurrentFrequency(NULL), fCurrentFrequency(NULL),
fDragger(NULL), fDragger(NULL),
cat("x-vnd.Haiku-CPUFrequencyPref") fCatalog("x-vnd.Haiku-CPUFrequencyPref")
{ {
if (!inDeskbar) { if (!inDeskbar) {
// we were obviously added to a standard window - let's add a dragger // we were obviously added to a standard window - let's add a dragger
@@ -405,9 +407,10 @@ StatusView::~StatusView()
void void
StatusView::_AboutRequested() StatusView::_AboutRequested()
{ {
BAlert *alert = new BAlert("about", cat.GetString("CPU Frequency\n" BAlert *alert = new BAlert("about", fCatalog.GetString("CPU Frequency\n"
"\twritten by Clemens Zeidler\n" "\twritten by Clemens Zeidler\n"
"\tCopyright 2009, Haiku, Inc.\n",TR_CONTEXT), cat.GetString("Ok",TR_CONTEXT)); "\tCopyright 2009, Haiku, Inc.\n", TR_CONTEXT),
fCatalog.GetString("Ok", TR_CONTEXT));
BTextView *view = alert->TextView(); BTextView *view = alert->TextView();
BFont font; BFont font;
@@ -487,14 +490,14 @@ StatusView::AttachedToWindow()
fPreferencesMenu->SetFont(be_plain_font); fPreferencesMenu->SetFont(be_plain_font);
fPreferencesMenu->AddSeparatorItem(); fPreferencesMenu->AddSeparatorItem();
fOpenPrefItem = new BMenuItem( fOpenPrefItem = new BMenuItem(fCatalog.GetString(
cat.GetString("Open Speedstep Preferences" B_UTF8_ELLIPSIS, TR_CONTEXT), "Open Speedstep Preferences" B_UTF8_ELLIPSIS, TR_CONTEXT),
new BMessage(kMsgOpenSSPreferences)); new BMessage(kMsgOpenSSPreferences));
fPreferencesMenu->AddItem(fOpenPrefItem); fPreferencesMenu->AddItem(fOpenPrefItem);
fOpenPrefItem->SetTarget(this); fOpenPrefItem->SetTarget(this);
if (fInDeskbar) { if (fInDeskbar) {
fQuitItem= new BMenuItem(cat.GetString("Quit", TR_CONTEXT), fQuitItem= new BMenuItem(fCatalog.GetString("Quit", TR_CONTEXT),
new BMessage(B_QUIT_REQUESTED)); new BMessage(B_QUIT_REQUESTED));
fPreferencesMenu->AddItem(fQuitItem); fPreferencesMenu->AddItem(fQuitItem);
fQuitItem->SetTarget(this); fQuitItem->SetTarget(this);
+80 -85
View File
@@ -5,10 +5,10 @@
* Authors: * Authors:
* Clemens Zeidler, [email protected] * Clemens Zeidler, [email protected]
*/ */
#ifndef STATUS_VIEW_H #ifndef STATUS_VIEW_H
#define STATUS_VIEW_H #define STATUS_VIEW_H
#include <Dragger.h> #include <Dragger.h>
#include <MessageFilter.h> #include <MessageFilter.h>
#include <MessageRunner.h> #include <MessageRunner.h>
@@ -19,124 +19,119 @@
#include "DriverInterface.h" #include "DriverInterface.h"
#include "PreferencesWindow.h" #include "PreferencesWindow.h"
#define DEBUG 1
#include <Debug.h>
#if DEBUG
# define LOG(text...) PRINT((text))
#else
# define LOG(text...)
#endif
extern const char* kDeskbarItemName; extern const char* kDeskbarItemName;
extern const char* kAddonSignature; extern const char* kAddonSignature;
class FrequencySwitcher : public BMessageFilter class FrequencySwitcher : public BMessageFilter {
{ public:
public: FrequencySwitcher(
FrequencySwitcher(CPUFreqDriverInterface* interface, CPUFreqDriverInterface* interface,
BHandler* target); BHandler* target);
virtual ~FrequencySwitcher(); virtual ~FrequencySwitcher();
virtual filter_result Filter(BMessage *message, BHandler **target); virtual filter_result Filter(BMessage* message, BHandler** _target);
void SetMode(const freq_preferences& pref); void SetMode(const freq_preferences& pref);
private: private:
void _CalculateDynamicState(); void _CalculateDynamicState();
void _StartDynamicPolicy(bool start, void _StartDynamicPolicy(bool start,
const freq_preferences& pref); const freq_preferences& pref);
CPUFreqDriverInterface* fDriverInterface; CPUFreqDriverInterface* fDriverInterface;
BHandler* fTarget; BHandler* fTarget;
BMessageRunner* fMessageRunner; BMessageRunner* fMessageRunner;
freq_info* fCurrentFrequency; freq_info* fCurrentFrequency;
bool fDynamicPolicyStarted; bool fDynamicPolicyStarted;
bigtime_t fPrevActiveTime; bigtime_t fPrevActiveTime;
bigtime_t fPrevTime; bigtime_t fPrevTime;
float fSteppingThreshold; float fSteppingThreshold;
bigtime_t fIntegrationTime; bigtime_t fIntegrationTime;
}; };
class FrequencyMenu : public BMessageFilter class FrequencyMenu : public BMessageFilter {
{ public:
public: FrequencyMenu(BMenu* menu, BHandler* target,
FrequencyMenu(BMenu* menu, BHandler* target, PreferencesStorage<freq_preferences>*
PreferencesStorage<freq_preferences>* storage, storage,
CPUFreqDriverInterface* interface); CPUFreqDriverInterface* interface);
virtual filter_result Filter(BMessage *message, BHandler **target); virtual filter_result Filter(BMessage* message, BHandler** _target);
void UpdateMenu(); void UpdateMenu();
private:
inline void _SetL1MenuLabelFrom(BMenuItem* item);
BHandler* fTarget; private:
BMenuItem* fDynamicPerformance; inline void _SetL1MenuLabelFrom(BMenuItem* item);
BMenuItem* fHighPerformance;
BMenuItem* fLowEnergie;
BMenu* fCustomStateMenu;
PreferencesStorage<freq_preferences>* fStorage; BHandler* fTarget;
CPUFreqDriverInterface* fInterface; BMenuItem* fDynamicPerformance;
BMenuItem* fHighPerformance;
BMenuItem* fLowEnergie;
BMenu* fCustomStateMenu;
PreferencesStorage<freq_preferences>* fStorage;
CPUFreqDriverInterface* fInterface;
}; };
class StatusView : public BView { class StatusView : public BView {
public: public:
StatusView(BRect frame, bool inDeskbar = false, StatusView(BRect frame, bool inDeskbar = false,
PreferencesStorage<freq_preferences>* storage = NULL); PreferencesStorage<freq_preferences>*
StatusView(BMessage* archive); storage = NULL);
virtual ~StatusView(); StatusView(BMessage* archive);
virtual ~StatusView();
static StatusView* Instantiate(BMessage* archive); static StatusView* Instantiate(BMessage* archive);
virtual status_t Archive(BMessage* archive, bool deep = true) const; virtual status_t Archive(BMessage* archive,
bool deep = true) const;
virtual void AttachedToWindow(); virtual void AttachedToWindow();
virtual void DetachedFromWindow(); virtual void DetachedFromWindow();
virtual void MessageReceived(BMessage* message); virtual void MessageReceived(BMessage* message);
virtual void FrameResized(float width, float height); virtual void FrameResized(float width, float height);
virtual void MouseDown(BPoint where); virtual void MouseDown(BPoint where);
virtual void Draw(BRect updateRect); virtual void Draw(BRect updateRect);
virtual void GetPreferredSize(float *width, float *height); virtual void GetPreferredSize(float *width, float *height);
virtual void ResizeToPreferred(void); virtual void ResizeToPreferred(void);
virtual void ShowPopUpMenu(bool show = true); virtual void ShowPopUpMenu(bool show = true);
virtual void UpdateCPUFreqState(); virtual void UpdateCPUFreqState();
private: private:
void _Init(); void _Init();
void _SetupNewFreqString(); void _SetupNewFreqString();
void _OpenPreferences(); void _OpenPreferences();
void _AboutRequested(); void _AboutRequested();
void _Quit(); void _Quit();
bool fInDeskbar; bool fInDeskbar;
CPUFreqDriverInterface fDriverInterface; CPUFreqDriverInterface fDriverInterface;
freq_info* fCurrentFrequency; freq_info* fCurrentFrequency;
FrequencySwitcher* fFrequencySwitcher; FrequencySwitcher* fFrequencySwitcher;
bool fShowPopUpMenu; bool fShowPopUpMenu;
BPopUpMenu* fPreferencesMenu; BPopUpMenu* fPreferencesMenu;
BMenuItem* fOpenPrefItem; BMenuItem* fOpenPrefItem;
BMenuItem* fQuitItem; BMenuItem* fQuitItem;
FrequencyMenu* fPreferencesMenuFilter; FrequencyMenu* fPreferencesMenuFilter;
bool fOwningStorage; bool fOwningStorage;
PreferencesStorage<freq_preferences>* fStorage; PreferencesStorage<freq_preferences>* fStorage;
PrefFileWatcher<freq_preferences>* fPrefFileWatcher; PrefFileWatcher<freq_preferences>* fPrefFileWatcher;
BString fFreqString; BString fFreqString;
BDragger* fDragger; BDragger* fDragger;
BCatalog cat; BCatalog fCatalog;
}; };
#endif // STATUS_VIEW_H #endif // STATUS_VIEW_H