git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16214 268f45cc-cd09-0410...
[WebKit-https.git] / WebKitQt / WebKitPart / WebKitFactory.cpp
1 /*
2  * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
3  *
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #include "config.h"
29 #include "WebKitFactory.h"
30
31 #include "WebKitPart.h"
32
33 #include <klocale.h>
34 #include <kinstance.h>
35 #include <kaboutdata.h>
36
37 WebKitFactory* WebKitFactory::s_self = 0;
38 unsigned long int WebKitFactory::s_refCount = 0;
39 KInstance* WebKitFactory::s_instance = 0;
40 KAboutData* WebKitFactory::s_about = 0;
41
42 WebKitFactory::WebKitFactory(bool clone)
43 {
44     if (clone)
45         ref();
46 }
47
48 WebKitFactory::~WebKitFactory()
49 {
50     if (s_self == this) {
51         Q_ASSERT(!s_refCount);
52
53         delete s_instance;
54         delete s_about;
55         
56         s_instance = 0;
57         s_about = 0;
58     }
59     else
60         deref();
61 }
62
63 KParts::Part* WebKitFactory::createPartObject(QWidget* parentWidget,
64                                               QObject* parentObject,
65                                               const char* className,
66                                               const QStringList& args)
67 {
68     WebKitPart::GUIProfile prof = WebKitPart::DefaultGUI;
69
70     if (strcmp(className, "Browser/View") == 0)
71         prof = WebKitPart::BrowserViewGUI;
72
73     return new WebKitPart(parentWidget, parentObject, prof);
74 }
75
76 KInstance* WebKitFactory::instance()
77 {
78     Q_ASSERT(s_self != 0);
79
80     if (!s_instance) {
81         s_about = new KAboutData("WebKitPart", I18N_NOOP("WebKit"), "0.1",
82                                  I18N_NOOP("Embeddable HTML/SVG component"),
83                                  KAboutData::License_LGPL);
84
85         // FIXME: Add copyright information in the KAboutData!
86         s_instance = new KInstance(s_about);
87     }
88
89     return s_instance;
90 }
91
92 void WebKitFactory::ref()
93 {
94     if (!s_refCount && !s_self)
95         s_self = new WebKitFactory();
96
97     s_refCount++;
98 }
99
100 void WebKitFactory::deref()
101 {
102     if(!--s_refCount && s_self) {
103         delete s_self;
104         s_self = 0;
105     }
106 }
107
108 // Factory entry point
109 extern "C" void* init_libWebKitPart()
110 {        
111     return new WebKitFactory(true);
112 }
113
114 #include "WebKitFactory.moc"