save / restore preferences.

On Tue, Dec 23, 2014 at 9:03 PM, Tomaz Canabrava <[email protected]> wrote:

> now with patches. u_U
>
>
> On Tue, Dec 23, 2014 at 9:02 PM, Tomaz Canabrava <[email protected]>
> wrote:
>
>> People,
>>
>> Facebook integration is still *extremely* experimental.
>> that means that there's only one person that can login with subsurface
>> yet: me.
>>
>> This is a pre-alpha code, nothing breaks, so it's safe to merge.
>> It doesn't do anything yet besides logging in, saving user info and
>> logging out, but since dirk really want some patches, there you go. :)
>>
>> next: publish dives.
>>
>> Tomaz
>>
>
>
From e5dca59b1ce4d226b90e4a47dc347eb7b9ab1ee7 Mon Sep 17 00:00:00 2001
From: Tomaz Canabrava <[email protected]>
Date: Tue, 23 Dec 2014 21:45:06 -0200
Subject: [PATCH 7/7] Save and restore Facebook Prefs.

Signed-off-by: Tomaz Canabrava <[email protected]>
---
 pref.h                |  7 +++++++
 qt-ui/preferences.cpp | 34 +++++++++++++++++++++++++++-------
 qt-ui/preferences.ui  | 41 +++++++++++++++++++++++++++++++++++++----
 subsurfacestartup.c   |  7 ++++++-
 4 files changed, 77 insertions(+), 12 deletions(-)

diff --git a/pref.h b/pref.h
index 733a194..16336f2 100644
--- a/pref.h
+++ b/pref.h
@@ -18,6 +18,12 @@ typedef struct
 	double phe_threshold;
 } partial_pressure_graphs_t;
 
+typedef struct {
+	char *user_id;
+	char *access_token;
+	char *album_name;
+} facebook_prefs_t;
+
 struct preferences {
 	const char *divelist_font;
 	const char *default_filename;
@@ -71,6 +77,7 @@ struct preferences {
 	int pscr_ratio; // dump ratio times 1000
 	bool show_pictures_in_profile;
 	bool use_default_file;
+	facebook_prefs_t facebook;
 };
 enum unit_system_values {
 	METRIC,
diff --git a/qt-ui/preferences.cpp b/qt-ui/preferences.cpp
index 76b35c1..51a1d35 100644
--- a/qt-ui/preferences.cpp
+++ b/qt-ui/preferences.cpp
@@ -45,10 +45,10 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, Qt::WindowFlags f) : QDial
 	settings.beginGroup("Facebook");
 	if(settings.allKeys().contains("ConnectToken")){
 		ui.facebookWebView->setHtml("You are connected on Facebook, yey.");
-		ui.btnDisconnectFacebook->show();
+		ui.fbConnected->show();
 	} else {
 		ui.facebookWebView->setUrl(QUrl(facebookConnectUrl));
-		ui.btnDisconnectFacebook->hide();
+		ui.fbConnected->hide();
 	}
 
 	connect(ui.facebookWebView, &QWebView::urlChanged, this, &PreferencesDialog::facebookLoginResponse);
@@ -83,9 +83,11 @@ void PreferencesDialog::facebookLoginResponse(const QUrl &url)
 		QNetworkAccessManager *getUserID = new QNetworkAccessManager();
 		connect(getUserID, &QNetworkAccessManager::finished, this, &PreferencesDialog::facebookGetUserId);
 		getUserID->get(QNetworkRequest(QUrl("https://graph.facebook.com/me?fields=id&access_token="; + securityToken)));
-
 		ui.facebookWebView->setHtml("We need a better 'you re connected' page. but, YEY. ");
-		ui.btnDisconnectFacebook->show();
+		ui.fbConnected->show();
+
+		// only enable when we get the reply for the user_id.
+		setDisabled(true);
 	}
 }
 
@@ -99,6 +101,7 @@ void PreferencesDialog::facebookGetUserId(QNetworkReply *reply)
 		s.beginGroup("Facebook");
 		s.setValue("UserId", obj.value("id").toVariant());
 	}
+	setEnabled(true);
 }
 
 void PreferencesDialog::facebookDisconnect()
@@ -109,7 +112,7 @@ void PreferencesDialog::facebookDisconnect()
 		settings.remove("ConnectToken");
 		ui.facebookWebView->page()->networkAccessManager()->setCookieJar(new QNetworkCookieJar());
 		ui.facebookWebView->setUrl(QUrl(facebookConnectUrl));
-		ui.btnDisconnectFacebook->hide();
+		ui.fbConnected->hide();
 }
 
 
@@ -212,10 +215,11 @@ void PreferencesDialog::setUiFromPrefs()
 	s.beginGroup("WebApps");
 	s.beginGroup("Facebook");
 	if(s.allKeys().contains("ConnectToken")){
-		ui.btnDisconnectFacebook->show();
+		ui.fbConnected->show();
 	} else {
-		ui.btnDisconnectFacebook->hide();
+		ui.fbConnected->hide();
 	}
+	ui.facebookAlbum->setText(s.value("Album", "subsurface").toString());
 }
 
 void PreferencesDialog::restorePrefs()
@@ -361,6 +365,13 @@ void PreferencesDialog::syncSettings()
 	s.setValue("proxy_pass", ui.proxyPassword->text());
 	s.endGroup();
 
+	// Facebook
+	s.beginGroup("WebApps");
+	s.beginGroup("Facebook");
+	s.setValue("Album", ui.facebookAlbum->text());
+	s.endGroup();
+	s.endGroup();
+
 	loadSettings();
 	emit settingsChanged();
 }
@@ -465,6 +476,15 @@ void PreferencesDialog::loadSettings()
 	GET_TXT("proxy_user", proxy_user);
 	GET_TXT("proxy_pass", proxy_pass);
 	s.endGroup();
+
+	s.beginGroup("WebApps");
+	s.beginGroup("Facebook");
+	GET_TXT("UserId", facebook.user_id);
+	GET_TXT("ConnectToken", facebook.access_token);
+	GET_TXT("AlbumName", facebook.album_name);
+	s.endGroup();
+	s.endGroup();
+	qDebug() << prefs.facebook.user_id << prefs.facebook.access_token << prefs.facebook.album_name;
 }
 
 void PreferencesDialog::buttonClicked(QAbstractButton *button)
diff --git a/qt-ui/preferences.ui b/qt-ui/preferences.ui
index b9f8bdb..a89dde8 100644
--- a/qt-ui/preferences.ui
+++ b/qt-ui/preferences.ui
@@ -983,10 +983,43 @@
           </widget>
          </item>
          <item>
-          <widget class="QPushButton" name="btnDisconnectFacebook">
-           <property name="text">
-            <string>Disconnect from facebook</string>
-           </property>
+          <widget class="QWidget" name="fbConnected" native="true">
+           <layout class="QVBoxLayout" name="verticalLayout_9">
+            <item>
+             <layout class="QHBoxLayout" name="connectedLayout">
+              <item>
+               <widget class="QLabel" name="label_26">
+                <property name="text">
+                 <string>Facebook Album for Subsurface Uploads</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLineEdit" name="facebookAlbum"/>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_2">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QPushButton" name="btnDisconnectFacebook">
+                <property name="text">
+                 <string>Disconnect from facebook</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+           </layout>
           </widget>
          </item>
         </layout>
diff --git a/subsurfacestartup.c b/subsurfacestartup.c
index 618e942..f63f4e7 100644
--- a/subsurfacestartup.c
+++ b/subsurfacestartup.c
@@ -48,7 +48,12 @@ struct preferences default_prefs = {
 	.o2consumption = 1000,
 	.pscr_ratio = 100,
 	.show_pictures_in_profile = true,
-	.tankbar = false
+	.tankbar = false,
+	.facebook = {
+		.user_id = "",
+		.album_name = "subsurface",
+		.access_token = ""
+	}
 };
 
 int run_survey;
-- 
2.2.1

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to