17977efcfSMichael Pfeiffer /*****************************************************************************/ 27977efcfSMichael Pfeiffer // Settings 37977efcfSMichael Pfeiffer // 47977efcfSMichael Pfeiffer // Author 57977efcfSMichael Pfeiffer // Michael Pfeiffer 67977efcfSMichael Pfeiffer // 77977efcfSMichael Pfeiffer // This application and all source files used in its construction, except 87977efcfSMichael Pfeiffer // where noted, are licensed under the MIT License, and have been written 97977efcfSMichael Pfeiffer // and are: 107977efcfSMichael Pfeiffer // 117977efcfSMichael Pfeiffer // Copyright (c) 2002 OpenBeOS Project 127977efcfSMichael Pfeiffer // 137977efcfSMichael Pfeiffer // Permission is hereby granted, free of charge, to any person obtaining a 147977efcfSMichael Pfeiffer // copy of this software and associated documentation files (the "Software"), 157977efcfSMichael Pfeiffer // to deal in the Software without restriction, including without limitation 167977efcfSMichael Pfeiffer // the rights to use, copy, modify, merge, publish, distribute, sublicense, 177977efcfSMichael Pfeiffer // and/or sell copies of the Software, and to permit persons to whom the 187977efcfSMichael Pfeiffer // Software is furnished to do so, subject to the following conditions: 197977efcfSMichael Pfeiffer // 207977efcfSMichael Pfeiffer // The above copyright notice and this permission notice shall be included 217977efcfSMichael Pfeiffer // in all copies or substantial portions of the Software. 227977efcfSMichael Pfeiffer // 237977efcfSMichael Pfeiffer // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 247977efcfSMichael Pfeiffer // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 257977efcfSMichael Pfeiffer // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 267977efcfSMichael Pfeiffer // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 277977efcfSMichael Pfeiffer // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 287977efcfSMichael Pfeiffer // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 297977efcfSMichael Pfeiffer // DEALINGS IN THE SOFTWARE. 307977efcfSMichael Pfeiffer /*****************************************************************************/ 317977efcfSMichael Pfeiffer 327977efcfSMichael Pfeiffer #ifndef _SETTINGS_H 337977efcfSMichael Pfeiffer #define _SETTINGS_H 347977efcfSMichael Pfeiffer 357977efcfSMichael Pfeiffer #include "BeUtils.h" 367977efcfSMichael Pfeiffer #include "ObjectList.h" 377977efcfSMichael Pfeiffer 387977efcfSMichael Pfeiffer #include <String.h> 397977efcfSMichael Pfeiffer 406ec7a3e7SMichael Pfeiffer class AppSettings { 417977efcfSMichael Pfeiffer private: 426ec7a3e7SMichael Pfeiffer BString fMimeType; // application signature 436ec7a3e7SMichael Pfeiffer BString fPrinter; // printer used by application (default == empty string) 447977efcfSMichael Pfeiffer 457977efcfSMichael Pfeiffer public: 467977efcfSMichael Pfeiffer AppSettings(const char* mimeType, const char* printer = NULL); 477977efcfSMichael Pfeiffer 487977efcfSMichael Pfeiffer const char* GetMimeType() const { return fMimeType.String(); } 497977efcfSMichael Pfeiffer bool UsesDefaultPrinter() const { return fMimeType.Length() == 0; } 507977efcfSMichael Pfeiffer const char* GetPrinter() const { return fPrinter.String(); } 517977efcfSMichael Pfeiffer void SetPrinter(const char* printer) { fPrinter = printer; } 527977efcfSMichael Pfeiffer void SetDefaultPrinter() { fPrinter = ""; } 537977efcfSMichael Pfeiffer }; 547977efcfSMichael Pfeiffer 557977efcfSMichael Pfeiffer 566ec7a3e7SMichael Pfeiffer class PrinterSettings { 577977efcfSMichael Pfeiffer private: 587977efcfSMichael Pfeiffer BString fPrinter; 596ec7a3e7SMichael Pfeiffer BMessage fPageSettings; // default page settings 606ec7a3e7SMichael Pfeiffer BMessage fJobSettings; // default job settings 617977efcfSMichael Pfeiffer 627977efcfSMichael Pfeiffer public: 637977efcfSMichael Pfeiffer PrinterSettings(const char* printer, BMessage* pageSettings = NULL, BMessage* jobSettings = NULL); 647977efcfSMichael Pfeiffer 657977efcfSMichael Pfeiffer const char* GetPrinter() const { return fPrinter.String(); } 667977efcfSMichael Pfeiffer BMessage* GetPageSettings() { return &fPageSettings; } 677977efcfSMichael Pfeiffer BMessage* GetJobSettings() { return &fJobSettings; } 686ec7a3e7SMichael Pfeiffer 697977efcfSMichael Pfeiffer void SetPrinter(const char* p) { fPrinter = p; } 707977efcfSMichael Pfeiffer void SetPageSettings(BMessage* s) { fPageSettings = *s; } 717977efcfSMichael Pfeiffer void SetJobSettings(BMessage* s) { fJobSettings = *s; } 727977efcfSMichael Pfeiffer }; 737977efcfSMichael Pfeiffer 747977efcfSMichael Pfeiffer class Settings { 757977efcfSMichael Pfeiffer private: 767977efcfSMichael Pfeiffer BObjectList<AppSettings> fApps; 777977efcfSMichael Pfeiffer BObjectList<PrinterSettings> fPrinters; 786ec7a3e7SMichael Pfeiffer bool fUseConfigWindow; 796ec7a3e7SMichael Pfeiffer BRect fConfigWindowFrame; 80*5def1197SMichael Pfeiffer BString fDefaultPrinter; 817977efcfSMichael Pfeiffer 827977efcfSMichael Pfeiffer static Settings* fSingleton; 836ec7a3e7SMichael Pfeiffer Settings(); 847977efcfSMichael Pfeiffer 857977efcfSMichael Pfeiffer public: 867977efcfSMichael Pfeiffer static Settings* GetSettings(); 877977efcfSMichael Pfeiffer ~Settings(); 887977efcfSMichael Pfeiffer 897977efcfSMichael Pfeiffer int AppSettingsCount() const { return fApps.CountItems(); } 907977efcfSMichael Pfeiffer AppSettings* AppSettingsAt(int i) { return fApps.ItemAt(i); } 917977efcfSMichael Pfeiffer void AddAppSettings(AppSettings* s) { fApps.AddItem(s); } 927977efcfSMichael Pfeiffer void RemoveAppSettings(int i); 937977efcfSMichael Pfeiffer AppSettings* FindAppSettings(const char* mimeType); 947977efcfSMichael Pfeiffer 957977efcfSMichael Pfeiffer int PrinterSettingsCount() const { return fPrinters.CountItems(); } 967977efcfSMichael Pfeiffer PrinterSettings* PrinterSettingsAt(int i) { return fPrinters.ItemAt(i); } 977977efcfSMichael Pfeiffer void AddPrinterSettings(PrinterSettings* s) { fPrinters.AddItem(s); } 987977efcfSMichael Pfeiffer void RemovePrinterSettings(int i); 997977efcfSMichael Pfeiffer PrinterSettings* FindPrinterSettings(const char* printer); 1007977efcfSMichael Pfeiffer 1016ec7a3e7SMichael Pfeiffer bool UseConfigWindow() const { return fUseConfigWindow; } 1026ec7a3e7SMichael Pfeiffer void SetUseConfigWindow(bool b) { fUseConfigWindow = b; } 1036ec7a3e7SMichael Pfeiffer BRect ConfigWindowFrame() const { return fConfigWindowFrame; } 1046ec7a3e7SMichael Pfeiffer void SetConfigWindowFrame(BRect r) { fConfigWindowFrame = r; } 105*5def1197SMichael Pfeiffer const char* DefaultPrinter() const { return fDefaultPrinter.String(); } 106*5def1197SMichael Pfeiffer void SetDefaultPrinter(const char* n) { fDefaultPrinter = n; } 1076ec7a3e7SMichael Pfeiffer 1087977efcfSMichael Pfeiffer void Save(BFile* settings_file); 1097977efcfSMichael Pfeiffer void Load(BFile* settings_file); 1107977efcfSMichael Pfeiffer }; 1117977efcfSMichael Pfeiffer 1127977efcfSMichael Pfeiffer #endif 113