mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Merge pull request #1875 from VictoriousRaptor/SelectBrowserCore
Close https://github.com/Flow-Launcher/Flow.Launcher/issues/1856
This commit is contained in:
commit
1c95033d6c
8 changed files with 105 additions and 26 deletions
|
|
@ -44,11 +44,16 @@ namespace Flow.Launcher.Plugin.BrowserBookmark.Commands
|
|||
|
||||
foreach (var browser in setting.CustomChromiumBrowsers)
|
||||
{
|
||||
var loader = new CustomChromiumBookmarkLoader(browser);
|
||||
IBookmarkLoader loader = browser.BrowserType switch
|
||||
{
|
||||
BrowserType.Chromium => new CustomChromiumBookmarkLoader(browser),
|
||||
BrowserType.Firefox => new CustomFirefoxBookmarkLoader(browser),
|
||||
_ => new CustomChromiumBookmarkLoader(browser),
|
||||
};
|
||||
allBookmarks.AddRange(loader.GetBookmarks());
|
||||
}
|
||||
|
||||
return allBookmarks.Distinct().ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Flow.Launcher.Plugin.BrowserBookmark.Models;
|
||||
|
||||
namespace Flow.Launcher.Plugin.BrowserBookmark
|
||||
{
|
||||
public class CustomFirefoxBookmarkLoader : FirefoxBookmarkLoaderBase
|
||||
{
|
||||
public CustomFirefoxBookmarkLoader(CustomBrowser browser)
|
||||
{
|
||||
BrowserName = browser.Name;
|
||||
BrowserDataPath = browser.DataDirectoryPath;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Path to places.sqlite
|
||||
/// </summary>
|
||||
public string BrowserDataPath { get; init; }
|
||||
|
||||
public string BrowserName { get; init; }
|
||||
|
||||
public override List<Bookmark> GetBookmarks()
|
||||
{
|
||||
return GetBookmarksFromPath(Path.Combine(BrowserDataPath, "places.sqlite"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -7,8 +7,10 @@ using System.Linq;
|
|||
|
||||
namespace Flow.Launcher.Plugin.BrowserBookmark
|
||||
{
|
||||
public class FirefoxBookmarkLoader : IBookmarkLoader
|
||||
public abstract class FirefoxBookmarkLoaderBase : IBookmarkLoader
|
||||
{
|
||||
public abstract List<Bookmark> GetBookmarks();
|
||||
|
||||
private const string queryAllBookmarks = @"SELECT moz_places.url, moz_bookmarks.title
|
||||
FROM moz_places
|
||||
INNER JOIN moz_bookmarks ON (
|
||||
|
|
@ -19,21 +21,18 @@ namespace Flow.Launcher.Plugin.BrowserBookmark
|
|||
|
||||
private const string dbPathFormat = "Data Source ={0};Version=3;New=False;Compress=True;";
|
||||
|
||||
/// <summary>
|
||||
/// Searches the places.sqlite db and returns all bookmarks
|
||||
/// </summary>
|
||||
public List<Bookmark> GetBookmarks()
|
||||
protected static List<Bookmark> GetBookmarksFromPath(string placesPath)
|
||||
{
|
||||
// Return empty list if the places.sqlite file cannot be found
|
||||
if (string.IsNullOrEmpty(PlacesPath) || !File.Exists(PlacesPath))
|
||||
if (string.IsNullOrEmpty(placesPath) || !File.Exists(placesPath))
|
||||
return new List<Bookmark>();
|
||||
|
||||
var bookmarkList = new List<Bookmark>();
|
||||
|
||||
Main.RegisterBookmarkFile(PlacesPath);
|
||||
|
||||
Main.RegisterBookmarkFile(placesPath);
|
||||
|
||||
// create the connection string and init the connection
|
||||
string dbPath = string.Format(dbPathFormat, PlacesPath);
|
||||
string dbPath = string.Format(dbPathFormat, placesPath);
|
||||
using var dbConnection = new SQLiteConnection(dbPath);
|
||||
// Open connection to the database file and execute the query
|
||||
dbConnection.Open();
|
||||
|
|
@ -41,13 +40,25 @@ namespace Flow.Launcher.Plugin.BrowserBookmark
|
|||
|
||||
// return results in List<Bookmark> format
|
||||
bookmarkList = reader.Select(
|
||||
x => new Bookmark(x["title"] is DBNull ? string.Empty : x["title"].ToString(),
|
||||
x => new Bookmark(x["title"] is DBNull ? string.Empty : x["title"].ToString(),
|
||||
x["url"].ToString())
|
||||
).ToList();
|
||||
|
||||
return bookmarkList;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class FirefoxBookmarkLoader : FirefoxBookmarkLoaderBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Searches the places.sqlite db and returns all bookmarks
|
||||
/// </summary>
|
||||
public override List<Bookmark> GetBookmarks()
|
||||
{
|
||||
return GetBookmarksFromPath(PlacesPath);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Path to places.sqlite
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -22,4 +22,5 @@
|
|||
<system:String x:Key="flowlauncher_plugin_browserbookmark_addBrowserBookmark">Add</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_removeBrowserBookmark">Delete</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_others">Others</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_browserEngine">Browser Engine</system:String>
|
||||
</ResourceDictionary>
|
||||
|
|
@ -4,6 +4,8 @@
|
|||
{
|
||||
private string _name;
|
||||
private string _dataDirectoryPath;
|
||||
private BrowserType browserType = BrowserType.Chromium;
|
||||
|
||||
public string Name
|
||||
{
|
||||
get => _name;
|
||||
|
|
@ -13,6 +15,7 @@
|
|||
OnPropertyChanged(nameof(Name));
|
||||
}
|
||||
}
|
||||
|
||||
public string DataDirectoryPath
|
||||
{
|
||||
get => _dataDirectoryPath;
|
||||
|
|
@ -22,5 +25,21 @@
|
|||
OnPropertyChanged(nameof(DataDirectoryPath));
|
||||
}
|
||||
}
|
||||
|
||||
public BrowserType BrowserType
|
||||
{
|
||||
get => browserType;
|
||||
set
|
||||
{
|
||||
browserType = value;
|
||||
OnPropertyChanged(nameof(BrowserType));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum BrowserType
|
||||
{
|
||||
Chromium,
|
||||
Firefox,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:Flow.Launcher.Plugin.BrowserBookmark.Models"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:ui="clr-namespace:Flow.Launcher.Infrastructure.UI;assembly=Flow.Launcher.Infrastructure"
|
||||
Title="{DynamicResource flowlauncher_plugin_browserbookmark_bookmarkDataSetting}"
|
||||
Width="520"
|
||||
Background="{DynamicResource PopuBGColor}"
|
||||
|
|
@ -79,6 +80,7 @@
|
|||
<Grid.RowDefinitions>
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock
|
||||
Grid.Row="0"
|
||||
|
|
@ -104,9 +106,28 @@
|
|||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="14"
|
||||
Text="{DynamicResource flowlauncher_plugin_browserbookmark_browserEngine}" />
|
||||
<ComboBox
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Width="120"
|
||||
Height="34"
|
||||
Margin="5,10,10,0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
ItemsSource="{Binding Source={ui:EnumBindingSource {x:Type local:BrowserType}}}"
|
||||
SelectedItem="{Binding BrowserType}">
|
||||
</ComboBox>
|
||||
<TextBlock
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Margin="5,10,20,0"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
FontSize="14"
|
||||
Text="{DynamicResource flowlauncher_plugin_browserbookmark_browserBookmarkDataDirectory}" />
|
||||
<TextBox
|
||||
Grid.Row="1"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Height="34"
|
||||
Margin="5,10,0,0"
|
||||
|
|
|
|||
|
|
@ -1,17 +1,7 @@
|
|||
using Flow.Launcher.Plugin.BrowserBookmark.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace Flow.Launcher.Plugin.BrowserBookmark.Views
|
||||
{
|
||||
|
|
@ -27,7 +17,9 @@ namespace Flow.Launcher.Plugin.BrowserBookmark.Views
|
|||
currentCustomBrowser = browser;
|
||||
DataContext = new CustomBrowser
|
||||
{
|
||||
Name = browser.Name, DataDirectoryPath = browser.DataDirectoryPath
|
||||
Name = browser.Name,
|
||||
DataDirectoryPath = browser.DataDirectoryPath,
|
||||
BrowserType = browser.BrowserType,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -39,6 +31,7 @@ namespace Flow.Launcher.Plugin.BrowserBookmark.Views
|
|||
{
|
||||
currentCustomBrowser.Name = editBrowser.Name;
|
||||
currentCustomBrowser.DataDirectoryPath = editBrowser.DataDirectoryPath;
|
||||
currentCustomBrowser.BrowserType = editBrowser.BrowserType;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
|
|
@ -54,4 +47,4 @@ namespace Flow.Launcher.Plugin.BrowserBookmark.Views
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@
|
|||
Header="{DynamicResource flowlauncher_plugin_browserbookmark_browserName}"/>
|
||||
<GridViewColumn DisplayMemberBinding="{Binding DataDirectoryPath, Mode=OneWay}"
|
||||
Header="{DynamicResource flowlauncher_plugin_browserbookmark_browserBookmarkDataDirectory}"/>
|
||||
<GridViewColumn DisplayMemberBinding="{Binding BrowserType, Mode=OneWay}"
|
||||
Header="{DynamicResource flowlauncher_plugin_browserbookmark_browserEngine}"/>
|
||||
</GridView>
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
|
|
|
|||
Loading…
Reference in a new issue