рдПрдХ рдФрд░ рдкреНрд▓рд╛рд╕реНрдореЙрдЗрдб рдЧрд╛рдЗрдб: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдИрд╡реЗрдВрдЯ, рдФрд░ рд╕реВрдЪрдирд╛рдПрдВ


рдбреЙ.рдХреЛрдирдХреА, рд╣рдо рдЙрд╕рдХреЗ рджреЛрд╕реНрдд рд╣реИрдВ, рдореИрдВ рдЕрдХреНрд╕рд░ рдЙрд╕реЗ% рджреЗрдЦрддрд╛ рд╣реВрдВ)

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдЧреНрд░рджреВрдд


рдирдорд╕реНрддреЗ!
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдкреНрд▓рд╛рд╕реНрдореЛрдЗрдбреНрд╕ рдХреЛ рдХреНрдпреВрдПрдордПрд▓ / рдЬреЗрдПрд╕ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рд╕реАрдкреАрдкреА рд▓рд╛рд╢ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛рддрд╛ рд╣реВрдВ рдФрд░ рдкреНрд▓рд╕рд╕ рдкрд░ рдкреНрд▓рд╛рдЬреНрдорд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреЗрдЯ рд▓рд┐рдЦрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ,% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо%?

рд╕реА ++ рдореЗрдВ рдПрдХ рдкреНрд▓рд╛рд╕реНрдореЛрдЗрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдирдЧреНрди рд╡рд┐рдЬреЗрдЯ (рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ) - рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдХреБрдЫ рдШрдЯрдирд╛рдУрдВ рдФрд░ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ - рдиреАрдЪреЗ рдЬрд╛рд░реА рд╣реИред

рд╡рд┐рдЬреЗрдЯ рд╡рд┐рдЪрд╛рд░


рдЪреВрдБрдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╢реИрдХреНрд╖рд┐рдХ рдФрд░ рд╕реНрд╡-рд╢реИрдХреНрд╖рд┐рдХ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдЬреЗрдЯ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИ: рдЧрдиреЛрдо рдХреЗ рд▓рд┐рдП рдУрдмреНрд▓рд┐рдХ рд╕реНрдЯреНрд░реИрдЯреЗрдЬреАрдЬрд╝ рд╡рд┐рдЬреЗрдЯ рд▓реЗ рд▓реЛ рдФрд░ рдХрд╛рдВрдЯрд╛ рдХрд░реЛред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рд╣реЛрдЧрд╛:

рдШрдЯрдХреЛрдВ


рд╡рд┐рдЬреЗрдЯ

рд╣реАрде
#ifndef OBLIKUESTRATEGIES_H #define OBLIKUESTRATEGIES_H #include <Plasma/Applet> #include <Plasma/Label> #include <ui_configwindow.h> class QGraphicsLinearLayout; class oblikuestrategies : public Plasma::Applet { Q_OBJECT public: oblikuestrategies(QObject *parent, const QVariantList &args); ~oblikuestrategies(); int setMessagesText(); void init(); public slots: int autoUpdateEvent(); int sendNotification(QString eventId, int num); int updateEvent(); void mousePressEvent(QGraphicsSceneMouseEvent *event); // for configuration interface int setAutoUpdate(); void configAccepted(); void configChanged(); protected: void createConfigurationInterface(KConfigDialog *parent); private: // ui Plasma::Label *main_label; Plasma::Label *info_label; QTimer *timer; // variables bool autoUpdate_bool, notify_bool; int autoUpdate_int, edition, fontSize, fontWeight; QString fontFamily, fontColor, fontStyle; QStringList formatLine, copyright; QList<QStringList> mess; // configuration interface Ui::ConfigWindow uiConfig; }; K_EXPORT_PLASMA_APPLET(oblikue-strategies, oblikuestrategies) #endif /* OBLIKUESTRATEGIES_H */ 

рдпрд╣ рдПрдХ рддрд░рд╣ рдХрд╛ "рдореИрдк" рд╣реЛрдЧрд╛ред рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ рдореЗрдВ K_EXPORT_PLASMA_APPLET рдХрд╛ рд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рд╣реИ (рд╣реЗрдбрд░ рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╣реИ)ред рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рд╡рд░реНрдЧ рдФрд░ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ
 #include "oblikue-strategies.h" #include <QGraphicsLinearLayout> #include <plasma/theme.h> oblikuestrategies::oblikuestrategies(QObject *parent, const QVariantList &args) : Plasma::Applet(parent, args) { setBackgroundHints(DefaultBackground); setHasConfigurationInterface(true); } oblikuestrategies::~oblikuestrategies() { delete info_label; delete main_label; delete timer; } 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рдХреБрдЫ рднреА рдирд╣реАрдВред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдиреЛрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдордиреЗ рдпрд╣рд╛рдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдПрдкреНрд▓реЗрдЯ рдореЗрдВ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рдЪрд░ рдХрд╛ рд╕рд╛рд░ рдиреАрдЪреЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред рдЕрдЧрд▓рд╛, рд╣рдо рдЖрд░рдВрднреАрдХрд░рдг рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ:
 void oblikuestrategies::init() { if (setMessagesText() != 0) return; // generate ui // layout QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(this); layout->setOrientation(Qt::Vertical); // label layout->addStretch(1); main_label = new Plasma::Label(this); main_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); main_label->setToolTip(qApp->translate("tooltip", "Click here to update message")); layout->addItem(main_label); layout->addStretch(1); // copyright label info_label = new Plasma::Label(this); layout->addItem(info_label); } 

Int setMessagesText () рдлрд╝рдВрдХреНрд╢рди рдХреЙрдкреАрд░рд╛рдЗрдЯ рдЪрд░ рдФрд░ рдХрд╛рд░реНрдб рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд╛рда ( рдЧрдбрд╝рдмрдбрд╝реА ) рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ , рд╕рд╛рде рд╣реА рджреЛ рдкреНрд░рд╛рд░реВрдкрд▓рд╛рдЗрди рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдПрдХ рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рджреЛ рд▓реЗрдмрд▓ - рдПрдХ рдкрд╛рда рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдХреЙрдкреАрд░рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП - рдФрд░ рд╣рдо рдПрдХ рд╕реБрдВрджрд░ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЦрд┐рдВрдЪрд╛рд╡ рдлреЗрдВрдХрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рд╡рд┐рдиреНрдпрд╛рд╕

рдЪрд▓реЛ рдПрдХ рдХреБрдХреА рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд░рд╣рдиреЗ рджреЗрдВ:

рдЕрдм рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреЗрдВрдЪред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрдврд╝рдирд╛:
 void oblikuestrategies::configChanged() { KConfigGroup cg = config(); edition = cg.readEntry("edition", 1); fontFamily = cg.readEntry("font_family", "Terminus"); ... } 

рдореИрдВ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЪрд░ рдХреИрд╕реЗ рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рд░реАрдбрдПрдВрдЯреНрд░реА рд╡рд┐рдзрд┐ рдореЗрдВ рджреЛ рддрд░реНрдХ рд╣реИрдВ - рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓рд╛ рдЪрд░ рдирд╛рдо (рд╣рдореНрд╕рдЯрд░ рдкреНрд▓рд╛рдЬреНрдорд╛-рдбреЗрд╕реНрдХрдЯреЙрдк-рдПрдкреНрд▓реЗрдЯреНрд╕ рдХреЗ рдкреАрдЫреЗ ), рджреВрд╕рд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИред KConfigGroup рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд░реНрдЬ рдХреА рдЧрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЙрдкрд░реЛрдХреНрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреА рдЬрд╛рдПрдВрдЧреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЕрдЧрд░ рд╡рд┐рдЬреЗрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛:
 void oblikuestrategies::configAccepted() { KConfigGroup cg = config(); cg.writeEntry("edition", uiConfig.comboBox_edition->currentIndex()+1); cg.writeEntry("font_family", uiConfig.fontComboBox_font->currentFont().family()); ... } 

рдкрдврд╝рдиреЗ рдХреЗ рд╕рдорд╛рдиред рд░рд╛рдЗрдЯрдПрдиреНрдЯреНрд░реА рд╡рд┐рдзрд┐ рдореЗрдВ 2 рддрд░реНрдХ рднреА рд╣реИрдВ - рдирд╛рдо рдФрд░ рдХрд╣рд╛рдБ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рд╕реНрдХреНрд░реВ рдХрд░реЗрдВ:
 void oblikuestrategies::createConfigurationInterface(KConfigDialog *parent) { QWidget *configwin = new QWidget; uiConfig.setupUi(configwin); uiConfig.comboBox_edition->setCurrentIndex(edition-1); ... parent->addPage(configwin, i18n("Oblikue Strategies"), Applet::icon()); connect(parent, SIGNAL(okClicked()), this, SLOT(configAccepted())); } 

рдПрдХ рдЕрдВрддрд░рдлрд▓рдХ рдХреА рдШреЛрд╖рдгрд╛ рдХреА, рд╕реЗрдЯ рдорд╛рди (рдЪрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА init () рдореЗрдВ configChanged () рд╡рд┐рдзрд┐) рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкрдврд╝рд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рд╣рдордиреЗ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреЛрдбрд╝рд╛ ( рдРрдбрдкреЗрдЬ рд╡рд┐рдзрд┐ рдкрд╣рд▓рд╛ рддрд░реНрдХ рд╣реИ, рджреВрд╕рд░рд╛ рдирд╛рдо рдФрд░ рддреАрд╕рд░рд╛ рдЖрдЗрдХрди)ред рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реЗрд╡ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдмрдЯрди рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдШрдЯрдирд╛рдУрдВ рдХреЛ рддреЗрдЬ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ

рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдкрд╛рда рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╣рдо рдЗрд╕реЗ int updateEvent () рдХрд╣рддреЗ рд╣реИрдВ (рдХреЙрд▓ рдХрд┐рдП рдЧрдП рд╕рдВрджреЗрд╢ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ)ред рдкреЗрдВрдЪ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг:
 void oblikuestrategies::mousePressEvent(QGraphicsSceneMouseEvent *event) { // mouse click event if (event->buttons() == Qt::LeftButton) updateEvent(); } 

рдпрджрд┐ рдбрдмрд▓-рдХреНрд▓рд┐рдХрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдорд╛рдЙрд╕рдбрдмрд▓ рдХреНрд▓реАрдХрдЗрд╡реЗрдВрдЯ рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдмрдЯрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдм рдСрдЯреЛ-рдЕрдкрдбреЗрдЯ рдЬреЛрдбрд╝реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, init () рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдорд░ рдШреЛрд╖рдгрд╛ рдЬреЛрдбрд╝реЗрдВ:
 ... // timer timer = new QTimer(this); timer->setSingleShot(false); ... 

рдЗрд╕реЗ "рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп" рдЙрдкрдпреЛрдЧ ( setSingleShot (false) ) рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, configChanged () рдкрджреНрдзрддрд┐ рдореЗрдВ рдЯрд╛рдЗрдорд░ рдХреЛ рдмрдВрдж рдФрд░ рдЪрд╛рд▓реВ рдХрд░реЗрдВ:
  if (autoUpdate_bool == true) { disconnect(timer, SIGNAL(timeout()), this, SLOT(autoUpdateEvent())); timer->stop(); } //   ... if (autoUpdate_bool == true) { connect(timer, SIGNAL(timeout()), this, SLOT(autoUpdateEvent())); timer->start(autoUpdate_int * MSEC_IN_MIN); } 

рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ: рдкреНрд░рд╛рд░рдВрдн () рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдордПрд╕ рдореЗрдВ рдЕрд╡рдзрд┐ рдХрд╛ рддрд░реНрдХ рд╣реИред рдСрдЯреЛ-рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ:
 int oblikuestrategies::autoUpdateEvent() { // auto update text int num = updateEvent(); if (notify_bool == true) if (sendNotification(QString("newMessage"), num) != 0) return 1; return 0; } 

рдпрд╣рд╛рдВ рд╣рдореЗрдВ updateEvent () рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╣ рд╡рд┐рдзрд┐ рдкрд╛рда рдЕрджреНрдпрддрди рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдлрд┐рд░ рдЕрдЧрд░ inform_bool == рд╕рдЪ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ KDE рдХреЛ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрддрд╛ рд╣реИред
рдиреЛрдЯрд┐рд╕

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ flex_applet_oblikue-strategy.notifyrc рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ
 [Global] IconName=oblikue-strategies Name=Oblikue Strategies Comment=Oblikue Strategies [Event/newMessage] Name=New message Comment=There is auto updated message in widget Action=Popup 

рдкрд╣рд▓реА рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЧреЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдФрд░ рд╡реЗ рдХреНрдпрд╛ рд╣реИрдВред рдЕрдм рд╡рд╛рдкрд╕ рд╕реНрд░реЛрдд рдкрд░ред рдПрдХ рдПрдХрд▓ рд╡рд┐рдзрд┐:
 int oblikuestrategies::sendNotification(QString eventId, int num) { // send notification KNotification *notification = new KNotification(eventId); notification->setComponentData(KComponentData("plasma_applet_oblikue-strategies")); notification->setTitle(QString(i18n("Oblikue Strategies"))); notification->setText(mess[edition-1][num]); notification->sendEvent(); delete notification; return 0; } 

EventId рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реА рдШрдЯрдирд╛ рд╣реИред SetComponentData рд╡рд┐рдзрд┐ рдореЗрдВ , рдПрдкреНрд▓реЗрдЯ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ (рддрд╛рдХрд┐ рднреНрд░рдорд┐рдд рди рд╣реЛрдВ рдФрд░ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП)ред рд╣рдо рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░, рдкрд╛рда рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВред
рд╕рднрд╛

ls -1 рд╕реНрд░реЛрдд
 CMakeLists.txt configwindow.ui oblikue-strategies.cpp oblikue-strategies.h oblikue-strategies.png plasma-applet-oblikue-strategies.desktop plasma_applet_oblikue-strategies.notifyrc 

CMakeLists.txt
 project (plasma_applet_oblikue-strategies) find_package (KDE4 REQUIRED) include (KDE4Defaults) add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES}) set (PLUGIN_NAME ${PROJECT_NAME}) file (GLOB PROJECT_DESKTOP *.desktop) file (GLOB PROJECT_ICON *.png) file (GLOB PROJECT_NOTIFY *.notifyrc) file (GLOB PROJECT_SOURCE *.cpp) file (GLOB PROJECT_UI *.ui) kde4_add_ui_files (PROJECT_SOURCE ${PROJECT_UI}) kde4_add_plugin (${PLUGIN_NAME} ${PROJECT_SOURCE}) target_link_libraries (${PLUGIN_NAME} ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS}) # install install (TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_INSTALL_DIR}) install (FILES ${PROJECT_DESKTOP} DESTINATION ${SERVICES_INSTALL_DIR}) install (FILES ${PROJECT_ICON} DESTINATION ${ICON_INSTALL_DIR}) install (FILES ${PROJECT_NOTIFY} DESTINATION ${DATA_INSTALL_DIR}/${PLUGIN_NAME}) 

рдлрд╝рд╛рдЗрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдирд╡ рдХрд╛рд░рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ), рд▓реЗрдХрд┐рди рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ (рдХреЗрд╡рд▓ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╛рдо рдХреЛ рдмрджрд▓реЗрдВ)ред рдирд┐рдпрдорд┐рдд рдЕрд╕реЗрдВрдмрд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЕрдВрддрд░ рдХреЗ, kde4_add_ui_files рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ред

рдЙрдкрд╕рдВрд╣рд╛рд░


рдЗрд╕ рдЕрдкрдорд╛рди рдХреЗ рд╕реВрддреНрд░ ред
рдХреНрдпрд╛ рд╣реБрдЖ:

рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдиреБрд╕рд╛рд░

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!


Source: https://habr.com/ru/post/In192698/


All Articles