This commit is contained in:
Sebastian Kügler 2013-07-25 14:45:49 +02:00
commit d3b9cf5f35
11 changed files with 55 additions and 47 deletions

View File

@ -58,7 +58,8 @@ find_package(kdeqt5staging REQUIRED NO_MODULE)
find_package(KF5 MODULE REQUIRED COMPONENTS CMake Compiler InstallDirs find_package(KF5 MODULE REQUIRED COMPONENTS CMake Compiler InstallDirs
KIdleTime ItemModels KWidgetsAddons KWindowSystem KCodecs KArchive KCoreAddons Solid ThreadWeaver KIdleTime ItemModels KWidgetsAddons KWindowSystem KCodecs KArchive KCoreAddons Solid ThreadWeaver
KConfig KAuth KJS KWallet KDBusAddons KConfig KAuth KJS KWallet KDBusAddons
KI18n KGuiAddons KService KWidgets ItemViews KNotifications KIconThemes KCompletion KJobWidgets KConfigWidgets Sonnet KTextWidgets XmlGui KCrash) KI18n KGuiAddons KService KWidgets ItemViews KNotifications KIconThemes KCompletion KJobWidgets KConfigWidgets Sonnet KTextWidgets XmlGui KCrash
KIO KUnitConversion KDE4Attic)
#find_package(KF5Transitional REQUIRED) #find_package(KF5Transitional REQUIRED)
# those are not "done" yet: # those are not "done" yet:

View File

@ -20,6 +20,7 @@ target_link_libraries(localebindingsplugin
${Qt5Quick_LIBRARIES} ${Qt5Quick_LIBRARIES}
${Qt5Qml_LIBRARIES} ${Qt5Qml_LIBRARIES}
${KDE4_KDECORE_LIBS} ${KDE4_KDECORE_LIBS}
KF5::KDE4Attic
) )
install(TARGETS localebindingsplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/locale) install(TARGETS localebindingsplugin DESTINATION ${QML_INSTALL_DIR}/org/kde/locale)
install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/locale) install(FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/locale)

View File

@ -147,8 +147,9 @@ target_link_libraries(plasma
${KAuth_LIBRARIES} ${KAuth_LIBRARIES}
${KWindowSystem_LIBRARIES} ${KWindowSystem_LIBRARIES}
${PLASMA_EXTRA_LIBS} ${PLASMA_EXTRA_LIBS}
KI18n KF5::KI18n
${KDE4Support_LIBRARIES} ${KDE4Support_LIBRARIES}
KF5::KDE4Attic
) )
#FIXME gpgme++ is in kdepimlibs, neeeds to be elsewhere #FIXME gpgme++ is in kdepimlibs, neeeds to be elsewhere
target_link_libraries(plasma kdeclarative ${KArchive_LIBRARIES}) target_link_libraries(plasma kdeclarative ${KArchive_LIBRARIES})

View File

@ -5,6 +5,7 @@ Name=Plasma Package
Name[cs]=Balíček Plasmy Name[cs]=Balíček Plasmy
Name[de]=Plasma-Paket Name[de]=Plasma-Paket
Name[fi]=Plasma-paketti Name[fi]=Plasma-paketti
Name[fr]=Paquet Plasma
Name[nl]=Plasma-pakket Name[nl]=Plasma-pakket
Name[pt]=Pacote do Plasma Name[pt]=Pacote do Plasma
Name[pt_BR]=Pacote do Plasma Name[pt_BR]=Pacote do Plasma
@ -14,6 +15,7 @@ Name[uk]=Пакунок Плазми
Name[x-test]=xxPlasma Packagexx Name[x-test]=xxPlasma Packagexx
Comment=Generic Plasma Package Comment=Generic Plasma Package
Comment[de]=Allgemeines Plasma-Paket Comment[de]=Allgemeines Plasma-Paket
Comment[fr]=Paquet Plasma générique
Comment[nl]=Algemeen plasma-pakket Comment[nl]=Algemeen plasma-pakket
Comment[pt]=Pacote Genérico do Plasma Comment[pt]=Pacote Genérico do Plasma
Comment[pt_BR]=Pacote genérico do Plasma Comment[pt_BR]=Pacote genérico do Plasma

View File

@ -170,7 +170,7 @@ Plasma::AbstractRunner* FindMatchesJob::runner() const
return m_runner; return m_runner;
} }
DelayedJobCleaner::DelayedJobCleaner(const QSet<FindMatchesJob *> &jobs, const QSet<AbstractRunner *> &runners) DelayedJobCleaner::DelayedJobCleaner(const QSet<QSharedPointer<FindMatchesJob> > &jobs, const QSet<AbstractRunner *> &runners)
: QObject(Weaver::instance()), : QObject(Weaver::instance()),
m_weaver(Weaver::instance()), m_weaver(Weaver::instance()),
m_jobs(jobs), m_jobs(jobs),
@ -178,8 +178,8 @@ DelayedJobCleaner::DelayedJobCleaner(const QSet<FindMatchesJob *> &jobs, const Q
{ {
connect(m_weaver, SIGNAL(finished()), this, SLOT(checkIfFinished())); connect(m_weaver, SIGNAL(finished()), this, SLOT(checkIfFinished()));
foreach (FindMatchesJob *job, m_jobs) { for (auto it = m_jobs.constBegin(); it != m_jobs.constEnd(); ++it) {
connect(job, SIGNAL(done(ThreadWeaver::Job*)), this, SLOT(jobDone(ThreadWeaver::Job*))); connect((*it).data(), &Job::done, this, &DelayedJobCleaner::jobDone);
} }
} }
@ -188,9 +188,9 @@ DelayedJobCleaner::~DelayedJobCleaner()
qDeleteAll(m_runners); qDeleteAll(m_runners);
} }
void DelayedJobCleaner::jobDone(ThreadWeaver::Job *job) void DelayedJobCleaner::jobDone(ThreadWeaver::JobPointer job)
{ {
FindMatchesJob *runJob = dynamic_cast<FindMatchesJob *>(job); auto runJob = job.dynamicCast<FindMatchesJob>();
if (!runJob) { if (!runJob) {
return; return;
@ -207,7 +207,6 @@ void DelayedJobCleaner::jobDone(ThreadWeaver::Job *job)
void DelayedJobCleaner::checkIfFinished() void DelayedJobCleaner::checkIfFinished()
{ {
if (m_weaver->isIdle()) { if (m_weaver->isIdle()) {
qDeleteAll(m_jobs);
m_jobs.clear(); m_jobs.clear();
deleteLater(); deleteLater();
} }

View File

@ -127,16 +127,16 @@ private:
class DelayedJobCleaner : public QObject class DelayedJobCleaner : public QObject
{ {
public: public:
DelayedJobCleaner(const QSet<FindMatchesJob*> &jobs, const QSet<AbstractRunner *> &runners = QSet<AbstractRunner *>()); DelayedJobCleaner(const QSet<QSharedPointer<FindMatchesJob> > &jobs, const QSet<AbstractRunner *> &runners = QSet<AbstractRunner *>());
~DelayedJobCleaner(); ~DelayedJobCleaner();
private Q_SLOTS: private Q_SLOTS:
void jobDone(ThreadWeaver::Job*); void jobDone(ThreadWeaver::JobPointer);
void checkIfFinished(); void checkIfFinished();
private: private:
ThreadWeaver::Weaver *m_weaver; ThreadWeaver::Weaver *m_weaver;
QSet<FindMatchesJob*> m_jobs; QSet<QSharedPointer<FindMatchesJob> > m_jobs;
QSet<AbstractRunner *> m_runners; QSet<AbstractRunner *> m_runners;
}; };

View File

@ -231,19 +231,27 @@ public:
} }
if (!deadRunners.isEmpty()) { if (!deadRunners.isEmpty()) {
QSet<FindMatchesJob *> deadJobs; QSet<QSharedPointer<FindMatchesJob> > deadJobs;
foreach (FindMatchesJob *job, searchJobs) { auto it = searchJobs.begin();
while (it != searchJobs.end()) {
auto &job = (*it);
if (deadRunners.contains(job->runner())) { if (deadRunners.contains(job->runner())) {
QObject::disconnect(job, SIGNAL(done(ThreadWeaver::Job*)), q, SLOT(jobDone(ThreadWeaver::Job*))); QObject::disconnect(job.data(), SIGNAL(done(ThreadWeaver::JobPointer)), q, SLOT(jobDone(ThreadWeaver::JobPointer)));
searchJobs.remove(job); it = searchJobs.erase(it);
deadJobs.insert(job); deadJobs.insert(job);
} else {
it++;
} }
} }
foreach (FindMatchesJob *job, oldSearchJobs) { it = oldSearchJobs.begin();
while (it != oldSearchJobs.end()) {
auto &job = (*it);
if (deadRunners.contains(job->runner())) { if (deadRunners.contains(job->runner())) {
oldSearchJobs.remove(job); it = oldSearchJobs.erase(it);
deadJobs.insert(job); deadJobs.insert(job);
} else {
it++;
} }
} }
@ -309,9 +317,9 @@ public:
return runner; return runner;
} }
void jobDone(ThreadWeaver::Job *job) void jobDone(ThreadWeaver::JobPointer job)
{ {
FindMatchesJob *runJob = dynamic_cast<FindMatchesJob *>(job); auto runJob = job.dynamicCast<FindMatchesJob>();
if (!runJob) { if (!runJob) {
return; return;
@ -347,9 +355,7 @@ public:
} }
if (Weaver::instance()->isIdle()) { if (Weaver::instance()->isIdle()) {
qDeleteAll(searchJobs);
searchJobs.clear(); searchJobs.clear();
qDeleteAll(oldSearchJobs);
oldSearchJobs.clear(); oldSearchJobs.clear();
} }
@ -381,7 +387,6 @@ public:
{ {
// WORKAROUND: Queue an empty job to force ThreadWeaver to awaken threads // WORKAROUND: Queue an empty job to force ThreadWeaver to awaken threads
if (searchJobs.isEmpty() && Weaver::instance()->isIdle()) { if (searchJobs.isEmpty() && Weaver::instance()->isIdle()) {
qDeleteAll(oldSearchJobs);
oldSearchJobs.clear(); oldSearchJobs.clear();
checkTearDown(); checkTearDown();
return; return;
@ -408,12 +413,12 @@ public:
void startJob(AbstractRunner *runner) void startJob(AbstractRunner *runner)
{ {
if ((runner->ignoredTypes() & context.type()) == 0) { if ((runner->ignoredTypes() & context.type()) == 0) {
FindMatchesJob *job = new FindMatchesJob(runner, &context, Weaver::instance()); QSharedPointer<FindMatchesJob> job(new FindMatchesJob(runner, &context, Weaver::instance()));
QObject::connect(job, SIGNAL(done(ThreadWeaver::Job*)), q, SLOT(jobDone(ThreadWeaver::Job*))); QObject::connect(job.data(), SIGNAL(done(ThreadWeaver::JobPointer)), q, SLOT(jobDone(ThreadWeaver::JobPointer)));
if (runner->speed() == AbstractRunner::SlowSpeed) { if (runner->speed() == AbstractRunner::SlowSpeed) {
job->setDelayTimer(&delayTimer); job->setDelayTimer(&delayTimer);
} }
Weaver::instance()->enqueueRaw(job); Weaver::instance()->enqueue(job);
searchJobs.insert(job); searchJobs.insert(job);
} }
} }
@ -429,8 +434,8 @@ public:
QHash<QString, AbstractRunner*> runners; QHash<QString, AbstractRunner*> runners;
QHash<QString, QString> advertiseSingleRunnerIds; QHash<QString, QString> advertiseSingleRunnerIds;
AbstractRunner* currentSingleRunner; AbstractRunner* currentSingleRunner;
QSet<FindMatchesJob*> searchJobs; QSet<QSharedPointer<FindMatchesJob> > searchJobs;
QSet<FindMatchesJob*> oldSearchJobs; QSet<QSharedPointer<FindMatchesJob> > oldSearchJobs;
KConfigGroup conf; KConfigGroup conf;
QString singleModeRunnerId; QString singleModeRunnerId;
bool loadAll : 1; bool loadAll : 1;
@ -615,8 +620,8 @@ void RunnerManager::run(const QueryMatch &match)
//TODO: this function is not const as it may be used for learning //TODO: this function is not const as it may be used for learning
AbstractRunner *runner = match.runner(); AbstractRunner *runner = match.runner();
foreach (FindMatchesJob *job, d->searchJobs) { for (auto it = d->searchJobs.constBegin(); it != d->searchJobs.constEnd(); ++it) {
if (job->runner() == runner && !job->isFinished()) { if ((*it)->runner() == runner && !(*it)->isFinished()) {
#ifndef NDEBUG #ifndef NDEBUG
kDebug() << "deferred run"; kDebug() << "deferred run";
#endif #endif
@ -775,13 +780,10 @@ void RunnerManager::reset()
{ {
// If ThreadWeaver is idle, it is safe to clear previous jobs // If ThreadWeaver is idle, it is safe to clear previous jobs
if (Weaver::instance()->isIdle()) { if (Weaver::instance()->isIdle()) {
qDeleteAll(d->searchJobs);
qDeleteAll(d->oldSearchJobs);
d->oldSearchJobs.clear(); d->oldSearchJobs.clear();
} else { } else {
Q_FOREACH(FindMatchesJob *job, d->searchJobs) { for (auto it = d->searchJobs.constBegin(); it != d->searchJobs.constEnd(); ++it) {
#warning Reenable the following line one dequeueRaw API has been merged into ThreadWeaver Weaver::instance()->dequeue((*it));
//Weaver::instance()->dequeueRaw(job);
} }
d->oldSearchJobs += d->searchJobs; d->oldSearchJobs += d->searchJobs;
} }

View File

@ -272,7 +272,7 @@ class PLASMA_EXPORT RunnerManager : public QObject
private: private:
Q_PRIVATE_SLOT(d, void scheduleMatchesChanged()) Q_PRIVATE_SLOT(d, void scheduleMatchesChanged())
Q_PRIVATE_SLOT(d, void matchesChanged()) Q_PRIVATE_SLOT(d, void matchesChanged())
Q_PRIVATE_SLOT(d, void jobDone(ThreadWeaver::Job*)) Q_PRIVATE_SLOT(d, void jobDone(ThreadWeaver::JobPointer))
Q_PRIVATE_SLOT(d, void unblockJobs()) Q_PRIVATE_SLOT(d, void unblockJobs())
Q_PRIVATE_SLOT(d, void runnerMatchingSuspended(bool)) Q_PRIVATE_SLOT(d, void runnerMatchingSuspended(bool))

View File

@ -6,6 +6,7 @@ X-KDE-DBus-ModuleName=plaformstatus
X-KDE-Kded-autoload=true X-KDE-Kded-autoload=true
X-KDE-Kded-load-on-demand=false X-KDE-Kded-load-on-demand=false
Name=Platform Status Name=Platform Status
Name[fr]=État de la plate-forme
Name[nl]=Status van platform Name[nl]=Status van platform
Name[pt]=Estado da Plataforma Name[pt]=Estado da Plataforma
Name[pt_BR]=Status da plataforma Name[pt_BR]=Status da plataforma
@ -14,6 +15,7 @@ Name[sv]=Plattformstatus
Name[uk]=Стан платформи Name[uk]=Стан платформи
Name[x-test]=xxPlatform Statusxx Name[x-test]=xxPlatform Statusxx
Comment=Tracks the current shell package and the platform definition strings. Comment=Tracks the current shell package and the platform definition strings.
Comment[fr]=Suit le paquet du terminal actuel et les chaînes de définition de la plate-forme.
Comment[nl]=Volgt het huidige shell-pakket en de definitietekenreeksen van platform. Comment[nl]=Volgt het huidige shell-pakket en de definitietekenreeksen van platform.
Comment[pt]=Segue o pacote da consola actual e a os textos de definição da plataforma. Comment[pt]=Segue o pacote da consola actual e a os textos de definição da plataforma.
Comment[pt_BR]=Segue o pacote do shell atual e as strings de definição da plataforma. Comment[pt_BR]=Segue o pacote do shell atual e as strings de definição da plataforma.

View File

@ -48,11 +48,11 @@ Item {
id: localeItem id: localeItem
anchors { left: parent.left; right: parent.right; top: tx.bottom; } anchors { left: parent.left; right: parent.right; top: tx.bottom; }
} }
// PlasmaComponents.TextArea { PlasmaComponents.TextArea {
// anchors { left: parent.left; right: parent.right; top: localeItem.bottom; } anchors { left: parent.left; right: parent.right; top: localeItem.bottom; }
// width: parent.width width: parent.width
// height: 80 height: 80
// } }
PlasmaComponents.Button { PlasmaComponents.Button {
id: thanks id: thanks
anchors { horizontalCenter: parent.horizontalCenter; bottom: parent.bottom; bottomMargin: 24; } anchors { horizontalCenter: parent.horizontalCenter; bottom: parent.bottom; bottomMargin: 24; }

View File

@ -180,7 +180,7 @@ PlasmaComponents.Page {
width: _h width: _h
text: "Top" text: "Top"
onClicked: { onClicked: {
locationDialog.location = PlasmaCore.Plasma.TopEdge; locationDialog.location = PlasmaCore.Types.TopEdge;
locationDialog.visible = !locationDialog.visible locationDialog.visible = !locationDialog.visible
} }
} }
@ -188,7 +188,7 @@ PlasmaComponents.Page {
text: "Bottom" text: "Bottom"
width: _h width: _h
onClicked: { onClicked: {
locationDialog.location = PlasmaCore.Plasma.BottomEdge; locationDialog.location = PlasmaCore.Types.BottomEdge;
locationDialog.visible = !locationDialog.visible locationDialog.visible = !locationDialog.visible
} }
} }
@ -196,7 +196,7 @@ PlasmaComponents.Page {
text: "Left" text: "Left"
width: _h width: _h
onClicked: { onClicked: {
locationDialog.location = PlasmaCore.Plasma.LeftEdge; locationDialog.location = PlasmaCore.Types.LeftEdge;
locationDialog.visible = !locationDialog.visible locationDialog.visible = !locationDialog.visible
} }
} }
@ -204,7 +204,7 @@ PlasmaComponents.Page {
text: "Right" text: "Right"
width: _h width: _h
onClicked: { onClicked: {
locationDialog.location = PlasmaCore.Plasma.RightEdge; locationDialog.location = PlasmaCore.Types.RightEdge;
locationDialog.visible = !locationDialog.visible locationDialog.visible = !locationDialog.visible
} }
} }
@ -212,7 +212,7 @@ PlasmaComponents.Page {
text: "Desktop" text: "Desktop"
width: _h width: _h
onClicked: { onClicked: {
locationDialog.location = PlasmaCore.Plasma.Desktop; locationDialog.location = PlasmaCore.Types.Desktop;
locationDialog.visible = !locationDialog.visible locationDialog.visible = !locationDialog.visible
} }
} }
@ -220,7 +220,7 @@ PlasmaComponents.Page {
text: "Floating" text: "Floating"
width: _h width: _h
onClicked: { onClicked: {
locationDialog.location = PlasmaCore.Plasma.Floating; locationDialog.location = PlasmaCore.Types.Floating;
locationDialog.visible = !locationDialog.visible locationDialog.visible = !locationDialog.visible
} }
} }
@ -228,7 +228,7 @@ PlasmaComponents.Page {
text: "FullScreen" text: "FullScreen"
width: _h width: _h
onClicked: { onClicked: {
locationDialog.location = PlasmaCore.Plasma.FullScreen; locationDialog.location = PlasmaCore.Types.FullScreen;
locationDialog.visible = !locationDialog.visible locationDialog.visible = !locationDialog.visible
} }
} }