Skip to content

Commit

Permalink
Merge pull request #928 from Avid29/resizable_taskbar
Browse files Browse the repository at this point in the history
Multi-row functionality
  • Loading branch information
dremin authored Nov 8, 2024
2 parents 58c9d99 + 0017ed2 commit 924fcef
Show file tree
Hide file tree
Showing 26 changed files with 779 additions and 77 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ RetroBar is based on the [ManagedShell](https://github.com/cairoshell/ManagedShe
- Dutch (Nederlands)
- English
- English (United Kingdom)
- Finnish (Suomi)
- French (français)
- German (Deutsch)
- Greek (ελληνικά)
Expand Down
15 changes: 12 additions & 3 deletions RetroBar/Controls/NotifyIconList.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<UserControl.Resources>
<ResourceDictionary>
<converters:EdgeOrientationConverter x:Key="edgeOrientationConverter" />
<converters:IconListOrientation x:Key="iconsOrientation" />
</ResourceDictionary>
</UserControl.Resources>
<StackPanel>
Expand All @@ -22,11 +23,19 @@
Style="{DynamicResource TrayToggleButton}"/>
<ItemsControl x:Name="NotifyIcons"
Focusable="False"
HorizontalAlignment="Center"
VerticalAlignment="Center">
Style="{DynamicResource NotifyIconItems}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"></WrapPanel>
<WrapPanel>
<WrapPanel.Orientation>
<MultiBinding Converter="{StaticResource iconsOrientation}">
<Binding Path="Orientation"
RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=Window}" />
<Binding Path="Rows"
RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=Window}" />
</MultiBinding>
</WrapPanel.Orientation>
</WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
Expand Down
9 changes: 8 additions & 1 deletion RetroBar/Controls/TaskList.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -159,15 +159,22 @@ private void TaskList_OnSizeChanged(object sender, SizeChangedEventArgs e)

private void SetTaskButtonWidth()
{
if (Host is null)
return; // The state is trashed, but presumably it's just a transition

if (Settings.Instance.Edge == AppBarEdge.Left || Settings.Instance.Edge == AppBarEdge.Right)
{
ButtonWidth = ActualWidth;
SetScrollable(true); // while technically not always scrollable, we don't run into DPI-specific issues with it enabled while vertical
return;
}

double height = ActualHeight;
int rows = Host.Rows;

int taskCount = TasksList.Items.Count;
double margin = TaskButtonLeftMargin + TaskButtonRightMargin;
double maxWidth = TasksList.ActualWidth / TasksList.Items.Count;
double maxWidth = TasksList.ActualWidth * rows / (taskCount + (taskCount % rows));
double defaultWidth = DefaultButtonWidth + margin;
double minWidth = MinButtonWidth + margin;

Expand Down
12 changes: 11 additions & 1 deletion RetroBar/Controls/Toolbar.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<UserControl.Resources>
<ResourceDictionary>
<converters:DockOrientationConverter x:Key="dockOrientationConverter" />
<converters:IconListOrientation x:Key="iconsOrientation" />
</ResourceDictionary>
</UserControl.Resources>
<DockPanel>
Expand All @@ -30,7 +31,16 @@
dd:DragDrop.DragDropContext="Toolbar">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"></WrapPanel>
<WrapPanel>
<WrapPanel.Orientation>
<MultiBinding Converter="{StaticResource iconsOrientation}">
<Binding Path="Orientation"
RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=Window}" />
<Binding Path="Rows"
RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=Window}" />
</MultiBinding>
</WrapPanel.Orientation>
</WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
Expand Down
21 changes: 21 additions & 0 deletions RetroBar/Converters/EdgeIsHorizontalConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using ManagedShell.AppBar;
using RetroBar.Utilities;
using System.Windows.Data;
using System;

namespace RetroBar.Converters
{
[ValueConversion(typeof(AppBarEdge), typeof(bool))]
public class EdgeIsHorizontalConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return Settings.Instance.Edge is AppBarEdge.Top or AppBarEdge.Bottom;
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
30 changes: 30 additions & 0 deletions RetroBar/Converters/IconListOrientation.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using ManagedShell.AppBar;
using RetroBar.Utilities;
using System.Windows.Controls;
using System;
using System.Windows.Data;
using System.Globalization;

namespace RetroBar.Converters
{
public class IconListOrientation : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
bool horizontal = Settings.Instance.Edge is AppBarEdge.Top or AppBarEdge.Bottom;
int rows = Settings.Instance.RowCount;

if (horizontal && rows > 1)
{
return Orientation.Vertical;
}

return Orientation.Horizontal;
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
9 changes: 9 additions & 0 deletions RetroBar/Languages/English.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@
<s:String>Right</s:String>
<s:String>Bottom</s:String>
</x:Array>
<s:String x:Key="rowcount_text">Number of _rows:</s:String>
<s:String x:Key="rowcount_tip">The number of rows on the taskbar when on top or bottom.</s:String>
<x:Array x:Key="rowcount_options" Type="s:Int32">
<s:Int32>1</s:Int32>
<s:Int32>2</s:Int32>
<s:Int32>3</s:Int32>
<s:Int32>4</s:Int32>
<s:Int32>5</s:Int32>
</x:Array>
<s:String x:Key="allow_font_smoothing">_Allow font smoothing</s:String>
<s:String x:Key="collapse_tray_icons">Collapse _notification area icons</s:String>
<s:String x:Key="customize">_Customize...</s:String>
Expand Down
135 changes: 135 additions & 0 deletions RetroBar/Languages/Suomi.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib">

<s:String x:Key="retrobar_properties">RetroBar Ominaisuudet</s:String>
<s:String x:Key="taskbar_tab">Tehtäväpalkki</s:String>
<s:String x:Key="advanced_tab">Lisäasetukset</s:String>
<s:String x:Key="taskbar_appearance">Tehtäväpalkin ulkoasu</s:String>
<s:String x:Key="notification_area">Ilmoitusalue</s:String>
<s:String x:Key="autostart">Käynnistä automaattisesti _sisäänkirjautuessa</s:String>
<s:String x:Key="language_text">_Kieli:</s:String>
<s:String x:Key="language_tip">Valitse käytettävä kieli.</s:String>
<s:String x:Key="theme_text">_Teema:</s:String>
<s:String x:Key="theme_tip">Asenna teemoja Themes-kansioon.</s:String>
<s:String x:Key="location_text">Sijaint_i:</s:String>
<s:String x:Key="location_tip">Vaihda tehtäväpalkin sijaintia näytöllä.</s:String>
<x:Array x:Key="location_values" Type="s:String">
<s:String>Vasemmalla</s:String>
<s:String>Ylhäällä</s:String>
<s:String>Oikealla</s:String>
<s:String>Alhaalla</s:String>
</x:Array>
<s:String x:Key="rowcount_text">Rivien lukumäärä:</s:String>
<s:String x:Key="rowcount_tip">Rivien määrä tehtäväpalkissa, kun se on ylhäällä tai alhaalla.</s:String>
<x:Array x:Key="rowcount_options" Type="s:Int32">
<s:Int32>1</s:Int32>
<s:Int32>2</s:Int32>
<s:Int32>3</s:Int32>
<s:Int32>4</s:Int32>
<s:Int32>5</s:Int32>
</x:Array>
<s:String x:Key="allow_font_smoothing">_Salli fontin pehmennys</s:String>
<s:String x:Key="collapse_tray_icons">Piilota _ilmoitusalueen kuvakkeet</s:String>
<s:String x:Key="customize">_Mukauta...</s:String>
<s:String x:Key="show_input_language">Näytä syötteen _kieli</s:String>
<s:String x:Key="show_clock">Näytä kell_o</s:String>
<s:String x:Key="show_multi_mon">Näytä _useilla näytöillä</s:String>
<s:String x:Key="show_quick_launch">Näytä _Pika-käynnistys</s:String>
<s:String x:Key="select_location">_Valitse sijainti...</s:String>
<s:String x:Key="quick_launch_folder">Pika-käynnistys - Valitse kansio</s:String>
<s:String x:Key="show_badges">Näytä _merkit</s:String>
<s:String x:Key="show_window_previews">Näytä _ikkunoiden esikatselut (pienoiskuvat)</s:String>
<s:String x:Key="use_software_rendering">_Käytä ohjelmisto renderöintiä</s:String>
<s:String x:Key="add_show_desktop_button">Lisää Näytä _työpöytä -painike</s:String>
<s:String x:Key="enable_auto_hide">P_iilota automaattisesti</s:String>
<s:String x:Key="lock_taskbar">_Lukitse tehtäväpalkki</s:String>
<s:String x:Key="multiple_displays">Useita näyttöjä</s:String>
<s:String x:Key="show_tasks_on">Näytä tehtävät _seuraavilla:</s:String>
<x:Array x:Key="show_tasks_on_values" Type="s:String">
<s:String>Kaikilla tehtäväpalkkeilla</s:String>
<s:String>Saman ikkunan tehtäväpalkilla</s:String>
<s:String>Pää- ja ikkunan tehtäväpalkilla</s:String>
</x:Array>
<s:String x:Key="invert_system_icons">_Käännä järjestelmäkuvakkeet:</s:String>
<x:Array x:Key="invert_system_icons_values" Type="s:String">
<s:String>Kun teema tarvitsee</s:String>
<s:String>Aina</s:String>
<s:String>Ei koskaan</s:String>
</x:Array>
<s:String x:Key="middle_mouse_task_action">Keskipainike-toiminto:</s:String>
<x:Array x:Key="middle_mouse_task_action_values" Type="s:String">
<s:String>Älä tee mitään</s:String>
<s:String>Avaa uusi ikkuna</s:String>
<s:String>Sulje tehtävä</s:String>
</x:Array>
<s:String x:Key="version">Versio {0}</s:String>
<s:String x:Key="visit_on_github">RetroBarin GitHub</s:String>
<s:String x:Key="taskbar_scale">Tehtäväpalkin skaalaus</s:String>
<s:String x:Key="taskbar_scale_1x">100%</s:String>
<s:String x:Key="taskbar_scale_2x">200%</s:String>
<s:String x:Key="taskbar_scale_current">Nykyinen asetus: {0}%</s:String>
<s:String x:Key="debug_logging">Ota käyttöön virheenkorjausloki</s:String>
<s:String x:Key="check_for_updates">Tarkista päivitykset automaattisesti</s:String>
<s:String x:Key="ok_dialog">OK</s:String>

<s:String x:Key="customize_notifications">Mukauta ilmoitukset</s:String>
<s:String x:Key="customize_notifications_info">RetroBar näyttää aktiivisten ja kiireellisten ilmoitusten kuvakkeet ja piilottaa passiiviset. Voit muuttaa tätä asetusta alla olevien kohteiden kohdalla.</s:String>
<s:String x:Key="customize_notifications_instruction">Valitse kohde ja valitse sitten sen ilmoitustoiminta:</s:String>
<s:String x:Key="hide_when_inactive">Piilota, kun passiivinen</s:String>
<s:String x:Key="always_show">Näytä aina</s:String>
<s:String x:Key="always_hide">Piilota aina</s:String>
<s:String x:Key="remove">Poista</s:String>
<s:String x:Key="name_heading">Nimi</s:String>
<s:String x:Key="behavior_heading">Käyttäytyminen</s:String>
<s:String x:Key="invert_heading">Käännä</s:String>

<s:String x:Key="start_text">Käynnistä</s:String>
<s:String x:Key="start_text_xp">Käynnistä</s:String>
<s:String x:Key="start_button_tip_98">Avaa käynnistä-valikko</s:String>
<s:String x:Key="start_button_tip">Avaa käynnistä-valikko</s:String>
<s:String x:Key="start_button_tip_vista">Avaa käynnistä-valikko</s:String>

<s:String x:Key="retrobar_title">RetroBar Tehtäväpalkki</s:String>
<s:String x:Key="toolbars">Työkalupalkit</s:String>
<s:String x:Key="quick_launch">Pika-käynnistys</s:String>
<s:String x:Key="new_toolbar">Uusi työkalupalkki...</s:String>
<s:String x:Key="set_time">Muuta päivämäärää/aikaa</s:String>
<s:String x:Key="cascade">Ikkunat kaskadina</s:String>
<s:String x:Key="horiz_tile">Laatikoi ikkunat vaakasuunnassa</s:String>
<s:String x:Key="vert_tile">Laatikoi ikkunat pystysuunnassa</s:String>
<s:String x:Key="toggle_desktop">Näytä työpöytä</s:String>
<s:String x:Key="hide_desktop">Näytä avoimet ikkunat</s:String>
<s:String x:Key="undo_cascade">Peruuta kaskadi</s:String>
<s:String x:Key="undo_tile">Peruuta laatikointi</s:String>
<s:String x:Key="undo_minimize_all">Peruuta pienennys kaikille</s:String>
<s:String x:Key="show_taskman_2k">Tehtävienhallinta...</s:String>
<s:String x:Key="show_taskman">Tehtävienhallinta</s:String>
<s:String x:Key="tray_properties">Ominaisuudet</s:String>
<s:String x:Key="update_available">Päivitys saatavilla...</s:String>
<s:String x:Key="exit_retrobar">_Sulje RetroBar</s:String>
<s:String x:Key="customize_notifications_menu">Mukauta ilmoitukset...</s:String>
<s:String x:Key="lock_taskbar_menu">Lukitse tehtäväpalkki</s:String>

<s:String x:Key="show_desktop_tip_95">Näytä työpöytä</s:String>
<s:String x:Key="show_desktop_tip">Näytä työpöytä</s:String>
<s:String x:Key="show_desktop_95">Näytä työpöytä</s:String>
<s:String x:Key="show_desktop">Näytä työpöytä</s:String>
<s:String x:Key="peek_at_desktop">Näytä työpöytä</s:String>

<s:String x:Key="restore">Palauta</s:String>
<s:String x:Key="move">Siirrä</s:String>
<s:String x:Key="size">Koko</s:String>
<s:String x:Key="minimize">Pienennä</s:String>
<s:String x:Key="maximize">Suurenna</s:String>
<s:String x:Key="close">Sulje</s:String>

<s:String x:Key="show_hidden">Näytä piilotetut kuvakkeet</s:String>
<s:String x:Key="hide">Piilota</s:String>

<s:String x:Key="open_folder">&amp;Avaa kansio</s:String>

<!-- Items below are settings, and should always be in English -->
<FlowDirection x:Key="flow_direction">LeftToRight</FlowDirection>
<FontFamily x:Key="start_text_xp_font_family">Franklin Gothic</FontFamily>
</ResourceDictionary>
2 changes: 2 additions & 0 deletions RetroBar/Languages/עברית.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
<s:String>ימין</s:String>
<s:String>ישבן</s:String>
</x:Array>
<s:String x:Key="rowcount_text">מספר שורות:</s:String>
<s:String x:Key="rowcount_tip">מספר השורות בשורת המשימות כאשר למעלה או למטה.</s:String>
<s:String x:Key="allow_font_smoothing">_אפשר החלקת גופנים</s:String>
<s:String x:Key="collapse_tray_icons">סמלי אזור הודעה מכווץ</s:String>
<s:String x:Key="customize">התא_מה אישית...</s:String>
Expand Down
11 changes: 11 additions & 0 deletions RetroBar/PropertiesWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<converters:BoolToInvertedVisibilityConverter x:Key="boolToInvertedVisibilityConverter" />
<converters:DoubleToPercentConverter x:Key="doubleToPercentConverter" />
<converters:EnumConverter x:Key="enumConverter" />
<converters:EdgeIsHorizontalConverter x:Key="isHorizontalConverter" />
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment"
Value="Center" />
Expand Down Expand Up @@ -203,6 +204,16 @@
SelectedIndex="{Binding Source={x:Static Settings:Settings.Instance}, Path=Edge, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource enumConverter}}"
SelectionChanged="cboEdgeSelect_SelectionChanged" />
</DockPanel>
<DockPanel IsEnabled="{Binding Source={x:Static Settings:Settings.Instance}, Path=Edge, Converter={StaticResource isHorizontalConverter}}">
<Label VerticalAlignment="Center"
Target="{Binding ElementName=cbRowCount}">
<AccessText Text="{DynamicResource rowcount_text}"
ToolTip="{DynamicResource rowcount_tip}" />
</Label>
<ComboBox x:Name="cbRowCount"
ItemsSource="{DynamicResource rowcount_options}"
SelectedValue="{Binding Source={x:Static Settings:Settings.Instance}, Path=RowCount, UpdateSourceTrigger=PropertyChanged}" />
</DockPanel>
<CheckBox IsChecked="{Binding Source={x:Static Settings:Settings.Instance}, Path=AllowFontSmoothing, UpdateSourceTrigger=PropertyChanged}">
<Label Content="{DynamicResource allow_font_smoothing}" />
</CheckBox>
Expand Down
6 changes: 6 additions & 0 deletions RetroBar/PropertiesWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ public bool IsLocked
get => Settings.Instance.LockTaskbar;
}

// Previews should always assume 1 row
public int Rows
{
get => 1;
}

private PropertiesWindow(NotificationArea notificationArea, DictionaryManager dictionaryManager, AppBarScreen screen, double dpiScale, double barSize)
{
_barSize = barSize;
Expand Down
1 change: 1 addition & 0 deletions RetroBar/Taskbar.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
LocationChanged="Taskbar_OnLocationChanged"
SizeChanged="Taskbar_OnSizeChanged"
MouseLeftButtonDown="Taskbar_OnMouseLeftButtonDown"
MouseMove="Taskbar_MouseMove"
Deactivated="Taskbar_Deactivated"
AllowDrop="True"
Style="{DynamicResource TaskbarWindow}">
Expand Down
Loading

0 comments on commit 924fcef

Please sign in to comment.