connect(&mFrmAddStep, SIGNAL(StepAddedSuccessfully(Steps)),
this, SLOT(updateStepList(Steps)));
mFrmAddStep.setWindowFlags(mFrmAddStep.windowFlags() | Qt::Window);
+ bIsStepEdited = false;
+ iStepEditPosition = 0;
+ mFrmAddStep.setParent(this, Qt::Window);
+ mFrmAddStep.setAttribute(Qt::WA_Maemo5StackedWindow);
}
AddProfile::~AddProfile()
void AddProfile::updateStepList(Steps step)
{
- mSteps.append(step);
QString text = "Value: " + step.value();
text += " || Delay: " + QString::number(step.delay());
- ui->addProStepList->addItem(text);
+ if(bIsStepEdited)
+ {
+ // Reset the flag
+ bIsStepEdited = false;
+
+ // Remove the old one...
+ mSteps.removeAt(iStepEditPosition);
+ QString *pText = (QString*) ui->addProStepList->takeItem(ui->addProStepList->currentRow());
+ delete pText;
+
+ // update with the new one...
+ mSteps.insert(iStepEditPosition, step);
+ ui->addProStepList->insertItem(iStepEditPosition, text);
+ }
+ else
+ {
+ mSteps.append(step);
+ ui->addProStepList->addItem(text);
+ }
qDebug() << "updateStepList(): Text in List: " << text;
}
void AddProfile::showProfile(Profile &p)
{
ui->addProName->setText(p.mName);
+ mSteps.clear();
+ mSteps = p.mSteps;
for(unsigned int i = 0; i < p.mNoOfSteps; i++)
{
Steps step = p.mSteps.at(i);
}
this->show();
}
+
+void AddProfile::on_addProModifyStep_clicked()
+{
+ if(ui->addProStepList->count() <= 0 || ui->addProStepList->currentRow() < 0)
+ {
+ QMessageBox msg;
+ msg.setText("Please add/select a step first!");
+ msg.exec();
+ return;
+ }
+ bIsStepEdited = true;
+ iStepEditPosition = ui->addProStepList->currentRow();
+ qDebug() << "Step to be edited: " << iStepEditPosition;
+ mFrmAddStep.setParent(this, Qt::Window);
+ mFrmAddStep.setAttribute(Qt::WA_Maemo5StackedWindow);
+ mFrmAddStep.showStep((Steps &)mSteps.at(iStepEditPosition));
+}
Ui::AddProfile *ui;
QList<Steps> mSteps;
AddStep mFrmAddStep;
+ bool bIsStepEdited;
+ int iStepEditPosition;
signals:
void ProfileAddedSuccessfully(Profile profile);
private slots:
+ void on_addProModifyStep_clicked();
void on_addProRemoveStep_clicked();
void on_addProSave_clicked();
void on_addProCancel_clicked();
<property name="geometry">
<rect>
<x>560</x>
- <y>140</y>
+ <y>80</y>
<width>211</width>
- <height>141</height>
+ <height>231</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
</widget>
</item>
<item>
+ <widget class="QPushButton" name="addProModifyStep">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Modify Step</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QPushButton" name="addProRemoveStep">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
ui->addStepDelay->setText(QString::null);
ui->addStepValue->setText(QString::null);
}
+
+void AddStep::showStep(Steps &step)
+{
+ mStep = step;
+ clear();
+ ui->addStepDelay->setText(QString::number(mStep.delay()));
+ ui->addStepValue->setText(mStep.value());
+ this->show();
+}
~AddStep();
void clear();
+ void showStep(Steps &step);
signals:
void StepAddedSuccessfully(Steps step);
#include "profile.h"\r
\r
#define APPLICATION_NAME "ConfManager"\r
-//#define CONFIG_DIR "/apps/Maemo/" APPLICATION_NAME "/"\r
+#define CONFIG_DIR "/home/user/"\r
\r
// For test only!\r
-#define CONFIG_DIR "./"\r
+//#define CONFIG_DIR "./"\r
\r
#define CONFIG_FILE CONFIG_DIR "cfConfig.xml"\r
#define BACKUP_CONFIG_FILE CONFIG_DIR "cfConfig.bak"\r
mInStep++;
QList<QVariant> argsToSend;
- qDebug() << "Sending DTMF = " << step.value();
+ qDebug() << "DTMF = " << step.value();
argsToSend.append(step.value());
- argsToSend.append(0);
+// argsToSend.append(0);
bool status = mDBusUtility.sendMethodCall(CSD_SERVICE, CSD_CALL_PATH, CSD_CALL_INTERFACE,
QString("SendDTMF"),argsToSend);
mDBusUtility.displayNotification(error);
}
+ mDBusUtility.displayNotification(step.value());
+
// Check if we are over with the sequence or we need to continue
if(mInStep >= mProfileInUse.mNoOfSteps)
{
void confManager::StopCallMonitors()
{
- mInStep = 0;
+// mInStep = 0;
mProfileSet = false;
QDBusConnection connection = mDBusUtility.getConnection();
#define CSD_CALL_INSTANCE_PATH "/com/nokia/csd/call/1"
#define CSD_CALL_SERVICE "com.nokia.csd.Call"
#define CSD_SERVICE "com.nokia.csd"
+#define CSD_CALL_STATUS_INTERFACE "com.nokia.csd.Call.Instance.CallStatus" // Should be 7 for a proper connection
class confManager : public QObject
{
qDebug() << "Profile to be Edited: " << endl << Xmlutil::generateProfileXML(p);
mFrmAddProfile.setParent(this, Qt::Window);
mFrmAddProfile.setAttribute(Qt::WA_Maemo5StackedWindow);
+ mFrmAddProfile.clear();
mFrmAddProfile.showProfile(p);
}
+
+void MainWindow::on_mainPBAbout_clicked()
+{
+ QMessageBox msg;
+ msg.setText("A nice screen yet to be implemented!");
+ msg.exec();
+ return;
+}
+
+void MainWindow::on_mainPBQuit_clicked()
+{
+ mConfig.writeAllProfiles();
+ mConfig.closeConfig();
+ close();
+}
QMenuBar *pMenu;
private slots:
+ void on_mainPBQuit_clicked();
+ void on_mainPBAbout_clicked();
void on_mainPBEditProfile_clicked();
void on_btnmainStartConference_clicked();
void on_mainPBDelete_clicked();
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
- <x>30</x>
+ <x>26</x>
<y>260</y>
- <width>351</width>
+ <width>241</width>
<height>141</height>
</rect>
</property>
<widget class="QWidget" name="verticalLayoutWidget_2">
<property name="geometry">
<rect>
- <x>420</x>
+ <x>535</x>
<y>260</y>
- <width>351</width>
+ <width>241</width>
<height>141</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
- <widget class="QPushButton" name="mainPBEditProfile">
+ <widget class="QPushButton" name="mainPBAbout">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Edit Profile</string>
+ <string>About</string>
</property>
</widget>
</item>
<item>
- <widget class="QPushButton" name="mainPBDelete">
+ <widget class="QPushButton" name="mainPBQuit">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Delete Profile</string>
+ <string>Exit</string>
</property>
</widget>
</item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="verticalLayoutWidget_3">
+ <property name="geometry">
+ <rect>
+ <x>281</x>
+ <y>260</y>
+ <width>241</width>
+ <height>141</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
<item>
- <widget class="QPushButton" name="mainPBQuit">
+ <widget class="QPushButton" name="mainPBEditProfile">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Edit Profile</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="mainPBDelete">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Exit</string>
+ <string>Delete Profile</string>
</property>
</widget>
</item>
mNoOfSteps = 0;\r
}\r
\r
-Profile::Profile(const Profile &p)\r
+Profile::Profile(const Profile &p) :\r
+ QObject(p.parent())\r
{\r
*this = p;\r
}\r
Steps(const QString &value, const int &delay) : mValue(value), mDelay(delay) {}\r
~Steps() { }\r
\r
+ Steps(const Steps &s) {\r
+ *this = s;\r
+ }\r
+\r
+ Steps& operator=(const Steps &s) {\r
+ if(this != &s)\r
+ {\r
+ mValue = s.mValue;\r
+ mDelay = s.mDelay;\r
+ }\r
+ return *this;\r
+ }\r
+\r
// Getters...\r
QString value() { return mValue; }\r
int delay() { return mDelay; }\r
connect(&mFrmAddStep, SIGNAL(StepAddedSuccessfully(Steps)),
this, SLOT(updateStepList(Steps)));
mFrmAddStep.setWindowFlags(mFrmAddStep.windowFlags() | Qt::Window);
+ bIsStepEdited = false;
+ iStepEditPosition = 0;
+ mFrmAddStep.setParent(this, Qt::Window);
+ mFrmAddStep.setAttribute(Qt::WA_Maemo5StackedWindow);
}
AddProfile::~AddProfile()
void AddProfile::updateStepList(Steps step)
{
- mSteps.append(step);
QString text = "Value: " + step.value();
text += " || Delay: " + QString::number(step.delay());
- ui->addProStepList->addItem(text);
+ if(bIsStepEdited)
+ {
+ // Reset the flag
+ bIsStepEdited = false;
+
+ // Remove the old one...
+ mSteps.removeAt(iStepEditPosition);
+ QString *pText = (QString*) ui->addProStepList->takeItem(ui->addProStepList->currentRow());
+ delete pText;
+
+ // update with the new one...
+ mSteps.insert(iStepEditPosition, step);
+ ui->addProStepList->insertItem(iStepEditPosition, text);
+ }
+ else
+ {
+ mSteps.append(step);
+ ui->addProStepList->addItem(text);
+ }
qDebug() << "updateStepList(): Text in List: " << text;
}
void AddProfile::showProfile(Profile &p)
{
ui->addProName->setText(p.mName);
+ mSteps.clear();
+ mSteps = p.mSteps;
for(unsigned int i = 0; i < p.mNoOfSteps; i++)
{
Steps step = p.mSteps.at(i);
}
this->show();
}
+
+void AddProfile::on_addProModifyStep_clicked()
+{
+ if(ui->addProStepList->count() <= 0 || ui->addProStepList->currentRow() < 0)
+ {
+ QMessageBox msg;
+ msg.setText("Please add/select a step first!");
+ msg.exec();
+ return;
+ }
+ bIsStepEdited = true;
+ iStepEditPosition = ui->addProStepList->currentRow();
+ qDebug() << "Step to be edited: " << iStepEditPosition;
+ mFrmAddStep.setParent(this, Qt::Window);
+ mFrmAddStep.setAttribute(Qt::WA_Maemo5StackedWindow);
+ mFrmAddStep.showStep((Steps &)mSteps.at(iStepEditPosition));
+}
Ui::AddProfile *ui;
QList<Steps> mSteps;
AddStep mFrmAddStep;
+ bool bIsStepEdited;
+ int iStepEditPosition;
signals:
void ProfileAddedSuccessfully(Profile profile);
private slots:
+ void on_addProModifyStep_clicked();
void on_addProRemoveStep_clicked();
void on_addProSave_clicked();
void on_addProCancel_clicked();
<property name="geometry">
<rect>
<x>560</x>
- <y>140</y>
+ <y>80</y>
<width>211</width>
- <height>141</height>
+ <height>231</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
</widget>
</item>
<item>
+ <widget class="QPushButton" name="addProModifyStep">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Modify Step</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QPushButton" name="addProRemoveStep">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
ui->addStepDelay->setText(QString::null);
ui->addStepValue->setText(QString::null);
}
+
+void AddStep::showStep(Steps &step)
+{
+ mStep = step;
+ clear();
+ ui->addStepDelay->setText(QString::number(mStep.delay()));
+ ui->addStepValue->setText(mStep.value());
+ this->show();
+}
~AddStep();
void clear();
+ void showStep(Steps &step);
signals:
void StepAddedSuccessfully(Steps step);
#include "profile.h"\r
\r
#define APPLICATION_NAME "ConfManager"\r
-//#define CONFIG_DIR "/apps/Maemo/" APPLICATION_NAME "/"\r
+#define CONFIG_DIR "/home/user/"\r
\r
// For test only!\r
-#define CONFIG_DIR "./"\r
+//#define CONFIG_DIR "./"\r
\r
#define CONFIG_FILE CONFIG_DIR "cfConfig.xml"\r
#define BACKUP_CONFIG_FILE CONFIG_DIR "cfConfig.bak"\r
void confManager::continueSendDTMF()
{
+ qDebug() << "In ContinueSendDTF for mInStep " << mInStep;
// We have now waited for the required period of seconds
// Lets send the DTMF now
Steps step = mProfileInUse.mSteps.at(mInStep);
mInStep++;
QList<QVariant> argsToSend;
+ qDebug() << "DTMF = " << step.value();
argsToSend.append(step.value());
+// argsToSend.append(0);
bool status = mDBusUtility.sendMethodCall(CSD_SERVICE, CSD_CALL_PATH, CSD_CALL_INTERFACE,
QString("SendDTMF"),argsToSend);
if(!status)
{
qDebug() << "Unable to send DTMF code.";
- QString error = "DBus Error: " + mDBusUtility.getErrorMessage();
+ QString error = "DBus Error (continueSendDTMF): " + mDBusUtility.getErrorMessage();
mDBusUtility.displayNotification(error);
}
+ mDBusUtility.displayNotification(step.value());
+
// Check if we are over with the sequence or we need to continue
- if(mInStep > mProfileInUse.mNoOfSteps)
+ if(mInStep >= mProfileInUse.mNoOfSteps)
{
StopCallMonitors();
return;
step = mProfileInUse.mSteps.at(mInStep);
QTimer *timer = new QTimer(this);
timer->setSingleShot(true);
- connect(timer, SIGNAL(timeout()), this, SLOT(sendDTMF(const QDBusMessage &)));
- timer->start(step.delay());
+ connect(timer, SIGNAL(timeout()), this, SLOT(continueSendDTMF()));
+ qDebug() << "Setting delay for " << step.delay() << "seconds...";
+ timer->start(step.delay()*1000);
}
void confManager::sendDTMF(const QDBusMessage &dBusMessage)
{
QList<QVariant> listArguments = dBusMessage.arguments();
- bool audioConnected = listArguments.first().toBool();
+ bool audioConnect = listArguments.first().toBool();
- if(mInStep > mProfileInUse.mNoOfSteps)
+ if(mInStep >= mProfileInUse.mNoOfSteps)
{
StopCallMonitors();
return;
Steps step = mProfileInUse.mSteps.at(mInStep);
- if (audioConnected)
+ if (audioConnect)
{
- qDebug() << "Audio Connected...";
+ qDebug() << "Call Active...";
//Wait for specified delay in the step
QTimer *timer = new QTimer(this);
timer->setSingleShot(true);
connect(timer, SIGNAL(timeout()), this, SLOT(continueSendDTMF()));
- timer->start(step.delay());
+ qDebug() << "Setting delay for " << step.delay() << "seconds...";
+ timer->start(step.delay()*1000);
}
}
/* Declare the slot to be executed when a call is picked up by other party (Audio connection established).
We need this to confirm whether a call went though successfully.
*/
- bool status = connection.connect(QString(""), CSD_CALL_INSTANCE_PATH, CSD_CALL_INSTANCE_INTERFACE,
+ bool status = connection.connect(CSD_CALL_SERVICE, CSD_CALL_INSTANCE_PATH, CSD_CALL_INSTANCE_INTERFACE,
QString("AudioConnect"),this, SLOT(sendDTMF(const QDBusMessage&)));
if(!status)
{
qDebug() << "Failed to connect to Dbus signal AudioConnect in interface "<< CSD_CALL_INSTANCE_INTERFACE;
- QString error = "DBus Error: " + mDBusUtility.getErrorMessage();
+ QString error = "DBus Error (StartCallMonitors): " + mDBusUtility.getErrorMessage();
mDBusUtility.displayNotification(error);
+ qDebug() << "Error is: " << error;
}
qDebug() << "Successfully connected to Dbus signal AudioConnect in interface "<< CSD_CALL_INSTANCE_INTERFACE;
/* Declare the slot to be executed when the call is terminated (due to connection errors etc).
We need this to avoid sending DTMF code on wrong calls.
*/
- status = connection.connect(QString(""), CSD_CALL_INSTANCE_PATH, CSD_CALL_INSTANCE_INTERFACE,
+ status = connection.connect(CSD_CALL_SERVICE, CSD_CALL_INSTANCE_PATH, CSD_CALL_INSTANCE_INTERFACE,
QString("Terminated"),this, SLOT(StopCallMonitors()));
if(!status)
{
qDebug() << "Failed to connect to Dbus signal Terminated in interface "<< CSD_CALL_INSTANCE_INTERFACE;
- QString error = "DBus Error: " + mDBusUtility.getErrorMessage();
+ QString error = "DBus Error (StartCallMonitors): " + mDBusUtility.getErrorMessage();
mDBusUtility.displayNotification(error);
+ qDebug() << "Error is: " << error;
}
qDebug() << "Successfully connected to Dbus signal Terminated in interface "<< CSD_CALL_INSTANCE_INTERFACE;
then we stop sending the DTMF code even if user does not respond to the call.
*/
- status = connection.connect(QString(""), CSD_CALL_PATH, CSD_CALL_INTERFACE,
+ status = connection.connect(CSD_CALL_SERVICE, CSD_CALL_PATH, CSD_CALL_INTERFACE,
QString("Coming"),this, SLOT(StopCallMonitors()));
if(!status)
{
qDebug() << "Failed to connect to Dbus signal Coming in interface" << CSD_CALL_INTERFACE;
- QString error = "DBus Error: " + mDBusUtility.getErrorMessage();
+ QString error = "DBus Error (StartCallMonitors): " + mDBusUtility.getErrorMessage();
mDBusUtility.displayNotification(error);
+ qDebug() << "Error is: " << error;
}
qDebug() << "Successfully connected to Dbus signal Coming in interface" << CSD_CALL_INTERFACE;
}
void confManager::StopCallMonitors()
{
- mInStep = 0;
+// mInStep = 0;
mProfileSet = false;
QDBusConnection connection = mDBusUtility.getConnection();
// Disconnect the slot for audio connection status
- bool status = connection.disconnect(QString(""), CSD_CALL_INSTANCE_PATH, CSD_CALL_INSTANCE_INTERFACE,
+ bool status = connection.disconnect(CSD_CALL_BUS_NAME, CSD_CALL_INSTANCE_PATH, CSD_CALL_INSTANCE_INTERFACE,
QString("AudioConnect"),this, SLOT(sendDTMF(const QDBusMessage&)));
if(!status)
{
qDebug() << "Failed to disconnect from Dbus signal AudioConnect in interface" << CSD_CALL_INSTANCE_INTERFACE;
- QString error = "DBus Error: " + mDBusUtility.getErrorMessage();
+ QString error = "DBus Error (StopCallMonitors): " + mDBusUtility.getErrorMessage();
mDBusUtility.displayNotification(error);
+ qDebug() << "Error is: " << error;
}
qDebug() << "Successfully disconnected from Dbus signal AudioConnect in interface "<< CSD_CALL_INSTANCE_INTERFACE;
// Disconnect the slot for monitoring terminated calls
- status = connection.disconnect(QString(""), CSD_CALL_INSTANCE_PATH, CSD_CALL_INSTANCE_INTERFACE,
+ status = connection.disconnect(CSD_CALL_BUS_NAME, CSD_CALL_INSTANCE_PATH, CSD_CALL_INSTANCE_INTERFACE,
QString("Terminated"),this, SLOT(StopCallMonitors()));
if(!status)
{
qDebug() << "Failed to disconnect from Dbus signal Terminated in interface" << CSD_CALL_INSTANCE_INTERFACE;
- QString error = "DBus Error: " + mDBusUtility.getErrorMessage();
+ QString error = "DBus Error (StopCallMonitors): " + mDBusUtility.getErrorMessage();
mDBusUtility.displayNotification(error);
+ qDebug() << "Error is: " << error;
}
qDebug() << "Successfully disconnected from Dbus signal Terminated in interface "<< CSD_CALL_INSTANCE_INTERFACE;
// Disconnect the slot for monitoring incoming calls
- status = connection.disconnect(QString(""), CSD_CALL_PATH, CSD_CALL_INTERFACE,
+ status = connection.disconnect(CSD_CALL_BUS_NAME, CSD_CALL_PATH, CSD_CALL_INTERFACE,
QString("Coming"),this, SLOT(StopCallMonitors()));
if(!status)
{
qDebug() << "Failed to disconnect from Dbus signal Coming in interface" << CSD_CALL_INTERFACE;
- QString error = "DBus Error: " + mDBusUtility.getErrorMessage();
+ QString error = "DBus Error (StopCallMonitors): " + mDBusUtility.getErrorMessage();
mDBusUtility.displayNotification(error);
+ qDebug() << "Error is: " << error;
}
qDebug() << "Successfully disconnected from Dbus signal Coming in interface" << CSD_CALL_INTERFACE;
}
void confManager::startConference()
{
+ mInStep = 0;
if(!mProfileSet)
{
qDebug() << "Please set the profile to use with Conference Manager first!";
#define CSD_CALL_INSTANCE_PATH "/com/nokia/csd/call/1"
#define CSD_CALL_SERVICE "com.nokia.csd.Call"
#define CSD_SERVICE "com.nokia.csd"
+#define CSD_CALL_STATUS_INTERFACE "com.nokia.csd.Call.Instance.CallStatus" // Should be 7 for a proper connection
class confManager : public QObject
{
void setProfile(Profile &p);
void startConference();
-private:
+public slots:
void sendDTMF(const QDBusMessage &dBusMessage);
- void StartCallMonitors();
void StopCallMonitors();
void continueSendDTMF();
private:
+ void StartCallMonitors();
+
+private:
Profile mProfileInUse;
bool mProfileSet;
DbusUtility mDBusUtility;
--- /dev/null
+/* XPM */
+static char * confmgr_xpm[] = {
+"48 48 800 2",
+" c None",
+". c #723248",
+"+ c #994361",
+"@ c #A14766",
+"# c #A04766",
+"$ c #863C56",
+"% c #3D1B27",
+"& c #A28252",
+"* c #C39C65",
+"= c #C79F68",
+"- c #C39C67",
+"; c #A18155",
+"> c #483A26",
+", c #A74868",
+"' c #B24E71",
+") c #B55175",
+"! c #B85376",
+"~ c #B85377",
+"{ c #B95377",
+"] c #B65376",
+"^ c #73344A",
+"/ c #090405",
+"( c #987A4B",
+"_ c #DAAE6E",
+": c #DEB174",
+"< c #DEB077",
+"[ c #DDB079",
+"} c #DBAE79",
+"| c #D9AF78",
+"1 c #D4AB74",
+"2 c #856C46",
+"3 c #AC4A6A",
+"4 c #B34F71",
+"5 c #B55275",
+"6 c #B85477",
+"7 c #BA567A",
+"8 c #BC577C",
+"9 c #BD587C",
+"0 c #BD577B",
+"a c #BD567A",
+"b c #7B3850",
+"c c #040202",
+"d c #DEC398",
+"e c #DFB36F",
+"f c #E0B475",
+"g c #E1B379",
+"h c #E1B37C",
+"i c #E0B27F",
+"j c #DFB17F",
+"k c #DDB27E",
+"l c #DAB27C",
+"m c #D6AF78",
+"n c #735D3D",
+"o c #AD5170",
+"p c #B24D6F",
+"q c #B55174",
+"r c #B75479",
+"s c #B9577B",
+"t c #BC597D",
+"u c #BD5B7F",
+"v c #BF5B80",
+"w c #BF5B7F",
+"x c #C0597E",
+"y c #BC567A",
+"z c #361923",
+"A c #DCB06C",
+"B c #E1B673",
+"C c #E2B678",
+"D c #E3B67D",
+"E c #E3B581",
+"F c #E2B483",
+"G c #E1B483",
+"H c #E0B583",
+"I c #DDB480",
+"J c #D9B27C",
+"K c #CAA671",
+"L c #211B11",
+"M c #B04C6D",
+"N c #B34F72",
+"O c #BB5F7F",
+"P c #C26E8D",
+"Q c #BE5F82",
+"R c #C05C81",
+"S c #C05D82",
+"T c #C15D82",
+"U c #C25C81",
+"V c #C35B7F",
+"W c #6F3448",
+"X c #E1B46F",
+"Y c #E4BB7D",
+"Z c #E7C08E",
+"` c #E7BF8E",
+" . c #E5B784",
+".. c #E4B685",
+"+. c #E3B687",
+"@. c #E1B686",
+"#. c #DFB684",
+"$. c #DAB37F",
+"%. c #D5B17A",
+"&. c #5D4C33",
+"*. c #B14C6E",
+"=. c #B8597A",
+"-. c #D091A8",
+";. c #D69EB3",
+">. c #CA7E9A",
+",. c #BE5E82",
+"'. c #C15E83",
+"). c #C25F83",
+"!. c #C45E84",
+"~. c #C45D81",
+"{. c #9A4764",
+"]. c #E2BD84",
+"^. c #E9C895",
+"/. c #EFD6B1",
+"(. c #F0D8B9",
+"_. c #EDCFAB",
+":. c #E7BD8E",
+"<. c #E4B787",
+"[. c #E4B688",
+"}. c #E2B787",
+"|. c #E0B685",
+"1. c #DBB380",
+"2. c #D6B17B",
+"3. c #866E4A",
+"4. c #BC6280",
+"5. c #D7A3B6",
+"6. c #DCADBF",
+"7. c #D08DA6",
+"8. c #C16487",
+"9. c #BF5E83",
+"0. c #C25F85",
+"a. c #C36084",
+"b. c #C55F84",
+"c. c #C55E83",
+"d. c #AD5071",
+"e. c #ECD4AE",
+"f. c #F3E1C6",
+"g. c #F5E6D0",
+"h. c #F3E0C8",
+"i. c #EED2B1",
+"j. c #E7BE90",
+"k. c #E4B788",
+"l. c #D6B07A",
+"m. c #88704C",
+"n. c #B85979",
+"o. c #D296AC",
+"p. c #DBAABC",
+"q. c #D292AA",
+"r. c #C36A8B",
+"s. c #C05E83",
+"t. c #C36085",
+"u. c #C55F85",
+"v. c #C65E83",
+"w. c #AE5173",
+"x. c #F3E5CE",
+"y. c #F7EEDF",
+"z. c #F7ECDB",
+"A. c #F3E1CA",
+"B. c #EDCFAC",
+"C. c #E6BA89",
+"D. c #E4B786",
+"E. c #E1B586",
+"F. c #DEB584",
+"G. c #DAB280",
+"H. c #756040",
+"I. c #AF4B6D",
+"J. c #B44F71",
+"K. c #C26F8D",
+"L. c #D293AA",
+"M. c #D08CA5",
+"N. c #C46D8D",
+"O. c #C45F85",
+"P. c #C65F84",
+"Q. c #AF5173",
+"R. c #F6EDDD",
+"S. c #F9F3E8",
+"T. c #F7ECDC",
+"U. c #F2DDC3",
+"V. c #EAC79C",
+"W. c #E4B683",
+"X. c #E2B585",
+"Y. c #E0B484",
+"Z. c #DDB481",
+"`. c #D9B17D",
+" + c #D2AC75",
+".+ c #B96A85",
+"++ c #B24D70",
+"@+ c #C26C8B",
+"#+ c #C77694",
+"$+ c #C26788",
+"%+ c #C05C82",
+"&+ c #C25F84",
+"*+ c #C35F84",
+"=+ c #C65F85",
+"-+ c #F6EEE0",
+";+ c #F9F2E7",
+">+ c #F5E8D4",
+",+ c #EED4B2",
+"'+ c #E6BC88",
+")+ c #E4B682",
+"!+ c #E0B382",
+"~+ c #DEB380",
+"{+ c #DBB37D",
+"]+ c #D8B179",
+"^+ c #8C714A",
+"/+ c #AB506E",
+"(+ c #B24F72",
+"_+ c #B75377",
+":+ c #BB597C",
+"<+ c #BE5A7D",
+"[+ c #BF5C81",
+"}+ c #F5EBDA",
+"|+ c #F1DDC0",
+"1+ c #E8C494",
+"2+ c #E3B77E",
+"3+ c #E2B580",
+"4+ c #E1B380",
+"5+ c #DCB17C",
+"6+ c #D9B078",
+"7+ c #9D7F53",
+"8+ c #AE4E70",
+"9+ c #BE5A7F",
+"0+ c #C15C82",
+"a+ c #C35E83",
+"b+ c #AF5072",
+"c+ c #F1DFC4",
+"d+ c #F0DCBC",
+"e+ c #E9C796",
+"f+ c #E3B77C",
+"g+ c #E2B57C",
+"h+ c #DFB27C",
+"i+ c #DDB07A",
+"j+ c #C69F6A",
+"k+ c #B96884",
+"l+ c #BE587D",
+"m+ c #C05A7F",
+"n+ c #C35C81",
+"o+ c #C45D82",
+"p+ c #C65C83",
+"q+ c #AF5073",
+"r+ c #E7C998",
+"s+ c #E6C085",
+"t+ c #E2B776",
+"u+ c #E1B479",
+"v+ c #DFB178",
+"w+ c #DAAE75",
+"x+ c #997A4F",
+"y+ c #BF587C",
+"z+ c #C25A7E",
+"A+ c #C45B80",
+"B+ c #C55B81",
+"C+ c #AE5071",
+"D+ c #E1BA7E",
+"E+ c #E0B46F",
+"F+ c #E0B375",
+"G+ c #DFB275",
+"H+ c #CDA46A",
+"I+ c #C57F97",
+"J+ c #BC557A",
+"K+ c #C3587E",
+"L+ c #C45A7F",
+"M+ c #E0B97C",
+"N+ c #DFB26C",
+"O+ c #DFB36E",
+"P+ c #DBAF6E",
+"Q+ c #987B4D",
+"R+ c #63357C",
+"S+ c #733D8F",
+"T+ c #743E90",
+"U+ c #673780",
+"V+ c #341C42",
+"W+ c #060308",
+"X+ c #BB5C7D",
+"Y+ c #C1587D",
+"Z+ c #BB5579",
+"`+ c #DFB87B",
+" @ c #DDB06B",
+".@ c #C69F61",
+"+@ c #5C7F44",
+"@@ c #84B764",
+"#@ c #8ABF69",
+"$@ c #86BA66",
+"%@ c #67904D",
+"&@ c #23311A",
+"*@ c #6D3A89",
+"=@ c #8949AC",
+"-@ c #8A4BAE",
+";@ c #8B4CAE",
+">@ c #894AAC",
+",@ c #6E3C8B",
+"'@ c #2F193B",
+")@ c #C47B94",
+"!@ c #DBB579",
+"~@ c #AF8C55",
+"{@ c #5F8547",
+"]@ c #9BD376",
+"^@ c #A6DF81",
+"/@ c #A6DE81",
+"(@ c #A5DD81",
+"_@ c #A4DB80",
+":@ c #A0D97C",
+"<@ c #98D074",
+"[@ c #4C6A38",
+"}@ c #7E489B",
+"|@ c #8C4BAF",
+"1@ c #8C4DB0",
+"2@ c #8D4EB1",
+"3@ c #8D4FB1",
+"4@ c #8D4EB0",
+"5@ c #8C4DAF",
+"6@ c #6D3C8A",
+"7@ c #2A1735",
+"8@ c #53753E",
+"9@ c #9DD777",
+"0@ c #A8E082",
+"a@ c #AAE185",
+"b@ c #ABE187",
+"c@ c #ACE087",
+"d@ c #AADE86",
+"e@ c #A6DC83",
+"f@ c #A3D97F",
+"g@ c #9DD579",
+"h@ c #435D31",
+"i@ c #8B4BAE",
+"j@ c #8F50B2",
+"k@ c #8F51B2",
+"l@ c #8F52B2",
+"m@ c #8E51B1",
+"n@ c #8E50B1",
+"o@ c #8E4FB2",
+"p@ c #8A4DAD",
+"q@ c #683982",
+"r@ c #23132B",
+"s@ c #486535",
+"t@ c #95CC6F",
+"u@ c #A8E180",
+"v@ c #ABE284",
+"w@ c #ACE288",
+"x@ c #AEE38A",
+"y@ c #B0E38B",
+"z@ c #B0E28C",
+"A@ c #AFE18A",
+"B@ c #ACE088",
+"C@ c #A7DC83",
+"D@ c #A1D87E",
+"E@ c #8EC36D",
+"F@ c #10170C",
+"G@ c #9159B1",
+"H@ c #8D4DB1",
+"I@ c #9051B3",
+"J@ c #9C67BC",
+"K@ c #9D67BC",
+"L@ c #9256B5",
+"M@ c #8F53B3",
+"N@ c #8E53B2",
+"O@ c #8E52B2",
+"P@ c #8E51B2",
+"Q@ c #9052B3",
+"R@ c #9152B4",
+"S@ c #8F51B4",
+"T@ c #9151B5",
+"U@ c #8E4EB1",
+"V@ c #603579",
+"W@ c #1A0E21",
+"X@ c #445D35",
+"Y@ c #94C473",
+"Z@ c #AEE486",
+"`@ c #AEE487",
+" # c #B0E488",
+".# c #B1E48B",
+"+# c #B2E48D",
+"@# c #B3E48F",
+"## c #B3E38E",
+"$# c #B2E38D",
+"%# c #AFE18B",
+"&# c #AADE87",
+"*# c #A4DA80",
+"=# c #9DD57A",
+"-# c #3B512D",
+";# c #8B4AAF",
+"># c #8D4EB2",
+",# c #A36FC0",
+"'# c #BE9CD3",
+")# c #B891CE",
+"!# c #A06DBF",
+"~# c #8F54B4",
+"{# c #8E53B3",
+"]# c #8F54B3",
+"^# c #9153B4",
+"/# c #9052B4",
+"(# c #9253B6",
+"_# c #9352B7",
+":# c #9150B7",
+"<# c #8D4FB0",
+"[# c #5E3475",
+"}# c #88C164",
+"|# c #B2E68E",
+"1# c #C1EAA2",
+"2# c #C8ECAC",
+"3# c #CAEDAF",
+"4# c #C9ECAD",
+"5# c #C7EBAB",
+"6# c #C3EAA6",
+"7# c #BEE89F",
+"8# c #B7E594",
+"9# c #B4E590",
+"0# c #B3E490",
+"a# c #B3E48E",
+"b# c #B1E28C",
+"c# c #ADE089",
+"d# c #A7DB83",
+"e# c #9ED67B",
+"f# c #4C693B",
+"g# c #8C4BB0",
+"h# c #8F4FB2",
+"i# c #AA7BC5",
+"j# c #C6A7D8",
+"k# c #BC99D2",
+"l# c #A575C2",
+"m# c #9056B4",
+"n# c #8E54B3",
+"o# c #9053B4",
+"p# c #8F52B4",
+"q# c #9252B7",
+"r# c #9251B7",
+"s# c #9050B5",
+"t# c #844AA6",
+"u# c #A3DB82",
+"v# c #9EDF74",
+"w# c #B4E790",
+"x# c #C5EBA7",
+"y# c #CEEEB5",
+"z# c #D2EFBA",
+"A# c #D1EEB9",
+"B# c #CDEDB5",
+"C# c #C8ECAD",
+"D# c #C2EAA5",
+"E# c #BAE698",
+"F# c #B4E490",
+"G# c #B1E28D",
+"H# c #ADDF89",
+"I# c #9FD67B",
+"J# c #8A49AD",
+"K# c #8E4DB2",
+"L# c #9B64BB",
+"M# c #B68FCD",
+"N# c #B288CA",
+"O# c #9C66BC",
+"P# c #8F52B3",
+"Q# c #9152B5",
+"R# c #8B4DAE",
+"S# c #59316F",
+"T# c #B5E396",
+"U# c #B8E797",
+"V# c #BFE99E",
+"W# c #C0E99F",
+"X# c #BDE89D",
+"Y# c #B9E798",
+"Z# c #B4E591",
+"`# c #B4E48F",
+" $ c #B2E38E",
+".$ c #B0E18C",
+"+$ c #ACDE88",
+"@$ c #A5DA82",
+"#$ c #476135",
+"$$ c #8D4CB0",
+"%$ c #9357B6",
+"&$ c #9459B6",
+"*$ c #9053B3",
+"=$ c #8F50B3",
+"-$ c #8B4EAD",
+";$ c #62377A",
+">$ c #A5DF7F",
+",$ c #A8E27E",
+"'$ c #ACE283",
+")$ c #ADE387",
+"!$ c #AFE38A",
+"~$ c #B1E38C",
+"{$ c #B2E38C",
+"]$ c #B0E28B",
+"^$ c #A8DD85",
+"/$ c #99D175",
+"($ c #894CAB",
+"_$ c #8D4DB0",
+":$ c #8E50B2",
+"<$ c #8E4FB0",
+"[$ c #8A4CAD",
+"}$ c #64377D",
+"|$ c #A9E183",
+"1$ c #A9E182",
+"2$ c #ABE286",
+"3$ c #AEE28A",
+"4$ c #ADE088",
+"5$ c #A9DE85",
+"6$ c #A5DA81",
+"7$ c #9FD77B",
+"8$ c #6D9754",
+"9$ c #8849A9",
+"0$ c #8B4CAF",
+"a$ c #8C4EAF",
+"b$ c #8D4EAF",
+"c$ c #894BAC",
+"d$ c #713D8E",
+"e$ c #364C76",
+"f$ c #A3DF7C",
+"g$ c #A8E083",
+"h$ c #A9E084",
+"i$ c #AADF86",
+"j$ c #A9DF85",
+"k$ c #A8DD83",
+"l$ c #A0D87B",
+"m$ c #8FC56B",
+"n$ c #8E57AC",
+"o$ c #8749A9",
+"p$ c #8849AC",
+"q$ c #8748A9",
+"r$ c #753E92",
+"s$ c #2B3D5F",
+"t$ c #5576B8",
+"u$ c #4F6FAE",
+"v$ c #7BDFBB",
+"w$ c #69D9B0",
+"x$ c #3A7660",
+"y$ c #070E0B",
+"z$ c #A1DE7A",
+"A$ c #A4DD7D",
+"B$ c #A3DC7D",
+"C$ c #A1DA7B",
+"D$ c #9CD777",
+"E$ c #8DB871",
+"F$ c #445F94",
+"G$ c #587CC1",
+"H$ c #5A7EC4",
+"I$ c #5070AE",
+"J$ c #7CE0BB",
+"K$ c #6BDFB4",
+"L$ c #6DDEB5",
+"M$ c #59B291",
+"N$ c #1C372D",
+"O$ c #2E4166",
+"P$ c #5374B5",
+"Q$ c #597DC2",
+"R$ c #5A7FC5",
+"S$ c #5B80C5",
+"T$ c #5171AF",
+"U$ c #7EE0BC",
+"V$ c #6DE0B6",
+"W$ c #70E1B7",
+"X$ c #72E0B5",
+"Y$ c #6ED7AE",
+"Z$ c #3E7A63",
+"`$ c #050B09",
+" % c #47639C",
+".% c #577BBE",
+"+% c #5A7EC0",
+"@% c #5C80C3",
+"#% c #5D81C5",
+"$% c #5D82C7",
+"%% c #5171B0",
+"&% c #80E1BE",
+"*% c #70E1B8",
+"=% c #73E2B9",
+"-% c #75E1B6",
+";% c #76DFB5",
+">% c #76DEB4",
+",% c #63BC9A",
+"'% c #1F3D31",
+")% c #324771",
+"!% c #5071B1",
+"~% c #5679BD",
+"{% c #5A7EBF",
+"]% c #5C81C2",
+"^% c #5E82C4",
+"/% c #5E83C6",
+"(% c #5E83C7",
+"_% c #5173B0",
+":% c #A8EAD3",
+"<% c #97E9CB",
+"[% c #7BE4BC",
+"}% c #79E2B9",
+"|% c #7AE1B7",
+"1% c #7ADFB4",
+"2% c #7ADEB2",
+"3% c #74D6AD",
+"4% c #417C65",
+"5% c #09110E",
+"6% c #44619C",
+"7% c #5274B7",
+"8% c #5578BB",
+"9% c #587CBE",
+"0% c #5C80BF",
+"a% c #5E83C2",
+"b% c #6084C4",
+"c% c #6084C7",
+"d% c #5F84C7",
+"e% c #5273B0",
+"f% c #CDF2E5",
+"g% c #C8F3E3",
+"h% c #A5ECD1",
+"i% c #80E4BC",
+"j% c #7DE3B8",
+"k% c #7EE1B6",
+"l% c #7EE0B4",
+"m% c #7DDEB3",
+"n% c #7ADBB3",
+"o% c #62B694",
+"p% c #1B342B",
+"q% c #4C6DB1",
+"r% c #5073B5",
+"s% c #587ABA",
+"t% c #6282BF",
+"u% c #5E81C0",
+"v% c #5D81C1",
+"w% c #5F84C3",
+"x% c #6185C4",
+"y% c #6185C7",
+"z% c #6085C8",
+"A% c #DEF6ED",
+"B% c #E1F8EF",
+"C% c #C9F3E3",
+"D% c #9FEBCC",
+"E% c #81E4BA",
+"F% c #81E3B8",
+"G% c #82E1B6",
+"H% c #80E0B4",
+"I% c #7FDEB6",
+"J% c #7CDBB5",
+"K% c #76D4AF",
+"L% c #244437",
+"M% c #496AAD",
+"N% c #4F70B4",
+"O% c #597ABA",
+"P% c #7C97C8",
+"Q% c #809BCC",
+"R% c #6B8BC5",
+"S% c #5E82C2",
+"T% c #6085C3",
+"U% c #6185C5",
+"V% c #E0F6EE",
+"W% c #E8F9F3",
+"X% c #D8F6EA",
+"Y% c #B9F0D9",
+"Z% c #8FE7C1",
+"`% c #83E4B8",
+" & c #84E3B7",
+".& c #84E2B7",
+"+& c #83E0B8",
+"@& c #80DCB6",
+"#& c #7CD8B4",
+"$& c #6BBF9F",
+"%& c #0B1612",
+"&& c #4C6DB2",
+"*& c #5273B5",
+"=& c #7E97C8",
+"-& c #9EB2D6",
+";& c #90A8D2",
+">& c #6D8DC5",
+",& c #6184C5",
+"'& c #5373B0",
+")& c #D9F5EB",
+"!& c #E7F9F2",
+"~& c #DDF7ED",
+"{& c #C6F2E0",
+"]& c #A4EBCD",
+"^& c #85E5B9",
+"/& c #86E4B9",
+"(& c #86E4B8",
+"_& c #86E1B8",
+":& c #84DFB7",
+"<& c #7FDAB5",
+"[& c #7AD5B3",
+"}& c #315A4A",
+"|& c #4D6EB2",
+"1& c #5E7DBB",
+"2& c #9EB1D6",
+"3& c #AEBFDD",
+"4& c #93A9D3",
+"5& c #6989C4",
+"6& c #5E83C1",
+"7& c #6084C3",
+"8& c #6184C4",
+"9& c #5273AF",
+"0& c #C7F1E1",
+"a& c #D9F6EB",
+"b& c #CBF3E3",
+"c& c #AFEED3",
+"d& c #8CE6BD",
+"e& c #87E4B9",
+"f& c #88E4B8",
+"g& c #87E2B9",
+"h& c #85E0B8",
+"i& c #80DBB6",
+"j& c #7BD6B4",
+"k& c #4A8670",
+"l& c #6280BD",
+"m& c #A1B4D7",
+"n& c #ABBDDC",
+"o& c #8AA3D0",
+"p& c #6384C1",
+"q& c #5E83C0",
+"r& c #5F84C2",
+"s& c #6084C6",
+"t& c #5E82C6",
+"u& c #4D6BA5",
+"v& c #A0E9CE",
+"w& c #BAF0DB",
+"x& c #C5F2E0",
+"y& c #B1EED4",
+"z& c #90E7C0",
+"A& c #88E4B9",
+"B& c #7BD6B3",
+"C& c #4C8872",
+"D& c #5575B7",
+"E& c #849CCB",
+"F& c #94ABD3",
+"G& c #7693C7",
+"H& c #5D7FBF",
+"I& c #5E82C0",
+"J& c #5F83C2",
+"K& c #5F82C3",
+"L& c #5C81C4",
+"M& c #3E5787",
+"N& c #93E5C7",
+"O& c #82E5C0",
+"P& c #A2EBCF",
+"Q& c #AFEED4",
+"R& c #A6ECCD",
+"S& c #8AE6BC",
+"T& c #87E4B8",
+"U& c #80DBB5",
+"V& c #7AD6B3",
+"W& c #417662",
+"X& c #4A6BAE",
+"Y& c #4F71B4",
+"Z& c #5577B8",
+"`& c #5F80BD",
+" * c #5A7DBC",
+".* c #5B7EBE",
+"+* c #5D81C0",
+"@* c #5D80C2",
+"#* c #5B7FC2",
+"$* c #5A7EC2",
+"%* c #283856",
+"&* c #6EDFB6",
+"** c #76E2B9",
+"=* c #81E5BD",
+"-* c #84E5BC",
+";* c #81E4B8",
+">* c #84E3B8",
+",* c #85E2B7",
+"'* c #84E0B7",
+")* c #81DDB6",
+"!* c #7DD9B4",
+"~* c #77D4B1",
+"{* c #213E33",
+"]* c #5072B5",
+"^* c #5376B7",
+"/* c #5679BA",
+"(* c #597BBC",
+"_* c #5A7DBE",
+":* c #5A7DC0",
+"<* c #587CC0",
+"[* c #4D6CA7",
+"}* c #6DD7B1",
+"|* c #72E1B8",
+"1* c #77E2B7",
+"2* c #7BE2B8",
+"3* c #7EE2B7",
+"4* c #81E1B6",
+"5* c #81E0B4",
+"6* c #80DFB5",
+"7* c #7EDBB4",
+"8* c #7AD7B2",
+"9* c #5AA588",
+"0* c #4F6DAB",
+"a* c #4E6FB2",
+"b* c #5376B8",
+"c* c #5679BC",
+"d* c #577ABC",
+"e* c #5071B0",
+"f* c #6BD7B0",
+"g* c #73DFB5",
+"h* c #77DFB5",
+"i* c #7DDFB4",
+"j* c #7CDBB3",
+"k* c #79D8B2",
+"l* c #6FCCA8",
+"m* c #748ABA",
+"n* c #4B6CAD",
+"o* c #4F70B3",
+"p* c #5173B7",
+"q* c #5173B5",
+"r* c #45629A",
+"s* c #7CD8B7",
+"t* c #70DAB1",
+"u* c #74DCB2",
+"v* c #76DCB1",
+"w* c #76DAB0",
+"x* c #73D7AF",
+"y* c #5DB191",
+" ",
+" ",
+" ",
+" ",
+" . + @ # $ % & * = - ; > ",
+" , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 ",
+" 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n ",
+" o p q r s t u v w x y z A B C D E F G H I J K L ",
+" M N O P Q u R S T U V W X Y Z ` ...+.@.#.$.%.&. ",
+" *.=.-.;.>.,.S '.).!.~.{. ].^./.(._.:.<.[.}.|.1.2.3. ",
+" *.4.5.6.7.8.9.0.a.b.c.d. e.f.g.h.i.j.k.[.}.|.1.l.m. ",
+" *.n.o.p.q.r.s.0.t.u.v.w. x.y.z.A.B.C.D.+.E.F.G.%.H. ",
+" I.J.K.L.M.N.S 0.O.b.P.Q. R.S.T.U.V.W...X.Y.Z.`. + ",
+" .+++] @+#+$+%+&+*+u.=+Q. -+;+>+,+'+)+F !+~+{+]+^+ ",
+" /+(+_+:+<+[+'.*+u.P.Q. }+z.|+1+2+3+4+j 5+6+7+ ",
+" 8+{ 0 9+0+a+c.v.b+ c+d+e+f+g+h h+i+j+ ",
+" k+6 l+m+n+o+p+q+ r+s+t+C u+v+w+x+ ",
+" 5 y+z+A+B+C+ D+E+B F+G+H+ ",
+" I+J+K+L+b+ M+N+O+P+Q+ ",
+" R+S+T+U+V+W+ X+Y+Z+ `+ @.@ +@@@#@$@%@&@ ",
+" *@=@-@;@;@-@>@,@'@ )@y+ !@~@ {@]@^@/@(@_@:@<@[@ ",
+" }@|@1@2@3@3@4@5@5@;@6@7@ 8@9@0@a@b@c@c@d@e@f@g@h@ ",
+" i@2@j@k@l@k@m@n@n@o@o@p@q@r@ s@t@u@v@w@x@y@z@z@A@B@C@D@E@F@ ",
+"G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@ X@Y@Z@`@ #.#+#+#+#@###$#%#&#*#=#-# ",
+";#>#,#'#)#!#~#{#]#M@^#^#/#(#_#:#<#[#W@ }#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f# ",
+"g#h#i#j#k#l#m#n#n#M@o#o#p#(#q#r#s#t# u#v#w#x#y#z#A#B#C#D#E#9#F#@#G#H#d#I#f# ",
+"J#K#L#M#N#O#M@{#n#P#Q@Q@/#Q#_#R#S# T#U#V#W#W#7#X#Y#Z#`#a# $.$+$@$=##$ ",
+" $$o@%$&$*$M@l@P@n@k@=$=$-$;$ >$,$'$)$!$y@~${$~$]$c#^$f@/$&@ ",
+" ($_$o@o@:$n@n@<$4@2@[$}$ |$1$2$w@3$3$A@4$5$6$7$8$ ",
+" 9$0$5@a$b$5@0$c$d$ e$ f$g$h$i$j$k$_@l$m$ ",
+" n$o$p$>@q$r$ s$t$u$ v$w$x$y$ z$A$B$C$D$E$ ",
+" F$G$H$I$ J$K$L$M$N$ ",
+" O$P$Q$R$S$T$ U$V$W$X$Y$Z$`$ ",
+" %.%+%@%#%$%%% &%*%=%-%;%>%,%'% ",
+" )%!%~%{%]%^%/%(%_% :%<%[%}%|%1%2%3%4%5% ",
+" 6%7%8%9%0%a%b%c%d%e% f%g%h%i%j%k%l%m%n%o%p% ",
+" q%r%s%t%u%v%w%x%y%z%e% A%B%C%D%E%F%G%H%I%J%K%L% ",
+" M%N%O%P%Q%R%S%T%U%y%z%e% V%W%X%Y%Z%`% &.&+&@&#&$&%& ",
+" &&*&=&-&;&>&S%T%,&y%c%'& )&!&~&{&]&^&/&(&_&:&<&[&}& ",
+" |&1&2&3&4&5&6&7&8&c%d%9& 0&a&a&b&c&d&e&f&g&h&i&j&k& ",
+" |&l&m&n&o&p&q&r&b%s&t&u& v&w&C%x&y&z&A&f&g&h&i&B&C& ",
+" |&D&E&F&G&H&I&J&K&^%L&M& N&O&P&Q&R&S&(&T&_&:&U&V&W& ",
+" X&Y&Z&`& *.*0%+*@*#*$*%* &***=*-*;*>*,*'*)*!*~*{* ",
+" |&]*^*/*(*_*{%:*<*[* }*|*1*2*3*4*5*6*7*8*9* ",
+" 0*a*r%b*8%c*d*~%e* f*g*h*1%i*m%j*k*l* ",
+" m*n*o*p*7%q*r* s*t*u*v*w*x*y* ",
+" ",
+" "};
qDebug() << "Profile to be Edited: " << endl << Xmlutil::generateProfileXML(p);
mFrmAddProfile.setParent(this, Qt::Window);
mFrmAddProfile.setAttribute(Qt::WA_Maemo5StackedWindow);
+ mFrmAddProfile.clear();
mFrmAddProfile.showProfile(p);
}
+
+void MainWindow::on_mainPBAbout_clicked()
+{
+ QMessageBox msg;
+ msg.setText("A nice screen yet to be implemented!");
+ msg.exec();
+ return;
+}
+
+void MainWindow::on_mainPBQuit_clicked()
+{
+ mConfig.writeAllProfiles();
+ mConfig.closeConfig();
+ close();
+}
QMenuBar *pMenu;
private slots:
+ void on_mainPBQuit_clicked();
+ void on_mainPBAbout_clicked();
void on_mainPBEditProfile_clicked();
void on_btnmainStartConference_clicked();
void on_mainPBDelete_clicked();
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
- <x>30</x>
+ <x>26</x>
<y>260</y>
- <width>351</width>
+ <width>241</width>
<height>141</height>
</rect>
</property>
<widget class="QWidget" name="verticalLayoutWidget_2">
<property name="geometry">
<rect>
- <x>420</x>
+ <x>535</x>
<y>260</y>
- <width>351</width>
+ <width>241</width>
<height>141</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
- <widget class="QPushButton" name="mainPBEditProfile">
+ <widget class="QPushButton" name="mainPBAbout">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Edit Profile</string>
+ <string>About</string>
</property>
</widget>
</item>
<item>
- <widget class="QPushButton" name="mainPBDelete">
+ <widget class="QPushButton" name="mainPBQuit">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Delete Profile</string>
+ <string>Exit</string>
</property>
</widget>
</item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="verticalLayoutWidget_3">
+ <property name="geometry">
+ <rect>
+ <x>281</x>
+ <y>260</y>
+ <width>241</width>
+ <height>141</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
<item>
- <widget class="QPushButton" name="mainPBQuit">
+ <widget class="QPushButton" name="mainPBEditProfile">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Edit Profile</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="mainPBDelete">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
</sizepolicy>
</property>
<property name="text">
- <string>Exit</string>
+ <string>Delete Profile</string>
</property>
</widget>
</item>
mNoOfSteps = 0;\r
}\r
\r
-Profile::Profile(const Profile &p)\r
+Profile::Profile(const Profile &p) :\r
+ QObject(p.parent())\r
{\r
*this = p;\r
}\r
Steps(const QString &value, const int &delay) : mValue(value), mDelay(delay) {}\r
~Steps() { }\r
\r
+ Steps(const Steps &s) {\r
+ *this = s;\r
+ }\r
+\r
+ Steps& operator=(const Steps &s) {\r
+ if(this != &s)\r
+ {\r
+ mValue = s.mValue;\r
+ mDelay = s.mDelay;\r
+ }\r
+ return *this;\r
+ }\r
+\r
// Getters...\r
QString value() { return mValue; }\r
int delay() { return mDelay; }\r