Made ConfigWindow position and whether it should be used persistent.
Small bug fixes. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1634 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -44,7 +44,7 @@
|
|||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
|
|
||||||
ConfigWindow::ConfigWindow(config_setup_kind kind, Printer* defaultPrinter, BMessage* settings, AutoReply* sender)
|
ConfigWindow::ConfigWindow(config_setup_kind kind, Printer* defaultPrinter, BMessage* settings, AutoReply* sender)
|
||||||
: BWindow(BRect(30, 30, 200, 125), "Printer Setup",
|
: BWindow(ConfigWindow::GetWindowFrame(), "Printer Setup",
|
||||||
B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE)
|
B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE)
|
||||||
, fKind(kind)
|
, fKind(kind)
|
||||||
, fDefaultPrinter(defaultPrinter)
|
, fDefaultPrinter(defaultPrinter)
|
||||||
@@ -112,9 +112,9 @@ void ConfigWindow::Go() {
|
|||||||
|
|
||||||
void ConfigWindow::MessageReceived(BMessage* m) {
|
void ConfigWindow::MessageReceived(BMessage* m) {
|
||||||
switch (m->what) {
|
switch (m->what) {
|
||||||
case MSG_PAGE_SETUP: PageSetup(m);
|
case MSG_PAGE_SETUP: Setup(kPageSetup);
|
||||||
break;
|
break;
|
||||||
case MSG_JOB_SETUP: JobSetup(m);
|
case MSG_JOB_SETUP: Setup(kJobSetup);
|
||||||
break;
|
break;
|
||||||
case MSG_PRINTER_SELECTED: {
|
case MSG_PRINTER_SELECTED: {
|
||||||
BString printer;
|
BString printer;
|
||||||
@@ -130,6 +130,27 @@ void ConfigWindow::MessageReceived(BMessage* m) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfigWindow::FrameMoved(BPoint p) {
|
||||||
|
BRect frame = GetWindowFrame();
|
||||||
|
frame.OffsetTo(p);
|
||||||
|
SetWindowFrame(frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
BRect ConfigWindow::GetWindowFrame() {
|
||||||
|
BAutolock lock(gLock);
|
||||||
|
if (lock.IsLocked()) {
|
||||||
|
return Settings::GetSettings()->ConfigWindowFrame();
|
||||||
|
}
|
||||||
|
return BRect(30, 30, 300, 300);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigWindow::SetWindowFrame(BRect r) {
|
||||||
|
BAutolock lock(gLock);
|
||||||
|
if (lock.IsLocked()) {
|
||||||
|
Settings::GetSettings()->SetConfigWindowFrame(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ConfigWindow::PrinterForMimeType() {
|
void ConfigWindow::PrinterForMimeType() {
|
||||||
BAutolock lock(gLock);
|
BAutolock lock(gLock);
|
||||||
if (fCurrentPrinter) {
|
if (fCurrentPrinter) {
|
||||||
@@ -204,29 +225,19 @@ void ConfigWindow::UpdateSettings(bool read) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigWindow::PageSetup(BMessage* m) {
|
void ConfigWindow::Setup(config_setup_kind kind) {
|
||||||
if (fCurrentPrinter) {
|
if (fCurrentPrinter) {
|
||||||
Hide();
|
Hide();
|
||||||
UpdateSettings(true);
|
UpdateSettings(true);
|
||||||
bool ok = fCurrentPrinter->ConfigurePage(fPageSettings) == B_OK;
|
bool ok;
|
||||||
|
if (kind == kPageSetup) {
|
||||||
|
ok = fCurrentPrinter->ConfigurePage(fPageSettings) == B_OK;
|
||||||
|
} else {
|
||||||
|
ok = fCurrentPrinter->ConfigureJob(fJobSettings) == B_OK;
|
||||||
|
}
|
||||||
if (ok) UpdateSettings(false);
|
if (ok) UpdateSettings(false);
|
||||||
if (ok && fKind == kPageSetup) {
|
if (ok && fKind == kind) {
|
||||||
fSender->SetReply(&fJobSettings);
|
fSender->SetReply(kind == kPageSetup ? &fPageSettings : &fJobSettings);
|
||||||
Quit();
|
|
||||||
} else {
|
|
||||||
Show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConfigWindow::JobSetup(BMessage* m) {
|
|
||||||
if (fCurrentPrinter) {
|
|
||||||
Hide();
|
|
||||||
UpdateSettings(true);
|
|
||||||
bool ok = fCurrentPrinter->ConfigureJob(fJobSettings) == B_OK;
|
|
||||||
if (ok) UpdateSettings(false);
|
|
||||||
if (ok && fKind == kJobSetup) {
|
|
||||||
fSender->SetReply(&fJobSettings);
|
|
||||||
Quit();
|
Quit();
|
||||||
} else {
|
} else {
|
||||||
Show();
|
Show();
|
||||||
|
|||||||
@@ -56,13 +56,17 @@ public:
|
|||||||
|
|
||||||
void MessageReceived(BMessage* m);
|
void MessageReceived(BMessage* m);
|
||||||
|
|
||||||
|
void FrameMoved(BPoint p);
|
||||||
|
|
||||||
|
static BRect GetWindowFrame();
|
||||||
|
static void SetWindowFrame(BRect frame);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void PrinterForMimeType();
|
void PrinterForMimeType();
|
||||||
void SetupPrintersMenu(BMenu* menu);
|
void SetupPrintersMenu(BMenu* menu);
|
||||||
void UpdateAppSettings(const char* mime, const char* printer);
|
void UpdateAppSettings(const char* mime, const char* printer);
|
||||||
void UpdateSettings(bool read);
|
void UpdateSettings(bool read);
|
||||||
void PageSetup(BMessage* m);
|
void Setup(config_setup_kind);
|
||||||
void JobSetup(BMessage* m);
|
|
||||||
|
|
||||||
config_setup_kind fKind;
|
config_setup_kind fKind;
|
||||||
Printer* fDefaultPrinter;
|
Printer* fDefaultPrinter;
|
||||||
|
|||||||
@@ -605,10 +605,16 @@ bool PrintServerApp::OpenSettings(BFile& file, bool forReading) {
|
|||||||
|
|
||||||
void PrintServerApp::LoadSettings() {
|
void PrintServerApp::LoadSettings() {
|
||||||
BFile file;
|
BFile file;
|
||||||
if (OpenSettings(file, true)) fSettings->Load(&file);
|
if (OpenSettings(file, true)) {
|
||||||
|
fSettings->Load(&file);
|
||||||
|
fUseConfigWindow = fSettings->UseConfigWindow();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintServerApp::SaveSettings() {
|
void PrintServerApp::SaveSettings() {
|
||||||
BFile file;
|
BFile file;
|
||||||
if (OpenSettings(file, false)) fSettings->Save(&file);
|
if (OpenSettings(file, false)) {
|
||||||
|
fSettings->SetUseConfigWindow(fUseConfigWindow);
|
||||||
|
fSettings->Save(&file);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,17 +57,18 @@ PrinterSettings::PrinterSettings(const char* printer, BMessage* pageSettings, BM
|
|||||||
|
|
||||||
Settings* Settings::fSingleton = NULL;
|
Settings* Settings::fSingleton = NULL;
|
||||||
|
|
||||||
|
static const BRect kConfigWindowFrame(30, 30, 220, 120);
|
||||||
|
|
||||||
|
Settings::Settings()
|
||||||
|
: fApps(true) // owns AppSettings
|
||||||
|
, fPrinters(true) // owns PrinterSettings
|
||||||
|
, fUseConfigWindow(true)
|
||||||
|
, fConfigWindowFrame(kConfigWindowFrame)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
Settings::~Settings() {
|
Settings::~Settings() {
|
||||||
fSingleton = NULL;
|
fSingleton = NULL;
|
||||||
|
|
||||||
for (int i = 0; i < AppSettingsCount(); i++) {
|
|
||||||
AppSettings* app = AppSettingsAt(i);
|
|
||||||
app->Release();
|
|
||||||
}
|
|
||||||
for (int i = 0; i < PrinterSettingsCount(); i++) {
|
|
||||||
PrinterSettings* p = PrinterSettingsAt(i);
|
|
||||||
p->Release();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings* Settings::GetSettings() {
|
Settings* Settings::GetSettings() {
|
||||||
@@ -114,6 +115,9 @@ void Settings::Save(BFile* file) {
|
|||||||
m.AddMessage("S", p->GetPageSettings());
|
m.AddMessage("S", p->GetPageSettings());
|
||||||
m.AddMessage("J", p->GetJobSettings());
|
m.AddMessage("J", p->GetJobSettings());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m.AddBool("UseConfigWindow", fUseConfigWindow);
|
||||||
|
m.AddRect("ConfigWindowFrame", fConfigWindowFrame);
|
||||||
m.Flatten(file);
|
m.Flatten(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,5 +137,11 @@ void Settings::Load(BFile* file) {
|
|||||||
m.FindMessage("J", i, &job) == B_OK; i ++) {
|
m.FindMessage("J", i, &job) == B_OK; i ++) {
|
||||||
AddPrinterSettings(new PrinterSettings(printer.String(), &page, &job));
|
AddPrinterSettings(new PrinterSettings(printer.String(), &page, &job));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m.FindBool("UseConfigWindow", &fUseConfigWindow) != B_OK)
|
||||||
|
fUseConfigWindow = true;
|
||||||
|
|
||||||
|
if (m.FindRect("ConfigWindowFrame", &fConfigWindowFrame) != B_OK)
|
||||||
|
fConfigWindowFrame = BRect(kConfigWindowFrame);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,10 +37,10 @@
|
|||||||
|
|
||||||
#include <String.h>
|
#include <String.h>
|
||||||
|
|
||||||
class AppSettings : public Object {
|
class AppSettings {
|
||||||
private:
|
private:
|
||||||
BString fMimeType;
|
BString fMimeType; // application signature
|
||||||
BString fPrinter;
|
BString fPrinter; // printer used by application (default == empty string)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AppSettings(const char* mimeType, const char* printer = NULL);
|
AppSettings(const char* mimeType, const char* printer = NULL);
|
||||||
@@ -53,11 +53,11 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class PrinterSettings : public Object {
|
class PrinterSettings {
|
||||||
private:
|
private:
|
||||||
BString fPrinter;
|
BString fPrinter;
|
||||||
BMessage fPageSettings;
|
BMessage fPageSettings; // default page settings
|
||||||
BMessage fJobSettings;
|
BMessage fJobSettings; // default job settings
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PrinterSettings(const char* printer, BMessage* pageSettings = NULL, BMessage* jobSettings = NULL);
|
PrinterSettings(const char* printer, BMessage* pageSettings = NULL, BMessage* jobSettings = NULL);
|
||||||
@@ -65,6 +65,7 @@ public:
|
|||||||
const char* GetPrinter() const { return fPrinter.String(); }
|
const char* GetPrinter() const { return fPrinter.String(); }
|
||||||
BMessage* GetPageSettings() { return &fPageSettings; }
|
BMessage* GetPageSettings() { return &fPageSettings; }
|
||||||
BMessage* GetJobSettings() { return &fJobSettings; }
|
BMessage* GetJobSettings() { return &fJobSettings; }
|
||||||
|
|
||||||
void SetPrinter(const char* p) { fPrinter = p; }
|
void SetPrinter(const char* p) { fPrinter = p; }
|
||||||
void SetPageSettings(BMessage* s) { fPageSettings = *s; }
|
void SetPageSettings(BMessage* s) { fPageSettings = *s; }
|
||||||
void SetJobSettings(BMessage* s) { fJobSettings = *s; }
|
void SetJobSettings(BMessage* s) { fJobSettings = *s; }
|
||||||
@@ -74,9 +75,11 @@ class Settings {
|
|||||||
private:
|
private:
|
||||||
BObjectList<AppSettings> fApps;
|
BObjectList<AppSettings> fApps;
|
||||||
BObjectList<PrinterSettings> fPrinters;
|
BObjectList<PrinterSettings> fPrinters;
|
||||||
|
bool fUseConfigWindow;
|
||||||
|
BRect fConfigWindowFrame;
|
||||||
|
|
||||||
static Settings* fSingleton;
|
static Settings* fSingleton;
|
||||||
Settings() { }
|
Settings();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static Settings* GetSettings();
|
static Settings* GetSettings();
|
||||||
@@ -93,6 +96,11 @@ public:
|
|||||||
void AddPrinterSettings(PrinterSettings* s) { fPrinters.AddItem(s); }
|
void AddPrinterSettings(PrinterSettings* s) { fPrinters.AddItem(s); }
|
||||||
void RemovePrinterSettings(int i);
|
void RemovePrinterSettings(int i);
|
||||||
PrinterSettings* FindPrinterSettings(const char* printer);
|
PrinterSettings* FindPrinterSettings(const char* printer);
|
||||||
|
|
||||||
|
bool UseConfigWindow() const { return fUseConfigWindow; }
|
||||||
|
void SetUseConfigWindow(bool b) { fUseConfigWindow = b; }
|
||||||
|
BRect ConfigWindowFrame() const { return fConfigWindowFrame; }
|
||||||
|
void SetConfigWindowFrame(BRect r) { fConfigWindowFrame = r; }
|
||||||
|
|
||||||
void Save(BFile* settings_file);
|
void Save(BFile* settings_file);
|
||||||
void Load(BFile* settings_file);
|
void Load(BFile* settings_file);
|
||||||
|
|||||||
Reference in New Issue
Block a user