aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Keshav Bhatt <keshavnrj@gmail.com>2021-05-30 22:04:28 +0530
committerLibravatar Keshav Bhatt <keshavnrj@gmail.com>2021-05-30 22:04:28 +0530
commit84f120f133ba1b2ca7db2cf99010245ed1d94234 (patch)
treeb74e0585cf144532b5a7d78e132794d54af312aa
parent6045235c1d9a2dfd91d593a9d62b2f5fa09b8c8c (diff)
downloadwhatsie-84f120f133ba1b2ca7db2cf99010245ed1d94234.tar.gz
whatsie-84f120f133ba1b2ca7db2cf99010245ed1d94234.zip
allow passing app arguments
-rwxr-xr-xsnap_launcher/bin/whatsiebin1718656 -> 1723208 bytes
-rw-r--r--snap_launcher/whatsie.desktop9
-rw-r--r--src/main.cpp10
-rw-r--r--src/mainwindow.cpp34
-rw-r--r--src/mainwindow.h2
-rw-r--r--src/settingswidget.cpp3
6 files changed, 39 insertions, 19 deletions
diff --git a/snap_launcher/bin/whatsie b/snap_launcher/bin/whatsie
index e4ee637..259c5da 100755
--- a/snap_launcher/bin/whatsie
+++ b/snap_launcher/bin/whatsie
Binary files differ
diff --git a/snap_launcher/whatsie.desktop b/snap_launcher/whatsie.desktop
index 2eeac11..e5c9560 100644
--- a/snap_launcher/whatsie.desktop
+++ b/snap_launcher/whatsie.desktop
@@ -2,12 +2,13 @@
Version=1.0
GenericName=WhatSie
Name[en_US]=WhatSie
-Comment=Qt WhatsApp Client
+Comment=Qt WhatsApp Web Client
Name=WhatSie
Type=Application
Icon=${SNAP}/meta/gui/icon.png
Keywords=WhatSie;WhatsApp
-Exec=whatsie %F
-Categories=Network;Qt;
+Exec=whatsie %u
+Categories=Chat;Network;InstantMessaging;Qt;
+MimeType=x-scheme-handler/web.whatsapp.com;x-scheme-handler/http;x-scheme-handler/https;
Terminal=false
-StartupNotify=false
+X-GNOME-UsesNotifications=true
diff --git a/src/main.cpp b/src/main.cpp
index 0a93f8e..ebb0623 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -16,7 +16,6 @@ int main(int argc, char *argv[])
{
QApplication app(argc, argv);
app.setWindowIcon(QIcon(":/icons/app/icon-256.png"));
- //argv[argc++] = "--single-process";
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
static const char ENV_VAR_QT_DEVICE_PIXEL_RATIO[] = "QT_DEVICE_PIXEL_RATIO";
@@ -48,6 +47,15 @@ int main(int argc, char *argv[])
QWebEngineSettings::defaultSettings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, true);
MainWindow window;
+
+ QStringList argsList = app.arguments();
+ qWarning()<<"Launching with argument"<<argsList;
+ foreach (QString argStr, argsList) {
+ if(argStr.contains("http")){
+ qWarning()<<"Link passed as argument";
+ window.loadAppWithArgument(argsList.last());
+ }
+ }
window.show();
return app.exec();
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index d63b1d4..9219d6f 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -23,7 +23,7 @@ MainWindow::MainWindow(QWidget *parent)
setWindowTitle(QApplication::applicationName());
setWindowIcon(QIcon(":/icons/app/icon-256.png"));
- setMinimumWidth(800);
+ setMinimumWidth(500);
setMinimumHeight(600);
restoreGeometry(settings.value("geometry").toByteArray());
@@ -73,6 +73,12 @@ MainWindow::MainWindow(QWidget *parent)
});
}
+void MainWindow::loadAppWithArgument(const QString arg)
+{
+ qWarning()<<"Opening"<<arg;
+ this->webEngine->page()->load(QUrl(arg));
+}
+
void MainWindow::updatePageTheme()
{
QString webPageTheme = "web"; //implies light
@@ -315,11 +321,10 @@ void MainWindow::closeEvent(QCloseEvent *event)
{
settings.setValue("geometry", saveGeometry());
settings.setValue("windowState", saveState());
-
-// getPageTheme();
-// QTimer::singleShot(500,[=](){
-// qWarning()<<"THEME"<<settings.value("windowTheme").toString();
-// });
+ getPageTheme();
+ QTimer::singleShot(500,[=](){
+ settingsWidget->refresh();
+ });
if(QSystemTrayIcon::isSystemTrayAvailable() && settings.value("closeButtonActionCombo",0).toInt() == 0){
this->hide();
@@ -423,7 +428,7 @@ void MainWindow::createActions()
void MainWindow::quitApp()
{
getPageTheme();
- QTimer::singleShot(800,[=](){
+ QTimer::singleShot(500,[=](){
qWarning()<<"THEME"<<settings.value("windowTheme").toString();
qApp->quit();
});
@@ -439,6 +444,7 @@ void MainWindow::createTrayIcon()
trayIconMenu->addAction(reloadAction);
trayIconMenu->addAction(lockAction);
trayIconMenu->addSeparator();
+ trayIconMenu->addAction(openUrlAction);
trayIconMenu->addAction(settingsAction);
trayIconMenu->addAction(aboutAction);
trayIconMenu->addSeparator();
@@ -843,20 +849,20 @@ void MainWindow::newChat()
{
bool ok;
QString text = QInputDialog::getText(this, tr("New Chat"),
- tr("Enter a valid WhatsApp number you want to chat with."), QLineEdit::Normal,
+ tr("Enter a valid WhatsApp number with country code (ex- +91XXXXXXXXXX)"), QLineEdit::Normal,
"",&ok);
- if (ok && isPhoneNumber(text)){
- qWarning()<<"Opening new Chat with"<<text;
- this->webEngine->page()->load(QUrl("https://web.whatsapp.com/send?phone="+text));
- }else{
- QMessageBox::information(this,QApplication::applicationName()+"| Error",
+ if (ok){
+ if(isPhoneNumber(text))
+ this->webEngine->page()->load(QUrl("https://web.whatsapp.com/send?phone="+text));
+ else
+ QMessageBox::information(this,QApplication::applicationName()+"| Error",
"Invalid Phone Number");
}
}
bool MainWindow::isPhoneNumber(const QString phoneNumber)
{
- const QString phone = "^((\\+?(\\d{2}))\\s?)?((\\d{2})|(\\((\\d{2})\\))\\s?)?(\\d{3,15})(\\-(\\d{3,15}))?$";
+ const QString phone = "^\\+(((\\d{2}))\\s?)?((\\d{2})|(\\((\\d{2})\\))\\s?)?(\\d{3,15})(\\-(\\d{3,15}))?$";
QRegularExpression reg(phone);
return reg.match(phoneNumber).hasMatch();
}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index a78bea0..f5c51b2 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -50,6 +50,8 @@ public slots:
void handleWebViewTitleChanged(QString title);
void handleLoadFinished(bool loaded);
void handleDownloadRequested(QWebEngineDownloadItem *download);
+ void loadAppWithArgument(const QString arg);
+
protected slots:
void closeEvent(QCloseEvent *event) override;
diff --git a/src/settingswidget.cpp b/src/settingswidget.cpp
index 9d4904a..2750e4d 100644
--- a/src/settingswidget.cpp
+++ b/src/settingswidget.cpp
@@ -147,6 +147,8 @@ void SettingsWidget::loadDictionaries(QStringList dictionaries)
void SettingsWidget::refresh()
{
+ ui->themeComboBox->setCurrentText(utils::toCamelCase(settings.value("windowTheme","light").toString()));
+
ui->cacheSize->setText(utils::refreshCacheSize(cachePath()));
ui->cookieSize->setText(utils::refreshCacheSize(persistentStoragePath()));
@@ -165,6 +167,7 @@ void SettingsWidget::refresh()
//enable disable spell check
ui->enableSpellCheck->setChecked(settings.value("sc_enabled",true).toBool());
+
}
void SettingsWidget::updateDefaultUAButton(const QString engineUA)