xref: /haiku/src/servers/print/Settings.h (revision 5def119705844a8647a92acb292f1742f640a5d1)
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