* 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

View File

@ -5,12 +5,27 @@
* Authors:
* Clemens Zeidler, haiku@clemens-zeidler.de
*/
#ifndef PREFERENCESWINDOW_h
#define PREFERENCESWINDOW_h
#ifndef PREFERENCES_WINDOW_h
#define PREFERENCES_WINDOW_h
#define DEBUG 1
#include <Application.h>
#include <Button.h>
#include <Catalog.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
# define LOG(text...) PRINT((text))
@ -18,103 +33,84 @@
# define LOG(text...)
#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"
// messages PrefFileWatcher
const uint32 kUpdatedPreferences = '&UdP';
template<typename Preferences>
class PreferencesStorage
{
public:
PreferencesStorage(const char* file,
const Preferences& defaultPreferences);
~PreferencesStorage();
class PreferencesStorage {
public:
PreferencesStorage(const char* file,
const Preferences& defaultPreferences);
~PreferencesStorage();
void Revert();
void Defaults();
void Revert();
void Defaults();
BPoint WindowPosition(){return fWindowPosition;}
void SetWindowPosition(BPoint position){
fWindowPosition = position;}
Preferences* GetPreferences(){return &fPreferences;}
status_t LoadPreferences();
status_t SavePreferences();
BString& PreferencesFile() { return fPreferencesFile; }
status_t GetPreferencesPath(BPath &path);
private:
BString fPreferencesFile;
Preferences fPreferences;
Preferences fStartPreferences;
const Preferences& fDefaultPreferences;
BPoint fWindowPosition;
BPoint WindowPosition() {return fWindowPosition; }
void SetWindowPosition(BPoint position)
{ fWindowPosition = position; }
Preferences* GetPreferences() { return &fPreferences; }
status_t LoadPreferences();
status_t SavePreferences();
BString& PreferencesFile() { return fPreferencesFile; }
status_t GetPreferencesPath(BPath &path);
private:
BString fPreferencesFile;
Preferences fPreferences;
Preferences fStartPreferences;
const Preferences& fDefaultPreferences;
BPoint fWindowPosition;
};
template<typename Preferences>
class PrefFileWatcher : public BMessageFilter
{
public:
PrefFileWatcher(PreferencesStorage<Preferences>* storage,
BHandler* target);
~PrefFileWatcher();
virtual filter_result Filter(BMessage *message, BHandler **target);
class PrefFileWatcher : public BMessageFilter {
public:
PrefFileWatcher(
PreferencesStorage<Preferences>* storage,
BHandler* target);
virtual ~PrefFileWatcher();
virtual filter_result Filter(BMessage* message, BHandler** _target);
private:
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>
class PreferencesWindow : public BWindow, public PreferencesStorage<Preferences>
{
public:
class PreferencesWindow : public BWindow,
public PreferencesStorage<Preferences> {
public:
PreferencesWindow(const char* title,
const char* file,
const Preferences& defaultPreferences);
~PreferencesWindow();
virtual void MessageReceived(BMessage *msg);
virtual bool QuitRequested();
const char* file,
const Preferences& defaultPreferences);
virtual ~PreferencesWindow();
virtual void MessageReceived(BMessage *msg);
virtual bool QuitRequested();
virtual bool SetPreferencesView(BView* prefView);
virtual bool SetPreferencesView(BView* prefView);
private:
void _MoveToPosition();
BView* fPreferencesView;
BButton* fRevertButton;
BButton* fDefaultButton;
BGroupLayout* fRootLayout;
private:
void _MoveToPosition();
BView* fPreferencesView;
BButton* fRevertButton;
BButton* fDefaultButton;
BGroupLayout* fRootLayout;
};
@ -122,10 +118,12 @@ const uint32 kDefaultMsg = 'dems';
const uint32 kRevertMsg = 'rems';
const uint32 kConfigChangedMsg = '&cgh';
template<typename Preferences>
PreferencesStorage<Preferences>::PreferencesStorage(const char* file,
const Preferences& defaultPreferences)
: fDefaultPreferences(defaultPreferences)
const Preferences& defaultPreferences)
:
fDefaultPreferences(defaultPreferences)
{
// default center position
fWindowPosition.x = -1;
@ -236,23 +234,25 @@ PreferencesStorage<Preferences>::SavePreferences()
template<typename Preferences>
PrefFileWatcher<Preferences>::PrefFileWatcher(PreferencesStorage<Preferences>* storage,
BHandler* target)
: BMessageFilter(B_PROGRAMMED_DELIVERY, B_ANY_SOURCE),
fPreferencesStorage(storage),
fTarget(target)
PrefFileWatcher<Preferences>::PrefFileWatcher(
PreferencesStorage<Preferences>* storage, BHandler* target)
:
BMessageFilter(B_PROGRAMMED_DELIVERY, B_ANY_SOURCE),
fPreferencesStorage(storage),
fTarget(target)
{
BPath path;
find_directory(B_USER_SETTINGS_DIRECTORY, &path);
BEntry entry(path.Path());
entry.GetNodeRef(&fPreferencesDirectoryNode);
watch_node(&fPreferencesDirectoryNode, B_WATCH_DIRECTORY,
fTarget);
if (entry.GetNodeRef(&fPreferencesDirectoryNode) == B_OK)
watch_node(&fPreferencesDirectoryNode, B_WATCH_DIRECTORY, fTarget);
path.Append(fPreferencesStorage->PreferencesFile().String());
entry.SetTo(path.Path());
entry.GetNodeRef(&fPreferencesNode);
watch_node(&fPreferencesNode, B_WATCH_STAT,
fTarget);
if (entry.GetNodeRef(&fPreferencesNode) == B_OK)
watch_node(&fPreferencesNode, B_WATCH_STAT, fTarget);
}
@ -278,12 +278,12 @@ PrefFileWatcher<Preferences>::Filter(BMessage *msg, BHandler **target)
|| msg->FindInt32("opcode", &opcode) != B_OK)
return result;
switch(opcode)
{
switch (opcode) {
case B_ENTRY_MOVED:
msg->FindInt64("to directory", dir);
if (dir != fPreferencesDirectoryNode.node)
break;
// supposed to fall through
case B_ENTRY_CREATED:
msg->FindString("name", &name);
@ -305,7 +305,7 @@ PrefFileWatcher<Preferences>::Filter(BMessage *msg, BHandler **target)
stop_watching(fTarget);
// and start watching the directory again
watch_node(&fPreferencesDirectoryNode, B_WATCH_DIRECTORY,
fTarget);
fTarget);
msg->what = kUpdatedPreferences;
}
break;
@ -325,17 +325,15 @@ PrefFileWatcher<Preferences>::Filter(BMessage *msg, BHandler **target)
template<typename Preferences>
PreferencesWindow<Preferences>::PreferencesWindow(const char* title,
const char* file,
const Preferences& defaultPreferences)
: BWindow(BRect(50, 50, 400, 350), title, B_TITLED_WINDOW,
B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_AVOID_FRONT
| B_ASYNCHRONOUS_CONTROLS),
PreferencesStorage<Preferences>(file, defaultPreferences),
fPreferencesView(NULL)
const char* file, const Preferences& defaultPreferences)
:
BWindow(BRect(50, 50, 400, 350), title, B_TITLED_WINDOW,
B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_ASYNCHRONOUS_CONTROLS),
PreferencesStorage<Preferences>(file, defaultPreferences),
fPreferencesView(NULL)
{
BGroupView* buttonView = new BGroupView(B_HORIZONTAL);
fDefaultButton = new BButton(TR("Defaults"),
new BMessage(kDefaultMsg));
fDefaultButton = new BButton(TR("Defaults"), new BMessage(kDefaultMsg));
buttonView->AddChild(fDefaultButton);
buttonView->GetLayout()->AddItem(BSpaceLayoutItem::CreateHorizontalStrut(7));
@ -431,7 +429,7 @@ PreferencesWindow<Preferences>::_MoveToPosition()
{
BPoint position = PreferencesStorage<Preferences>::WindowPosition();
// 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 windowFrame = Frame();
position.x = (rect.Width() - windowFrame.Width()) / 2;
@ -440,4 +438,6 @@ PreferencesWindow<Preferences>::_MoveToPosition()
MoveTo(position);
}
#endif
#undef TR_CONTEXT
#endif // PREFERENCES_WINDOW_h

View File

@ -6,6 +6,7 @@
* Clemens Zeidler, haiku@clemens-zeidler.de
*/
#include "StatusView.h"
#include <string.h>
@ -24,12 +25,11 @@
#include "CPUFrequencyView.h"
#define TR_CONTEXT "Status view"
extern "C" _EXPORT BView *instantiate_deskbar_item(void);
#define TR_CONTEXT "Status view"
#define MAX_FREQ_STRING "9999MHz"
// messages FrequencySwitcher
@ -48,7 +48,8 @@ const char* kDeskbarItemName = "CPUFreqStatusView";
FrequencySwitcher::FrequencySwitcher(CPUFreqDriverInterface* interface,
BHandler* target)
: BMessageFilter(B_PROGRAMMED_DELIVERY, B_ANY_SOURCE),
:
BMessageFilter(B_PROGRAMMED_DELIVERY, B_ANY_SOURCE),
fDriverInterface(interface),
fTarget(target),
fMessageRunner(NULL),
@ -194,21 +195,21 @@ FrequencyMenu::FrequencyMenu(BMenu* menu, BHandler* target,
fStorage(storage),
fInterface(interface)
{
BCatalog cat("x-vnd.Haiku-CPUFrequencyPref");
BCatalog catalog("x-vnd.Haiku-CPUFrequencyPref");
fDynamicPerformance = new BMenuItem(
cat.GetString("Dynamic Performance",TR_CONTEXT),
catalog.GetString("Dynamic Performance",TR_CONTEXT),
new BMessage(kMsgPolicyDynamic));
fHighPerformance = new BMenuItem(
cat.GetString("High Performance",TR_CONTEXT),
catalog.GetString("High Performance",TR_CONTEXT),
new BMessage(kMsgPolicyPerformance));
fLowEnergie = new BMenuItem(cat.GetString("Low Energy",TR_CONTEXT),
fLowEnergie = new BMenuItem(catalog.GetString("Low Energy",TR_CONTEXT),
new BMessage(kMsgPolicyLowEnergy));
menu->AddItem(fDynamicPerformance);
menu->AddItem(fHighPerformance);
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();
for (int i = 0; i < stateList->CountItems(); i++) {
@ -345,14 +346,15 @@ FrequencyMenu::UpdateMenu()
// #pragma mark -
StatusView::StatusView(BRect frame, bool inDeskbar,
PreferencesStorage<freq_preferences>* storage)
: BView(frame, kDeskbarItemName, B_FOLLOW_LEFT | B_FOLLOW_TOP,
StatusView::StatusView(BRect frame, bool inDeskbar,
PreferencesStorage<freq_preferences>* storage)
:
BView(frame, kDeskbarItemName, B_FOLLOW_LEFT | B_FOLLOW_TOP,
B_WILL_DRAW | B_FRAME_EVENTS),
fInDeskbar(inDeskbar),
fCurrentFrequency(NULL),
fDragger(NULL),
cat("x-vnd.Haiku-CPUFrequencyPref")
fCatalog("x-vnd.Haiku-CPUFrequencyPref")
{
if (!inDeskbar) {
// we were obviously added to a standard window - let's add a dragger
@ -405,9 +407,10 @@ StatusView::~StatusView()
void
StatusView::_AboutRequested()
{
BAlert *alert = new BAlert("about", cat.GetString("CPU Frequency\n"
"\twritten by Clemens Zeidler\n"
"\tCopyright 2009, Haiku, Inc.\n",TR_CONTEXT), cat.GetString("Ok",TR_CONTEXT));
BAlert *alert = new BAlert("about", fCatalog.GetString("CPU Frequency\n"
"\twritten by Clemens Zeidler\n"
"\tCopyright 2009, Haiku, Inc.\n", TR_CONTEXT),
fCatalog.GetString("Ok", TR_CONTEXT));
BTextView *view = alert->TextView();
BFont font;
@ -487,14 +490,14 @@ StatusView::AttachedToWindow()
fPreferencesMenu->SetFont(be_plain_font);
fPreferencesMenu->AddSeparatorItem();
fOpenPrefItem = new BMenuItem(
cat.GetString("Open Speedstep Preferences" B_UTF8_ELLIPSIS, TR_CONTEXT),
fOpenPrefItem = new BMenuItem(fCatalog.GetString(
"Open Speedstep Preferences" B_UTF8_ELLIPSIS, TR_CONTEXT),
new BMessage(kMsgOpenSSPreferences));
fPreferencesMenu->AddItem(fOpenPrefItem);
fOpenPrefItem->SetTarget(this);
if (fInDeskbar) {
fQuitItem= new BMenuItem(cat.GetString("Quit", TR_CONTEXT),
fQuitItem= new BMenuItem(fCatalog.GetString("Quit", TR_CONTEXT),
new BMessage(B_QUIT_REQUESTED));
fPreferencesMenu->AddItem(fQuitItem);
fQuitItem->SetTarget(this);

View File

@ -5,10 +5,10 @@
* Authors:
* Clemens Zeidler, haiku@clemens-zeidler.de
*/
#ifndef STATUS_VIEW_H
#define STATUS_VIEW_H
#include <Dragger.h>
#include <MessageFilter.h>
#include <MessageRunner.h>
@ -19,124 +19,119 @@
#include "DriverInterface.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* kAddonSignature;
class FrequencySwitcher : public BMessageFilter
{
public:
FrequencySwitcher(CPUFreqDriverInterface* interface,
BHandler* target);
virtual ~FrequencySwitcher();
class FrequencySwitcher : public BMessageFilter {
public:
FrequencySwitcher(
CPUFreqDriverInterface* interface,
BHandler* target);
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:
void _CalculateDynamicState();
void _StartDynamicPolicy(bool start,
const freq_preferences& pref);
private:
void _CalculateDynamicState();
void _StartDynamicPolicy(bool start,
const freq_preferences& pref);
CPUFreqDriverInterface* fDriverInterface;
BHandler* fTarget;
BMessageRunner* fMessageRunner;
freq_info* fCurrentFrequency;
bool fDynamicPolicyStarted;
bigtime_t fPrevActiveTime;
bigtime_t fPrevTime;
float fSteppingThreshold;
bigtime_t fIntegrationTime;
CPUFreqDriverInterface* fDriverInterface;
BHandler* fTarget;
BMessageRunner* fMessageRunner;
freq_info* fCurrentFrequency;
bool fDynamicPolicyStarted;
bigtime_t fPrevActiveTime;
bigtime_t fPrevTime;
float fSteppingThreshold;
bigtime_t fIntegrationTime;
};
class FrequencyMenu : public BMessageFilter
{
public:
FrequencyMenu(BMenu* menu, BHandler* target,
PreferencesStorage<freq_preferences>* storage,
CPUFreqDriverInterface* interface);
virtual filter_result Filter(BMessage *message, BHandler **target);
class FrequencyMenu : public BMessageFilter {
public:
FrequencyMenu(BMenu* menu, BHandler* target,
PreferencesStorage<freq_preferences>*
storage,
CPUFreqDriverInterface* interface);
virtual filter_result Filter(BMessage* message, BHandler** _target);
void UpdateMenu();
private:
inline void _SetL1MenuLabelFrom(BMenuItem* item);
void UpdateMenu();
private:
inline void _SetL1MenuLabelFrom(BMenuItem* item);
BHandler* fTarget;
BMenuItem* fDynamicPerformance;
BMenuItem* fHighPerformance;
BMenuItem* fLowEnergie;
BMenu* fCustomStateMenu;
PreferencesStorage<freq_preferences>* fStorage;
CPUFreqDriverInterface* fInterface;
BHandler* fTarget;
BMenuItem* fDynamicPerformance;
BMenuItem* fHighPerformance;
BMenuItem* fLowEnergie;
BMenu* fCustomStateMenu;
PreferencesStorage<freq_preferences>* fStorage;
CPUFreqDriverInterface* fInterface;
};
class StatusView : public BView {
public:
StatusView(BRect frame, bool inDeskbar = false,
PreferencesStorage<freq_preferences>* storage = NULL);
StatusView(BMessage* archive);
virtual ~StatusView();
public:
StatusView(BRect frame, bool inDeskbar = false,
PreferencesStorage<freq_preferences>*
storage = NULL);
StatusView(BMessage* archive);
virtual ~StatusView();
static StatusView* Instantiate(BMessage* archive);
virtual status_t Archive(BMessage* archive, bool deep = true) const;
static StatusView* Instantiate(BMessage* archive);
virtual status_t Archive(BMessage* archive,
bool deep = true) const;
virtual void AttachedToWindow();
virtual void DetachedFromWindow();
virtual void AttachedToWindow();
virtual void DetachedFromWindow();
virtual void MessageReceived(BMessage* message);
virtual void FrameResized(float width, float height);
virtual void MouseDown(BPoint where);
virtual void Draw(BRect updateRect);
virtual void MessageReceived(BMessage* message);
virtual void FrameResized(float width, float height);
virtual void MouseDown(BPoint where);
virtual void Draw(BRect updateRect);
virtual void GetPreferredSize(float *width, float *height);
virtual void ResizeToPreferred(void);
virtual void GetPreferredSize(float *width, float *height);
virtual void ResizeToPreferred(void);
virtual void ShowPopUpMenu(bool show = true);
virtual void UpdateCPUFreqState();
virtual void ShowPopUpMenu(bool show = true);
virtual void UpdateCPUFreqState();
private:
void _Init();
void _SetupNewFreqString();
void _OpenPreferences();
void _AboutRequested();
void _Quit();
bool fInDeskbar;
CPUFreqDriverInterface fDriverInterface;
freq_info* fCurrentFrequency;
FrequencySwitcher* fFrequencySwitcher;
bool fShowPopUpMenu;
BPopUpMenu* fPreferencesMenu;
BMenuItem* fOpenPrefItem;
BMenuItem* fQuitItem;
FrequencyMenu* fPreferencesMenuFilter;
bool fOwningStorage;
PreferencesStorage<freq_preferences>* fStorage;
PrefFileWatcher<freq_preferences>* fPrefFileWatcher;
BString fFreqString;
BDragger* fDragger;
private:
void _Init();
void _SetupNewFreqString();
void _OpenPreferences();
void _AboutRequested();
void _Quit();
bool fInDeskbar;
CPUFreqDriverInterface fDriverInterface;
freq_info* fCurrentFrequency;
FrequencySwitcher* fFrequencySwitcher;
bool fShowPopUpMenu;
BPopUpMenu* fPreferencesMenu;
BMenuItem* fOpenPrefItem;
BMenuItem* fQuitItem;
FrequencyMenu* fPreferencesMenuFilter;
bool fOwningStorage;
PreferencesStorage<freq_preferences>* fStorage;
PrefFileWatcher<freq_preferences>* fPrefFileWatcher;
BString fFreqString;
BDragger* fDragger;
BCatalog cat;
BCatalog fCatalog;
};
#endif // STATUS_VIEW_H