Commit 35668cd8 authored by Dan Pascu's avatar Dan Pascu

Rearranged menus in the main window

parent 0ea3a986
......@@ -7,7 +7,7 @@ import os
from PyQt4 import uic
from PyQt4.QtCore import Qt, QEasingCurve, QEvent, QPointF, QPropertyAnimation, QRect, QSettings, QTimer, pyqtSignal
from PyQt4.QtGui import QAction, QBrush, QColor, QDesktopServices, QIcon, QLinearGradient, QListView, QMenu, QPainter, QPalette, QPen, QPolygonF, QTextCursor, QTextDocument, QTextEdit
from PyQt4.QtGui import QAction, QBrush, QColor, QDesktopServices, QIcon, QLabel, QLinearGradient, QListView, QMenu, QPainter, QPalette, QPen, QPolygonF, QTextCursor, QTextDocument, QTextEdit
from PyQt4.QtWebKit import QWebPage, QWebSettings, QWebView
from abc import ABCMeta, abstractmethod
......@@ -619,6 +619,25 @@ class ChatWidget(base_class, ui_class):
del ui_class, base_class
class NoSessionsLabel(QLabel):
def __init__(self, chat_window):
super(NoSessionsLabel, self).__init__(chat_window.session_panel)
self.chat_window = chat_window
font = self.font()
font.setFamily("Sans Serif")
font.setPointSize(20)
self.setFont(font)
self.setAlignment(Qt.AlignCenter)
self.setStyleSheet("""QLabel { border: 1px inset palette(dark); border-radius: 3px; background-color: white; color: #545454; }""")
self.setText("No Sessions")
chat_window.session_panel.installEventFilter(self)
def eventFilter(self, watched, event):
if event.type() == QEvent.Resize:
self.resize(event.size())
return False
ui_class, base_class = uic.loadUiType(Resources.get('chat_window.ui'))
class ChatWindow(base_class, ui_class, ColorHelperMixin):
......@@ -716,6 +735,9 @@ class ChatWindow(base_class, ui_class, ColorHelperMixin):
self.session_list = ChatSessionListView(self)
self.session_list.setObjectName('session_list')
self.no_sessions_label = NoSessionsLabel(self)
self.no_sessions_label.setObjectName('no_sessions_label')
self.slide_direction = self.session_details.RightToLeft # decide if we slide from one direction only -Dan
self.slide_direction = self.session_details.Automatic
self.session_details.animationDuration = 300
......@@ -752,6 +774,9 @@ class ChatWindow(base_class, ui_class, ColorHelperMixin):
self.session_list.hide()
self.new_messages_button.hide()
self.hold_button.hide()
self.record_button.hide()
self.control_button.setEnabled(False)
self.info_label.setForegroundRole(QPalette.Dark)
......@@ -1271,6 +1296,7 @@ class ChatWindow(base_class, ui_class, ColorHelperMixin):
session.chat_widget = ChatWidget(session, self.tab_widget)
session.active_panel = self.info_panel
self.tab_widget.insertTab(position, session.chat_widget, session.name)
self.no_sessions_label.hide()
selection_model = self.session_list.selectionModel()
selection_model.select(model.index(position), selection_model.ClearAndSelect)
self.session_list.scrollTo(model.index(position), QListView.EnsureVisible) # or PositionAtCenter
......@@ -1282,6 +1308,7 @@ class ChatWindow(base_class, ui_class, ColorHelperMixin):
session.active_panel = None
if not self.session_model.sessions:
self.close()
self.no_sessions_label.show()
elif not self.session_list.isVisibleTo(self):
self.session_list.animation.setDirection(QPropertyAnimation.Forward)
self.session_list.animation.setStartValue(self.session_widget.geometry())
......@@ -1303,17 +1330,11 @@ class ChatWindow(base_class, ui_class, ColorHelperMixin):
self.session_details.setCurrentWidget(self.selected_session.active_panel)
self.participants_list.setModel(self.selected_session.participants_model)
self.control_button.setEnabled(True)
# start animation to show list? -Dan
elif self.session_model.sessions:
else:
self.tab_widget.setCurrentWidget(self.dummy_tab)
self.session_details.setCurrentWidget(self.info_panel)
self.participants_list.setModel(None)
self.control_button.setEnabled(False)
# start animation to show list? -Dan
else:
self.session_details.setCurrentWidget(self.info_panel)
self.participants_list.setModel(None)
self.hide()
def _AH_Connect(self):
blink_session = self.selected_session.blink_session
......
......@@ -120,6 +120,9 @@ class MainWindow(base_class, ui_class):
self.session_list.setModel(self.session_model)
self.session_list.selectionModel().selectionChanged.connect(self._SH_SessionListSelectionChanged)
# History
self.history_manager = HistoryManager()
# Windows, dialogs and panels
self.about_panel = AboutPanel(self)
self.conference_dialog = ConferenceDialog(self)
......@@ -176,33 +179,31 @@ class MainWindow(base_class, ui_class):
self.help_action.triggered.connect(partial(QDesktopServices.openUrl, QUrl(u'http://icanblink.com/help-qt.phtml')))
self.preferences_action.triggered.connect(self.preferences_window.show)
self.auto_accept_chat_action.triggered.connect(self._AH_AutoAcceptChatTriggered)
self.answering_machine_action.triggered.connect(self._AH_EnableAnsweringMachineTriggered)
self.release_notes_action.triggered.connect(partial(QDesktopServices.openUrl, QUrl(u'http://icanblink.com/changelog-qt.phtml')))
self.quit_action.triggered.connect(self._AH_QuitActionTriggered)
# Call menu actions
self.redial_action.triggered.connect(self._AH_RedialActionTriggered)
self.join_conference_action.triggered.connect(self.conference_dialog.show)
self.mute_action.triggered.connect(self._SH_MuteButtonClicked)
self.silent_action.triggered.connect(self._SH_SilentButtonClicked)
# Devices menu actions
self.history_menu.aboutToShow.connect(self._SH_HistoryMenuAboutToShow)
self.history_menu.triggered.connect(self._AH_HistoryMenuTriggered)
self.output_devices_group.triggered.connect(self._AH_AudioOutputDeviceChanged)
self.input_devices_group.triggered.connect(self._AH_AudioInputDeviceChanged)
self.alert_devices_group.triggered.connect(self._AH_AudioAlertDeviceChanged)
# History menu actions
self.history_manager = HistoryManager()
self.history_menu.aboutToShow.connect(self._SH_HistoryMenuAboutToShow)
self.history_menu.triggered.connect(self._AH_HistoryMenuTriggered)
self.mute_action.triggered.connect(self._SH_MuteButtonClicked)
self.silent_action.triggered.connect(self._SH_SilentButtonClicked)
# Tools menu actions
self.answering_machine_action.triggered.connect(self._AH_EnableAnsweringMachineTriggered)
self.sip_server_settings_action.triggered.connect(self._AH_SIPServerSettings)
self.search_for_people_action.triggered.connect(self._AH_SearchForPeople)
self.history_on_server_action.triggered.connect(self._AH_HistoryOnServer)
self.buy_pstn_access_action.triggered.connect(self._AH_PurchasePstnAccess)
self.file_transfers_action.triggered.connect(self._AH_FileTransfersActionTriggered)
self.logs_action.triggered.connect(self._AH_LogsActionTriggered)
# Window menu actions
self.chat_window_action.triggered.connect(self._AH_ChatWindowActionTriggered)
self.transfers_window_action.triggered.connect(self._AH_TransfersWindowActionTriggered)
self.logs_window_action.triggered.connect(self._AH_LogsWindowActionTriggered)
def setupUi(self):
super(MainWindow, self).setupUi(self)
......@@ -241,6 +242,11 @@ class MainWindow(base_class, ui_class):
for dialog in self.pending_watcher_dialogs[:]:
dialog.close()
def show(self):
super(MainWindow, self).show()
self.raise_()
self.activateWindow()
def set_user_icon(self, icon):
self.account_state.setIcon(icon or self.default_icon)
......@@ -365,10 +371,14 @@ class MainWindow(base_class, ui_class):
account = account if account is not BonjourAccount() and account.server.settings_url else None
self.server_tools_window.open_buy_pstn_access_page(account)
def _AH_FileTransfersActionTriggered(self, checked):
def _AH_ChatWindowActionTriggered(self, checked):
blink = QApplication.instance()
blink.chat_window.show()
def _AH_TransfersWindowActionTriggered(self, checked):
self.filetransfer_window.show()
def _AH_LogsActionTriggered(self, checked):
def _AH_LogsWindowActionTriggered(self, checked):
directory = ApplicationData.get('logs')
makedirs(directory)
QDesktopServices.openUrl(QUrl.fromLocalFile(directory))
......@@ -655,9 +665,9 @@ class MainWindow(base_class, ui_class):
self.answering_machine_action.setChecked(settings.answering_machine.enabled)
self.auto_accept_chat_action.setChecked(settings.chat.auto_accept)
if settings.google_contacts.authorization_token is None:
self.google_contacts_action.setText(u'Enable Google Contacts')
self.google_contacts_action.setText(u'Enable &Google Contacts...')
else:
self.google_contacts_action.setText(u'Disable Google Contacts')
self.google_contacts_action.setText(u'Disable &Google Contacts')
self.google_contacts_action.triggered.connect(self._AH_GoogleContactsActionTriggered)
if not any(account.enabled for account in account_manager.iter_accounts()):
self.display_name.setEnabled(False)
......@@ -722,9 +732,9 @@ class MainWindow(base_class, ui_class):
if 'google_contacts.authorization_token' in notification.data.modified:
authorization_token = notification.sender.google_contacts.authorization_token
if authorization_token is None:
self.google_contacts_action.setText(u'Enable Google Contacts')
self.google_contacts_action.setText(u'Enable &Google Contacts...')
else:
self.google_contacts_action.setText(u'Disable Google Contacts')
self.google_contacts_action.setText(u'Disable &Google Contacts')
if authorization_token is InvalidToken:
self.google_contacts_dialog.open_for_incorrect_password()
elif notification.sender is blink_settings:
......
......@@ -948,6 +948,7 @@ padding: 2px;</string>
<normaloff>icons/quick-settings.png</normaloff>icons/quick-settings.png</iconset>
</property>
<addaction name="auto_accept_chat_action"/>
<addaction name="answering_machine_action"/>
</widget>
<addaction name="about_action"/>
<addaction name="check_for_updates_action"/>
......@@ -961,22 +962,42 @@ padding: 2px;</string>
<addaction name="separator"/>
<addaction name="quit_action"/>
</widget>
<widget class="QMenu" name="history_menu">
<widget class="QMenu" name="tools_menu">
<property name="title">
<string>&amp;History</string>
<string>&amp;Tools</string>
</property>
<addaction name="sip_server_settings_action"/>
<addaction name="history_on_server_action"/>
<addaction name="search_for_people_action"/>
<addaction name="buy_pstn_access_action"/>
<addaction name="separator"/>
<addaction name="google_contacts_action"/>
</widget>
<widget class="QMenu" name="devices_menu">
<widget class="QMenu" name="call_menu">
<property name="title">
<string>&amp;Devices</string>
<string>&amp;Call</string>
</property>
<widget class="QMenu" name="voicemail_menu">
<property name="title">
<string>&amp;Voicemail</string>
</property>
</widget>
<widget class="QMenu" name="history_menu">
<property name="title">
<string>&amp;History</string>
</property>
<property name="icon">
<iconset>
<normaloff>icons/clock.svg</normaloff>icons/clock.svg</iconset>
</property>
</widget>
<widget class="QMenu" name="output_device_menu">
<property name="title">
<string>&amp;Output device</string>
</property>
<property name="icon">
<iconset>
<normaloff>icons/speaker.png</normaloff>icons/speaker.png</iconset>
<normaloff>icons/speaker.svg</normaloff>icons/speaker.svg</iconset>
</property>
</widget>
<widget class="QMenu" name="input_device_menu">
......@@ -985,7 +1006,7 @@ padding: 2px;</string>
</property>
<property name="icon">
<iconset>
<normaloff>icons/mic.png</normaloff>icons/mic.png</iconset>
<normaloff>icons/microphone.svg</normaloff>icons/microphone.svg</iconset>
</property>
</widget>
<widget class="QMenu" name="alert_device_menu">
......@@ -994,49 +1015,33 @@ padding: 2px;</string>
</property>
<property name="icon">
<iconset>
<normaloff>icons/bell.png</normaloff>icons/bell.png</iconset>
<normaloff>icons/bell.svg</normaloff>icons/bell.svg</iconset>
</property>
</widget>
<addaction name="redial_action"/>
<addaction name="join_conference_action"/>
<addaction name="voicemail_menu"/>
<addaction name="history_menu"/>
<addaction name="separator"/>
<addaction name="output_device_menu"/>
<addaction name="input_device_menu"/>
<addaction name="alert_device_menu"/>
</widget>
<widget class="QMenu" name="tools_menu">
<property name="title">
<string>&amp;Tools</string>
</property>
<addaction name="answering_machine_action"/>
<addaction name="google_contacts_action"/>
<addaction name="separator"/>
<addaction name="sip_server_settings_action"/>
<addaction name="search_for_people_action"/>
<addaction name="history_on_server_action"/>
<addaction name="buy_pstn_access_action"/>
<addaction name="separator"/>
<addaction name="file_transfers_action"/>
<addaction name="logs_action"/>
<addaction name="mute_action"/>
<addaction name="silent_action"/>
</widget>
<widget class="QMenu" name="call_menu">
<widget class="QMenu" name="window_menu">
<property name="title">
<string>&amp;Call</string>
<string>&amp;Window</string>
</property>
<widget class="QMenu" name="voicemail_menu">
<property name="title">
<string>&amp;Voicemail</string>
</property>
</widget>
<addaction name="redial_action"/>
<addaction name="join_conference_action"/>
<addaction name="voicemail_menu"/>
<addaction name="separator"/>
<addaction name="mute_action"/>
<addaction name="silent_action"/>
<addaction name="chat_window_action"/>
<addaction name="transfers_window_action"/>
<addaction name="logs_window_action"/>
</widget>
<addaction name="blink_menu"/>
<addaction name="call_menu"/>
<addaction name="devices_menu"/>
<addaction name="history_menu"/>
<addaction name="tools_menu"/>
<addaction name="window_menu"/>
</widget>
<action name="quit_action">
<property name="icon">
......@@ -1077,7 +1082,7 @@ padding: 2px;</string>
<normaloff>icons/configure.png</normaloff>icons/configure.png</iconset>
</property>
<property name="text">
<string>&amp;Preferences...</string>
<string>&amp;Preferences</string>
</property>
<property name="shortcut">
<string>Ctrl+P</string>
......@@ -1094,7 +1099,7 @@ padding: 2px;</string>
<string>Check for &amp;updates...</string>
</property>
</action>
<action name="logs_action">
<action name="logs_window_action">
<property name="text">
<string>&amp;Logs</string>
</property>
......@@ -1105,9 +1110,9 @@ padding: 2px;</string>
<enum>Qt::ApplicationShortcut</enum>
</property>
</action>
<action name="file_transfers_action">
<action name="transfers_window_action">
<property name="text">
<string>&amp;File transfers</string>
<string>File &amp;Transfers</string>
</property>
<property name="shortcut">
<string>Ctrl+T</string>
......@@ -1121,15 +1126,19 @@ padding: 2px;</string>
<bool>true</bool>
</property>
<property name="text">
<string>Enable &amp;Answering Machine</string>
<string>Enable &amp;answering machine</string>
</property>
</action>
<action name="sip_server_settings_action">
<property name="text">
<string>&amp;Settings on SIP server...</string>
<string>&amp;Settings on SIP server</string>
</property>
</action>
<action name="redial_action">
<property name="icon">
<iconset>
<normaloff>icons/retry.svg</normaloff>icons/retry.svg</iconset>
</property>
<property name="text">
<string>&amp;Redial</string>
</property>
......@@ -1170,7 +1179,7 @@ padding: 2px;</string>
</action>
<action name="search_for_people_action">
<property name="text">
<string>Search for &amp;people...</string>
<string>Search for &amp;people</string>
</property>
</action>
<action name="auto_accept_chat_action">
......@@ -1204,27 +1213,27 @@ padding: 2px;</string>
</action>
<action name="manage_accounts_action">
<property name="text">
<string>&amp;Manage accounts...</string>
<string>&amp;Manage accounts</string>
</property>
</action>
<action name="google_contacts_action">
<property name="text">
<string>Enable Google Contacts</string>
<string>Enable &amp;Google Contacts...</string>
</property>
</action>
<action name="history_on_server_action">
<property name="text">
<string>Call history on server...</string>
<string>Call &amp;history on server</string>
</property>
</action>
<action name="buy_pstn_access_action">
<property name="text">
<string>Buy prepaid credit...</string>
<string>Buy prepaid credit</string>
</property>
</action>
<action name="join_conference_action">
<property name="text">
<string>Join &amp;Conference...</string>
<string>&amp;Join Conference...</string>
</property>
<property name="shortcut">
<string>Ctrl+J</string>
......@@ -1233,6 +1242,17 @@ padding: 2px;</string>
<enum>Qt::ApplicationShortcut</enum>
</property>
</action>
<action name="chat_window_action">
<property name="text">
<string>&amp;Chat</string>
</property>
<property name="shortcut">
<string>Ctrl+G</string>
</property>
<property name="shortcutContext">
<enum>Qt::ApplicationShortcut</enum>
</property>
</action>
</widget>
<customwidgets>
<customwidget>
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16px"
height="16px"
id="svg2985"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="bell.svg"
inkscape:export-filename="/home/dan/bell.png"
inkscape:export-xdpi="135"
inkscape:export-ydpi="135">
<defs
id="defs2987" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="53.375"
inkscape:cx="8"
inkscape:cy="8"
inkscape:current-layer="g4054"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1666"
inkscape:window-height="1064"
inkscape:window-x="143"
inkscape:window-y="0"
inkscape:window-maximized="0"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid3002"
empspacing="10"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="0.5px"
spacingy="0.5px" />
</sodipodi:namedview>
<metadata
id="metadata2990">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="g4054"
inkscape:label="Bell"
inkscape:groupmode="layer"
style="display:inline">
<path
id="path4056"
style="fill:#505050;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.69999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
d="M 5.5829856,4.9567763 5.4769584,8.4062854 C 5.4095534,10.599267 2.35,10.294088 2.35,11.515461 c 0,0.649489 0,0.669082 0,0.669082 l 4.7108569,0 0,0.965457 c 0.7551042,0 1.1116888,0 1.866793,0 l 0.029973,-0.965457 4.6923771,0 0,-0.669082 c -4e-6,-1.243419 -3.031825,-0.912321 -3.112859,-3.1091756 L 10.409904,4.9567763 c -0.0045,-0.1221938 -0.136959,-3.1067764 -2.4028561,-3.1067764 -2.2658973,0 -2.4203057,2.9845649 -2.4240623,3.1067764 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssccccccccssss" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16px"
height="16px"
id="svg2816"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="clock.svg">
<defs
id="defs2818">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 8 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="16 : 8 : 1"
inkscape:persp3d-origin="8 : 5.3333333 : 1"
id="perspective2824" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="57.25"
inkscape:cx="8"
inkscape:cy="8"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1728"
inkscape:window-height="1126"
inkscape:window-x="81"
inkscape:window-y="3"
inkscape:window-maximized="0"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
type="xygrid"
id="grid2986"
empspacing="10"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="0.5px"
spacingy="0.5px"
dotted="false" />
<sodipodi:guide
orientation="1,0"
position="8,7.5"
id="guide3774" />
<sodipodi:guide
orientation="0,1"
position="7.5,8"
id="guide3776" />
</sodipodi:namedview>
<metadata
id="metadata2821">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Clock"
inkscape:groupmode="layer">
<path
sodipodi:type="arc"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#333333;stroke-width:0.99803001000000002;stroke-linecap:butt;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="path2826"
sodipodi:cx="10.316337"
sodipodi:cy="10.07599"
sodipodi:rx="5.6762376"
sodipodi:ry="6.0141091"
d="m 15.992574,10.07599 a 5.6762376,6.0141091 0 1 1 -11.352475,0 5.6762376,6.0141091 0 1 1 11.352475,0 z"
transform="matrix(1.2984867,0,0,1.2255379,-5.3956069,-4.348526)" />
<path
style="fill:none;stroke:#333333;stroke-width:1.25899994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 7.6295,3.3794999 c 0,0.4994706 0,4.9947059 0,4.9947059 l 2.991,3.4962942"
id="path3808"
inkscape:connector-curvature="0" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16px"
height="16px"
id="svg2985"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="microphone.svg"
inkscape:export-filename="/home/dan/bell.png"
inkscape:export-xdpi="135"
inkscape:export-ydpi="135">
<defs
id="defs2987" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="53.375"
inkscape:cx="8"
inkscape:cy="8"
inkscape:current-layer="g3841"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1430"
inkscape:window-height="1064"
inkscape:window-x="143"
inkscape:window-y="0"
inkscape:window-maximized="0"
showguides="true"
inkscape:guide-bbox="true"
inkscape:showpageshadow="true"
borderlayer="false"
showborder="true">
<inkscape:grid
type="xygrid"
id="grid3253"
empspacing="10"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="0.5px"
spacingy="0.5px" />
</sodipodi:namedview>
<metadata
id="metadata2990">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="g3841"
inkscape:label="Microphone alt"
style="display:inline">
<rect
style="fill:#505050;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.70000011;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="rect3843"
width="3.8"
height="8.3000002"
x="6"
y="1.3500057"
rx="1.9"
ry="2.1452653" />
<rect
style="fill:#000000;fill-opacity:1;stroke:none"
id="rect3845"
width="7"
height="1"
x="4.5"
y="14"
ry="0.48333335" />
<rect
style="fill:#000000;fill-opacity:1;stroke:none;display:inline"
id="rect3847"
width="3"
height="1"
x="12"
y="-8.4997644"
ry="0.48333335"
transform="matrix(0,1,-1,0,0,0)" />
<path
sodipodi:nodetypes="csssc"
inkscape:connector-curvature="0"
id="path3849"
d="m 12,7.25 0,0.7803915 C 12,10.229554 10.216,12 8.0000004,12 5.784,12 4,10.229554 4,8.0303915 L 4,7.25"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="18"
height="18"
id="svg4113"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="retry.svg">
<defs
id="defs4115">
<marker
inkscape:stockid="DiamondSend"
orient="auto"
refY="0"
refX="0"
id="DiamondSend"
style="overflow:visible">
<path
id="path4745"
d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 0,-7.0710768 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.2,0,0,0.2,-1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="StopS"
orient="auto"
refY="0"
refX="0"
id="StopS"
style="overflow:visible">
<path
id="path4817"
d="M 0,5.65 0,-5.65"
style="fill:none;stroke:#000000;stroke-width:1pt"
transform="scale(0.2,0.2)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="EmptyTriangleOutS"
orient="auto"
refY="0"
refX="0"
id="EmptyTriangleOutS"
style="overflow:visible">
<path
id="path4808"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.2,0,0,0.2,-0.6,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
style="overflow:visible"
inkscape:stockid="InfiniteLineEnd"
id="InfiniteLineEnd"
refX="0"
refY="0"
orient="auto">
<g
id="g4877"
style="fill:#000000">
<circle
id="circle4879"
r="0.80000001"
cy="0"
cx="3"
sodipodi:cx="3"
sodipodi:cy="0"
sodipodi:rx="0.80000001"
sodipodi:ry="0.80000001" />
<circle
id="circle4881"
r="0.80000001"
cy="0"
cx="6.5"
sodipodi:cx="6.5"
sodipodi:cy="0"
sodipodi:rx="0.80000001"
sodipodi:ry="0.80000001" />
<circle
id="circle4883"
r="0.80000001"
cy="0"
cx="10"
sodipodi:cx="10"
sodipodi:cy="0"
sodipodi:rx="0.80000001"
sodipodi:ry="0.80000001" />
</g>
</marker>
<marker
inkscape:stockid="TriangleOutS"
orient="auto"
refY="0"
refX="0"
id="TriangleOutS"
style="overflow:visible">
<path
id="path4790"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="scale(0.2,0.2)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM"
style="overflow:visible">
<path
id="path4787"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="scale(0.4,0.4)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible">
<path
id="path4657"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible">
<path
id="path4651"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path4663"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible">
<path
id="path4645"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="53.222222"
inkscape:cx="9"
inkscape:cy="9"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1850"
inkscape:window-height="1168"
inkscape:window-x="2"
inkscape:window-y="0"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
empspacing="10"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingy="0.5px"
spacingx="0.5px"
type="xygrid"
id="grid4121" />
<sodipodi:guide
orientation="0,1"
position="2,17"
id="guide7684" />
</sodipodi:namedview>
<metadata
id="metadata4118">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Retry"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1034.3622)">
<path
sodipodi:type="arc"
style="fill:none;stroke:#222222;stroke-width:1.32112777;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none"
id="path4128"
sodipodi:cx="7.5"
sodipodi:cy="7.25"
sodipodi:rx="4.5"
sodipodi:ry="4.75"
d="M 11.701112,8.9522477 C 10.810467,11.401358 8.2075543,12.624633 5.8873442,11.684507 3.5671342,10.744382 2.4082429,7.9968629 3.2988881,5.5477523 4.1895333,3.0986416 6.7924457,1.8753675 9.1126558,2.815493 10.075167,3.2054926 10.88162,3.9325346 11.397115,4.8750007"
transform="matrix(1.5555393,0,0,1.4732939,-2.6647636,1032.6808)"
sodipodi:start="0.36651914"
sodipodi:end="5.7595867"
sodipodi:open="true" />
<polyline
style="fill:none;stroke:#222222;stroke-width:4.50022650000000013;stroke-linecap:round;stroke-miterlimit:10;stroke-opacity:1"
points="40,7 40,16 31,15.999 "
stroke-miterlimit="10"
id="polyline3087"
transform="matrix(0.44439969,0,0,0.44444445,-1.7763904,1033.2511)" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16px"
height="16px"
id="svg3882"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="speaker.svg">
<defs
id="defs3884" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="53.8125"
inkscape:cx="5.0174216"
inkscape:cy="8"
inkscape:current-layer="layer5"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1664"
inkscape:window-height="1071"
inkscape:window-x="85"
inkscape:window-y="24"
inkscape:window-maximized="0">
<inkscape:grid
type="xygrid"
id="grid4398"
empspacing="10"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="0.5px"
spacingy="0.5px" />
</sodipodi:namedview>
<metadata
id="metadata3887">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="Speaker"
style="display:inline">
<path
style="fill:#545454;fill-opacity:1;stroke:#333333;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
d="m 12.5,2 0,12 -5,-3.5 -4,0 0,-5 4,0 z"
id="path6103"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
</g>
</svg>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment