<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="14.2">
  <help_text>// Uncomment the following line to change the fontsize and font:
//fontsize=13
fontfamily=SansSerif //possible: SansSerif,Serif,Monospaced


//////////////////////////////////////////////////////////////////////////////////////////////
// Welcome to UMLet!
//
// Double-click on elements to add them to the diagram, or to copy them
// Edit elements by modifying the text in this panel
// Hold Cmd to select multiple elements
// Use Cmd+mouse to select via lasso
//
// Use +/- or Cmd+mouse wheel to zoom
// Drag a whole relation at its central square icon
//
// Press Cmd+C to copy the whole diagram to the system clipboard (then just paste it to, eg, Word)
// Edit the files in the "palettes" directory to create your own element palettes
//
// Select "Custom Elements &gt; New..." to create new element types
//////////////////////////////////////////////////////////////////////////////////////////////


// This text will be stored with each diagram;  use it for notes.</help_text>
  <zoom_level>4</zoom_level>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>572</x>
      <y>760</y>
      <w>40</w>
      <h>16</h>
    </coordinates>
    <panel_attributes>QListView
fg=#00ff00
bg=#ccffcc
valign=center
halign=center</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>496</x>
      <y>732</y>
      <w>56</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>Inputline
--
Read user input
halign=center</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>564</x>
      <y>732</y>
      <w>56</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>ProposalList
--
Shows the results
halign=center</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>588</x>
      <y>748</y>
      <w>12</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;30.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>504</x>
      <y>760</y>
      <w>40</w>
      <h>16</h>
    </coordinates>
    <panel_attributes>QLineEdit
fg=#00ff00
bg=#ccffcc
valign=center
halign=center</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>520</x>
      <y>748</y>
      <w>12</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;30.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>532</x>
      <y>708</y>
      <w>12</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-
</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;60.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>576</x>
      <y>708</y>
      <w>12</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-
</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;60.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>308</x>
      <y>1256</y>
      <w>312</w>
      <h>72</h>
    </coordinates>
    <panel_attributes>Albert::Extension::Utils
bg=#c0c0c0
layer=-1
fg=#ff8000
fontsize=15</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>512</x>
      <y>604</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>AlbertApp
--
+showSettings() : void
+showMainWindow(QString) : void
+hideMainWindow() : void
--
The root class
bg=gray
lw=2
halign=center</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>392</x>
      <y>604</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>SettingsWidget
--
The global user 
settings widget

type=actclass
halign=center
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>392</x>
      <y>672</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>HotkeyManager
--
registerHotkey(...) : bool
unregisterHotkey(...) : bool
--
Manage global hotkeys
type=actclass
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>512</x>
      <y>672</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>MainWidget
--
Graphical user iface

type=actclass
halign=center
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>444</x>
      <y>880</y>
      <w>116</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>ExtensionManager
--
+startSession() : void
+teardownSession() : void
+startQuery(QString) : void
+activate(const QModelIndex &amp;) : void
--
Manages and queries the extensions

bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>444</x>
      <y>924</y>
      <w>12</w>
      <h>128</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;300.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>476</x>
      <y>640</y>
      <w>44</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>lt=-&gt;&gt;&gt;&gt;</panel_attributes>
    <additional_attributes>90.0;80.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>476</x>
      <y>640</y>
      <w>44</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-&gt;
m1=
m2=1</panel_attributes>
    <additional_attributes>90.0;10.0;10.0;80.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>552</x>
      <y>640</y>
      <w>12</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-&gt;
m1=
m2=1</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;80.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>476</x>
      <y>620</y>
      <w>44</w>
      <h>16</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-&gt;
m1=
m2=0,1</panel_attributes>
    <additional_attributes>90.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>464</x>
      <y>708</y>
      <w>12</w>
      <h>180</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-&gt;
m1=
m2=1</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;430.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>320</x>
      <y>1196</y>
      <w>104</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>ConcreteExtension
--
The implementation of a concrete extension. (e.g. Files, Apps, Bookmarks, etc)

fg=#0060c0
bg=#60c0ff
style=wordwrap</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>400</x>
      <y>1120</y>
      <w>12</w>
      <h>84</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;.</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;190.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>504</x>
      <y>1196</y>
      <w>104</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>ConcreteItem
--
The implementation of an item of a concrete extension. (e.g. file-, app- or bookmarkitem)
fg=#0060c0
bg=#60c0ff

style=wordwrap</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>604</x>
      <y>1220</y>
      <w>120</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>280.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>308</x>
      <y>1180</y>
      <w>312</w>
      <h>68</h>
    </coordinates>
    <panel_attributes>Albert::Extension::ConcreteNamespace
fg=#0060c0
bg=#60c0ff
layer=-1
fontsize=15</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>600</x>
      <y>836</y>
      <w>12</w>
      <h>24</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;40.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>588</x>
      <y>772</y>
      <w>12</w>
      <h>60</h>
    </coordinates>
    <panel_attributes>lt=.
fg=#00ff00
bg=#ccffcc</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;130.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>572</x>
      <y>824</y>
      <w>64</w>
      <h>16</h>
    </coordinates>
    <panel_attributes>QAbstractItemModel
fg=#00ff00
bg=#ccffcc
valign=center
halign=center</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>496</x>
      <y>772</y>
      <w>84</w>
      <h>116</h>
    </coordinates>
    <panel_attributes>lt=&lt;.
&lt; activated
fg=#8000ff</panel_attributes>
    <additional_attributes>10.0;270.0;10.0;190.0;190.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>488</x>
      <y>772</y>
      <w>52</w>
      <h>116</h>
    </coordinates>
    <panel_attributes>lt=&lt;.
&lt; textChanged
fg=#8000ff</panel_attributes>
    <additional_attributes>10.0;270.0;10.0;40.0;40.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>320</x>
      <y>1272</y>
      <w>152</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>Search
--
add(IIndexable*) : void
add(QList&lt;IIndexable*&gt;&amp;) : void
clear() : void
search(const QString &amp;req) : QList&lt;IIndexable*&gt;
--
Indexes the items for a fast / fuzzy lookup</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>468</x>
      <y>1280</y>
      <w>68</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=-&gt;&gt;&gt;&gt;</panel_attributes>
    <additional_attributes>150.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLNote</id>
    <coordinates>
      <x>800</x>
      <y>848</y>
      <w>56</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>Note..
bg=#8000ff
fg=#8000ff</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLNote</id>
    <coordinates>
      <x>800</x>
      <y>832</y>
      <w>56</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>Note..
bg=#0080ff
fg=#0080ff</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLNote</id>
    <coordinates>
      <x>800</x>
      <y>896</y>
      <w>56</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>Note..
bg=#ff8000
fg=#ff8000</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLNote</id>
    <coordinates>
      <x>800</x>
      <y>912</y>
      <w>56</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>Note..
bg=#ff0080
fg=#ff0080</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLNote</id>
    <coordinates>
      <x>800</x>
      <y>880</y>
      <w>56</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>Note..
bg=#00ff80
fg=#00ff80</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLNote</id>
    <coordinates>
      <x>800</x>
      <y>864</y>
      <w>56</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>Note..
bg=#80ff00
fg=#80ff00</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>368</x>
      <y>1232</y>
      <w>12</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;..
fg=#0060c0</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;100.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>564</x>
      <y>1232</y>
      <w>12</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;..
fg=#0060c0</panel_attributes>
    <additional_attributes>10.0;100.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLState</id>
    <coordinates>
      <x>740</x>
      <y>708</y>
      <w>92</w>
      <h>24</h>
    </coordinates>
    <panel_attributes>albert-v0.9.0-alpha
fg=#ff8000
bg=#000000
fontsize=18</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>352</x>
      <y>1044</y>
      <w>108</w>
      <h>80</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/IExtension/
aka. QueryHandler
--
/id() : QString/
/initialize(CoreAPI &amp;) : void/
/finalize() : void/
/setupSession() : void/
/teardownSession() : void/
/handleQuery(shared_ptr&lt;Query&gt; *q) : void/
/fallbackQuery(shared_ptr&lt;Query&gt; *q) : void/
--
Offers the core a unified interface
for the extensions
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>480</x>
      <y>708</y>
      <w>56</w>
      <h>180</h>
    </coordinates>
    <panel_attributes>lt=&lt;.
&lt; widgetHidden
&lt; widgetShown
fg=#8000ff</panel_attributes>
    <additional_attributes>10.0;430.0;10.0;80.0;80.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>292</x>
      <y>812</y>
      <w>584</w>
      <h>532</h>
    </coordinates>
    <panel_attributes>Albert::Extension
bg=#c0c0c0
layer=-2
fg=#ff8000
fontsize=15</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>528</x>
      <y>1272</y>
      <w>80</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/IIndexable/
--
aliases() : QStringList
--
Interface for objects that
can be indexed by the
search</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>528</x>
      <y>1068</y>
      <w>112</w>
      <h>72</h>
    </coordinates>
    <panel_attributes>Query
--
+searchTerm():QString
+addMatch(Match):void
+addMatches(vector&lt;Match&gt;):void
+removeMatches(Ext):void
+reset():void
--
-impl:QueryPrivate
--
Offers the extension developer an
API to the query context. PRoxy
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>708</x>
      <y>1444</y>
      <w>72</w>
      <h>56</h>
    </coordinates>
    <panel_attributes>/ActionItem/
valign=center
halign=center</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>712</x>
      <y>1644</y>
      <w>64</w>
      <h>56</h>
    </coordinates>
    <panel_attributes>/ActionNode/
valign=center
halign=center</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>544</x>
      <y>1608</y>
      <w>72</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>*Files::Item*
--
Item(path)</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>464</x>
      <y>1616</y>
      <w>72</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>*DesktopApps::Item*
--
Item()</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>308</x>
      <y>944</y>
      <w>64</w>
      <h>36</h>
    </coordinates>
    <panel_attributes>CoreAPI
--
-impl:CoreApiPrivate
--
Offers the developer
a facade to core</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>532</x>
      <y>1652</y>
      <w>188</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>450.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>740</x>
      <y>1496</y>
      <w>12</w>
      <h>156</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;.</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;370.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>612</x>
      <y>1644</y>
      <w>108</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>250.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>464</x>
      <y>1532</y>
      <w>72</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>*AppAction*
--
AppAction(CmdAction)</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>712</x>
      <y>1712</y>
      <w>68</w>
      <h>24</h>
    </coordinates>
    <panel_attributes>*StandardItem*
--
StandardItem(action)</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>740</x>
      <y>1696</y>
      <w>16</w>
      <h>24</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;20.0;40.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>560</x>
      <y>1540</y>
      <w>48</w>
      <h>28</h>
    </coordinates>
    <panel_attributes>*OpenAction*
--
OpenAction()</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>636</x>
      <y>1540</y>
      <w>48</w>
      <h>28</h>
    </coordinates>
    <panel_attributes>*RevealAction*
--
RevealAction()</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>648</x>
      <y>1608</y>
      <w>32</w>
      <h>16</h>
    </coordinates>
    <panel_attributes>*File*
--</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>612</x>
      <y>1612</y>
      <w>44</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;90.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>588</x>
      <y>1564</y>
      <w>84</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;190.0;110.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>660</x>
      <y>1564</y>
      <w>12</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;110.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>572</x>
      <y>1564</y>
      <w>32</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>lt=&lt;-
m1=creates</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;110.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>572</x>
      <y>1564</y>
      <w>84</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>lt=&lt;-
m1=creates</panel_attributes>
    <additional_attributes>190.0;10.0;10.0;110.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>652</x>
      <y>1496</y>
      <w>68</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;.</panel_attributes>
    <additional_attributes>150.0;10.0;10.0;110.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>596</x>
      <y>1496</y>
      <w>120</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;.</panel_attributes>
    <additional_attributes>280.0;10.0;10.0;110.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>496</x>
      <y>1560</y>
      <w>36</w>
      <h>64</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-
m2=* actions
</panel_attributes>
    <additional_attributes>10.0;140.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>528</x>
      <y>1492</y>
      <w>188</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;.</panel_attributes>
    <additional_attributes>450.0;10.0;10.0;100.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>384</x>
      <y>1624</y>
      <w>72</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>*BookMarks::Item*
--
Item(name, url)</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>452</x>
      <y>1660</y>
      <w>268</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>650.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>304</x>
      <y>1632</y>
      <w>72</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>*Websearch::Item*
--
Item(url)</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>372</x>
      <y>1668</y>
      <w>348</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>850.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>580</x>
      <y>852</y>
      <w>196</w>
      <h>128</h>
    </coordinates>
    <panel_attributes>QueryPrivate
--
typedef pair&lt;A2Item, short&gt; Match
--
+searchTerm():QString
+addMatch(Match):void
+addMatches(vector&lt;Match&gt;):void
+removeMatches(Ext):void
+reset():void
+rowCount(const QModelIndex &amp; idx)):int
+columnCount(const QModelIndex &amp;parent):int
+data(const QModelIndex &amp; idx, int role):QVariant
+flags(const QModelIndex &amp; idx):ItemFlags
+parent(const QModelIndex &amp; idx):QModelIndex
+index(int row, int column, const QModelIndex &amp;idx):QModelIndex
+hasChildren(const QModelIndex &amp; parent):bool
--
-searchTerm:QString
-matches:vector&lt;Match&gt; 
-threadCounter:uchar
--
Adapts the matchlist to the AbstractItemModel</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>584</x>
      <y>976</y>
      <w>40</w>
      <h>100</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-
m2=impl</panel_attributes>
    <additional_attributes>10.0;230.0;60.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>308</x>
      <y>832</y>
      <w>124</w>
      <h>80</h>
    </coordinates>
    <panel_attributes>CoreApiPrivate
--
+hideApp():void
+showApp():void
+showSettings():void
+sessionIsActive():bool
+currentQuery():Query
+globalActions(QString) : vector&lt;Action&gt;
+dynamicActions(Item) : vector&lt;Action&gt;
+apiVersion():uint
--
-impl:QueryPrivate</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>344</x>
      <y>908</y>
      <w>24</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-
m2=impl</panel_attributes>
    <additional_attributes>10.0;90.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>328</x>
      <y>908</y>
      <w>12</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;.</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;90.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>500</x>
      <y>924</y>
      <w>92</w>
      <h>152</h>
    </coordinates>
    <panel_attributes>lt=&lt;-
m1=creates/starts</panel_attributes>
    <additional_attributes>120.0;360.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>456</x>
      <y>1108</y>
      <w>80</w>
      <h>16</h>
    </coordinates>
    <panel_attributes>lt=&lt;-&gt;&gt;&gt;&gt;
accepts/handles</panel_attributes>
    <additional_attributes>180.0;20.0;10.0;20.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>368</x>
      <y>924</y>
      <w>84</w>
      <h>28</h>
    </coordinates>
    <panel_attributes>lt=&lt;-&gt;&gt;&gt;&gt;&gt;
</panel_attributes>
    <additional_attributes>10.0;50.0;190.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>368</x>
      <y>976</y>
      <w>32</w>
      <h>76</h>
    </coordinates>
    <panel_attributes>lt=&lt;-
</panel_attributes>
    <additional_attributes>10.0;10.0;60.0;170.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>788</x>
      <y>1128</y>
      <w>68</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>/ActionItem/
--
/+id():QString/
/+name():QString/
/+info():QString/
/+icon():QIcon/
/+activate():void/</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>716</x>
      <y>1216</y>
      <w>140</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>/ActionNode/
--
+hasChildren():bool
+children():vector&lt;shared_ptr&lt;A2Item&gt;&gt;
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>816</x>
      <y>1176</y>
      <w>12</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;100.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>612</x>
      <y>1016</y>
      <w>88</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>Match
--
+item:shared_ptr&lt;A2Item&gt;
+score:short
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>776</x>
      <y>1064</y>
      <w>12</w>
      <h>160</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;380.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>420</x>
      <y>1136</y>
      <w>116</w>
      <h>68</h>
    </coordinates>
    <panel_attributes>lt=&lt;-</panel_attributes>
    <additional_attributes>270.0;10.0;10.0;150.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>628</x>
      <y>1044</y>
      <w>28</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>lt=&lt;-</panel_attributes>
    <additional_attributes>50.0;10.0;10.0;60.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>556</x>
      <y>888</y>
      <w>32</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;-</panel_attributes>
    <additional_attributes>60.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>336</x>
      <y>976</y>
      <w>12</w>
      <h>228</h>
    </coordinates>
    <panel_attributes>lt=&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;550.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>752</x>
      <y>1000</y>
      <w>104</w>
      <h>68</h>
    </coordinates>
    <panel_attributes>TreeItem
--
+data():shared_ptr&lt;A2Item&gt;
+parent():TreeItem *
+numChildren():int
+child(int row):TreeItem*
+addChild(unique_ptr&lt;TreeItem&gt;&amp;&amp;child):void 
--
-parent_:TreeItem*
-data_:shared_ptr&lt;A2Item&gt;
-children_:std::vector&lt;unique_ptr&lt;TreeItem&gt;&gt; </panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>696</x>
      <y>1028</y>
      <w>64</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;140.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>696</x>
      <y>1044</y>
      <w>56</w>
      <h>180</h>
    </coordinates>
    <panel_attributes>lt=-&gt;</panel_attributes>
    <additional_attributes>10.0;10.0;120.0;430.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>436</x>
      <y>640</y>
      <w>12</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>lt=-&gt;&gt;&gt;&gt;</panel_attributes>
    <additional_attributes>10.0;80.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLState</id>
    <coordinates>
      <x>2068</x>
      <y>616</y>
      <w>92</w>
      <h>24</h>
    </coordinates>
    <panel_attributes>albert-v0.9.0-alpha
fg=#ff8000
bg=#000000
fontsize=18</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2720</x>
      <y>1368</y>
      <w>312</w>
      <h>72</h>
    </coordinates>
    <panel_attributes>Albert::Extension::Utils
bg=#c0c0c0
layer=-1
fg=#ff8000
fontsize=15</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2564</x>
      <y>908</y>
      <w>152</w>
      <h>140</h>
    </coordinates>
    <panel_attributes>AlbertApp
--
+ gSettings() : QSettings;
+ openSettingsWindow() : void
+ showMainWindow() : void
+ hideMainWindow() : void
--
The global app
bg=gray
lw=2</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2144</x>
      <y>644</y>
      <w>140</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>SettingsWidget
--
The global user 
settings widget

type=actclass
halign=center
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2144</x>
      <y>712</y>
      <w>140</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>HotkeyManager
--
registerHotkey(...) : bool
unregisterHotkey(...) : bool
--
Manage global hotkeys
type=actclass
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2316</x>
      <y>712</y>
      <w>140</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>MainWindow
--
⚡ bla
--
QML UI

type=actclass
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2328</x>
      <y>1088</y>
      <w>116</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>ExtensionManager
--
+startSession() : void
+teardownSession() : void
+startQuery(QString) : void
+activate(const QModelIndex &amp;) : void
--
Manages and queries the extensions

bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2280</x>
      <y>688</y>
      <w>44</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>lt=-&gt;&gt;&gt;&gt;</panel_attributes>
    <additional_attributes>90.0;60.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2280</x>
      <y>688</y>
      <w>44</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-&gt;
m1=
m2=1</panel_attributes>
    <additional_attributes>90.0;10.0;10.0;60.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2380</x>
      <y>688</y>
      <w>12</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-&gt;
m1=
m2=1</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;60.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2280</x>
      <y>660</y>
      <w>44</w>
      <h>16</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-&gt;
m1=
m2=0,1</panel_attributes>
    <additional_attributes>90.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1384</y>
      <w>152</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>Search
--
add(IIndexable*) : void
add(QList&lt;IIndexable*&gt;&amp;) : void
clear() : void
search(const QString &amp;req) : QList&lt;IIndexable*&gt;
--
Indexes the items for a fast / fuzzy lookup</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2880</x>
      <y>1392</y>
      <w>68</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=-&gt;&gt;&gt;&gt;</panel_attributes>
    <additional_attributes>150.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2940</x>
      <y>1384</y>
      <w>80</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/IIndexable/
--
aliases() : QStringList
--
Interface for objects that
can be indexed by the
search</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2356</x>
      <y>924</y>
      <w>196</w>
      <h>128</h>
    </coordinates>
    <panel_attributes>QueryPrivate
--
typedef pair&lt;A2Item, short&gt; Match
--
+searchTerm():QString
+addMatch(Match):void
+addMatches(vector&lt;Match&gt;):void
+removeMatches(Ext):void
+reset():void
+rowCount(const QModelIndex &amp; idx)):int
+columnCount(const QModelIndex &amp;parent):int
+data(const QModelIndex &amp; idx, int role):QVariant
+flags(const QModelIndex &amp; idx):ItemFlags
+parent(const QModelIndex &amp; idx):QModelIndex
+index(int row, int column, const QModelIndex &amp;idx):QModelIndex
+hasChildren(const QModelIndex &amp; parent):bool
--
-searchTerm:QString
-matches:vector&lt;Match&gt; 
-threadCounter:uchar
--
Adapts the matchlist to the AbstractItemModel

bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2384</x>
      <y>1132</y>
      <w>52</w>
      <h>72</h>
    </coordinates>
    <panel_attributes>lt=&lt;-
m1=creates/starts</panel_attributes>
    <additional_attributes>20.0;160.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2484</x>
      <y>1300</y>
      <w>80</w>
      <h>16</h>
    </coordinates>
    <panel_attributes>lt=&lt;-&gt;&gt;&gt;&gt;
accepts/handles</panel_attributes>
    <additional_attributes>10.0;20.0;180.0;20.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2288</x>
      <y>1132</y>
      <w>48</w>
      <h>64</h>
    </coordinates>
    <panel_attributes>lt=&lt;-&gt;&gt;&gt;&gt;&gt;
</panel_attributes>
    <additional_attributes>10.0;140.0;100.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2340</x>
      <y>1584</y>
      <w>12</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;100.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2136</x>
      <y>1424</y>
      <w>88</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>Match
--
+item:shared_ptr&lt;A2Item&gt;
+score:short

bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2300</x>
      <y>1472</y>
      <w>12</w>
      <h>160</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;380.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2072</x>
      <y>1452</y>
      <w>108</w>
      <h>112</h>
    </coordinates>
    <panel_attributes>lt=&lt;-</panel_attributes>
    <additional_attributes>250.0;10.0;10.0;260.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2440</x>
      <y>1096</y>
      <w>68</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;-</panel_attributes>
    <additional_attributes>150.0;100.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2276</x>
      <y>1408</y>
      <w>104</w>
      <h>68</h>
    </coordinates>
    <panel_attributes>TreeItem
--
+data():shared_ptr&lt;A2Item&gt;
+parent():TreeItem *
+numChildren():int
+child(int row):TreeItem*
+addChild(unique_ptr&lt;TreeItem&gt;&amp;&amp;child):void 
--
-parent_:TreeItem*
-data_:shared_ptr&lt;A2Item&gt;
-children_:std::vector&lt;unique_ptr&lt;TreeItem&gt;&gt; 
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2220</x>
      <y>1436</y>
      <w>64</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;140.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2220</x>
      <y>1452</y>
      <w>56</w>
      <h>180</h>
    </coordinates>
    <panel_attributes>lt=-&gt;</panel_attributes>
    <additional_attributes>10.0;10.0;120.0;430.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2208</x>
      <y>688</y>
      <w>12</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>lt=-&gt;&gt;&gt;&gt;</panel_attributes>
    <additional_attributes>10.0;60.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2336</x>
      <y>1264</y>
      <w>152</w>
      <h>92</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/Query/
--
+ searchTerm() : QString
+ addMatch(Match) : void
+ addMatches(vector&lt;Match&gt;) : void
+ removeMatches(Ext) : void
+ reset() : void
--
-impl:QueryPrivate
--
API facade relevant to the extensiondeveloper
bg=#80ff00
fg=#408000</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2556</x>
      <y>1264</y>
      <w>152</w>
      <h>92</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/Extension/
aka. QueryHandler
--
/+ id() : QString/
/+ initialize() : void/
/+ finalize() : void/
/+ setupSession() : void/
/+ teardownSession() : void/
/+ handleQuery(shared_ptr&lt;Query&gt; *q) : void/
/+ fallbackQuery(shared_ptr&lt;Query&gt; *q) : void/
--
Unified interface for extensions

bg=#80ff00
fg=#408000</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2556</x>
      <y>1456</y>
      <w>152</w>
      <h>92</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/Item/
--
/+ hasActions():bool/
/+ actions():vector&lt;Action&gt;/
/? hasChildren():bool/
/? children():vector&lt;Item&gt;/
--
Unified interface for albert items

bg=#80ff00
fg=#408000</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2556</x>
      <y>1148</y>
      <w>152</w>
      <h>92</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/ExtensionLoader/
--
/+ load(string id) : void/
/+ unlaod(string id) : void/
/+ updateList() : void/
/+ extensions() : const list&lt;ExtSpecs&gt;&amp;/
⚡ extensionLoaded(Extension*)
⚡ extensionUnloaded(Extension*)
--
Unified interface for loaders

bg=#80ff00
fg=#408000</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1148</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>NativeLoader
--
--
Loads native C++/Qt plugins
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1152</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1172</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>PyLoader
--
--
Loads and embeds Python plugins
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1176</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1196</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>JavaScriptLoader
--
--
Loads and embeds JavaScript plugins
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1200</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1220</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>ExecutableLoader
--
--
Loads and embeds executables
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1224</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1264</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>ConcreteNativeExtension
--
--
Native implementation holding functionality
bg=light_gray
fg=#004080
bg=#0080ff</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1268</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1288</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>PythonExtension
--
--
Wrapper for python extensions
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1292</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1336</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>GenericExtension
--
--
Wrapper for generic extensions (executables)
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1340</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1312</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>JavaScriptExtension
--
--
Wrapper for JS extensions
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1316</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1456</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>ConcreteNativeItem
--
--
A native item holding conctrete data
bg=light_gray
fg=#004080
bg=#0080ff</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1460</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1480</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>PythonItem
--
--
A python object data wrapper
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1484</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1528</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>GenericItem
--
--
A JSON wrapper
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1532</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2732</x>
      <y>1504</y>
      <w>152</w>
      <h>20</h>
    </coordinates>
    <panel_attributes>JavaScriptItem
--
--
A JS object data wrapper
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2704</x>
      <y>1508</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2556</x>
      <y>1380</y>
      <w>136</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/Action/
--
/+ name() : QString/
/+ titleText() : QString/
/+ informationText() : QString/
/+ activate() : void/
--
Unified interface actions

bg=#80ff00
fg=#408000</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2612</x>
      <y>1428</y>
      <w>12</w>
      <h>36</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;70.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2628</x>
      <y>1236</y>
      <w>12</w>
      <h>36</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;70.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2696</x>
      <y>1352</y>
      <w>12</w>
      <h>112</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;260.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2628</x>
      <y>1428</y>
      <w>12</w>
      <h>36</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;..</panel_attributes>
    <additional_attributes>10.0;70.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1088</x>
      <y>1256</y>
      <w>312</w>
      <h>72</h>
    </coordinates>
    <panel_attributes>Albert::Extension::Utils
bg=#c0c0c0
layer=-1
fg=#ff8000
fontsize=15</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1568</x>
      <y>672</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>SettingsWidget
--
The global 
settings widget

type=actclass
halign=center
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1008</x>
      <y>444</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>HotkeyManager
--
Global hotkeys

type=actclass
halign=center
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1296</x>
      <y>720</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>/IMainWidget/
--
GUI

type=actclass
halign=center
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1476</x>
      <y>672</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>ExtensionManager
--
Manages extensions

type=actclass
halign=center
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1100</x>
      <y>1196</y>
      <w>104</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>ConcreteExtension
--
The implementation of a concrete extension. (e.g. Files, Apps, Bookmarks, etc)

fg=#0060c0
bg=#60c0ff
style=wordwrap</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1284</x>
      <y>1196</y>
      <w>104</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>ConcreteItem
--
The implementation of an item of a concrete extension. (e.g. file-, app- or bookmarkitem)
fg=#0060c0
bg=#60c0ff

style=wordwrap</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1384</x>
      <y>1220</y>
      <w>120</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>280.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1088</x>
      <y>1180</y>
      <w>312</w>
      <h>68</h>
    </coordinates>
    <panel_attributes>Albert::Extension::ConcreteNamespace
fg=#0060c0
bg=#60c0ff
layer=-1
fontsize=15</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1356</x>
      <y>816</y>
      <w>12</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;100.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1332</x>
      <y>756</y>
      <w>36</w>
      <h>56</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;.&gt;
fg=#00ff00
bg=#ccffcc</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;120.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1328</x>
      <y>804</y>
      <w>68</w>
      <h>16</h>
    </coordinates>
    <panel_attributes>QAbstractItemModel
fg=#00ff00
bg=#ccffcc
valign=center
halign=center</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1100</x>
      <y>1272</y>
      <w>152</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>Search
--
add(IIndexable*) : void
add(QList&lt;IIndexable*&gt;&amp;) : void
clear() : void
search(const QString &amp;req) : QList&lt;IIndexable*&gt;
--
Indexes the items for a fast / fuzzy lookup</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1248</x>
      <y>1280</y>
      <w>68</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=-&gt;&gt;&gt;&gt;</panel_attributes>
    <additional_attributes>150.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1148</x>
      <y>1232</y>
      <w>12</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;..
fg=#0060c0</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;100.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1344</x>
      <y>1232</y>
      <w>12</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;..
fg=#0060c0</panel_attributes>
    <additional_attributes>10.0;100.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLState</id>
    <coordinates>
      <x>1268</x>
      <y>356</y>
      <w>92</w>
      <h>24</h>
    </coordinates>
    <panel_attributes>albert-v0.9.0-alpha
fg=#ff8000
bg=#000000
fontsize=18</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1108</x>
      <y>784</y>
      <w>136</w>
      <h>76</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/IExtension/
--
/id() : QString/
/initialize(CoreAPI &amp;) : void/
/finalize() : void/</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1308</x>
      <y>1272</y>
      <w>80</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/IIndexable/
--
aliases() : QStringList
--
Interface for objects that
can be indexed by the
search</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1412</x>
      <y>792</y>
      <w>92</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>Query
--
+searchTerm():QString
+addMatch(…):void
+addMatches(…):void
--
API to the query context

bg=#c080ff
fg=#8000ff</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1352</x>
      <y>856</y>
      <w>76</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>QueryPrivate
--
Realizes QAIM

style=wordwrap
halign=center</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1416</x>
      <y>832</y>
      <w>12</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;60.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1568</x>
      <y>1128</y>
      <w>68</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>/ActionItem/
--
/+id():QString/
/+name():QString/
/+info():QString/
/+icon():QIcon/
/+activate():void/</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1496</x>
      <y>1216</y>
      <w>140</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>/ActionNode/
--
+hasChildren():bool
+children():vector&lt;shared_ptr&lt;A2Item&gt;&gt;
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1596</x>
      <y>1176</y>
      <w>12</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;100.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1392</x>
      <y>1016</y>
      <w>88</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>Match
--
+item:shared_ptr&lt;A2Item&gt;
+score:short
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1556</x>
      <y>1064</y>
      <w>12</w>
      <h>160</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;380.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1532</x>
      <y>1000</y>
      <w>104</w>
      <h>68</h>
    </coordinates>
    <panel_attributes>TreeItem
--
+data():shared_ptr&lt;A2Item&gt;
+parent():TreeItem *
+numChildren():int
+child(int row):TreeItem*
+addChild(unique_ptr&lt;TreeItem&gt;&amp;&amp;child):void 
--
-parent_:TreeItem*
-data_:shared_ptr&lt;A2Item&gt;
-children_:std::vector&lt;unique_ptr&lt;TreeItem&gt;&gt; </panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1476</x>
      <y>1028</y>
      <w>64</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;140.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1476</x>
      <y>1044</y>
      <w>56</w>
      <h>180</h>
    </coordinates>
    <panel_attributes>lt=-&gt;</panel_attributes>
    <additional_attributes>10.0;10.0;120.0;430.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>3060</x>
      <y>852</y>
      <w>152</w>
      <h>104</h>
    </coordinates>
    <panel_attributes>AbstractQueryPrivate
--
/+ addResult(...) : void/
/+ start() : void/
+ data(...) 
+ setData(...) 
+ rowCount(...)
--
+ isValid : bool
+ searchTerm :  string
- results : list&lt;Result&gt;

bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>3032</x>
      <y>968</y>
      <w>100</w>
      <h>64</h>
    </coordinates>
    <panel_attributes>SynchronousQueryPrivate
--
+ addResult(...) : void
--


bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>3136</x>
      <y>968</y>
      <w>104</w>
      <h>64</h>
    </coordinates>
    <panel_attributes>AsynchronousQueryPrivate
--
+ addResult(...) : void
--
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2900</x>
      <y>852</y>
      <w>96</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>Query
--
+ addResult(...) : void
+ isValid() : bool
+ searchTerm() : string

bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2992</x>
      <y>868</y>
      <w>76</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;170.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>3172</x>
      <y>952</y>
      <w>12</w>
      <h>24</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;40.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>3088</x>
      <y>952</y>
      <w>12</w>
      <h>24</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;40.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2412</x>
      <y>0</y>
      <w>152</w>
      <h>68</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/ExtensionScanner/
--
/+ scan(string dir) : ExtensionLoader*/
--
Unified interface for scanners.
Inherited by:
├─ NativeExtensionScanner
├─ ExternalExtensionScanner
/├─ JSExtensionScanner (planned)/
/└─ PythonExtensionScanner (planned)/

bg=#0080ff
fg=#0080ff</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2196</x>
      <y>112</y>
      <w>152</w>
      <h>92</h>
    </coordinates>
    <panel_attributes>ExtensionManager
--
+ ExtensionManager()
+ ~ExtensionManager()
+ load(string id) : void
+ unlaod(string id) : void
+ extensions() : const list&lt;ExtSpecs&gt;&amp;
⚡ extensionLoaded(Extension*)
⚡ extensionUnloaded(Extension*)
--
Unified interface for loaders
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>2332</x>
      <y>32</y>
      <w>88</w>
      <h>88</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;200.0;10.0;10.0;200.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2412</x>
      <y>72</y>
      <w>152</w>
      <h>196</h>
    </coordinates>
    <panel_attributes>/ExtensionLoader/
--
{innerclass
&lt;&lt;enum&gt;&gt;
State
--
Unloaded
Loaded
Error
innerclass}
--
+ state() : State
/+ load() : void/
/+ unlaod() : void/
/+ lastError() : string /
/+ instance(): Extension*/

/+ path() : string/
/+ id() : string/
/+ name() : string/
/+ version() : string/
/+ type() : string/
/+ author() : string/
/+ description() : string/
/+ dependencies() : string/
--
- state : State
--
Unified extension specs interface
Inherited by:
├─ NativeExtensionLoader
├─ ExternalExtensionLoader
/├─ JSExtensionLoader (planned)/
/└─ PythonExtensionLoader (planned)/

bg=#0080ff
fg=#0080ff</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>2412</x>
      <y>272</y>
      <w>152</w>
      <h>136</h>
    </coordinates>
    <panel_attributes>/Extension/
--
/+ id() : string/
/+ name() : string/
+ setupSession() : void
+ teardownSession() : void
+ handleQuery(Query q) : void
+ fallbacks() : list&lt;SharedItem&gt;
+ isTriggerOnly() : bool
+ triggers() : list&lt;string&gt;
⚡ fallbacksChanged() : void
⚡ triggersChanged() : void
--
Unified interface for extensions.
Inherited by:
├─ Every concrete native extension
├─ ExternalExtensionWrapper
/├─ JSExtensionWrapper (planned)/
/└─ PythonExtensionWrapper (planned)/
bg=#0080ff
fg=#0080ff</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1200</x>
      <y>672</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>TrayIcon
--
System tray icon

type=actclass
halign=center
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1008</x>
      <y>384</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>SingleInstance
--
Enforces uniqueness,
Implements IPC

type=actclass
halign=center
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1384</x>
      <y>672</y>
      <w>88</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>QueryManager
--
Handles queries,
Manages Query instances

type=actclass
halign=center
bg=light_gray</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLNote</id>
    <coordinates>
      <x>1380</x>
      <y>352</y>
      <w>120</w>
      <h>24</h>
    </coordinates>
    <panel_attributes>Classes interfacing extension libraries requiring to use PImpl to maintain binary compatibility.

bg=#c080ff
fg=#8000ff
style=wordwrap</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLNote</id>
    <coordinates>
      <x>1380</x>
      <y>380</y>
      <w>120</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>Qt classes/interfaces
fg=#00ff00
bg=#ccffcc</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1108</x>
      <y>944</y>
      <w>136</w>
      <h>76</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/IFallbackProvider/
--
/setupSession() : void/
/teardownSession() : void/
/handleQuery(shared_ptr&lt;Query&gt; *q) : void/
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1108</x>
      <y>864</y>
      <w>136</w>
      <h>76</h>
    </coordinates>
    <panel_attributes>&lt;&lt;Interface&gt;&gt;
/IQueryHandler/
--
/setupSession() : void/
/teardownSession() : void/
/handleQuery(shared_ptr&lt;Query&gt; *q) : void/
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLNote</id>
    <coordinates>
      <x>888</x>
      <y>784</y>
      <w>204</w>
      <h>260</h>
    </coordinates>
    <panel_attributes>Notes:

*Matching static resource provider: Offline lookup.*
E.g. files, system, apps, bookmarks, terminal, vbox, ssh

*Matching dynamic resource provider: Online lookup. (Triggered)*
E.g. file-finder, webservices like translators

*Accepting item provider (Triggered, Fallbacks)*
E.g. any kind of external searches: websearches, goldengict




bg=#0080ff
fg=#0080ff
style=wordwrap</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1560</x>
      <y>808</y>
      <w>92</w>
      <h>144</h>
    </coordinates>
    <panel_attributes>Core
--
// Global
+terminal():QString

// Settingswidget
+showSettings(…):void
+hideSettings():void

// Mainwidget
+showMainWindow():void
+hideMainWindow():void
+setInputText():void

//etting(…):void


+searchTerm():QString
+addMatch(…):void
+addMatches(…):void
--
Facade for core components

bg=#c080ff
fg=#8000ff</panel_attributes>
    <additional_attributes/>
  </element>
</diagram>
