1 // -*- c++ -*-
2
3 /*
4 SPDX-FileCopyrightText: 2003 Richard J. Moore <rich@kde.org>
5
6 SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9 #include "autorefresh.h"
10 #include <kparts/part.h>
11
12 #include <kiconloader.h>
13 #include <kmessagebox.h>
14 #include <KLocalizedString>
15 #include <qtimer.h>
16 #include <kselectaction.h>
17 #include <kactioncollection.h>
18 #include <kpluginfactory.h>
19 #include <KParts/ReadOnlyPart>
20
AutoRefresh(QObject * parent,const QVariantList &)21 AutoRefresh::AutoRefresh(QObject *parent, const QVariantList & /*args*/)
22 : Plugin(parent)
23 {
24 timer = new QTimer(this);
25 connect(timer, &QTimer::timeout, this, &AutoRefresh::slotRefresh);
26
27 refresher = actionCollection()->add<KSelectAction>(QStringLiteral("autorefresh"));
28 refresher->setText(i18n("&Auto Refresh"));
29 refresher->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh")));
30 connect(refresher, SIGNAL(triggered(QAction*)), this, SLOT(slotIntervalChanged()));
31 QStringList sl;
32 sl << i18n("None");
33 sl << i18n("Every 15 Seconds");
34 sl << i18n("Every 30 Seconds");
35 sl << i18n("Every Minute");
36 sl << i18n("Every 5 Minutes");
37 sl << i18n("Every 10 Minutes");
38 sl << i18n("Every 15 Minutes");
39 sl << i18n("Every 30 Minutes");
40 sl << i18n("Every 60 Minutes");
41 sl << i18n("Every 2 Hours");
42 sl << i18n("Every 6 Hours");
43
44 refresher->setItems(sl);
45 refresher->setCurrentItem(0);
46 }
47
~AutoRefresh()48 AutoRefresh::~AutoRefresh()
49 {
50 }
51
slotIntervalChanged()52 void AutoRefresh::slotIntervalChanged()
53 {
54 int idx = refresher->currentItem();
55 int timeout = 0;
56 switch (idx) {
57 case 1:
58 timeout = (15 * 1000);
59 break;
60 case 2:
61 timeout = (30 * 1000);
62 break;
63 case 3:
64 timeout = (60 * 1000);
65 break;
66 case 4:
67 timeout = (5 * 60 * 1000);
68 break;
69 case 5:
70 timeout = (10 * 60 * 1000);
71 break;
72 case 6:
73 timeout = (15 * 60 * 1000);
74 break;
75 case 7:
76 timeout = (30 * 60 * 1000);
77 break;
78 case 8:
79 timeout = (60 * 60 * 1000);
80 break;
81 case 9:
82 timeout = (2 * 60 * 60 * 1000);
83 break;
84 case 10:
85 timeout = (6 * 60 * 60 * 1000);
86 break;
87 default:
88 break;
89 }
90 timer->stop();
91 if (timeout) {
92 timer->start(timeout);
93 }
94 }
95
slotRefresh()96 void AutoRefresh::slotRefresh()
97 {
98 KParts::ReadOnlyPart *part = qobject_cast< KParts::ReadOnlyPart * >(parent());
99 if (!part) {
100 QString title = i18nc("@title:window", "Cannot Refresh Source");
101 QString text = i18n("<qt>This plugin cannot auto-refresh the current part.</qt>");
102
103 KMessageBox::error(nullptr, text, title);
104 } else {
105 // Get URL
106 QUrl url = part->url();
107 part->openUrl(url);
108 }
109 }
110
111 K_PLUGIN_FACTORY(AutoRefreshFactory, registerPlugin< AutoRefresh >();)
112
113 #include "autorefresh.moc"
114
115