Editing Mbarcode Plugin Tutorial

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 19: Line 19:
* Qt Creator
* Qt Creator
-
Using [[MADDE]] for development is currently a bit of a pain since it lacks an option for third party libraries. There is a tutorial that covers writing these plugins using the Nokia Qt SDK available here [[Mbarcode_Plugin_Tutorial_MADDE]]
+
Using [[MADDE]] for development is currently a bit of a pain since it lacks an option for third party libraries. This might be unnecessary for plugins, but MADDE is in any case not covered by this tutorial as of yet.
== Writing the plugin ==
== Writing the plugin ==
Line 76: Line 76:
#define SHOWDIALOGACTION_H
#define SHOWDIALOGACTION_H
-
#include <QtCore>
 
#include <mbarcode-qt/plugininterfaces.h>
#include <mbarcode-qt/plugininterfaces.h>
#include <mbarcode-qt/pluginaction.h>
#include <mbarcode-qt/pluginaction.h>
-
class ShowDialogAction : public PluginAction
+
class ShowDialogAction : public QObject, public PluginAction
{
{
     Q_OBJECT
     Q_OBJECT
public:
public:
     ShowDialogAction(const PluginInterface *interface);
     ShowDialogAction(const PluginInterface *interface);
-
     QString getName() { return "EAN Local Analyser"; } // This name is just for convenience
+
 
 +
     QString getName() { return "My Plugin Action"; } // This name is just for convenience
     QString getText(); // This is the text that will show in the list
     QString getText(); // This is the text that will show in the list
 +
    bool isReady() { return ready; } // Tells the list wether this plugin is ready to be shown or not
     void clickAction(QWidget *parentWindow); // The action which is called whenever we are clicked
     void clickAction(QWidget *parentWindow); // The action which is called whenever we are clicked
-
signals:
+
 
-
    void isReady();
+
private slots:
private slots:
     void barcodeAnalysed(QString barcodeType, QString barcodeData); // The slot where all the processing goes down
     void barcodeAnalysed(QString barcodeType, QString barcodeData); // The slot where all the processing goes down
 +
private:
private:
 +
    bool ready;
     QString barcodeType;
     QString barcodeType;
     QString barcodeData;
     QString barcodeData;
};
};
-
 
-
//Q_DECLARE_METATYPE(ShowDialogAction *);
 
#endif // SHOWDIALOGACTION_H
#endif // SHOWDIALOGACTION_H
Line 112: Line 112:
{
{
     // Do your initialization here.
     // Do your initialization here.
 +
    // Remember to set ready to false.
 +
    // This keeps the plugin from appearing in the list before it is ready
 +
 +
    ready = false;
}
}
 +
QString ShowDialogAction::getText() {
QString ShowDialogAction::getText() {
     // This is the text which will show in the list of results.
     // This is the text which will show in the list of results.
 +
     return "Show Dialog";
     return "Show Dialog";
}
}
 +
void ShowDialogAction::clickAction(QWidget* parentWindow)
void ShowDialogAction::clickAction(QWidget* parentWindow)
{
{
     // This is what happens when the user clicks our button.
     // This is what happens when the user clicks our button.
-
     QMessageBox msg(parentWindow);
+
     // In this example we only show a message box
-
     msg.setWindowTitle("You clicked the button!");
+
 
-
     msg.setText("A window should be a dynamic object. Otherwise it is removed at the end of this function. A message box, on the other hand, has the exec().");
+
    QMessageBox *msgBox = new QMessageBox(parentWindow);
-
     msg.exec();
+
     msgBox->setWindowTitle("My Plugin");
 +
     msgBox->setText("The barcode was of type " + barcodeType + " and contained the data " + barcodeData);
 +
     msgBox->exec();
}
}
 +
void ShowDialogAction::barcodeAnalysed(QString barcodeType, QString barcodeData) {
void ShowDialogAction::barcodeAnalysed(QString barcodeType, QString barcodeData) {
 +
     // In this function you process the data. This could be used for early web lookups or whatever.
     // In this function you process the data. This could be used for early web lookups or whatever.
     // We just store the data in memory for now.
     // We just store the data in memory for now.
 +
     this->barcodeType = barcodeType;
     this->barcodeType = barcodeType;
     this->barcodeData = barcodeData;
     this->barcodeData = barcodeData;
 +
     // We've done what we need to and are ready to show ourselves
     // We've done what we need to and are ready to show ourselves
-
     emit isReady();
+
 
 +
     ready = true;
}
}
</source>
</source>
Line 144: Line 158:
<source lang="cpp">
<source lang="cpp">
-
// This is a plugin used as an example in different tutorials.
 
-
 
#ifndef PLUGIN_H
#ifndef PLUGIN_H
#define PLUGIN_H
#define PLUGIN_H
Line 216: Line 228:
  qmake && make
  qmake && make
-
Go to your directory and pick up the new file named <code>libmbarcode_myplugin.so</code>. Copy this to your device and place it in <code>/home/user/.config/mbarcode/plugins</code>. (Note: final plugins are stored in <code>/usr/share/mbarcode/plugins</code>. The former path with .config didn't work for me).
+
Go to your directory and pick up the new file named <code>libmbarcode_myplugin.so</code>. Copy this to your device and place it in <code>/home/user/.config/mbarcode/plugins</code>.
Start mBarcode and scan a barcode as usual. Your plugin should now show up.
Start mBarcode and scan a barcode as usual. Your plugin should now show up.

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)